@woosh/meep-engine 3.61.1 → 3.61.3

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 (474) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/package.json +1 -1
  3. package/src/engine/network/sim/SimActionExecutor.d.ts +4 -0
  4. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  5. package/src/engine/network/sim/SimActionExecutor.js +4 -0
  6. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  7. package/src/generation/foliage/material/foliage_atlas_cutout.d.ts.map +1 -1
  8. package/src/generation/foliage/material/foliage_atlas_cutout.js +21 -5
  9. package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts +8 -0
  10. package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts.map +1 -1
  11. package/src/generation/foliage/mesh/tree_cluster_representatives.js +178 -78
  12. package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
  13. package/src/generation/foliage/mesh/tree_mesh_build_bark.js +178 -97
  14. package/src/generation/foliage/skeleton/ShootLightField.d.ts +1 -0
  15. package/src/generation/foliage/skeleton/ShootLightField.d.ts.map +1 -1
  16. package/src/generation/foliage/skeleton/ShootLightField.js +88 -17
  17. package/src/generation/foliage/skeleton/ShootWoodHash.d.ts +5 -2
  18. package/src/generation/foliage/skeleton/ShootWoodHash.d.ts.map +1 -1
  19. package/src/generation/foliage/skeleton/ShootWoodHash.js +191 -25
  20. package/src/shade/playground/probe_clipmap/README.md +3 -4
  21. package/src/shade/playground/probe_clipmap/index.html +5 -13
  22. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  23. package/src/shade/playground/probe_clipmap/main.js +4 -5
  24. package/src/shade/playground/probe_clipmap_box/README.md +55 -0
  25. package/src/shade/playground/probe_clipmap_box/index.html +185 -0
  26. package/src/shade/playground/probe_clipmap_box/main.d.ts +8 -0
  27. package/src/shade/playground/probe_clipmap_box/main.d.ts.map +1 -0
  28. package/src/shade/playground/probe_clipmap_box/main.js +323 -0
  29. package/src/shade/playground/probe_clipmap_box/scene.d.ts +93 -0
  30. package/src/shade/playground/probe_clipmap_box/scene.d.ts.map +1 -0
  31. package/src/shade/playground/probe_clipmap_box/scene.js +256 -0
  32. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  33. package/src/shade/renderer/Renderer.js +56 -12
  34. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  35. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  36. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  37. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  38. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  39. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts +10 -0
  40. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts.map +1 -0
  41. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.js +54 -0
  42. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +85 -36
  43. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  44. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +813 -412
  45. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts +7 -0
  46. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts.map +1 -1
  47. package/src/shade/renderer/geometry/sdf/MESH_SDF.js +8 -0
  48. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts +14 -0
  49. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts.map +1 -0
  50. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.js +35 -0
  51. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.d.ts.map +1 -1
  52. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js +0 -4
  53. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts +55 -10
  54. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts.map +1 -1
  55. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js +86 -16
  56. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts +2 -2
  57. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts.map +1 -1
  58. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js +28 -2
  59. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts +54 -0
  60. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts.map +1 -0
  61. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.js +146 -0
  62. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts +1 -1
  63. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
  64. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +2 -1
  65. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts +18 -0
  66. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts.map +1 -0
  67. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js +66 -0
  68. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts +17 -0
  69. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts.map +1 -0
  70. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js +66 -0
  71. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts +5 -3
  72. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
  73. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +15 -14
  74. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts +2 -1
  75. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts.map +1 -1
  76. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js +12 -3
  77. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts +21 -0
  78. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts.map +1 -0
  79. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js +84 -0
  80. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts +53 -0
  81. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts.map +1 -0
  82. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js +343 -0
  83. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts +3 -3
  84. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts.map +1 -1
  85. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js +9 -5
  86. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts +2 -2
  87. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts.map +1 -1
  88. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js +3 -2
  89. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts +69 -0
  90. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts.map +1 -0
  91. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.js +294 -0
  92. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts +16 -0
  93. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts.map +1 -0
  94. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.js +36 -0
  95. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts +126 -0
  96. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts.map +1 -0
  97. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js +148 -0
  98. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts +10 -0
  99. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts.map +1 -0
  100. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.js +140 -0
  101. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts +8 -0
  102. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts.map +1 -0
  103. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.js +76 -0
  104. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts +9 -0
  105. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts.map +1 -1
  106. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js +23 -0
  107. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts +13 -0
  108. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts.map +1 -0
  109. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.js +23 -0
  110. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts +262 -0
  111. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts.map +1 -0
  112. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.js +1819 -0
  113. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts +118 -0
  114. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts.map +1 -0
  115. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.js +204 -0
  116. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts +66 -0
  117. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts.map +1 -0
  118. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.js +103 -0
  119. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts +19 -0
  120. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts.map +1 -0
  121. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.js +23 -0
  122. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts +15 -0
  123. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts.map +1 -0
  124. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.js +70 -0
  125. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts +13 -0
  126. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts.map +1 -0
  127. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.js +35 -0
  128. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts +32 -0
  129. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts.map +1 -0
  130. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.js +111 -0
  131. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts +17 -0
  132. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts.map +1 -0
  133. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.js +49 -0
  134. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts +13 -0
  135. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts.map +1 -0
  136. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.js +35 -0
  137. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts +24 -0
  138. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts.map +1 -0
  139. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.js +169 -0
  140. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts +19 -0
  141. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts.map +1 -0
  142. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.js +49 -0
  143. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts +19 -0
  144. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts.map +1 -0
  145. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.js +67 -0
  146. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts +78 -0
  147. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts.map +1 -0
  148. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js +320 -0
  149. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts +15 -0
  150. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts.map +1 -0
  151. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js +48 -0
  152. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts +51 -0
  153. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts.map +1 -0
  154. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js +109 -0
  155. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts +11 -0
  156. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts.map +1 -0
  157. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.js +51 -0
  158. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts +26 -0
  159. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts.map +1 -0
  160. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.js +453 -0
  161. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts +12 -0
  162. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts.map +1 -0
  163. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.js +99 -0
  164. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts +22 -0
  165. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts.map +1 -0
  166. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.js +140 -0
  167. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts +32 -0
  168. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -0
  169. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +261 -0
  170. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +2 -2
  171. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +2 -2
  172. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +6 -6
  173. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +7 -7
  174. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts +12 -0
  175. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts.map +1 -1
  176. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.js +49 -24
  177. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts +12 -0
  178. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts.map +1 -1
  179. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.js +50 -19
  180. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.d.ts.map +1 -1
  181. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.js +6 -2
  182. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -8
  183. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  184. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +89 -20
  185. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +26 -19
  186. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  187. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +226 -148
  188. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +25 -52
  189. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
  190. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +29 -69
  191. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +19 -16
  192. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
  193. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +24 -21
  194. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +46 -22
  195. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
  196. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +49 -36
  197. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts +3 -2
  198. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
  199. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +7 -6
  200. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts +8 -22
  201. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
  202. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +15 -51
  203. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +1 -6
  204. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
  205. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +6 -13
  206. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
  207. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +0 -2
  208. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts +4 -4
  209. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts.map +1 -1
  210. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +9 -34
  211. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts +4 -6
  212. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts.map +1 -1
  213. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +15 -39
  214. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.d.ts +1 -1
  215. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.js +1 -1
  216. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts +1 -2
  217. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
  218. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +2 -6
  219. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts +2 -2
  220. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
  221. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +5 -2
  222. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.d.ts +5 -1
  223. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js +16 -2
  224. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts +45 -0
  225. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts.map +1 -0
  226. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.js +208 -0
  227. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts +24 -0
  228. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts.map +1 -0
  229. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.js +40 -0
  230. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts +34 -0
  231. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts.map +1 -0
  232. package/src/shade/renderer/global_illumination/probe_clipmap/debug/{graph_probe_clipmap_debug_mesh_cards.js → graph_probe_clipmap_debug_mesh_surfaces.js} +38 -57
  233. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts +61 -0
  234. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts.map +1 -0
  235. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.js +193 -0
  236. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts +67 -0
  237. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts.map +1 -0
  238. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.js +142 -0
  239. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts +32 -0
  240. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts.map +1 -0
  241. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.js +70 -0
  242. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts +30 -0
  243. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts.map +1 -0
  244. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.js +71 -0
  245. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts +26 -0
  246. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts.map +1 -0
  247. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.js +176 -0
  248. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +23 -12
  249. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  250. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +72 -52
  251. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +32 -0
  252. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
  253. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +37 -0
  254. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts +10 -0
  255. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts.map +1 -0
  256. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.js +11 -0
  257. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts +11 -0
  258. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts.map +1 -0
  259. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.js +15 -0
  260. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +55 -23
  261. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
  262. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +134 -69
  263. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts +43 -0
  264. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts.map +1 -0
  265. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.js +138 -0
  266. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts +21 -0
  267. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts.map +1 -0
  268. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.js +49 -0
  269. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +4 -3
  270. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
  271. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +19 -24
  272. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts +2 -2
  273. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
  274. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +14 -19
  275. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts +22 -0
  276. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts.map +1 -0
  277. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.js +50 -0
  278. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +4 -4
  279. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -1
  280. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +8 -8
  281. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +1 -1
  282. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
  283. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +8 -4
  284. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +1 -1
  285. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +5 -4
  286. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts.map +1 -1
  287. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +18 -23
  288. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts +1 -1
  289. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts.map +1 -1
  290. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js +4 -2
  291. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.d.ts.map +1 -1
  292. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +4 -6
  293. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +2 -0
  294. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
  295. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +9 -8
  296. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +1 -1
  297. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +2 -2
  298. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts +4 -3
  299. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts.map +1 -1
  300. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js +14 -13
  301. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +7 -4
  302. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  303. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +30 -26
  304. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +6 -6
  305. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  306. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +19 -21
  307. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
  308. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +6 -2
  309. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +2 -2
  310. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +6 -6
  311. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts +14 -0
  312. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts.map +1 -0
  313. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js +22 -0
  314. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts +37 -0
  315. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts.map +1 -0
  316. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.js +122 -0
  317. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.d.ts.map +1 -1
  318. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js +1 -11
  319. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +8 -0
  320. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
  321. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +6 -4
  322. package/src/shade/renderer/light/environment/shader_downsample_environment_map.d.ts.map +1 -1
  323. package/src/shade/renderer/light/environment/shader_downsample_environment_map.js +5 -1
  324. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  325. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +1 -1
  326. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  327. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +2 -18
  328. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts +17 -0
  329. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts.map +1 -0
  330. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.js +16 -0
  331. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.d.ts +1 -1
  332. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.js +1 -1
  333. package/src/shade/renderer/path_tracer/shader/IndirectTextureFilter.js +1 -1
  334. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts +20 -0
  335. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts.map +1 -0
  336. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.js +65 -0
  337. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +26 -8
  338. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  339. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +170 -142
  340. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  341. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts +1 -1
  342. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts.map +1 -1
  343. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js +5 -8
  344. package/src/shade/renderer/scene/GPUSceneContext.d.ts +1 -1
  345. package/src/shade/renderer/scene/GPUSceneContext.js +1 -1
  346. package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts +15 -4
  347. package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts.map +1 -1
  348. package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.js +33 -7
  349. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts +12 -0
  350. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts.map +1 -0
  351. package/src/shade/renderer/shader/chunk/material/albedo_compress.js +26 -0
  352. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts +16 -0
  353. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts.map +1 -0
  354. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.js +22 -0
  355. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts +15 -0
  356. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts.map +1 -0
  357. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.js +23 -0
  358. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts +16 -0
  359. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts.map +1 -0
  360. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.js +25 -0
  361. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts +25 -0
  362. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts.map +1 -0
  363. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.js +36 -0
  364. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts +11 -0
  365. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts.map +1 -0
  366. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.js +38 -0
  367. package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.d.ts +40 -0
  368. package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.d.ts.map +1 -0
  369. package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.js +75 -0
  370. package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.d.ts.map +1 -1
  371. package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.js +3 -1
  372. package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts +28 -0
  373. package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts.map +1 -0
  374. package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.js +41 -0
  375. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts +12 -0
  376. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts.map +1 -0
  377. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.js +24 -0
  378. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts +20 -0
  379. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts.map +1 -0
  380. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.js +35 -0
  381. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts +28 -0
  382. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts.map +1 -0
  383. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.js +79 -0
  384. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts +25 -0
  385. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts.map +1 -0
  386. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.js +89 -0
  387. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts +31 -0
  388. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts.map +1 -0
  389. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.js +66 -0
  390. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts.map +1 -1
  391. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.js +2 -0
  392. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts +17 -0
  393. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts.map +1 -0
  394. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.js +34 -0
  395. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts +18 -0
  396. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts.map +1 -1
  397. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.js +31 -23
  398. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +3 -2
  399. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
  400. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +4 -0
  401. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +2 -5
  402. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -1
  403. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +3 -20
  404. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  405. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +5 -6
  406. package/src/shade/renderer/water/chunk_water_gi.d.ts +1 -1
  407. package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -1
  408. package/src/shade/renderer/water/chunk_water_gi.js +6 -8
  409. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  410. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  411. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  412. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +76 -32
  413. package/src/core/math/hash/squirrel3.d.ts +0 -17
  414. package/src/core/math/hash/squirrel3.d.ts.map +0 -1
  415. package/src/core/math/hash/squirrel3.js +0 -30
  416. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +0 -213
  417. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +0 -1
  418. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +0 -1468
  419. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts +0 -82
  420. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts.map +0 -1
  421. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.js +0 -127
  422. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts +0 -24
  423. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts.map +0 -1
  424. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.js +0 -29
  425. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts +0 -12
  426. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts.map +0 -1
  427. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.js +0 -31
  428. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts +0 -11
  429. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts.map +0 -1
  430. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.js +0 -21
  431. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts +0 -29
  432. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts.map +0 -1
  433. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.js +0 -179
  434. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts +0 -17
  435. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts.map +0 -1
  436. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.js +0 -107
  437. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts +0 -65
  438. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts.map +0 -1
  439. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +0 -376
  440. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts +0 -40
  441. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts.map +0 -1
  442. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js +0 -301
  443. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts +0 -19
  444. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts.map +0 -1
  445. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.js +0 -61
  446. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +0 -18
  447. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts.map +0 -1
  448. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +0 -102
  449. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts +0 -15
  450. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts.map +0 -1
  451. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.js +0 -65
  452. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts +0 -22
  453. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts.map +0 -1
  454. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.js +0 -136
  455. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts +0 -20
  456. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts.map +0 -1
  457. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.js +0 -104
  458. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts +0 -20
  459. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts.map +0 -1
  460. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.js +0 -80
  461. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts +0 -18
  462. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts.map +0 -1
  463. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.js +0 -113
  464. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts +0 -30
  465. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts.map +0 -1
  466. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.js +0 -146
  467. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts +0 -34
  468. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts.map +0 -1
  469. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +0 -31
  470. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +0 -1
  471. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +0 -82
  472. package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.d.ts +0 -12
  473. package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.d.ts.map +0 -1
  474. package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.js +0 -30
