landscape.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /**
  2. *** :: Light ::
  3. ***
  4. *** -- WIP --
  5. ***
  6. *** Object for rendering an instance of a terrain
  7. *** asset using particular textures and attributes.
  8. ***
  9. **/
  10. #ifndef landscape_h
  11. #define landscape_h
  12. #include "cengine.h"
  13. #include "casset.h"
  14. #include "assets/image.h"
  15. #include "assets/terrain.h"
  16. typedef struct landscape_blobtree {
  17. sphere bound;
  18. bool is_leaf;
  19. int chunk_index;
  20. struct landscape_blobtree* child0;
  21. struct landscape_blobtree* child1;
  22. struct landscape_blobtree* child2;
  23. struct landscape_blobtree* child3;
  24. } landscape_blobtree;
  25. typedef struct {
  26. asset_hndl heightmap;
  27. asset_hndl attribmap;
  28. image* attribimage;
  29. float scale;
  30. float size_x;
  31. float size_y;
  32. landscape_blobtree* blobtree;
  33. asset_hndl ground0;
  34. asset_hndl ground1;
  35. asset_hndl ground2;
  36. asset_hndl ground3;
  37. asset_hndl ground0_nm;
  38. asset_hndl ground1_nm;
  39. asset_hndl ground2_nm;
  40. asset_hndl ground3_nm;
  41. } landscape;
  42. landscape* landscape_new();
  43. void landscape_delete(landscape* l);
  44. landscape_blobtree* landscape_blobtree_new(landscape* ls);
  45. void landscape_blobtree_delete(landscape_blobtree* lbt);
  46. void landscape_blobtree_generate(landscape* l);
  47. mat4 landscape_world(landscape* l);
  48. mat3 landscape_world_normal(landscape* l);
  49. float landscape_height(landscape* l, vec2 pos);
  50. vec3 landscape_normal(landscape* l, vec2 pos);
  51. mat3 landscape_axis(landscape* l, vec2 pos);
  52. void landscape_paint_height(landscape* l, vec2 pos, float radius, float value, float opacity);
  53. void landscape_paint_color(landscape* l, vec2 pos, float radius, int type, float opacity);
  54. void landscape_chunks(landscape* l, vec2 pos, struct terrain_chunk** chunks_out);
  55. #endif