@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,6 +1,7 @@
1
1
  import { PI2 } from "../../../core/math/PI2.js";
2
2
  import { clamp } from "../../../core/math/clamp.js";
3
3
  import { lerp } from "../../../core/math/lerp.js";
4
+ import { worley_noise_2d } from "../../../core/math/noise/worley_noise_2d.js";
4
5
  import { seededRandom } from "../../../core/math/random/seededRandom.js";
5
6
  import { smoothStep } from "../../../core/math/smoothStep.js";
6
7
  import { Sampler2D } from "../../../engine/graphics/texture/sampler/Sampler2D.js";
@@ -13,84 +14,12 @@ import { TextureFilterType } from "../../../shade/renderer/texture/TextureFilter
13
14
  import { TextureWrapType } from "../../../shade/renderer/texture/TextureWrapType.js";
14
15
  import { AlphaMode } from "../../../shade/renderer/texture/source/AlphaMode.js";
15
16
  import { ShadeImage } from "../../../shade/renderer/texture/source/ShadeImage.js";
16
- import { BarkMaterialConfig } from "../config/BarkMaterialConfig.js";
17
+ import { BarkMaterialConfig } from "../config/BarkMaterialConfig.js";
18
+ import { FoliageBarkType } from "../config/FoliageBarkType.js";
17
19
 
18
20
  const SCRATCH_WORLEY = new Float32Array(3);
19
21
  const SCRATCH_WORLEY2 = new Float32Array(3);
20
22
 
21
- /**
22
- * Fast deterministic integer hash in [0, 1).
23
- * @param {number} ix
24
- * @param {number} iy
25
- * @param {number} seed
26
- * @returns {number}
27
- */
28
- function cell_hash_01(ix, iy, seed) {
29
- let h = (ix * 374761393 + iy * 668265263 + seed * 1442695041) | 0;
30
- h = Math.imul(h ^ (h >>> 13), 1274126177);
31
- h = (h ^ (h >>> 16)) >>> 0;
32
- return h / 4294967296.0;
33
- }
34
-
35
- /**
36
- * Evaluates a seamlessly tileable 2D cellular Worley (Voronoi) noise on `[0, 1)^2`
37
- * with periodic lattice dimensions `(cells_u, cells_v)`.
38
- * Writes `[F1, F2 - F1, cell_id]` into `out`.
39
- *
40
- * @param {Float32Array|number[]} out
41
- * @param {number} u
42
- * @param {number} v
43
- * @param {number} cells_u
44
- * @param {number} cells_v
45
- * @param {number} seed
46
- */
47
- function sample_tileable_worley(out, u, v, cells_u, cells_v, seed) {
48
- const cu = Math.max(1, cells_u | 0);
49
- const cv = Math.max(1, cells_v | 0);
50
- const u_wrap = ((u % 1.0) + 1.0) % 1.0;
51
- const v_wrap = ((v % 1.0) + 1.0) % 1.0;
52
-
53
- const gx = u_wrap * cu;
54
- const gy = v_wrap * cv;
55
- const ix0 = Math.floor(gx);
56
- const iy0 = Math.floor(gy);
57
-
58
- let d1 = 1e9;
59
- let d2 = 1e9;
60
- let best_id = 0.0;
61
-
62
- for (let dy = -1; dy <= 1; dy++) {
63
- const ny = iy0 + dy;
64
- const wy = ((ny % cv) + cv) % cv;
65
- for (let dx = -1; dx <= 1; dx++) {
66
- const nx = ix0 + dx;
67
- const wx = ((nx % cu) + cu) % cu;
68
-
69
- const jx = cell_hash_01(wx, wy, seed);
70
- const jy = cell_hash_01(wx, wy, seed ^ 0x6C8E9CF5);
71
- const cid = cell_hash_01(wx, wy, seed ^ 0xB5297A4D);
72
-
73
- const px = nx + 0.15 + 0.70 * jx - gx;
74
- const py = ny + 0.15 + 0.70 * jy - gy;
75
- const dist2 = px * px + py * py;
76
-
77
- if (dist2 < d1) {
78
- d2 = d1;
79
- d1 = dist2;
80
- best_id = cid;
81
- } else if (dist2 < d2) {
82
- d2 = dist2;
83
- }
84
- }
85
- }
86
-
87
- const f1 = Math.sqrt(d1);
88
- const f2 = Math.sqrt(d2);
89
- out[0] = f1;
90
- out[1] = clamp(f2 - f1, 0.0, 1.0);
91
- out[2] = best_id;
92
- }
93
-
94
23
  /**
95
24
  * Evaluates a seamlessly tileable 2D periodic gradient noise value on `[0, 1)^2`
96
25
  * with integer periods `(freq_u, freq_v)` and zero allocation overhead.
@@ -160,7 +89,7 @@ function sample_tileable_bark_noise(u, v, freq_u, freq_v, ox, oy, oz) {
160
89
  *
161
90
  * @param {number} seed
162
91
  * @param {number} count
163
- * @param {string} bark_type
92
+ * @param {FoliageBarkType|number} bark_type
164
93
  * @returns {Array<{u: number, v: number, rx: number, ry: number, phase: number}>}
165
94
  */