@@ -1 +1 @@
1
- {"version":3,"file":"tree_mesh_build_bark.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/mesh/tree_mesh_build_bark.js"],"names":[],"mappings":"AA+iBA;;;;;GAKG;AACH,2DAJW,QAAQ,SACR,MAAM,GACJ,WAAW,CAevB;AAED;;;;;;;;;;GAUG;AACH,+CANW,OAAO,6BAA6B,EAAE,YAAY,WAClD,iBAAiB,eACjB,aAAa,QACb,OAAO,8CAA8C,EAAE,QAAQ,yBAC7D,QAAQ,CAyxBpB;AAED;;;;;;;;;;;;;;GAcG;AACH,yDAVW,OAAO,6BAA6B,EAAE,YAAY,WAClD,iBAAiB,eACjB,aAAa,GACX,IAAI,MAAM,EAAE,MAAM;IAC9B,EAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IACvC,CAAK,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAC5D,EAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IACnD,EAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAC/C,CAAC,CAAC,CAQL;yBAv3CwB,8CAA8C;kCAOrC,gCAAgC;8BADpC,4BAA4B"}
1
+ {"version":3,"file":"tree_mesh_build_bark.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/mesh/tree_mesh_build_bark.js"],"names":[],"mappings":"AAynBA;;;;;GAKG;AACH,2DAJW,QAAQ,SACR,MAAM,GACJ,WAAW,CAevB;AAED;;;;;;;;;;GAUG;AACH,+CANW,OAAO,6BAA6B,EAAE,YAAY,WAClD,iBAAiB,eACjB,aAAa,QACb,OAAO,8CAA8C,EAAE,QAAQ,yBAC7D,QAAQ,CAgyBpB;AAED;;;;;;;;;;;;;;GAcG;AACH,yDAVW,OAAO,6BAA6B,EAAE,YAAY,WAClD,iBAAiB,eACjB,aAAa,GACX,IAAI,MAAM,EAAE,MAAM;IAC9B,EAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IACvC,CAAK,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAC5D,EAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IACnD,EAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAC/C,CAAC,CAAC,CAQL;yBAx8CwB,8CAA8C;kCAOrC,gCAAgC;8BADpC,4BAA4B"}
@@ -72,9 +72,55 @@ const RING = {
72
72
  /** @type {import("../config/BranchGeneratorConfig.js").BranchGeneratorConfig|null} */
73
73
  lvl_cfg: null,
74
74
  collars: [],
75
- knots: []
75
+ knots: [],
76
+ active_collars: [],
77
+ active_collar_theta: [],
78
+ active_knots: [],
79
+ active_knot_theta: [],
80
+ is_circle: false
76
81
  };
