2
0

plant_renderer.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include "../../game/map/terrain.h"
  3. #include "../i_render_pass.h"
  4. #include "plant_gpu.h"
  5. #include <QVector3D>
  6. #include <cstdint>
  7. #include <memory>
  8. #include <vector>
  9. namespace Render {
  10. namespace GL {
  11. class Buffer;
  12. class Renderer;
  13. class PlantRenderer : public IRenderPass {
  14. public:
  15. PlantRenderer();
  16. ~PlantRenderer();
  17. void configure(const Game::Map::TerrainHeightMap &heightMap,
  18. const Game::Map::BiomeSettings &biomeSettings);
  19. void submit(Renderer &renderer, ResourceManager *resources) override;
  20. void clear();
  21. private:
  22. void generatePlantInstances();
  23. int m_width = 0;
  24. int m_height = 0;
  25. float m_tileSize = 1.0f;
  26. std::vector<float> m_heightData;
  27. std::vector<Game::Map::TerrainType> m_terrainTypes;
  28. Game::Map::BiomeSettings m_biomeSettings;
  29. std::uint32_t m_noiseSeed = 0u;
  30. std::vector<PlantInstanceGpu> m_plantInstances;
  31. std::unique_ptr<Buffer> m_plantInstanceBuffer;
  32. std::size_t m_plantInstanceCount = 0;
  33. PlantBatchParams m_plantParams;
  34. bool m_plantInstancesDirty = false;
  35. };
  36. } // namespace GL
  37. } // namespace Render