166
95
  function build_bark_knot_sites(seed, count, bark_type) {
@@ -170,8 +99,8 @@ function build_bark_knot_sites(seed, count, bark_type) {
170
99
  sites.push({
171
100
  u: ((k + 0.22 + 0.55 * rng()) / Math.max(1, count)) % 1.0,
172
101
  v: 0.18 + (k + 0.18 + 0.60 * rng()) / Math.max(1, count) * 0.44,
173
- rx: bark_type === "birch" ? (0.075 + 0.030 * rng()) : (0.055 + 0.025 * rng()),
174
- ry: bark_type === "birch" ? (0.008 + 0.004 * rng()) : (0.011 + 0.005 * rng()),
102
+ rx: bark_type === FoliageBarkType.Birch ? (0.075 + 0.030 * rng()) : (0.055 + 0.025 * rng()),
103
+ ry: bark_type === FoliageBarkType.Birch ? (0.008 + 0.004 * rng()) : (0.011 + 0.005 * rng()),
175
104
  phase: rng() * PI2
176
105
  });
177
106
  }
@@ -200,7 +129,7 @@ export function evaluate_bark_relief(out, u, v, cfg, seed = 1) {
200
129
  const oz = (((seed ^ 0x2DDFA232) * 1664525) & 0xFFFF) * 0.003 - 98.0;
201
130
 
202
131
  const knot_amt = clamp(cfg.knot_amount ?? 0.55, 0.0, 1.0);
203
- const bark_type = (cfg.bark_type || "fissured").toLowerCase();
132
+ const bark_type = cfg.bark_type ?? FoliageBarkType.Fissured;
204
133
 
205
134
  // Ontogenetic attenuation: old basal/mid bark has macro-relief, young upper twigs are smooth
206
135
  const young_fade = 1.0 - 0.82 * smoothStep(0.60, 0.84, v0);
@@ -248,7 +177,7 @@ export function evaluate_bark_relief(out, u, v, cfg, seed = 1) {
248
177
 
249
178
  const n_macro1 = sample_tileable_bark_noise(u0, v_tile, 2, 7, ox, oy, oz);
250
179
  const n_macro2 = sample_tileable_bark_noise(u0, v_tile, 3, 12, ox + 37.0, oy + 19.0, oz + 53.0);
251
- const amp = bark_type === "birch" ? 0.34 : 0.46;
180
+ const amp = bark_type === FoliageBarkType.Birch ? 0.34 : 0.46;
252
181
  const h = clamp(0.5 + (0.58 * n_macro1 + 0.42 * n_macro2) * amp * young_fade + knot_height, 0.0, 1.0);
253
182
 
254
183
  const eps = 0.02;
@@ -312,9 +241,9 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
312
241
  const base_rough = clamp(Math.max(0.86, cfg.roughness), 0.86, 0.98);
313
242
 
314
243
  // Determine effective archetype
315
- let bark_type = (cfg.bark_type || "fissured").toLowerCase();
316
- if (bark_type === "fissured" && lenticel > 0.55 && cfg.primary_color.r > 0.72) {
317
- bark_type = "birch";
244
+ let bark_type = cfg.bark_type ?? FoliageBarkType.Fissured;
245
+ if (bark_type === FoliageBarkType.Fissured && lenticel > 0.55 && cfg.primary_color.r > 0.72) {
246
+ bark_type = FoliageBarkType.Birch;
318
247
  }
319
248
 
320
249
  const r1 = cfg.primary_color.r, g1 = cfg.primary_color.g, b1 = cfg.primary_color.b;
@@ -324,7 +253,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
324
253
  const bi = cfg.inner_bark_color?.b ?? 0.22;
325
254
  const rm = cfg.moss_color.r, gm = cfg.moss_color.g, bm = cfg.moss_color.b;
326
255
 
327
- const knot_sites = build_bark_knot_sites(seed, bark_type === "birch" ? 6 : 5, bark_type);
256
+ const knot_sites = build_bark_knot_sites(seed, bark_type === FoliageBarkType.Birch ? 6 : 5, bark_type);
328
257
 
329
258
  // Pass 1: Synthesize species-specific ontogenetic bark heightfield and albedo
330
259
  for (let y = 0; y < height; y++) {
@@ -364,7 +293,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
364
293
 
365
294
  u_flow += -du * 0.20 * Math.exp(-0.55 * rho2) * knot_amt * mature_w;
366
295
 
367
- if (bark_type === "birch") {
296
+ if (bark_type === FoliageBarkType.Birch) {
368
297
  // Characteristic dark craggy chevron "Birch Eye" branch-collar scar
369
298
  const y_chev = yk + 0.45 * Math.pow(Math.abs(xk), 1.15);
370
299
  const chev_ridge = Math.exp(-3.4 * y_chev * y_chev) * Math.exp(-1.10 * xk * xk);
@@ -390,7 +319,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
390
319
  let cr = r1, cg = g1, cb = b1;
391
320
  let rough = base_rough;
392
321
 
393
- if (bark_type === "birch") {
322
+ if (bark_type === FoliageBarkType.Birch) {
394
323
  // --- ARCHETYPE 2: SILVER / PAPER BIRCH (WORLD-ASPECT CALIBRATED) ---
395
324
  const n_low = sample_tileable_bark_noise(u, v, 2, 16, ox, oy, oz);
396
325
  const n_med = sample_tileable_bark_noise(u, v, 4, 64, ox + 37.0, oy + 19.0, oz + 53.0);
@@ -413,8 +342,8 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
413
342
  const fine_horiz = 0.5 + 0.5 * Math.sin(v * PI2 * 280.0 + n_med * 0.7);
414
343
 
415
344
  // Crisp thin horizontal lenticel dashes (3x220 and 6x360 cells so dashes are thin in world Y!)
416
- sample_tileable_worley(SCRATCH_WORLEY, u + n_low * 0.012, v, 3, 220, seed ^ 0x13579BDF);
417
- sample_tileable_worley(SCRATCH_WORLEY2, u + n_med * 0.008, v, 6, 360, seed ^ 0x2468ACE0);
345
+ worley_noise_2d(SCRATCH_WORLEY, u + n_low * 0.012, v, 3, 220, seed ^ 0x13579BDF);
346
+ worley_noise_2d(SCRATCH_WORLEY2, u + n_med * 0.008, v, 6, 360, seed ^ 0x2468ACE0);
418
347
  const lent_dash1 = smoothStep(0.28, 0.07, SCRATCH_WORLEY[0]) * (SCRATCH_WORLEY[2] < lenticel * 0.55 ? 1.0 : 0.0);
419
348
  const lent_dash2 = smoothStep(0.25, 0.06, SCRATCH_WORLEY2[0]) * (SCRATCH_WORLEY2[2] < lenticel * 0.65 ? 1.0 : 0.0);
420
349
  const lent_line = Math.pow(Math.max(0.0, Math.sin(v * PI2 * 180.0 + n_low * 1.4)), 7.0)
@@ -499,7 +428,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
499
428
  }
500
429
 
501
430
  rough = clamp(base_rough + 0.05 * birch_basal_mask - 0.02 * birch_young_mask, 0.85, 0.97);
502
- } else if (bark_type === "plated") {
431
+ } else if (bark_type === FoliageBarkType.Plated) {
503
432
  // --- ARCHETYPE 3: RAGGED FLAKY CONIFER SCALE BARK (PINE / SPRUCE, WORLD-ASPECT CALIBRATED) ---
504
433
  const warp_u = (
505
434
  sample_tileable_bark_noise(u, v, 3, 20, ox + 11.3, oy + 7.1, oz + 3.7) * 0.042
@@ -515,8 +444,8 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
515
444
 
516
445
  // World-aspect-calibrated scale lattice: 6x28 primary scales + 12x56 secondary scales
517
446
  const cells_v = Math.max(12, Math.round(freq_u * 4.5));
518
- sample_tileable_worley(SCRATCH_WORLEY, uw, vw, freq_u, cells_v, seed);
519
- sample_tileable_worley(SCRATCH_WORLEY2, uw, vw, freq_u * 2, cells_v * 2, seed ^ 0x9E3779B9);
447
+ worley_noise_2d(SCRATCH_WORLEY, uw, vw, freq_u, cells_v, seed);
448
+ worley_noise_2d(SCRATCH_WORLEY2, uw, vw, freq_u * 2, cells_v * 2, seed ^ 0x9E3779B9);
520
449
 
521
450
  const df1 = SCRATCH_WORLEY[1];
522
451
  const cid1 = SCRATCH_WORLEY[2];
@@ -566,7 +495,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
566
495
  cg = lerp(mg, yg, young_w);
567
496
  cb = lerp(mb, yb, young_w);
568
497
  rough = clamp(lerp(0.95, base_rough, crevice_mix) * (1.0 - 0.03 * young_w), 0.86, 0.98);
569
- } else if (bark_type === "ringed") {
498
+ } else if (bark_type === FoliageBarkType.Ringed) {
570
499
  // --- ARCHETYPE 4: RINGED / FIBROUS TRUNK BARK (PALM / SHRUB / FERN) ---
571
500
  const n1 = sample_tileable_bark_noise(u, v, 2, 24, ox, oy, oz);
572
501
  const n2 = sample_tileable_bark_noise(u, v, 12, 48, ox + 41.0, oy + 29.0, oz + 73.0);
@@ -597,8 +526,8 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
597
526
 
598
527
  // Braided cellular Voronoi ridges + multi-harmonic vertical canyons + craggy transverse breaks
599
528
  const cells_v = Math.max(10, Math.round(freq_u * 3.6));
600
- sample_tileable_worley(SCRATCH_WORLEY, uw, vw, freq_u, cells_v, seed);
601
- sample_tileable_worley(SCRATCH_WORLEY2, uw, vw, freq_u * 2, cells_v * 2, seed ^ 0x5A3C9E17);
529
+ worley_noise_2d(SCRATCH_WORLEY, uw, vw, freq_u, cells_v, seed);
530
+ worley_noise_2d(SCRATCH_WORLEY2, uw, vw, freq_u * 2, cells_v * 2, seed ^ 0x5A3C9E17);
602
531
 
603
532
  const detail_n1 = sample_tileable_bark_noise(uw, vw, freq_u, 24, ox, oy, oz);
604
533
  const detail_n2 = sample_tileable_bark_noise(uw, vw, freq_u * 2, 48, ox + 37.0, oy + 19.0, oz + 53.0);
@@ -684,7 +613,7 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
684
613
 
685
614
  // Pass 2: 3x3 rotationally invariant Scharr normal map + multi-radius Laplacian cavity AO
686
615
  const res_scale = Math.max(1.0, width / 64.0);
687
- const base_slope = (bark_type === "birch"
616
+ const base_slope = (bark_type === FoliageBarkType.Birch
688
617
  ? (2.10 * depth + 0.45)
689
618
  : (2.35 * depth + 0.52)) * res_scale;
690
619
  const r_ao = Math.max(1, Math.round(width / 64));
@@ -795,7 +724,6 @@ export function make_bark_material(config = new BarkMaterialConfig(), seed = 1)
795
724
  material.ambient_factors.a = 1.0;
796
725
  material.ambient_factors.b = 0.0;
797
726
  material.transparency_mode = TransparencyMode.Opaque;
798
- material.transparency = TransparencyMode.Opaque;
799
727
  material.draw_side = ShadeDrawSide.Front;
800
728
 
801
729
  return material;
@@ -1,14 +1,40 @@
1
+ /**
2
+ * Packs `variant_count` square foliage card tiles of size `resolution x resolution` into a 2D atlas
3
+ * using the engine's `MaxRectanglesPacker` (`pack_max_rectangles`), returning the atlas dimensions,
4
+ * pixel-space `AABB2` boxes, and normalized `[u0, v0, u1, v1]` UV rectangles.
5
+ *
6
+ * @param {number} [resolution=128]
7
+ * @param {number} [variant_count=4]
8
+ * @returns {{
9
+ * resolution: number,
10
+ * variant_count: number,
11
+ * atlas_w: number,
12
+ * atlas_h: number,
13
+ * boxes: AABB2[],
14
+ * uv_rects: Float32Array
15
+ * }}
16
+ */
17
+ export function compute_foliage_variant_atlas_layout(resolution?: number, variant_count?: number): {
18
+ resolution: number;
19
+ variant_count: number;
20
+ atlas_w: number;
21
+ atlas_h: number;
22
+ boxes: AABB2[];
23
+ uv_rects: Float32Array;
24
+ };
1
25
  /**
2
26
  * Synthesizes a turn-key procedural PBR cutout `StandardShadeMaterial` (`TransparencyMode.AlphaTested`,
3
- * `ShadeDrawSide.Double`) for botanical foliage cards, with dilated straight-alpha Albedo
4
- * (`AlphaMode.Straight`, `ColorSpace.SRGB`), 2-channel Normal map (`ColorSpace.LinearSRGB`),
5
- * and ORM (`ColorSpace.LinearSRGB`).
27
+ * `ShadeDrawSide.Double`) for botanical foliage cards, packing `config.variant_count` ontogenetic and
28
+ * biochemically senescent leaf cluster variants into the texture atlas via `MaxRectanglesPacker`
29
+ * (`pack_max_rectangles`), with dilated straight-alpha Albedo (`AlphaMode.Straight`, `ColorSpace.SRGB`),
30
+ * 2-channel Normal map (`ColorSpace.LinearSRGB`), and ORM (`ColorSpace.LinearSRGB`).
6
31
  *
7
32
  * @param {FoliageMaterialConfig|Object} [config]
8
33
  * @param {number} [seed=1]
9
34
  * @returns {StandardShadeMaterial}
10
35
  */
11
36
  export function make_foliage_material(config?: FoliageMaterialConfig | any, seed?: number): StandardShadeMaterial;
37
+ import AABB2 from "../../../core/geom/2d/aabb/AABB2.js";
12
38
  import { FoliageMaterialConfig } from "../config/FoliageMaterialConfig.js";
13
39
  import { StandardShadeMaterial } from "../../../shade/renderer/material/StandardShadeMaterial.js";
14
40
  //# sourceMappingURL=make_foliage_material.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"make_foliage_material.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/material/make_foliage_material.js"],"names":[],"mappings":"AAgGA;;;;;;;;;GASG;AACH,+CAJW,qBAAqB,MAAO,SAC5B,MAAM,GACJ,qBAAqB,CA8PjC;sCAvVqC,oCAAoC;sCARpC,2DAA2D"}
1
+ {"version":3,"file":"make_foliage_material.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/material/make_foliage_material.js"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;GAeG;AACH,kEAXW,MAAM,kBACN,MAAM,GACJ;IACZ,UAAc,EAAE,MAAM,CAAC;IACvB,aAAiB,EAAE,MAAM,CAAC;IAC1B,OAAW,EAAE,MAAM,CAAC;IACpB,OAAW,EAAE,MAAM,CAAC;IACpB,KAAS,EAAE,KAAK,EAAE,CAAC;IACnB,QAAY,EAAE,YAAY,CAAA;CACvB,CA4CH;AAuGD;;;;;;;;;;GAUG;AACH,+CAJW,qBAAqB,MAAO,SAC5B,MAAM,GACJ,qBAAqB,CA6ZjC;kBA5lBiB,qCAAqC;sCAiBjB,oCAAoC;sCARpC,2DAA2D"}