77
82
 
83
+ function ring_prepare(ring) {
84
+ const ac = ring.active_collars;
85
+ const act = ring.active_collar_theta;
86
+ ac.length = 0;
87
+ act.length = 0;
88
+ const rx = ring.rx, ry = ring.ry, rz = ring.rz;
89
+ const sx = ring.sx, sy = ring.sy, sz = ring.sz;
90
+ const t_norm = ring.t_norm;
91
+ if (ring.collar_amp > 1e-4) {
92
+ const collars = ring.collars;
93
+ for (let i = 0; i < collars.length; i++) {
94
+ const cc = collars[i];
95
+ if (Math.abs(t_norm - cc.t_c) < 3.2 * cc.sigma_t) {
96
+ ac.push(cc);
97
+ act.push(Math.atan2(
98
+ cc.tx_c * sx + cc.ty_c * sy + cc.tz_c * sz,
99
+ cc.tx_c * rx + cc.ty_c * ry + cc.tz_c * rz
100
+ ));
101
+ }
102
+ }
103
+ }
104
+ const ak = ring.active_knots;
105
+ const akt = ring.active_knot_theta;
106
+ ak.length = 0;
107
+ akt.length = 0;
108
+ if (ring.knot_scale > 0.05) {
109
+ const knots = ring.knots;
110
+ for (let i = 0; i < knots.length; i++) {
111
+ const kn = knots[i];
112
+ if (Math.abs(t_norm - kn.t_k) < 3.2 * kn.sigma_t) {
113
+ ak.push(kn);
114
+ akt.push(Math.atan2(
115
+ kn.tx_k * sx + kn.ty_k * sy + kn.tz_k * sz,
116
+ kn.tx_k * rx + kn.ty_k * ry + kn.tz_k * rz
117
+ ));
118
+ }
119
+ }
120
+ }
121
+ ring.is_circle = !(ring.flare_env > 0.0) && !(ring.flute_env > 1e-5) && !(ring.oval_ecc > 1e-4) && ac.length === 0 && ak.length === 0;
122
+ }
123
+
78
124
  /**
79
125
  * The collars of the branches `b` carries, where each joins it: a boss on its bark, and the grain flowing round it.
80
126
  *
@@ -160,6 +206,14 @@ function circle_sides(r, tolerance) {
160
206
  * @type {number}
161
207
  */
162
208
  const BARK_REFERENCE_SIDES = 64;
209
+ const REF_THETA = new Float64Array(BARK_REFERENCE_SIDES);
210
+ const REF_COS = new Float64Array(BARK_REFERENCE_SIDES);
211
+ const REF_SIN = new Float64Array(BARK_REFERENCE_SIDES);
212
+ for (let j = 0; j < BARK_REFERENCE_SIDES; j++) {
213
+ REF_THETA[j] = PI2 * j / BARK_REFERENCE_SIDES;
214
+ REF_COS[j] = Math.cos(REF_THETA[j]);
215
+ REF_SIN[j] = Math.sin(REF_THETA[j]);
216
+ }
163
217
 
164
218
  /**
165
219
  * Fills {@link RING} for the candidate ring `c` of a plan's arrays.
@@ -183,19 +237,18 @@ function plan_fill_ring(plan, c, lvl_cfg, collars, knots) {
183
237
  RING.lvl_cfg = lvl_cfg;
184
238
  RING.collars = collars;
185
239
  RING.knots = knots;
240
+ ring_prepare(RING);
186
241
  }
187
242
 
188
243
  /**
189
244
  * Point of candidate ring `c` at angle `theta`, into `out` at `o`: its spine point plus its shaped radius along the
190
245
  * ring's radial direction. {@link RING} must hold the ring.
191
246
  */
