@woosh/meep-engine 3.53.0 → 3.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/package.json +1 -1
  2. package/src/core/math/noise/worley_noise_2d.d.ts +14 -0
  3. package/src/core/math/noise/worley_noise_2d.d.ts.map +1 -0
  4. package/src/core/math/noise/worley_noise_2d.js +74 -0
  5. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts +6 -1
  6. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
  7. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +363 -325
  8. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts +93 -14
  9. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts.map +1 -1
  10. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +322 -183
  11. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts +9 -0
  12. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts.map +1 -1
  13. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.js +110 -83
  14. package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts +42 -0
  15. package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts.map +1 -0
  16. package/src/engine/{graphics3/decal/DecalAtlas.js → graphics/texture/atlas/SpriteAtlas.js} +202 -194
  17. package/src/engine/{graphics3/decal/DecalAtlasFill.d.ts → graphics/texture/atlas/SpriteAtlasFill.d.ts} +4 -4
  18. package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts.map +1 -0
  19. package/src/engine/graphics/texture/atlas/SpriteAtlasFill.js +30 -0
  20. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts +7 -0
  21. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
  22. package/src/engine/graphics/texture/atlas/TextureAtlas.js +11 -1
  23. package/src/engine/{graphics3/decal/decal_atlas_border.d.ts → graphics/texture/atlas/sprite_atlas_border.d.ts} +12 -12
  24. package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -0
  25. package/src/engine/{graphics3/decal/decal_atlas_border.js → graphics/texture/atlas/sprite_atlas_border.js} +69 -69
  26. package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
  27. package/src/engine/graphics3/DecalSystem.js +447 -450
  28. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +9 -22
  29. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  30. package/src/engine/graphics3/GPUParticleEmitterSystem.js +892 -951
  31. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  32. package/src/generation/foliage/FOLIAGE_DESIGN.md +2 -1
  33. package/src/generation/foliage/config/BarkMaterialConfig.d.ts +4 -3
  34. package/src/generation/foliage/config/BarkMaterialConfig.d.ts.map +1 -1
  35. package/src/generation/foliage/config/BarkMaterialConfig.js +6 -6
  36. package/src/generation/foliage/config/FoliageBarkType.d.ts +11 -0
  37. package/src/generation/foliage/config/FoliageBarkType.d.ts.map +1 -0
  38. package/src/generation/foliage/config/FoliageBarkType.js +16 -0
  39. package/src/generation/foliage/config/FoliageMaterialConfig.d.ts +58 -5
  40. package/src/generation/foliage/config/FoliageMaterialConfig.d.ts.map +1 -1
  41. package/src/generation/foliage/config/FoliageMaterialConfig.js +279 -181
  42. package/src/generation/foliage/index.d.ts +2 -1
  43. package/src/generation/foliage/index.js +44 -43
  44. package/src/generation/foliage/material/make_bark_material.d.ts.map +1 -1
  45. package/src/generation/foliage/material/make_bark_material.js +23 -95
  46. package/src/generation/foliage/material/make_foliage_material.d.ts +29 -3
  47. package/src/generation/foliage/material/make_foliage_material.d.ts.map +1 -1
  48. package/src/generation/foliage/material/make_foliage_material.js +605 -359
  49. package/src/generation/foliage/mesh/branch_collar_project.d.ts.map +1 -1
  50. package/src/generation/foliage/mesh/branch_collar_project.js +205 -203
  51. package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts +15 -0
  52. package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts.map +1 -1
  53. package/src/generation/foliage/mesh/foliage_collect_attachments.js +569 -502
  54. package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
  55. package/src/generation/foliage/mesh/tree_mesh_build_bark.js +1049 -1047
  56. package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts +2 -1
  57. package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts.map +1 -1
  58. package/src/generation/foliage/mesh/tree_mesh_build_foliage.js +454 -415
  59. package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -1
  60. package/src/generation/foliage/presets/make_tree_species_preset.js +870 -837
  61. package/src/generation/foliage/skeleton/crown_envelope_evaluate.js +121 -121
  62. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts +10 -7
  63. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts.map +1 -1
  64. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.js +206 -179
  65. package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -1
  66. package/src/generation/foliage/skeleton/tree_skeleton_grow.js +1871 -1104
  67. package/src/shade/RENDERER_CONTRACT.md +5 -2
  68. package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts.map +1 -1
  69. package/src/shade/device/SHADE_DEVICE_FLOOR.js +2 -0
  70. package/src/shade/playground/foliage_wind/foliage_world.d.ts +6 -0
  71. package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -1
  72. package/src/shade/playground/foliage_wind/foliage_world.js +602 -593
  73. package/src/shade/playground/foliage_wind/index.html +260 -254
  74. package/src/shade/playground/foliage_wind/main.js +275 -263
  75. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  76. package/src/shade/renderer/Renderer.js +1 -1
  77. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  78. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  79. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  80. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  81. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  82. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +1 -1
  83. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +3 -3
  84. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  85. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +350 -294
  86. package/src/shade/renderer/hiz/generate_downsampler_code.d.ts +0 -2
  87. package/src/shade/renderer/hiz/generate_downsampler_code.d.ts.map +1 -1
  88. package/src/shade/renderer/hiz/generate_downsampler_code.js +99 -100
  89. package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts +15 -0
  90. package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -0
  91. package/src/shade/renderer/hiz/hzb_pick_alignment.js +148 -0
  92. package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts +28 -0
  93. package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts.map +1 -0
  94. package/src/shade/renderer/hiz/hzb_plan_reduction_steps.js +58 -0
  95. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +5 -5
  96. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  97. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +57 -67
  98. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +3 -3
  99. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
  100. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +111 -112
  101. package/src/shade/renderer/hiz/shader_hzb_spd.d.ts +5 -0
  102. package/src/shade/renderer/hiz/shader_hzb_spd.d.ts.map +1 -0
  103. package/src/shade/renderer/hiz/shader_hzb_spd.js +160 -0
  104. package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
  105. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  106. package/src/shade/renderer/light/GPULightCollection.js +67 -0
  107. package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts +7 -0
  108. package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts.map +1 -0
  109. package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.js +13 -0
  110. package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts +10 -0
  111. package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts.map +1 -0
  112. package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.js +72 -0
  113. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +39 -0
  114. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -0
  115. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +90 -0
  116. package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts +12 -0
  117. package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts.map +1 -0
  118. package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.js +56 -0
  119. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +31 -0
  120. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -0
  121. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +196 -0
  122. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts +10 -0
  123. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -0
  124. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +163 -0
  125. package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts +4 -0
  126. package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts.map +1 -0
  127. package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.js +137 -0
  128. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  129. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  130. package/src/shade/renderer/particles/GPUParticleSystem.js +4 -3
  131. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +4 -3
  132. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  133. package/src/shade/renderer/particles/graph_particles_avboit.js +28 -11
  134. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +9 -13
  135. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
  136. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +25 -20
  137. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  138. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +21 -38
  139. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.d.ts.map +1 -1
  140. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +154 -147
  141. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +2 -1
  142. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
  143. package/src/shade/renderer/postprocess/gtao/GTAO.js +5 -1
  144. package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts +8 -0
  145. package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts.map +1 -1
  146. package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.js +10 -1
  147. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
  148. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +5 -0
  149. package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts +22 -0
  150. package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts.map +1 -0
  151. package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.js +33 -0
  152. package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts +22 -0
  153. package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts.map +1 -0
  154. package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.js +56 -0
  155. package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts +13 -0
  156. package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts.map +1 -0
  157. package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.js +42 -0
  158. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts +2 -1
  159. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  160. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +382 -357
  161. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  162. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +414 -410
  163. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  164. package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -7
  165. package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.d.ts.map +1 -1
  166. package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js +62 -62
  167. package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts +6 -0
  168. package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts.map +1 -0
  169. package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.js +19 -0
  170. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.d.ts.map +1 -1
  171. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.js +16 -10
  172. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.d.ts.map +1 -1
  173. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js +118 -117
  174. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +41 -7
  175. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -1
  176. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +162 -58
  177. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -1
  178. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +10 -12
  179. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  180. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +583 -606
  181. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +1 -1
  182. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +640 -640
  183. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +113 -0
  184. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -0
  185. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +484 -0
  186. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +50 -0
  187. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -0
  188. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +60 -0
  189. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +25 -0
  190. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -0
  191. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +47 -0
  192. package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts +74 -0
  193. package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts.map +1 -0
  194. package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.js +173 -0
  195. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +26 -0
  196. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -0
  197. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +83 -0
  198. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts +36 -0
  199. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts.map +1 -0
  200. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js +129 -0
  201. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts +121 -0
  202. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -0
  203. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +370 -0
  204. package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts +16 -0
  205. package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts.map +1 -0
  206. package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.js +191 -0
  207. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  208. package/src/shade/renderer/wind/GPUSceneWind.js +1 -1
  209. package/src/engine/graphics3/decal/DecalAtlas.d.ts +0 -43
  210. package/src/engine/graphics3/decal/DecalAtlas.d.ts.map +0 -1
  211. package/src/engine/graphics3/decal/DecalAtlasFill.d.ts.map +0 -1
  212. package/src/engine/graphics3/decal/DecalAtlasFill.js +0 -32
  213. package/src/engine/graphics3/decal/decal_atlas_border.d.ts.map +0 -1
  214. package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts +0 -26
  215. package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts.map +0 -1
  216. package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.js +0 -268
  217. package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts +0 -3
  218. package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts.map +0 -1
  219. package/src/shade/renderer/postprocess/ssr/copy_shader_f32.js +0 -32
  220. package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts +0 -17
  221. package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +0 -1
  222. package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +0 -98
  223. package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts +0 -23
  224. package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts.map +0 -1
  225. package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.js +0 -118
  226. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts +0 -15
  227. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts.map +0 -1
  228. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +0 -49
  229. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +0 -17
  230. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts.map +0 -1
  231. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +0 -50
  232. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts +0 -35
  233. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +0 -1
  234. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.js +0 -105
  235. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +0 -35
  236. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts.map +0 -1
  237. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +0 -80
  238. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts +0 -10
  239. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts.map +0 -1
  240. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.js +0 -51
  241. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts +0 -28
  242. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts.map +0 -1
  243. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +0 -39
  244. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +0 -48
  245. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +0 -1
  246. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +0 -121
  247. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts +0 -28
  248. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts.map +0 -1
  249. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +0 -237
