grass_gpu.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include <QVector3D>
  3. #include <QVector4D>
  4. namespace Render::GL {
  5. struct GrassInstanceGpu {
  6. QVector4D pos_height{0.0F, 0.0F, 0.0F, 0.0F};
  7. QVector4D color_width{0.0F, 0.0F, 0.0F, 0.0F};
  8. QVector4D sway_params{0.0F, 0.0F, 0.0F, 0.0F};
  9. };
  10. struct GrassBatchParams {
  11. static constexpr float kDefaultSoilColorR = 0.28F;
  12. static constexpr float kDefaultSoilColorG = 0.24F;
  13. static constexpr float kDefaultSoilColorB = 0.18F;
  14. static constexpr float kDefaultWindStrength = 0.25F;
  15. static constexpr float kDefaultLightDirX = 0.35F;
  16. static constexpr float kDefaultLightDirY = 0.8F;
  17. static constexpr float kDefaultLightDirZ = 0.45F;
  18. static constexpr float kDefaultWindSpeed = 1.4F;
  19. static auto default_soil_color() -> QVector3D {
  20. return {kDefaultSoilColorR, kDefaultSoilColorG, kDefaultSoilColorB};
  21. }
  22. static auto default_light_direction() -> QVector3D {
  23. return {kDefaultLightDirX, kDefaultLightDirY, kDefaultLightDirZ};
  24. }
  25. QVector3D soil_color = default_soil_color();
  26. float wind_strength{kDefaultWindStrength};
  27. QVector3D light_direction = default_light_direction();
  28. float wind_speed{kDefaultWindSpeed};
  29. float time{0.0F};
  30. float pad0{0.0F};
  31. float pad1{0.0F};
  32. float pad2{0.0F};
  33. };
  34. } // namespace Render::GL