terrain_gpu.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #pragma once
  2. #include <QVector2D>
  3. #include <QVector3D>
  4. namespace Render::GL {
  5. struct TerrainChunkParams {
  6. static constexpr float kDefaultGrassPrimaryR = 0.30F;
  7. static constexpr float kDefaultGrassPrimaryG = 0.60F;
  8. static constexpr float kDefaultGrassPrimaryB = 0.28F;
  9. static constexpr float kDefaultTileSize = 1.0F;
  10. static constexpr float kDefaultGrassSecondaryR = 0.44F;
  11. static constexpr float kDefaultGrassSecondaryG = 0.70F;
  12. static constexpr float kDefaultGrassSecondaryB = 0.32F;
  13. static constexpr float kDefaultMacroNoiseScale = 0.035F;
  14. static constexpr float kDefaultGrassDryR = 0.72F;
  15. static constexpr float kDefaultGrassDryG = 0.66F;
  16. static constexpr float kDefaultGrassDryB = 0.48F;
  17. static constexpr float kDefaultDetailNoiseScale = 0.16F;
  18. static constexpr float kDefaultSoilColorR = 0.30F;
  19. static constexpr float kDefaultSoilColorG = 0.26F;
  20. static constexpr float kDefaultSoilColorB = 0.20F;
  21. static constexpr float kDefaultSlopeRockThreshold = 0.45F;
  22. static constexpr float kDefaultRockLowR = 0.48F;
  23. static constexpr float kDefaultRockLowG = 0.46F;
  24. static constexpr float kDefaultRockLowB = 0.44F;
  25. static constexpr float kDefaultSlopeRockSharpness = 3.0F;
  26. static constexpr float kDefaultRockHighR = 0.70F;
  27. static constexpr float kDefaultRockHighG = 0.71F;
  28. static constexpr float kDefaultRockHighB = 0.75F;
  29. static constexpr float kDefaultSoilBlendHeight = 0.6F;
  30. static constexpr float kDefaultTintComponent = 1.0F;
  31. static constexpr float kDefaultSoilBlendSharpness = 3.5F;
  32. static constexpr float kDefaultHeightNoiseStrength = 0.05F;
  33. static constexpr float kDefaultHeightNoiseFrequency = 0.1F;
  34. static constexpr float kDefaultAmbientBoost = 1.05F;
  35. static constexpr float kDefaultRockDetailStrength = 0.35F;
  36. static constexpr float kDefaultLightDirX = 0.35F;
  37. static constexpr float kDefaultLightDirY = 0.8F;
  38. static constexpr float kDefaultLightDirZ = 0.45F;
  39. static constexpr float kDefaultMicroBumpAmp = 0.07F;
  40. static constexpr float kDefaultMicroBumpFreq = 2.2F;
  41. static constexpr float kDefaultMicroNormalWeight = 0.65F;
  42. static constexpr float kDefaultAlbedoJitter = 0.05F;
  43. static constexpr float kDefaultSnowCoverage = 0.0F;
  44. static constexpr float kDefaultMoistureLevel = 0.5F;
  45. static constexpr float kDefaultCrackIntensity = 0.0F;
  46. static constexpr float kDefaultRockExposure = 0.3F;
  47. static constexpr float kDefaultGrassSaturation = 1.0F;
  48. static constexpr float kDefaultSoilRoughness = 0.5F;
  49. static constexpr float kDefaultSnowColorR = 0.92F;
  50. static constexpr float kDefaultSnowColorG = 0.94F;
  51. static constexpr float kDefaultSnowColorB = 0.98F;
  52. static auto default_grass_primary() -> QVector3D {
  53. return {kDefaultGrassPrimaryR, kDefaultGrassPrimaryG,
  54. kDefaultGrassPrimaryB};
  55. }
  56. static auto default_grass_secondary() -> QVector3D {
  57. return {kDefaultGrassSecondaryR, kDefaultGrassSecondaryG,
  58. kDefaultGrassSecondaryB};
  59. }
  60. static auto default_grass_dry() -> QVector3D {
  61. return {kDefaultGrassDryR, kDefaultGrassDryG, kDefaultGrassDryB};
  62. }
  63. static auto default_soil_color() -> QVector3D {
  64. return {kDefaultSoilColorR, kDefaultSoilColorG, kDefaultSoilColorB};
  65. }
  66. static auto default_rock_low() -> QVector3D {
  67. return {kDefaultRockLowR, kDefaultRockLowG, kDefaultRockLowB};
  68. }
  69. static auto default_rock_high() -> QVector3D {
  70. return {kDefaultRockHighR, kDefaultRockHighG, kDefaultRockHighB};
  71. }
  72. static auto default_tint() -> QVector3D {
  73. return {kDefaultTintComponent, kDefaultTintComponent,
  74. kDefaultTintComponent};
  75. }
  76. static auto default_light_direction() -> QVector3D {
  77. return {kDefaultLightDirX, kDefaultLightDirY, kDefaultLightDirZ};
  78. }
  79. static auto default_snow_color() -> QVector3D {
  80. return {kDefaultSnowColorR, kDefaultSnowColorG, kDefaultSnowColorB};
  81. }
  82. QVector3D grass_primary = default_grass_primary();
  83. float tile_size = kDefaultTileSize;
  84. QVector3D grass_secondary = default_grass_secondary();
  85. float macro_noise_scale = kDefaultMacroNoiseScale;
  86. QVector3D grass_dry = default_grass_dry();
  87. float detail_noise_scale = kDefaultDetailNoiseScale;
  88. QVector3D soil_color = default_soil_color();
  89. float slope_rock_threshold = kDefaultSlopeRockThreshold;
  90. QVector3D rock_low = default_rock_low();
  91. float slope_rock_sharpness = kDefaultSlopeRockSharpness;
  92. QVector3D rock_high = default_rock_high();
  93. float soil_blend_height = kDefaultSoilBlendHeight;
  94. QVector3D tint = default_tint();
  95. float soil_blend_sharpness = kDefaultSoilBlendSharpness;
  96. QVector2D noise_offset{0.0F, 0.0F};
  97. float height_noise_strength = kDefaultHeightNoiseStrength;
  98. float height_noise_frequency = kDefaultHeightNoiseFrequency;
  99. float ambient_boost = kDefaultAmbientBoost;
  100. float rock_detail_strength = kDefaultRockDetailStrength;
  101. QVector3D light_direction = default_light_direction();
  102. float noise_angle = 0.0F;
  103. float micro_bump_amp = kDefaultMicroBumpAmp;
  104. float micro_bump_freq = kDefaultMicroBumpFreq;
  105. float micro_normal_weight = kDefaultMicroNormalWeight;
  106. float albedo_jitter = kDefaultAlbedoJitter;
  107. bool is_ground_plane = false;
  108. float snow_coverage = kDefaultSnowCoverage;
  109. float moisture_level = kDefaultMoistureLevel;
  110. float crack_intensity = kDefaultCrackIntensity;
  111. float rock_exposure = kDefaultRockExposure;
  112. float grass_saturation = kDefaultGrassSaturation;
  113. float soil_roughness = kDefaultSoilRoughness;
  114. QVector3D snow_color = default_snow_color();
  115. };
  116. } // namespace Render::GL