@@ -1,254 +1,260 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>Shade — Procedural Foliage &amp; GPU Fluid Wind Playground (ECS)</title>
7
- <style>
8
- * { margin: 0; padding: 0; box-sizing: border-box; }
9
- html, body { width: 100%; height: 100%; overflow: hidden; background: #0e1318; font-family: system-ui, -apple-system, sans-serif; color: #e4ece6; }
10
- #viewport { width: 100%; height: 100%; position: relative; }
11
- #viewport canvas { width: 100%; height: 100%; display: block; }
12
-
13
- #hud {
14
- position: fixed;
15
- top: 12px;
16
- left: 12px;
17
- width: 310px;
18
- padding: 12px 14px;
19
- background: rgba(14, 20, 24, 0.86);
20
- backdrop-filter: blur(8px);
21
- border: 1px solid rgba(130, 180, 140, 0.22);
22
- border-radius: 8px;
23
- font: 12px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
24
- user-select: none;
25
- z-index: 10;
26
- max-height: calc(100vh - 24px);
27
- overflow-y: auto;
28
- }
29
-
30
- #hud h1 {
31
- font-size: 13px;
32
- font-weight: 700;
33
- color: #9be3a8;
34
- letter-spacing: 0.02em;
35
- margin-bottom: 8px;
36
- }
37
-
38
- .section-title {
39
- margin-top: 10px;
40
- margin-bottom: 5px;
41
- padding-top: 7px;
42
- border-top: 1px solid rgba(255, 255, 255, 0.08);
43
- font-size: 10px;
44
- text-transform: uppercase;
45
- letter-spacing: 0.08em;
46
- color: #84a58c;
47
- }
48
-
49
- .stats-grid {
50
- display: grid;
51
- grid-template-columns: 1fr 1fr;
52
- gap: 3px 10px;
53
- margin-bottom: 4px;
54
- }
55
-
56
- .stat-row {
57
- display: flex;
58
- justify-content: space-between;
59
- color: #9cb0a2;
60
- }
61
-
62
- .stat-val {
63
- color: #eef7f0;
64
- font-weight: 600;
65
- }
66
-
67
- .preset-grid {
68
- display: grid;
69
- grid-template-columns: repeat(3, 1fr);
70
- gap: 4px;
71
- }
72
-
73
- .lod-grid, .mode-grid {
74
- display: grid;
75
- grid-template-columns: repeat(4, 1fr);
76
- gap: 4px;
77
- }
78
-
79
- .mode-grid {
80
- grid-template-columns: repeat(2, 1fr);
81
- }
82
-
83
- button {
84
- padding: 5px 7px;
85
- background: rgba(255, 255, 255, 0.06);
86
- color: #d0dfd4;
87
- border: 1px solid rgba(255, 255, 255, 0.14);
88
- border-radius: 4px;
89
- font: inherit;
90
- font-size: 11px;
91
- cursor: pointer;
92
- transition: background 0.12s, border-color 0.12s;
93
- }
94
-
95
- button:hover {
96
- background: rgba(155, 227, 168, 0.14);
97
- border-color: rgba(155, 227, 168, 0.35);
98
- }
99
-
100
- button.active {
101
- background: rgba(88, 184, 112, 0.28);
102
- border-color: rgba(130, 224, 150, 0.65);
103
- color: #ffffff;
104
- font-weight: 600;
105
- }
106
-
107
- button.gust-btn {
108
- width: 100%;
109
- margin-top: 6px;
110
- padding: 7px 10px;
111
- background: linear-gradient(135deg, rgba(64, 156, 196, 0.32), rgba(88, 184, 112, 0.32));
112
- border-color: rgba(120, 210, 230, 0.5);
113
- color: #eafff5;
114
- font-weight: 600;
115
- }
116
-
117
- button.gust-btn:hover {
118
- background: linear-gradient(135deg, rgba(64, 156, 196, 0.48), rgba(88, 184, 112, 0.48));
119
- }
120
-
121
- .control-row {
122
- display: flex;
123
- flex-direction: column;
124
- gap: 2px;
125
- margin-bottom: 6px;
126
- }
127
-
128
- .control-header {
129
- display: flex;
130
- justify-content: space-between;
131
- font-size: 11px;
132
- color: #b4c7b9;
133
- }
134
-
135
- input[type="range"] {
136
- width: 100%;
137
- accent-color: #6fd486;
138
- cursor: pointer;
139
- }
140
-
141
- .seed-row {
142
- display: flex;
143
- gap: 6px;
144
- align-items: center;
145
- }
146
-
147
- input[type="number"] {
148
- width: 90px;
149
- padding: 4px 6px;
150
- background: rgba(0, 0, 0, 0.35);
151
- border: 1px solid rgba(255, 255, 255, 0.18);
152
- border-radius: 4px;
153
- color: #fff;
154
- font: inherit;
155
- }
156
-
157
- .hint {
158
- margin-top: 8px;
159
- font-size: 10px;
160
- color: #789080;
161
- text-align: center;
162
- }
163
-
164
- #message:not(:empty) {
165
- position: fixed;
166
- inset: 0;
167
- display: flex;
168
- align-items: center;
169
- justify-content: center;
170
- padding: 32px;
171
- background: rgba(14, 19, 24, 0.92);
172
- color: #f0d8c8;
173
- font: 14px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace;
174
- white-space: pre-wrap;
175
- text-align: center;
176
- z-index: 20;
177
- }
178
- </style>
179
- </head>
180
- <body tabindex="0">
181
- <div id="viewport"></div>
182
-
183
- <div id="hud">
184
- <h1>Foliage &amp; GPU Fluid Wind (ECS)</h1>
185
-
186
- <div class="stats-grid">
187
- <div class="stat-row"><span>FPS</span><span id="stat-fps" class="stat-val">--</span></div>
188
- <div class="stat-row"><span>Trees</span><span id="stat-trees" class="stat-val">--</span></div>
189
- <div class="stat-row"><span>Wind Rigs</span><span id="stat-rigs" class="stat-val">--</span></div>
190
- <div class="stat-row"><span>Joints</span><span id="stat-joints" class="stat-val">--</span></div>
191
- <div class="stat-row"><span>Triangles</span><span id="stat-tris" class="stat-val">--</span></div>
192
- <div class="stat-row"><span>Gust Wave</span><span id="stat-gust" class="stat-val">Idle</span></div>
193
- </div>
194
-
195
- <div class="section-title">Scene Layout</div>
196
- <div class="mode-grid" id="mode-buttons">
197
- <button data-mode="specimen" class="active">Single Specimen</button>
198
- <button data-mode="grove">Mixed Grove (9)</button>
199
- </div>
200
-
201
- <div class="section-title">Species Preset</div>
202
- <div class="preset-grid" id="preset-buttons"></div>
203
-
204
- <div class="section-title">Level of Detail (LOD)</div>
205
- <div class="lod-grid" id="lod-buttons">
206
- <button data-lod="0" class="active">LOD 0</button>
207
- <button data-lod="1">LOD 1</button>
208
- <button data-lod="2">LOD 2</button>
209
- <button data-lod="3">LOD 3</button>
210
- </div>
211
-
212
- <div class="section-title">Botanical Seed</div>
213
- <div class="seed-row">
214
- <input type="number" id="seed-input" value="1337" step="1" />
215
- <button id="seed-random-btn" style="flex: 1;">Randomize Seed</button>
216
- </div>
217
-
218
- <div class="section-title">ECS Fluid &amp; Aeroelastic Wind</div>
219
-
220
- <div class="control-row">
221
- <div class="control-header"><span>Wind Speed</span><span id="val-wind-speed">6.5 m/s</span></div>
222
- <input type="range" id="slider-wind-speed" min="0" max="22" step="0.25" value="6.5" />
223
- </div>
224
-
225
- <div class="control-row">
226
- <div class="control-header"><span>Gust Amplitude</span><span id="val-gust-strength">4.5 m/s</span></div>
227
- <input type="range" id="slider-gust-strength" min="0" max="16" step="0.25" value="4.5" />
228
- </div>
229
-
230
- <div class="control-row">
231
- <div class="control-header"><span>Gust Period</span><span id="val-gust-period">5.5 s</span></div>
232
- <input type="range" id="slider-gust-period" min="1.0" max="14.0" step="0.5" value="5.5" />
233
- </div>
234
-
235
- <div class="control-row">
236
- <div class="control-header"><span>Wind Heading</span><span id="val-wind-heading">25°</span></div>
237
- <input type="range" id="slider-wind-heading" min="0" max="360" step="5" value="25" />
238
- </div>
239
-
240
- <div class="control-row">
241
- <div class="control-header"><span>Foliage Rig Weight</span><span id="val-wind-weight">1.00</span></div>
242
- <input type="range" id="slider-wind-weight" min="0" max="1.5" step="0.05" value="1.0" />
243
- </div>
244
-
245
- <button id="btn-trigger-gust" class="gust-btn">Send 3D Fluid Gust &amp; Vortex Wave</button>
246
-
247
- <div class="hint">Left-drag: Orbit &bull; WASD/QE: Fly &bull; Scroll: Zoom</div>
248
- </div>
249
-
250
- <div id="message"></div>
251
-
252
- <script type="module" src="./main.js"></script>
253
- </body>
254
- </html>
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Shade — Procedural Foliage &amp; GPU Fluid Wind Playground (ECS)</title>
7
+ <style>
8
+ * { margin: 0; padding: 0; box-sizing: border-box; }
9
+ html, body { width: 100%; height: 100%; overflow: hidden; background: #0e1318; font-family: system-ui, -apple-system, sans-serif; color: #e4ece6; }
10
+ #viewport { width: 100%; height: 100%; position: relative; }
11
+ #viewport canvas { width: 100%; height: 100%; display: block; }
12
+
13
+ #hud {
14
+ position: fixed;
15
+ top: 12px;
16
+ left: 12px;
17
+ width: 310px;
18
+ padding: 12px 14px;
19
+ background: rgba(14, 20, 24, 0.86);
20
+ backdrop-filter: blur(8px);
21
+ border: 1px solid rgba(130, 180, 140, 0.22);
22
+ border-radius: 8px;
23
+ font: 12px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
24
+ user-select: none;
25
+ z-index: 10;
26
+ max-height: calc(100vh - 24px);
27
+ overflow-y: auto;
28
+ }
29
+
30
+ #hud h1 {
31
+ font-size: 13px;
32
+ font-weight: 700;
33
+ color: #9be3a8;
34
+ letter-spacing: 0.02em;
35
+ margin-bottom: 8px;
36
+ }
37
+
38
+ .section-title {
39
+ margin-top: 10px;
40
+ margin-bottom: 5px;
41
+ padding-top: 7px;
42
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
43
+ font-size: 10px;
44
+ text-transform: uppercase;
45
+ letter-spacing: 0.08em;
46
+ color: #84a58c;
47
+ }
48
+
49
+ .stats-grid {
50
+ display: grid;
51
+ grid-template-columns: 1fr 1fr;
52
+ gap: 3px 10px;
53
+ margin-bottom: 4px;
54
+ }
55
+
56
+ .stat-row {
57
+ display: flex;
58
+ justify-content: space-between;
59
+ color: #9cb0a2;
60
+ }
61
+
62
+ .stat-val {
63
+ color: #eef7f0;
64
+ font-weight: 600;
65
+ }
66
+
67
+ .preset-grid {
68
+ display: grid;
69
+ grid-template-columns: repeat(3, 1fr);
70
+ gap: 4px;
71
+ }
72
+
73
+ .lod-grid, .mode-grid {
74
+ display: grid;
75
+ grid-template-columns: repeat(4, 1fr);
76
+ gap: 4px;
77
+ }
78
+
79
+ .mode-grid {
80
+ grid-template-columns: repeat(2, 1fr);
81
+ }
82
+
83
+ button {
84
+ padding: 5px 7px;
85
+ background: rgba(255, 255, 255, 0.06);
86
+ color: #d0dfd4;
87
+ border: 1px solid rgba(255, 255, 255, 0.14);
88
+ border-radius: 4px;
89
+ font: inherit;
90
+ font-size: 11px;
91
+ cursor: pointer;
92
+ transition: background 0.12s, border-color 0.12s;
93
+ }
94
+
95
+ button:hover {
96
+ background: rgba(155, 227, 168, 0.14);
97
+ border-color: rgba(155, 227, 168, 0.35);
98
+ }
99
+
100
+ button.active {
101
+ background: rgba(88, 184, 112, 0.28);
102
+ border-color: rgba(130, 224, 150, 0.65);
103
+ color: #ffffff;
104
+ font-weight: 600;
105
+ }
106
+
107
+ button.gust-btn {
108
+ width: 100%;
109
+ margin-top: 6px;
110
+ padding: 7px 10px;
111
+ background: linear-gradient(135deg, rgba(64, 156, 196, 0.32), rgba(88, 184, 112, 0.32));
112
+ border-color: rgba(120, 210, 230, 0.5);
113
+ color: #eafff5;
114
+ font-weight: 600;
115
+ }
116
+
117
+ button.gust-btn:hover {
118
+ background: linear-gradient(135deg, rgba(64, 156, 196, 0.48), rgba(88, 184, 112, 0.48));
119
+ }
120
+
121
+ .control-row {
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: 2px;
125
+ margin-bottom: 6px;
126
+ }
127
+
128
+ .control-header {
129
+ display: flex;
130
+ justify-content: space-between;
131
+ font-size: 11px;
132
+ color: #b4c7b9;
133
+ }
134
+
135
+ input[type="range"] {
136
+ width: 100%;
137
+ accent-color: #6fd486;
138
+ cursor: pointer;
139
+ }
140
+
141
+ .seed-row {
142
+ display: flex;
143
+ gap: 6px;
144
+ align-items: center;
145
+ }
146
+
147
+ input[type="number"] {
148
+ width: 90px;
149
+ padding: 4px 6px;
150
+ background: rgba(0, 0, 0, 0.35);
151
+ border: 1px solid rgba(255, 255, 255, 0.18);
152
+ border-radius: 4px;
153
+ color: #fff;
154
+ font: inherit;
155
+ }
156
+
157
+ .hint {
158
+ margin-top: 8px;
159
+ font-size: 10px;
160
+ color: #789080;
161
+ text-align: center;
162
+ }
163
+
164
+ #message:not(:empty) {
165
+ position: fixed;
166
+ inset: 0;
167
+ display: flex;
168
+ align-items: center;
169
+ justify-content: center;
170
+ padding: 32px;
171
+ background: rgba(14, 19, 24, 0.92);
172
+ color: #f0d8c8;
173
+ font: 14px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace;
174
+ white-space: pre-wrap;
175
+ text-align: center;
176
+ z-index: 20;
177
+ }
178
+ </style>
179
+ </head>
180
+ <body tabindex="0">
181
+ <div id="viewport"></div>
182
+
183
+ <div id="hud">
184
+ <h1>Foliage &amp; GPU Fluid Wind (ECS)</h1>
185
+
186
+ <div class="stats-grid">
187
+ <div class="stat-row"><span>FPS</span><span id="stat-fps" class="stat-val">--</span></div>
188
+ <div class="stat-row"><span>Trees</span><span id="stat-trees" class="stat-val">--</span></div>
189
+ <div class="stat-row"><span>Wind Rigs</span><span id="stat-rigs" class="stat-val">--</span></div>
190
+ <div class="stat-row"><span>Joints</span><span id="stat-joints" class="stat-val">--</span></div>
191
+ <div class="stat-row"><span>Triangles</span><span id="stat-tris" class="stat-val">--</span></div>
192
+ <div class="stat-row"><span>Gust Wave</span><span id="stat-gust" class="stat-val">Idle</span></div>
193
+ </div>
194
+
195
+ <div class="section-title">Scene Layout</div>
196
+ <div class="mode-grid" id="mode-buttons">
197
+ <button data-mode="specimen" class="active">Single Specimen</button>
198
+ <button data-mode="grove">Mixed Grove (9)</button>
199
+ </div>
200
+
201
+ <div class="section-title">Foliage Visibility</div>
202
+ <div class="mode-grid" id="leaves-buttons">
203
+ <button data-leaves="true" class="active">Leaves On</button>
204
+ <button data-leaves="false">Bare Branches</button>
205
+ </div>
206
+
207
+ <div class="section-title">Species Preset</div>
208
+ <div class="preset-grid" id="preset-buttons"></div>
209
+
210
+ <div class="section-title">Level of Detail (LOD)</div>
211
+ <div class="lod-grid" id="lod-buttons">
212
+ <button data-lod="0" class="active">LOD 0</button>
213
+ <button data-lod="1">LOD 1</button>
214
+ <button data-lod="2">LOD 2</button>
215
+ <button data-lod="3">LOD 3</button>
216
+ </div>
217
+
218
+ <div class="section-title">Botanical Seed</div>
219
+ <div class="seed-row">
220
+ <input type="number" id="seed-input" value="1337" step="1" />
221
+ <button id="seed-random-btn" style="flex: 1;">Randomize Seed</button>
222
+ </div>
223
+
224
+ <div class="section-title">ECS Fluid &amp; Aeroelastic Wind</div>
225
+
226
+ <div class="control-row">
227
+ <div class="control-header"><span>Wind Speed</span><span id="val-wind-speed">6.5 m/s</span></div>
228
+ <input type="range" id="slider-wind-speed" min="0" max="22" step="0.25" value="6.5" />
229
+ </div>
230
+
231
+ <div class="control-row">
232
+ <div class="control-header"><span>Gust Amplitude</span><span id="val-gust-strength">4.5 m/s</span></div>
233
+ <input type="range" id="slider-gust-strength" min="0" max="16" step="0.25" value="4.5" />
234
+ </div>
235
+
236
+ <div class="control-row">
237
+ <div class="control-header"><span>Gust Period</span><span id="val-gust-period">5.5 s</span></div>
238
+ <input type="range" id="slider-gust-period" min="1.0" max="14.0" step="0.5" value="5.5" />
239
+ </div>
240
+
241
+ <div class="control-row">
242
+ <div class="control-header"><span>Wind Heading</span><span id="val-wind-heading">25°</span></div>
243
+ <input type="range" id="slider-wind-heading" min="0" max="360" step="5" value="25" />
244
+ </div>
245
+
246
+ <div class="control-row">
247
+ <div class="control-header"><span>Foliage Rig Weight</span><span id="val-wind-weight">1.00</span></div>
248
+ <input type="range" id="slider-wind-weight" min="0" max="1.5" step="0.05" value="1.0" />
249
+ </div>
250
+
251
+ <button id="btn-trigger-gust" class="gust-btn">Send 3D Fluid Gust &amp; Vortex Wave</button>
252
+
253
+ <div class="hint">Left-drag: Orbit &bull; WASD/QE: Fly &bull; Scroll: Zoom</div>
254
+ </div>
255
+
256
+ <div id="message"></div>
257
+
258
+ <script type="module" src="./main.js"></script>
259
+ </body>
260
+ </html>