192
- function plan_ring_point(out, o, plan, c, theta) {
193
- bark_ring_shape(SCRATCH_SHAPE, theta, RING);
247
+ function plan_ring_point(out, o, plan, c, theta, cos_t = Math.cos(theta), sin_t = Math.sin(theta)) {
248
+ bark_ring_shape(SCRATCH_SHAPE, theta, RING, cos_t, sin_t);
194
249
  // the weld's symmetric flare on the rings after the first
195
250
  const r_mult = SCRATCH_SHAPE[0] + (c > 0 ? plan.weld[c] * 0.18 : 0.0);
196
251
  const r = plan.radius[c] * Math.max(0.25, r_mult);
197
- const cos_t = Math.cos(theta);
198
- const sin_t = Math.sin(theta);
199
252
  out[o] = plan.points[c * 3] + r * (cos_t * RING.rx + sin_t * RING.sx);
200
253
  out[o + 1] = plan.points[c * 3 + 1] + r * (cos_t * RING.ry + sin_t * RING.sy);
201
254
  out[o + 2] = plan.points[c * 3 + 2] + r * (cos_t * RING.rz + sin_t * RING.sz);
@@ -209,7 +262,8 @@ function point_segment_distance(p, po, a, ao, b, bo) {
209
262
  const apx = p[po] - a[ao], apy = p[po + 1] - a[ao + 1], apz = p[po + 2] - a[ao + 2];
210
263
  const len2 = abx * abx + aby * aby + abz * abz;
211
264
  const t = len2 > 0 ? clamp((apx * abx + apy * aby + apz * abz) / len2, 0, 1) : 0;
212
- return Math.hypot(apx - t * abx, apy - t * aby, apz - t * abz);
265
+ const dx = apx - t * abx, dy = apy - t * aby, dz = apz - t * abz;
266
+ return Math.sqrt(dx * dx + dy * dy + dz * dz);
213
267
  }
214
268
 
215
269
  /**
@@ -370,8 +424,26 @@ function bark_plan_rings(skeleton, b, lvl_cfg, nodes, edges, collars, knots, wel
370
424
  const measured = new Float64Array(C * M * 3);
371
425
  for (let c = 0; c < C; c++) {
372
426
  plan_fill_ring(plan, c, lvl_cfg, collars, knots);
373
- for (let j = 0; j < M; j++) {
374
- plan_ring_point(measured, (c * M + j) * 3, plan, c, PI2 * j / M);
427
+ if (M === BARK_REFERENCE_SIDES && RING.is_circle) {
428
+ const r = plan.radius[c] * Math.max(0.25, 1.0 + (c > 0 ? plan.weld[c] * 0.18 : 0.0));
429
+ const px = plan.points[c * 3], py = plan.points[c * 3 + 1], pz = plan.points[c * 3 + 2];
430
+ const rx = RING.rx, ry = RING.ry, rz = RING.rz, sx = RING.sx, sy = RING.sy, sz = RING.sz;
431
+ const base = c * M * 3;
432
+ for (let j = 0; j < M; j++) {
433
+ const cos_t = REF_COS[j], sin_t = REF_SIN[j];
434
+ const o = base + j * 3;
435
+ measured[o] = px + r * (cos_t * rx + sin_t * sx);
436
+ measured[o + 1] = py + r * (cos_t * ry + sin_t * sy);
437
+ measured[o + 2] = pz + r * (cos_t * rz + sin_t * sz);
438
+ }
439
+ } else if (M === BARK_REFERENCE_SIDES) {
440
+ for (let j = 0; j < M; j++) {
441
+ plan_ring_point(measured, (c * M + j) * 3, plan, c, REF_THETA[j], REF_COS[j], REF_SIN[j]);
442
+ }
443
+ } else {
444
+ for (let j = 0; j < M; j++) {
445
+ plan_ring_point(measured, (c * M + j) * 3, plan, c, PI2 * j / M);
446
+ }
375
447
  }
376
448
  }
377
449
 
@@ -411,18 +483,27 @@ function bark_plan_rings(skeleton, b, lvl_cfg, nodes, edges, collars, knots, wel
411
483
  for (let c = 0; c < C; c++) {
412
484
  if (!keep[c]) continue;
413
485
  plan_fill_ring(plan, c, lvl_cfg, collars, knots);
486
+ polygon[0] = measured[c * M * 3];
487
+ polygon[1] = measured[c * M * 3 + 1];
488
+ polygon[2] = measured[c * M * 3 + 2];
414
489
  let sides = 3;
415
490
  for (; sides < M; sides++) {
416
- for (let k = 0; k <= sides; k++) {
417
- plan_ring_point(polygon, k * 3, plan, c, PI2 * (k % sides) / sides);
491
+ plan_ring_point(polygon, 3, plan, c, PI2 / sides);
492
+ plan_ring_point(SCRATCH_PLAN_MID, 0, plan, c, PI2 * 0.5 / sides);
493
+ if (point_segment_distance(SCRATCH_PLAN_MID, 0, polygon, 0, polygon, 3) > tolerance) continue;
494
+ for (let k = 2; k < sides; k++) {
495
+ plan_ring_point(polygon, k * 3, plan, c, PI2 * k / sides);
418
496
  }
497
+ polygon[sides * 3] = polygon[0];
498
+ polygon[sides * 3 + 1] = polygon[1];
499
+ polygon[sides * 3 + 2] = polygon[2];
419
500
  let within = true;
420
501
  for (let j = 0; j < M && within; j++) {
421
502
  const k = Math.floor(j * sides / M);
422
503
  within = point_segment_distance(measured, (c * M + j) * 3, polygon, k * 3, polygon, (k + 1) * 3) <= tolerance;
423
504
  }
424
505
  // a chord strays furthest from the wood at its middle
425
- for (let k = 0; k < sides && within; k++) {
506
+ for (let k = 1; k < sides && within; k++) {
426
507
  plan_ring_point(SCRATCH_PLAN_MID, 0, plan, c, PI2 * (k + 0.5) / sides);
427
508
  within = point_segment_distance(SCRATCH_PLAN_MID, 0, polygon, k * 3, polygon, (k + 1) * 3) <= tolerance;
428
509
  }
@@ -445,14 +526,19 @@ function bark_plan_rings(skeleton, b, lvl_cfg, nodes, edges, collars, knots, wel
445
526
  * @param {number} theta
446
527
  * @param {RING} ring
447
528
  */
448
- function bark_ring_shape(out, theta, ring) {
529
+ function bark_ring_shape(out, theta, ring, cos_t = Math.cos(theta), sin_t = Math.sin(theta)) {
530
+ if (ring.is_circle) {
531
+ out[0] = 1.0;
532
+ out[1] = 0.0;
533
+ out[2] = 0.0;
534
+ out[3] = 1.0;
535
+ return;
536
+ }
449
537
  const lvl_cfg = ring.lvl_cfg;
450
- const rx = ring.rx, ry = ring.ry, rz = ring.rz;
451
- const sx = ring.sx, sy = ring.sy, sz = ring.sz;
538
+ const ry = ring.ry;
539
+ const sy = ring.sy;
452
540
  const t_norm = ring.t_norm;
453
541
  const unwelded = ring.unwelded;
454
- const cos_t = Math.cos(theta);
455
- const sin_t = Math.sin(theta);
456
542
  const n_rad_y = cos_t * ry + sin_t * sy;
457
543
  const tan_theta_y = -sin_t * ry + cos_t * sy;
458
544
 
@@ -490,64 +576,52 @@ function bark_ring_shape(out, theta, ring) {
490
576
  }
491
577
 
492
578
  // 3. Parent-stem branch collar swelling bosses & UV grain streamline deflection around child branches
493
- const collars = ring.collars;
579
+ const collars = ring.active_collars;
580
+ const collar_thetas = ring.active_collar_theta;
494
581
  const parent_collar_amp = ring.collar_amp;
495
- if (parent_collar_amp > 1e-4 && collars.length > 0) {
496
- for (let c_idx = 0; c_idx < collars.length; c_idx++) {
497
- const cc = collars[c_idx];
498
- const dt = t_norm - cc.t_c;
499
- if (Math.abs(dt) < 3.2 * cc.sigma_t) {
500
- const theta_c = Math.atan2(
501
- cc.tx_c * sx + cc.ty_c * sy + cc.tz_c * sz,
502
- cc.tx_c * rx + cc.ty_c * ry + cc.tz_c * rz
503
- );
504
- const dtheta = Math.atan2(Math.sin(theta - theta_c), Math.cos(theta - theta_c));
505
- const sig_t = dt < 0.0 ? cc.sigma_t * 1.25 : cc.sigma_t * 0.90;
506
- const u_t = dt / sig_t;
507
- const u_th = dtheta / cc.sigma_theta;
508
- const dist2 = u_t * u_t + u_th * u_th;
509
- if (dist2 < 9.0) {
510
- const gauss = Math.exp(-0.5 * dist2);
511
- const b_amp = parent_collar_amp * (0.55 + 0.75 * cc.r_ratio);
512
- r_mult += b_amp * gauss;
513
- d_rmult_dtheta += -b_amp * gauss * (u_th / cc.sigma_theta);
514
- const r_uv2 = dist2 + 0.85;
515
- u_warp += 0.008 * unwelded * (u_th / r_uv2) * Math.exp(-0.35 * dist2);
516
- }
517
- }
582
+ for (let c_idx = 0; c_idx < collars.length; c_idx++) {
583
+ const cc = collars[c_idx];
584
+ const dt = t_norm - cc.t_c;
585
+ const theta_c = collar_thetas[c_idx];
586
+ const dtheta = Math.atan2(Math.sin(theta - theta_c), Math.cos(theta - theta_c));
587
+ const sig_t = dt < 0.0 ? cc.sigma_t * 1.25 : cc.sigma_t * 0.90;
588
+ const u_t = dt / sig_t;
589
+ const u_th = dtheta / cc.sigma_theta;
590
+ const dist2 = u_t * u_t + u_th * u_th;
591
+ if (dist2 < 9.0) {
592
+ const gauss = Math.exp(-0.5 * dist2);
593
+ const b_amp = parent_collar_amp * (0.55 + 0.75 * cc.r_ratio);
594
+ r_mult += b_amp * gauss;
595
+ d_rmult_dtheta += -b_amp * gauss * (u_th / cc.sigma_theta);
596
+ const r_uv2 = dist2 + 0.85;
597
+ u_warp += 0.008 * unwelded * (u_th / r_uv2) * Math.exp(-0.35 * dist2);
518
598
  }
519
599
  }
520
600
 
521
601
  // 4. Branch scars: volcanic callus rims + UV grain streamline deflection
522
- const knots = ring.knots;
602
+ const knots = ring.active_knots;
603
+ const knot_thetas = ring.active_knot_theta;
523
604
  const knot_scale = ring.knot_scale;
524
- if (knot_scale > 0.05 && knots.length > 0) {
525
- for (let k_idx = 0; k_idx < knots.length; k_idx++) {
526
- const kn = knots[k_idx];
527
- const dt = t_norm - kn.t_k;
528
- if (Math.abs(dt) < 3.2 * kn.sigma_t) {
529
- const theta_k = Math.atan2(
530
- kn.tx_k * sx + kn.ty_k * sy + kn.tz_k * sz,
531
- kn.tx_k * rx + kn.ty_k * ry + kn.tz_k * rz
532
- );
533
- const dtheta = Math.atan2(Math.sin(theta - theta_k), Math.cos(theta - theta_k));
534
- const u_t = dt / kn.sigma_t;
535
- const u_th = dtheta / kn.sigma_theta;
536
- const rho2 = u_t * u_t + u_th * u_th;
537
- if (rho2 < 9.0) {
538
- const k_amp = kn.amp_k * knot_scale;
539
- const exp_r = Math.exp(-0.85 * rho2);
540
- const w_rim = (0.30 + 1.90 * rho2) * exp_r;
541
- const dw_drho2 = (1.90 - 0.85 * (0.30 + 1.90 * rho2)) * exp_r;
542
- r_mult += k_amp * w_rim;
543
- d_rmult_dtheta += k_amp * dw_drho2 * (2.0 * u_th / kn.sigma_theta);
544
- if (rho2 < 0.65) {
545
- vert_ao *= (0.72 + 0.28 * (rho2 / 0.65));
546
- }
547
- const r_uv2 = rho2 + 0.85;
548
- u_warp += 0.009 * unwelded * (u_th / r_uv2) * Math.exp(-0.35 * rho2);
549
- }
605
+ for (let k_idx = 0; k_idx < knots.length; k_idx++) {
606
+ const kn = knots[k_idx];
607
+ const dt = t_norm - kn.t_k;
608
+ const theta_k = knot_thetas[k_idx];
609
+ const dtheta = Math.atan2(Math.sin(theta - theta_k), Math.cos(theta - theta_k));
610
+ const u_t = dt / kn.sigma_t;
611
+ const u_th = dtheta / kn.sigma_theta;
612
+ const rho2 = u_t * u_t + u_th * u_th;
613
+ if (rho2 < 9.0) {
614
+ const k_amp = kn.amp_k * knot_scale;
615
+ const exp_r = Math.exp(-0.85 * rho2);
616
+ const w_rim = (0.30 + 1.90 * rho2) * exp_r;
617
+ const dw_drho2 = (1.90 - 0.85 * (0.30 + 1.90 * rho2)) * exp_r;
618
+ r_mult += k_amp * w_rim;
619
+ d_rmult_dtheta += k_amp * dw_drho2 * (2.0 * u_th / kn.sigma_theta);
620
+ if (rho2 < 0.65) {
621
+ vert_ao *= (0.72 + 0.28 * (rho2 / 0.65));
550
622
  }
623
+ const r_uv2 = rho2 + 0.85;
624
+ u_warp += 0.009 * unwelded * (u_th / r_uv2) * Math.exp(-0.35 * rho2);
551
625
  }
552
626
  }
553
627
 
@@ -704,13 +778,13 @@ export function tree_mesh_build_bark(
704
778
  }
705
779
 
706
780
  const positions = geometry_obtain_attribute(out, StandardAttributes.Position, 3, total_vertices);
707
- const normals = geometry_obtain_attribute(out, StandardAttributes.Normal, 3, total_vertices);
708
- const uv0 = geometry_obtain_attribute(out, StandardAttributes.TextureCoordinates0, 2, total_vertices);
709
- const uv1 = geometry_obtain_attribute(out, StandardAttributes.TextureCoordinates1, 2, total_vertices);
710
- const colors = geometry_obtain_attribute(out, StandardAttributes.Color, 3, total_vertices);
711
- const joints = geometry_obtain_joints_attribute(out, total_vertices);
712
- const weights = geometry_obtain_attribute(out, StandardAttributes.SkinningWeights, 4, total_vertices);
713
- const indices = geometry_obtain_index(out, total_indices);
781
+ const normals = only_rings ? null : geometry_obtain_attribute(out, StandardAttributes.Normal, 3, total_vertices);
782
+ const uv0 = only_rings ? null : geometry_obtain_attribute(out, StandardAttributes.TextureCoordinates0, 2, total_vertices);
783
+ const uv1 = only_rings ? null : geometry_obtain_attribute(out, StandardAttributes.TextureCoordinates1, 2, total_vertices);
784
+ const colors = only_rings ? null : geometry_obtain_attribute(out, StandardAttributes.Color, 3, total_vertices);
785
+ const joints = only_rings ? null : geometry_obtain_joints_attribute(out, total_vertices);
786
+ const weights = only_rings ? null : geometry_obtain_attribute(out, StandardAttributes.SkinningWeights, 4, total_vertices);
787
+ const indices = only_rings ? null : geometry_obtain_index(out, total_indices);
714
788
 
715
789
  if (is_empty_fallback) {
716
790
  // Populate valid non-degenerate fallback quad so ensureTangents() and MeshoptClusterizer always succeed
@@ -1057,6 +1131,7 @@ export function tree_mesh_build_bark(
1057
1131
  RING.lvl_cfg = lvl_cfg;
1058
1132
  RING.collars = child_collars;
1059
1133
  RING.knots = branch_knots;
1134
+ ring_prepare(RING);
1060
1135
 
1061
1136
  for (let j = 0; j <= m_i; j++) {
1062
1137
  // Ensure exact periodic closure between j=0 and j=m_i
@@ -1076,7 +1151,7 @@ export function tree_mesh_build_bark(
1076
1151
  const tan_theta_z = -sin_t * rz + cos_t * sz;
1077
1152
 
1078
1153
  // The ring's smooth shape at theta (lobes, flutes, ovalization, collar bosses, knots), then its bark relief
1079
- bark_ring_shape(SCRATCH_SHAPE, theta, RING);
1154
+ bark_ring_shape(SCRATCH_SHAPE, theta, RING, cos_t, sin_t);
1080
1155
  let r_mult = SCRATCH_SHAPE[0];
1081
1156
  let d_rmult_dtheta = SCRATCH_SHAPE[1];
1082
1157
  let u_warp = SCRATCH_SHAPE[2];
@@ -1163,36 +1238,38 @@ export function tree_mesh_build_bark(
1163
1238
  }
1164
1239
 
1165
1240
  const v3 = v_cursor * 3;
1166
- const v2 = v_cursor * 2;
1167
- const v4 = v_cursor * 4;
1168
-
1169
1241
  positions[v3] = vx;
1170
1242
  positions[v3 + 1] = vy;
1171
1243
  positions[v3 + 2] = vz;
1172
1244
 
1173
- normals[v3] = vnx;
1174
- normals[v3 + 1] = vny;
1175
- normals[v3 + 2] = vnz;
1245
+ if (!only_rings) {
1246
+ const v2 = v_cursor * 2;
1247
+ const v4 = v_cursor * 4;
1248
+
1249
+ normals[v3] = vnx;
1250
+ normals[v3 + 1] = vny;
1251
+ normals[v3 + 2] = vnz;
1176
1252
 
1177
- uv0[v2] = k_wrap * (j / m_i) + twist_uv * arc_s + u_warp;
1178
- uv0[v2 + 1] = v_base;
1253
+ uv0[v2] = k_wrap * (j / m_i) + twist_uv * arc_s + u_warp;
1254
+ uv0[v2 + 1] = v_base;
1179
1255
 
1180
- uv1[v2] = wind_sway;
1181
- uv1[v2 + 1] = wind_phase;
1256
+ uv1[v2] = wind_sway;
1257
+ uv1[v2 + 1] = wind_phase;
1182
1258
 
1183
- colors[v3] = vert_ao;
1184
- colors[v3 + 1] = vert_ao;
1185
- colors[v3 + 2] = vert_ao;
1259
+ colors[v3] = vert_ao;
1260
+ colors[v3 + 1] = vert_ao;
1261
+ colors[v3 + 2] = vert_ao;
1186
1262
 
1187
- joints[v4] = ring_j0;
1188
- joints[v4 + 1] = ring_j1;
1189
- joints[v4 + 2] = ring_j2;
1190
- joints[v4 + 3] = ring_j3;
1263
+ joints[v4] = ring_j0;
1264
+ joints[v4 + 1] = ring_j1;
1265
+ joints[v4 + 2] = ring_j2;
1266
+ joints[v4 + 3] = ring_j3;
1191
1267
 
1192
- weights[v4] = ring_w0;
1193
- weights[v4 + 1] = ring_w1;
1194
- weights[v4 + 2] = ring_w2;
1195
- weights[v4 + 3] = ring_w3;
1268
+ weights[v4] = ring_w0;
1269
+ weights[v4 + 1] = ring_w1;
1270
+ weights[v4 + 2] = ring_w2;
1271
+ weights[v4 + 3] = ring_w3;
1272
+ }
1196
1273
 
1197
1274
  v_cursor++;
1198
1275
  }
@@ -1253,7 +1330,7 @@ export function tree_mesh_build_bark(
1253
1330
  w3: ring_w3
1254
1331
  });
1255
1332
 
1256
- if (prev_ring_start >= 0) {
1333
+ if (!only_rings && prev_ring_start >= 0) {
1257
1334
  i_cursor = branch_ring_triangulate(
1258
1335
  indices,
1259
1336
  i_cursor,
@@ -1302,6 +1379,10 @@ export function tree_mesh_build_bark(
1302
1379
  // living branch, a flat break on a dead stub
1303
1380
  const apex_start = v_cursor;
1304
1381
  const m_tip = prev_m;
1382
+ if (only_rings) {
1383
+ v_cursor += m_tip;
1384
+ continue;
1385
+ }
1305
1386
  const apex_height = skeleton.branch_dead[b] ? 0.0 : SHOOT_BUD_HEIGHT;
1306
1387
  const cap_ext = tip_r * apex_height;
1307
1388
  const cap_arc_s = tip_arc_s + cap_ext;
@@ -78,5 +78,6 @@ export class ShootLightField {
78
78
  * @returns {number}
79
79
  */
80
80
  irradiance_at(x: number, y: number, z: number): number;
81
+ #private;
81
82
  }
82
83
  //# sourceMappingURL=ShootLightField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShootLightField.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/skeleton/ShootLightField.js"],"names":[],"mappings":"AA+DA;;;;;;GAMG;AACH;IACI;;;;OAIG;IACH,iBAJW,UAAU,MAAM,CAAC,OACjB,UAAU,MAAM,CAAC,QACjB,MAAM,EAqBhB;IAjBG,aAAgB;IAChB,kBAAiC;IACjC,WAA0D;IAC1D,WAA0D;IAC1D,WAA0D;IAE1D;;;OAGG;IACH,WAFU,YAAY,CAEc;IACpC;;;OAGG;IACH,YAFU,YAAY,CAEuB;IAC7C,4BAAwC;IAG5C;;OAEG;IACH,cAEC;IAED;;;;;;OAMG;IACH,SALW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAQlB;IAED;;;;;;OAMG;IACH,WALW,MAAM,KACN,MAAM,KACN,MAAM,QACN,MAAM,QAKhB;IAED;;;;;OAKG;IACH,mBAJW,UAAU,MAAM,CAAC,KACjB,UAAU,MAAM,CAAC,QACjB,MAAM,QAUhB;IAED;;;;OAIG;IACH,gBAFW,MAAM,QAiChB;IAED;;;;;;;OAOG;IACH,iBALW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,KAClC,MAAM,KACN,MAAM,KACN,MAAM,QAiBhB;IAED;;;;;;OAMG;IACH,iBALW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAKlB;CACJ"}
1
+ {"version":3,"file":"ShootLightField.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/skeleton/ShootLightField.js"],"names":[],"mappings":"AAiEA;;;;;;GAMG;AACH;IAQI;;;;OAIG;IACH,iBAJW,UAAU,MAAM,CAAC,OACjB,UAAU,MAAM,CAAC,QACjB,MAAM,EAqBhB;IAjBG,aAAgB;IAChB,kBAAiC;IACjC,WAA0D;IAC1D,WAA0D;IAC1D,WAA0D;IAE1D;;;OAGG;IACH,WAFU,YAAY,CAEc;IACpC;;;OAGG;IACH,YAFU,YAAY,CAEuB;IAC7C,4BAAwC;IAG5C;;OAEG;IACH,cAeC;IAED;;;;;;OAMG;IACH,SALW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAQlB;IAED;;;;;;OAMG;IACH,WALW,MAAM,KACN,MAAM,KACN,MAAM,QACN,MAAM,QAgBhB;IAED;;;;;OAKG;IACH,mBAJW,UAAU,MAAM,CAAC,KACjB,UAAU,MAAM,CAAC,QACjB,MAAM,QAUhB;IAED;;;;OAIG;IACH,gBAFW,MAAM,QAuEhB;IAED;;;;;;;OAOG;IACH,iBALW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,KAClC,MAAM,KACN,MAAM,KACN,MAAM,QAiBhB;IAED;;;;;;OAMG;IACH,iBALW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAKlB;;CACJ"}
@@ -61,6 +61,8 @@ const SKY_WEIGHTS = (() => {
61
61
  return w;
62
62
  })();
63
63
 
64
+ const OPEN_SKY = SKY_WEIGHTS.reduce((s, w) => s + w, 0);
65
+
64
66
  /**
65
67
  * Light inside a crown from its own leaves: leaf area deposited in a voxel grid, and the relative irradiance each
66
68
  * voxel receives from a standard overcast sky through the leaf area between it and the sky, by Beer-Lambert,
@@ -69,6 +71,13 @@ const SKY_WEIGHTS = (() => {
69
71
  * The cost of {@link solve} is the grid's cells times its 17 sky directions, whatever the leaf count.
70
72
  */
71
73
  export class ShootLightField {
74
+ #min_i = Infinity;
75
+ #max_i = -1;
76
+ #min_j = Infinity;
77
+ #max_j = -1;
78
+ #min_k = Infinity;
79
+ #max_k = -1;
80
+
72
81
  /**
73
82
  * @param {ArrayLike<number>} min world corner of the grid
74
83
  * @param {ArrayLike<number>} max opposite corner
@@ -99,7 +108,20 @@ export class ShootLightField {
99
108
  * Removes all leaf area.
100
109
  */
101
110
  clear() {
102
- this.leaf_area.fill(0);
111
+ if (this.#max_j < 0) return;
112
+ const { nx, nz, leaf_area } = this;
113
+ for (let j = this.#min_j; j <= this.#max_j; j++) {
114
+ for (let k = this.#min_k; k <= this.#max_k; k++) {
115
+ const row = (j * nz + k) * nx;
116
+ leaf_area.fill(0, row + this.#min_i, row + this.#max_i + 1);
117
+ }
118
+ }
119
+ this.#min_i = Infinity;
120
+ this.#max_i = -1;
121
+ this.#min_j = Infinity;
122
+ this.#max_j = -1;
123
+ this.#min_k = Infinity;
124
+ this.#max_k = -1;
103
125
  }
104
126
 
105
127
  /**
@@ -125,8 +147,19 @@ export class ShootLightField {
125
147
  * @param {number} area
126
148
  */
127
149
  deposit(x, y, z, area) {
128
- const v = this.voxel(x, y, z);
129
- if (v >= 0) this.leaf_area[v] += area;
150
+ const i = Math.floor((x - this.min[0]) / this.cell);
151
+ const j = Math.floor((y - this.min[1]) / this.cell);
152
+ const k = Math.floor((z - this.min[2]) / this.cell);
153
+ if (i < 0 || j < 0 || k < 0 || i >= this.nx || j >= this.ny || k >= this.nz) return;
154
+ this.leaf_area[(j * this.nz + k) * this.nx + i] += area;
155
+ if (area > 0) {
156
+ if (i < this.#min_i) this.#min_i = i;
157
+ if (i > this.#max_i) this.#max_i = i;
158
+ if (j < this.#min_j) this.#min_j = j;
159
+ if (j > this.#max_j) this.#max_j = j;
160
+ if (k < this.#min_k) this.#min_k = k;
161
+ if (k > this.#max_k) this.#max_k = k;
162
+ }
130
163
  }
131
164
 
132
165
  /**
@@ -151,33 +184,71 @@ export class ShootLightField {
151
184
  * @param {number} clumping
152
185
  */
153
186
  solve(clumping) {
154
- const { nx, ny, nz, cell } = this;
155
- const k_ext = SPHERICAL_LEAF_PROJECTION * clamp(clumping, 0, 1);
156
- const volume = cell * cell * cell;
187
+ const { nx, nz, cell } = this;
157
188
  const irradiance = this.irradiance;
158
189
  const transmittance = this.transmittance;
159
190
  const leaf_area = this.leaf_area;
160
- irradiance.fill(0);
191
+ const max_j = this.#max_j;
192
+ irradiance.fill(OPEN_SKY);
193
+ if (max_j < 0) return;
194
+
195
+ const min_i = this.#min_i, max_i = this.#max_i;
196
+ const min_k = this.#min_k, max_k = this.#max_k;
197
+ for (let j = max_j; j >= 0; j--) {
198
+ const fall = max_j - j;
199
+ const k0 = Math.max(0, min_k - 2 * fall), k1 = Math.min(nz - 1, max_k + 2 * fall);
200
+ const i0 = Math.max(0, min_i - 2 * fall), i1 = Math.min(nx - 1, max_i + 2 * fall);
201
+ for (let k = k0; k <= k1; k++) {
202
+ const row = (j * nz + k) * nx;
203
+ irradiance.fill(0, row + i0, row + i1 + 1);
204
+ }
205
+ }
206
+
207
+ const k_ext = SPHERICAL_LEAF_PROJECTION * clamp(clumping, 0, 1);
208
+ const volume = cell * cell * cell;
161
209
  for (let d = 0; d < SKY_DIRECTIONS.length; d++) {
162
210
  const [dx, dy, dz] = SKY_DIRECTIONS[d];
163
211
  const step = Math.hypot(dx, dy, dz) * cell;
164
212
  const w = SKY_WEIGHTS[d];
165
213
  // a voxel sees the sky through the voxel one step towards it, which was swept the row before
166
- for (let j = ny - 1; j >= 0; j--) {
214
+ for (let j = max_j; j >= 0; j--) {
215
+ const fall = max_j - j;
216
+ const k0 = Math.max(0, min_k - 2 * fall), k1 = Math.min(nz - 1, max_k + 2 * fall);
217
+ const i0 = Math.max(0, min_i - 2 * fall), i1 = Math.min(nx - 1, max_i + 2 * fall);
218
+ const dk0 = dz < 0 ? min_k : Math.max(0, min_k - dz * fall);
219
+ const dk1 = dz > 0 ? max_k : Math.min(nz - 1, max_k - dz * fall);
220
+ const di0 = dx < 0 ? min_i : Math.max(0, min_i - dx * fall);
221
+ const di1 = dx > 0 ? max_i : Math.min(nx - 1, max_i - dx * fall);
222
+ const up_fall = fall - 1;
223
+ const uk0 = up_fall >= 0 ? (dz < 0 ? min_k : Math.max(0, min_k - dz * up_fall)) : nz;
224
+ const uk1 = up_fall >= 0 ? (dz > 0 ? max_k : Math.min(nz - 1, max_k - dz * up_fall)) : -1;
225
+ const ui0 = up_fall >= 0 ? (dx < 0 ? min_i : Math.max(0, min_i - dx * up_fall)) : nx;
226
+ const ui1 = up_fall >= 0 ? (dx > 0 ? max_i : Math.min(nx - 1, max_i - dx * up_fall)) : -1;
167
227
  const j1 = j + dy;
168
- for (let k = 0; k < nz; k++) {
169
- const k1 = k + dz;
170
- for (let i = 0; i < nx; i++) {
171
- const i1 = i + dx;
172
- const v = (j * nz + k) * nx + i;
228
+ for (let k = k0; k <= k1; k++) {
229
+ const row = (j * nz + k) * nx;
230
+ if (k < dk0 || k > dk1) {
231
+ for (let i = i0; i <= i1; i++) irradiance[row + i] += w;
232
+ continue;
233
+ }
234
+ for (let i = i0; i < di0; i++) irradiance[row + i] += w;
235
+ const k1_idx = k + dz;
236
+ const k_in = k1_idx >= uk0 && k1_idx <= uk1;
237
+ const u_row = (j1 * nz + k1_idx) * nx;
238
+ for (let i = di0; i <= di1; i++) {
239
+ const i1_idx = i + dx;
240
+ const v = row + i;
173
241
  let t = 1.0;
174
- if (j1 < ny && k1 >= 0 && k1 < nz && i1 >= 0 && i1 < nx) {
175
- const u = (j1 * nz + k1) * nx + i1;
176
- t = transmittance[u] * Math.exp(-k_ext * (leaf_area[u] / volume) * step);
242
+ if (k_in && i1_idx >= ui0 && i1_idx <= ui1) {
243
+ const u = u_row + i1_idx;
244
+ const lu = leaf_area[u];
245
+ t = lu > 0 ? transmittance[u] * Math.exp(-k_ext * (lu / volume) * step) : transmittance[u];
177
246
  }
178
247
  transmittance[v] = t;
179
- irradiance[v] += w * t * Math.exp(-k_ext * (leaf_area[v] / volume) * step * 0.5);
248
+ const lv = leaf_area[v];
249
+ irradiance[v] += lv > 0 ? w * t * Math.exp(-k_ext * (lv / volume) * step * 0.5) : w * t;
180
250
  }
251
+ for (let i = di1 + 1; i <= i1; i++) irradiance[row + i] += w;
181
252
  }
182
253
  }
183
254
  }
@@ -26,8 +26,10 @@ export class ShootWoodHash {
26
26
  radii: number[];
27
27
  units: number[];
28
28
  }>);
29
- /** @type {Map<number, number[]>} */
30
- cells: Map<number, number[]>;
29
+ /** @type {Map<number, number[] & {max?: number}>} */
30
+ cells: Map<number, number[] & {
31
+ max?: number;
32
+ }>;
31
33
  /**
32
34
  * Thickest living unit (m) in each cell as of the last {@link refresh}, a unit added since counting as infinitely
33
35
  * thick, so a query that wants only wood at least so thick can pass a cell by.
@@ -86,5 +88,6 @@ export class ShootWoodHash {
86
88
  * @returns {number}
87
89
  */
88
90
  hits(a: ArrayLike<number>, b: ArrayLike<number>, radius: number, min_radius: number, skip: (arg0: number, arg1: number, arg2: number, arg3: number) => boolean): number;
91
+ #private;
89
92
  }
90
93
  //# sourceMappingURL=ShootWoodHash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShootWoodHash.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/skeleton/ShootWoodHash.js"],"names":[],"mappings":"AAiCA;;;;;;GAMG;AACH;IA4GI;;;;;;OAMG;IACH,uBALW;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAC,KAClC,MAAM,KACN,MAAM,GACJ,MAAM,CAMlB;IAlFD;;OAEG;IACH,kBAFW,MAAM;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAC,CAAC,EAIrF;IAzCD,oCAAoC;IACpC,OADW,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC,CACd;IAElB;;;;OAIG;IACH,UAFU,IAAI,MAAM,EAAE,MAAM,CAAC,CAER;IAErB;;;OAGG;IACH,YAFU,MAAM,CAED;IAEf;;;OAGG;IACH,WAFU,MAAM,EAAE,CAEH;IAEf;;;OAGG;IACH,YAFU,MAAM,EAAE,CAEF;IAEhB;;;OAGG;IACH,MAFU,MAAM,EAAE,CAER;IAEV,cAAU;IAMN;eAHqB,OAAO;gBAAU,MAAM,EAAE;eAAS,MAAM,EAAE;eAAS,MAAM,EAAE;QAGhE;IAGpB;;;;OAIG;IACH,OAHW,MAAM,KACN,MAAM,QA2BhB;IAED;;;;OAIG;IACH,gBAyBC;IAeD;;;;;;;;;;;OAWG;IACH,QAPW,UAAU,MAAM,CAAC,KACjB,UAAU,MAAM,CAAC,UACjB,MAAM,cACN,MAAM,eACG,MAAM,QAAE,MAAM,QAAE,MAAM,QAAE,MAAM,KAAG,OAAO,GAC/C,MAAM,CA6ClB;CACJ"}
1
+ {"version":3,"file":"ShootWoodHash.d.ts","sourceRoot":"","sources":["../../../../../src/generation/foliage/skeleton/ShootWoodHash.js"],"names":[],"mappings":"AAiCA;;;;;;GAMG;AACH;IA0LI;;;;;;OAMG;IACH,uBALW;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAC,KAClC,MAAM,KACN,MAAM,GACJ,MAAM,CAMlB;IAvHD;;OAEG;IACH,kBAFW,MAAM;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAC,CAAC,EAIrF;IAlFD,qDAAqD;IACrD,OADW,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAC/B;IAElB;;;;OAIG;IACH,UAFU,IAAI,MAAM,EAAE,MAAM,CAAC,CAER;IAErB;;;OAGG;IACH,YAFU,MAAM,CAED;IAEf;;;OAGG;IACH,WAFU,MAAM,EAAE,CAEH;IAEf;;;OAGG;IACH,YAFU,MAAM,EAAE,CAEF;IAEhB;;;OAGG;IACH,MAFU,MAAM,EAAE,CAER;IAEV,cAAU;IA+CN;eAHqB,OAAO;gBAAU,MAAM,EAAE;eAAS,MAAM,EAAE;eAAS,MAAM,EAAE;QAGhE;IAGpB;;;;OAIG;IACH,OAHW,MAAM,KACN,MAAM,QA8ChB;IAED;;;;OAIG;IACH,gBA2CC;IAeD;;;;;;;;;;;OAWG;IACH,QAPW,UAAU,MAAM,CAAC,KACjB,UAAU,MAAM,CAAC,UACjB,MAAM,cACN,MAAM,eACG,MAAM,QAAE,MAAM,QAAE,MAAM,QAAE,MAAM,KAAG,OAAO,GAC/C,MAAM,CAqIlB;;CACJ"}