@woosh/meep-engine 3.11.3 → 3.12.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 (401) hide show
  1. package/README.md +14 -18
  2. package/editor/SelectionVisualizer.js +127 -127
  3. package/editor/entity_world_bounds.js +27 -27
  4. package/editor/particles/rebuildParticleEmitter.js +31 -31
  5. package/editor/process/SymbolicDisplayProcess.js +1 -1
  6. package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
  7. package/editor/process/symbolic/LightSymbolicDisplay.js +172 -172
  8. package/editor/prototypeEditorShell.js +156 -156
  9. package/editor/selection/editor_pick.js +130 -130
  10. package/editor/selection/screen_rect_frustum.js +119 -119
  11. package/editor/tools/v2/TransformControls.js +971 -971
  12. package/package.json +1 -1
  13. package/src/engine/Engine.d.ts +3 -3
  14. package/src/engine/Engine.d.ts.map +1 -1
  15. package/src/engine/Engine.js +726 -726
  16. package/src/engine/EngineHarness.d.ts +1 -1
  17. package/src/engine/EngineHarness.js +590 -590
  18. package/src/engine/ecs/HIERARCHY_REVIEW.md +717 -717
  19. package/src/engine/ecs/terrain/ecs/BuildLightTexture.d.ts +1 -1
  20. package/src/engine/ecs/terrain/ecs/BuildLightTexture.js +27 -27
  21. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +1 -5
  22. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  23. package/src/engine/ecs/terrain/ecs/Terrain.js +790 -790
  24. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -129
  25. package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +1 -1
  26. package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -28
  27. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +1 -1
  28. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +428 -428
  29. package/src/engine/graphics/ecs/water/Water.d.ts +1 -1
  30. package/src/engine/graphics/ecs/water/Water.js +104 -104
  31. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +1 -1
  32. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1 -1
  33. package/src/engine/graphics3/AnimationGraphSystem.d.ts +65 -0
  34. package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -0
  35. package/src/engine/graphics3/AnimationGraphSystem.js +329 -0
  36. package/src/engine/graphics3/AnimationGraphSystem3.d.ts +6 -61
  37. package/src/engine/graphics3/AnimationGraphSystem3.d.ts.map +1 -1
  38. package/src/engine/graphics3/AnimationGraphSystem3.js +6 -325
  39. package/src/engine/graphics3/AnimationSystem.d.ts +76 -0
  40. package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -0
  41. package/src/engine/graphics3/AnimationSystem.js +352 -0
  42. package/src/engine/graphics3/AnimationSystem3.d.ts +6 -72
  43. package/src/engine/graphics3/AnimationSystem3.d.ts.map +1 -1
  44. package/src/engine/graphics3/AnimationSystem3.js +6 -348
  45. package/src/engine/graphics3/CameraSystem.d.ts +49 -0
  46. package/src/engine/graphics3/CameraSystem.d.ts.map +1 -0
  47. package/src/engine/graphics3/CameraSystem.js +170 -0
  48. package/src/engine/graphics3/CameraSystem3.d.ts +6 -45
  49. package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
  50. package/src/engine/graphics3/CameraSystem3.js +6 -166
  51. package/src/engine/graphics3/DebugDrawSystem.d.ts +72 -0
  52. package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -0
  53. package/src/engine/graphics3/DebugDrawSystem.js +205 -0
  54. package/src/engine/graphics3/DebugDrawSystem3.d.ts +6 -68
  55. package/src/engine/graphics3/DebugDrawSystem3.d.ts.map +1 -1
  56. package/src/engine/graphics3/DebugDrawSystem3.js +6 -201
  57. package/src/engine/graphics3/DecalSystem.d.ts +81 -0
  58. package/src/engine/graphics3/DecalSystem.d.ts.map +1 -0
  59. package/src/engine/graphics3/DecalSystem.js +441 -0
  60. package/src/engine/graphics3/DecalSystem3.d.ts +6 -77
  61. package/src/engine/graphics3/DecalSystem3.d.ts.map +1 -1
  62. package/src/engine/graphics3/DecalSystem3.js +6 -437
  63. package/src/engine/graphics3/FogOfWarSystem.d.ts +74 -0
  64. package/src/engine/graphics3/FogOfWarSystem.d.ts.map +1 -0
  65. package/src/engine/graphics3/FogOfWarSystem.js +265 -0
  66. package/src/engine/graphics3/FogOfWarSystem3.d.ts +6 -70
  67. package/src/engine/graphics3/FogOfWarSystem3.d.ts.map +1 -1
  68. package/src/engine/graphics3/FogOfWarSystem3.js +6 -261
  69. package/src/engine/graphics3/GraphicsEngine.d.ts +340 -0
  70. package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -0
  71. package/src/engine/graphics3/GraphicsEngine.js +790 -0
  72. package/src/engine/graphics3/GraphicsEngine3.d.ts +6 -336
  73. package/src/engine/graphics3/GraphicsEngine3.d.ts.map +1 -1
  74. package/src/engine/graphics3/GraphicsEngine3.js +6 -786
  75. package/src/engine/graphics3/HighlightSystem.d.ts +82 -0
  76. package/src/engine/graphics3/HighlightSystem.d.ts.map +1 -0
  77. package/src/engine/graphics3/HighlightSystem.js +241 -0
  78. package/src/engine/graphics3/HighlightSystem3.d.ts +6 -78
  79. package/src/engine/graphics3/HighlightSystem3.d.ts.map +1 -1
  80. package/src/engine/graphics3/HighlightSystem3.js +6 -237
  81. package/src/engine/graphics3/LightSystem.d.ts +40 -0
  82. package/src/engine/graphics3/LightSystem.d.ts.map +1 -0
  83. package/src/engine/graphics3/LightSystem.js +211 -0
  84. package/src/engine/graphics3/LightSystem3.d.ts +6 -36
  85. package/src/engine/graphics3/LightSystem3.d.ts.map +1 -1
  86. package/src/engine/graphics3/LightSystem3.js +6 -207
  87. package/src/engine/graphics3/MeshSystem.d.ts +106 -0
  88. package/src/engine/graphics3/MeshSystem.d.ts.map +1 -0
  89. package/src/engine/graphics3/MeshSystem.js +647 -0
  90. package/src/engine/graphics3/MeshSystem3.d.ts +6 -102
  91. package/src/engine/graphics3/MeshSystem3.d.ts.map +1 -1
  92. package/src/engine/graphics3/MeshSystem3.js +6 -642
  93. package/src/engine/graphics3/ParticipatingMedia.d.ts +2 -2
  94. package/src/engine/graphics3/ParticipatingMedia.js +203 -203
  95. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts +87 -0
  96. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -0
  97. package/src/engine/graphics3/ParticipatingMediaSystem.js +184 -0
  98. package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts +6 -83
  99. package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts.map +1 -1
  100. package/src/engine/graphics3/ParticipatingMediaSystem3.js +6 -180
  101. package/src/engine/graphics3/ParticleEmitterSystem.d.ts +76 -0
  102. package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -0
  103. package/src/engine/graphics3/ParticleEmitterSystem.js +289 -0
  104. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +6 -72
  105. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
  106. package/src/engine/graphics3/ParticleEmitterSystem3.js +6 -285
  107. package/src/engine/graphics3/PathDisplaySystem.d.ts +70 -0
  108. package/src/engine/graphics3/PathDisplaySystem.d.ts.map +1 -0
  109. package/src/engine/graphics3/PathDisplaySystem.js +309 -0
  110. package/src/engine/graphics3/PathDisplaySystem3.d.ts +6 -66
  111. package/src/engine/graphics3/PathDisplaySystem3.d.ts.map +1 -1
  112. package/src/engine/graphics3/PathDisplaySystem3.js +6 -305
  113. package/src/engine/graphics3/Pickable.d.ts +1 -1
  114. package/src/engine/graphics3/Pickable.js +65 -65
  115. package/src/engine/graphics3/PickingQuery.d.ts +1 -1
  116. package/src/engine/graphics3/PickingQuery.js +48 -48
  117. package/src/engine/graphics3/PickingSystem.d.ts +67 -0
  118. package/src/engine/graphics3/PickingSystem.d.ts.map +1 -0
  119. package/src/engine/graphics3/PickingSystem.js +273 -0
  120. package/src/engine/graphics3/PickingSystem3.d.ts +6 -63
  121. package/src/engine/graphics3/PickingSystem3.d.ts.map +1 -1
  122. package/src/engine/graphics3/PickingSystem3.js +6 -269
  123. package/src/engine/graphics3/ShadedGeometrySystem.d.ts +47 -0
  124. package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -0
  125. package/src/engine/graphics3/ShadedGeometrySystem.js +169 -0
  126. package/src/engine/graphics3/ShadedGeometrySystem3.d.ts +6 -43
  127. package/src/engine/graphics3/ShadedGeometrySystem3.d.ts.map +1 -1
  128. package/src/engine/graphics3/ShadedGeometrySystem3.js +6 -165
  129. package/src/engine/graphics3/TerrainSystem.d.ts +80 -0
  130. package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -0
  131. package/src/engine/graphics3/TerrainSystem.js +566 -0
  132. package/src/engine/graphics3/TerrainSystem3.d.ts +6 -76
  133. package/src/engine/graphics3/TerrainSystem3.d.ts.map +1 -1
  134. package/src/engine/graphics3/TerrainSystem3.js +6 -562
  135. package/src/engine/graphics3/TooltipComponentSystem.d.ts +65 -0
  136. package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -0
  137. package/src/engine/graphics3/TooltipComponentSystem.js +328 -0
  138. package/src/engine/graphics3/TooltipComponentSystem3.d.ts +6 -61
  139. package/src/engine/graphics3/TooltipComponentSystem3.d.ts.map +1 -1
  140. package/src/engine/graphics3/TooltipComponentSystem3.js +6 -324
  141. package/src/engine/graphics3/Trail3DSystem.d.ts +73 -0
  142. package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -0
  143. package/src/engine/graphics3/Trail3DSystem.js +221 -0
  144. package/src/engine/graphics3/Trail3DSystem3.d.ts +6 -69
  145. package/src/engine/graphics3/Trail3DSystem3.d.ts.map +1 -1
  146. package/src/engine/graphics3/Trail3DSystem3.js +6 -217
  147. package/src/engine/graphics3/VolumetricLightMap.d.ts +2 -2
  148. package/src/engine/graphics3/VolumetricLightMap.js +2 -2
  149. package/src/engine/graphics3/VolumetricLightMapSystem.d.ts +98 -0
  150. package/src/engine/graphics3/VolumetricLightMapSystem.d.ts.map +1 -0
  151. package/src/engine/graphics3/VolumetricLightMapSystem.js +261 -0
  152. package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts +6 -94
  153. package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts.map +1 -1
  154. package/src/engine/graphics3/VolumetricLightMapSystem3.js +10 -261
  155. package/src/engine/graphics3/WaterSystem.d.ts +59 -0
  156. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -0
  157. package/src/engine/graphics3/WaterSystem.js +293 -0
  158. package/src/engine/graphics3/WaterSystem3.d.ts +6 -55
  159. package/src/engine/graphics3/WaterSystem3.d.ts.map +1 -1
  160. package/src/engine/graphics3/WaterSystem3.js +6 -289
  161. package/src/engine/graphics3/animation/AnimationGraphController.d.ts +1 -1
  162. package/src/engine/graphics3/animation/AnimationGraphController.js +518 -518
  163. package/src/engine/graphics3/animation/ClipListPlayer.d.ts +1 -1
  164. package/src/engine/graphics3/animation/ClipListPlayer.js +263 -263
  165. package/src/engine/graphics3/animation/ClipPlayback.d.ts +2 -2
  166. package/src/engine/graphics3/animation/ClipPlayback.js +84 -84
  167. package/src/engine/graphics3/decal/graph_build_decal_clusters.d.ts.map +1 -1
  168. package/src/engine/graphics3/decal/graph_build_decal_clusters.js +6 -8
  169. package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts +0 -7
  170. package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts.map +1 -1
  171. package/src/engine/graphics3/decal/shader_cluster_assign_decals.js +1 -1
  172. package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts +0 -4
  173. package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts.map +1 -1
  174. package/src/engine/graphics3/decal/shader_cull_decals_frustum.js +1 -1
  175. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +2 -2
  176. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
  177. package/src/engine/graphics3/highlight/pack_highlight_table.js +74 -74
  178. package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +1 -1
  179. package/src/engine/graphics3/pose/query_entity_node_world_pose.js +101 -101
  180. package/src/engine/graphics3/preview/make_model_thumbnail.d.ts +3 -3
  181. package/src/engine/graphics3/preview/make_model_thumbnail.d.ts.map +1 -1
  182. package/src/engine/graphics3/preview/make_model_thumbnail.js +48 -48
  183. package/src/engine/graphics3/shade_camera_projection_ray.d.ts +1 -1
  184. package/src/engine/graphics3/shade_camera_projection_ray.js +77 -77
  185. package/src/engine/graphics3/shade_node_to_entity_composition.d.ts +1 -1
  186. package/src/engine/graphics3/shade_node_to_entity_composition.js +84 -84
  187. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
  188. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +0 -1
  189. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
  190. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +0 -1
  191. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
  192. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +133 -134
  193. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -202
  194. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -249
  195. package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSETS.js +1 -1
  196. package/src/shade/renderer/animation/pose/PosePlayback.d.ts +2 -1
  197. package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
  198. package/src/shade/renderer/animation/pose/PosePlayback.js +2 -1
  199. package/src/shade/renderer/animation/shader_animation_apply.d.ts.map +1 -1
  200. package/src/shade/renderer/animation/shader_animation_apply.js +128 -129
  201. package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
  202. package/src/shade/renderer/animation/shader_animation_pose_resolve.js +176 -177
  203. package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
  204. package/src/shade/renderer/animation/shader_animation_tick.js +125 -126
  205. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
  206. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +98 -99
  207. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
  208. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +212 -213
  209. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
  210. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +120 -121
  211. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
  212. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +75 -76
  213. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
  214. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +371 -372
  215. package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.d.ts.map +1 -1
  216. package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.js +104 -105
  217. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
  218. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +0 -1
  219. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +136 -136
  220. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  221. package/src/shade/renderer/buffer/table/GPUDatabase.js +2 -3
  222. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +319 -319
  223. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
  224. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +41 -42
  225. package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.d.ts.map +1 -1
  226. package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.js +83 -84
  227. package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts.map +1 -1
  228. package/src/shade/renderer/dynamic/shader_dynamic_mesh.js +177 -170
  229. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
  230. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +4 -4
  231. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
  232. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +121 -122
  233. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +774 -774
  234. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts +1 -1
  235. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
  236. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +69 -70
  237. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +367 -367
  238. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +184 -184
  239. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -1115
  240. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
  241. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
  242. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +142 -143
  243. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
  244. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +0 -1
  245. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
  246. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +140 -141
  247. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
  248. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +0 -1
  249. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
  250. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +0 -1
  251. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
  252. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +191 -198
  253. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts +0 -6
  254. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts.map +1 -1
  255. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.js +120 -120
  256. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts +0 -4
  257. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts.map +1 -1
  258. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.js +112 -112
  259. package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
  260. package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +4 -7
  261. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts +0 -6
  262. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts.map +1 -1
  263. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.js +1 -1
  264. package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +222 -222
  265. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_tile_composit.js +81 -81
  266. package/src/shade/renderer/material/GPUMaterialContext.js +380 -380
  267. package/src/shade/renderer/material/standard/fragment_gbuffer_vt.js +169 -169
  268. package/src/shade/renderer/object_property/shader_object_property_process.d.ts.map +1 -1
  269. package/src/shade/renderer/object_property/shader_object_property_process.js +83 -84
  270. package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts.map +1 -1
  271. package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js +57 -58
  272. package/src/shade/renderer/particles/prototypeParticleSystem.js +2 -3
  273. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  274. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +117 -118
  275. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  276. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +77 -79
  277. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
  278. package/src/shade/renderer/particles/shaders/shader_particle_render.js +190 -183
  279. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  280. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +99 -100
  281. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  282. package/src/shade/renderer/particles/sort/shader_particle_sort.js +158 -161
  283. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +184 -184
  284. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +119 -119
  285. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +3 -4
  286. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
  287. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +266 -267
  288. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
  289. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +270 -271
  290. package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
  291. package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +68 -69
  292. package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.d.ts.map +1 -1
  293. package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.js +225 -226
  294. package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.d.ts.map +1 -1
  295. package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js +49 -50
  296. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
  297. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +291 -292
  298. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
  299. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +230 -231
  300. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts +16 -2
  301. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts.map +1 -1
  302. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +12 -12
  303. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +2 -2
  304. package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.d.ts.map +1 -1
  305. package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.js +68 -69
  306. package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.d.ts.map +1 -1
  307. package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.js +59 -60
  308. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
  309. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +0 -1
  310. package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.d.ts.map +1 -1
  311. package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.js +64 -65
  312. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
  313. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +168 -169
  314. package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.d.ts.map +1 -1
  315. package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.js +160 -161
  316. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
  317. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +109 -110
  318. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
  319. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +115 -116
  320. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.d.ts.map +1 -1
  321. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.js +139 -140
  322. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.d.ts.map +1 -1
  323. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.js +91 -92
  324. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.d.ts.map +1 -1
  325. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.js +88 -89
  326. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.d.ts.map +1 -1
  327. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.js +90 -91
  328. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
  329. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +65 -66
  330. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.d.ts.map +1 -1
  331. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.js +89 -90
  332. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
  333. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +169 -170
  334. package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.d.ts.map +1 -1
  335. package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.js +89 -90
  336. package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.d.ts.map +1 -1
  337. package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.js +61 -62
  338. package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.d.ts.map +1 -1
  339. package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.js +153 -154
  340. package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_alpha_tested_pass_descriptor.js +144 -144
  341. package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_pass_descriptor.js +88 -88
  342. package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +217 -217
  343. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +179 -179
  344. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +178 -178
  345. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +194 -194
  346. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +76 -76
  347. package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
  348. package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +136 -137
  349. package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
  350. package/src/shade/renderer/restir/di/shader_restir_di_resample.js +129 -130
  351. package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
  352. package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +99 -100
  353. package/src/shade/renderer/restir/di/shader_restir_di_spatial.d.ts.map +1 -1
  354. package/src/shade/renderer/restir/di/shader_restir_di_spatial.js +116 -117
  355. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +383 -383
  356. package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy_naive.js +123 -123
  357. package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.d.ts.map +1 -1
  358. package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.js +64 -65
  359. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.d.ts.map +1 -1
  360. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.js +372 -373
  361. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.d.ts.map +1 -1
  362. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.js +111 -112
  363. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
  364. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +0 -1
  365. package/src/shade/renderer/shader/ComputeShader.d.ts +24 -3
  366. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  367. package/src/shade/renderer/shader/ComputeShader.js +350 -296
  368. package/src/shade/renderer/shader/ImageShader.js +217 -217
  369. package/src/shade/renderer/shader/ShaderDescriptor.d.ts +5 -0
  370. package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
  371. package/src/shade/renderer/shader/ShaderDescriptor.js +20 -0
  372. package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts +47 -0
  373. package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts.map +1 -0
  374. package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.js +448 -0
  375. package/src/shade/renderer/shadow/map/csm/graph_csm_setup_cascades.js +3 -3
  376. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +3 -3
  377. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +2 -2
  378. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +4 -4
  379. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
  380. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +231 -232
  381. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +1 -1
  382. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  383. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +12 -15
  384. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +3 -2
  385. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  386. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +3 -2
  387. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts +0 -2
  388. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts.map +1 -1
  389. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +17 -6
  390. package/src/shade/renderer/water/shader_water.js +246 -246
  391. package/src/shade/vitest.setup.mjs +1 -1
  392. package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +291 -291
  393. package/src/view/minimap/Minimap.d.ts +2 -2
  394. package/src/view/minimap/Minimap.d.ts.map +1 -1
  395. package/src/view/minimap/Minimap.js +225 -225
  396. package/src/view/minimap/dom/MinimapCameraView.d.ts +3 -3
  397. package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
  398. package/src/view/minimap/dom/MinimapCameraView.js +206 -206
  399. package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts +0 -3
  400. package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts.map +0 -1
  401. package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.js +0 -20
@@ -1,84 +1,84 @@
1
- import { Name } from "../ecs/name/Name.js";
2
- import { EntityNode } from "../ecs/parent/EntityNode.js";
3
- import { Transform } from "../ecs/transform/Transform.js";
4
- import { transform_copy_from_t64 } from "../ecs/transform/transform_copy_from_t64.js";
5
- import { DrawMode } from "../graphics/ecs/mesh-v2/DrawMode.js";
6
- import { ShadedGeometry } from "../graphics/ecs/mesh-v2/ShadedGeometry.js";
7
-
8
- /**
9
- * Turn a loaded model's node tree into entities.
10
- *
11
- * **This is what a hierarchy is in an ECS** (D47). meep has no scene graph to hand a model to: it
12
- * has entities, `EntityNode` to parent them, and `ShadedGeometry` for the ones that draw. A model
13
- * file is therefore not a thing an entity *holds* — it is a shape an entity's descendants take, and
14
- * this function is where the file stops being the renderer's tree and becomes the dataset's.
15
- *
16
- * It is `three_object_to_entity_composition` with the source swapped: the same output, built from
17
- * Shade's `Node3D`s instead of three's `Object3D`s. The two exist side by side for as long as both
18
- * renderers do.
19
- *
20
- * **Geometry and material are shared, not copied.** Two entities placing the same model name the
21
- * same `MeshletGeometry` and the same `ShadeMaterial`; what is per-entity is the row each one gets
22
- * in the scene, which is `ShadedGeometrySystem3`'s business. That is the whole reason a static model
23
- * needs no clone of the bundle at all.
24
- *
25
- * **A skinned mesh is not expanded, and that is a boundary rather than an omission.** Its vertices
26
- * are deformed against a skeleton the renderer owns and the GPU poses, and making those joints
27
- * entities is a design this program does not do (D47). A `SkinnedMesh` node therefore contributes
28
- * its transform and its name and no geometry, and whatever placed the model keeps drawing it the way
29
- * Phase 4 built.
30
- *
31
- * @param {Node3D} node
32
- * @returns {EntityNode}
33
- */
34
- export function shade_node_to_entity_composition(node) {
35
- const result = new EntityNode();
36
-
37
- // the hierarchy's own transform: what this node is, relative to its parent
38
- transform_copy_from_t64(result.transform, node.transform_local);
39
-
40
- const entity = result.entity;
41
-
42
- entity.add(transform_copy_from_t64(new Transform(), node.transform_global));
43
- entity.add(new Name(node.name));
44
-
45
- if (node.isMesh === true && node.isSkinnedMesh !== true) {
46
- entity.add(ShadedGeometry.from(node.geometry, node.material, DrawMode.Triangles));
47
- }
48
-
49
- const children = node.children;
50
-
51
- for (let i = 0; i < children.length; i++) {
52
- result.addChild(shade_node_to_entity_composition(children[i]));
53
- }
54
-
55
- return result;
56
- }
57
-
58
- /**
59
- * The same, for everything a loader produced.
60
- *
61
- * A bundle can carry more than one scene — glTF allows it — and the entity that placed the file owns
62
- * all of them, so they become children of one root rather than several compositions nobody joins.
63
- *
64
- * @param {SceneBundle} bundle
65
- * @returns {EntityNode}
66
- */
67
- export function shade_bundle_to_entity_composition(bundle) {
68
- const scenes = bundle.scenes;
69
-
70
- if (scenes.length === 1) {
71
- return shade_node_to_entity_composition(scenes[0]);
72
- }
73
-
74
- const root = new EntityNode();
75
-
76
- root.entity.add(new Transform());
77
- root.entity.add(new Name(""));
78
-
79
- for (let i = 0; i < scenes.length; i++) {
80
- root.addChild(shade_node_to_entity_composition(scenes[i]));
81
- }
82
-
83
- return root;
84
- }
1
+ import { Name } from "../ecs/name/Name.js";
2
+ import { EntityNode } from "../ecs/parent/EntityNode.js";
3
+ import { Transform } from "../ecs/transform/Transform.js";
4
+ import { transform_copy_from_t64 } from "../ecs/transform/transform_copy_from_t64.js";
5
+ import { DrawMode } from "../graphics/ecs/mesh-v2/DrawMode.js";
6
+ import { ShadedGeometry } from "../graphics/ecs/mesh-v2/ShadedGeometry.js";
7
+
8
+ /**
9
+ * Turn a loaded model's node tree into entities.
10
+ *
11
+ * **This is what a hierarchy is in an ECS** (D47). meep has no scene graph to hand a model to: it
12
+ * has entities, `EntityNode` to parent them, and `ShadedGeometry` for the ones that draw. A model
13
+ * file is therefore not a thing an entity *holds* — it is a shape an entity's descendants take, and
14
+ * this function is where the file stops being the renderer's tree and becomes the dataset's.
15
+ *
16
+ * It is `three_object_to_entity_composition` with the source swapped: the same output, built from
17
+ * Shade's `Node3D`s instead of three's `Object3D`s. The two exist side by side for as long as both
18
+ * renderers do.
19
+ *
20
+ * **Geometry and material are shared, not copied.** Two entities placing the same model name the
21
+ * same `MeshletGeometry` and the same `ShadeMaterial`; what is per-entity is the row each one gets
22
+ * in the scene, which is `ShadedGeometrySystem`'s business. That is the whole reason a static model
23
+ * needs no clone of the bundle at all.
24
+ *
25
+ * **A skinned mesh is not expanded, and that is a boundary rather than an omission.** Its vertices
26
+ * are deformed against a skeleton the renderer owns and the GPU poses, and making those joints
27
+ * entities is a design this program does not do (D47). A `SkinnedMesh` node therefore contributes
28
+ * its transform and its name and no geometry, and whatever placed the model keeps drawing it the way
29
+ * Phase 4 built.
30
+ *
31
+ * @param {Node3D} node
32
+ * @returns {EntityNode}
33
+ */
34
+ export function shade_node_to_entity_composition(node) {
35
+ const result = new EntityNode();
36
+
37
+ // the hierarchy's own transform: what this node is, relative to its parent
38
+ transform_copy_from_t64(result.transform, node.transform_local);
39
+
40
+ const entity = result.entity;
41
+
42
+ entity.add(transform_copy_from_t64(new Transform(), node.transform_global));
43
+ entity.add(new Name(node.name));
44
+
45
+ if (node.isMesh === true && node.isSkinnedMesh !== true) {
46
+ entity.add(ShadedGeometry.from(node.geometry, node.material, DrawMode.Triangles));
47
+ }
48
+
49
+ const children = node.children;
50
+
51
+ for (let i = 0; i < children.length; i++) {
52
+ result.addChild(shade_node_to_entity_composition(children[i]));
53
+ }
54
+
55
+ return result;
56
+ }
57
+
58
+ /**
59
+ * The same, for everything a loader produced.
60
+ *
61
+ * A bundle can carry more than one scene — glTF allows it — and the entity that placed the file owns
62
+ * all of them, so they become children of one root rather than several compositions nobody joins.
63
+ *
64
+ * @param {SceneBundle} bundle
65
+ * @returns {EntityNode}
66
+ */
67
+ export function shade_bundle_to_entity_composition(bundle) {
68
+ const scenes = bundle.scenes;
69
+
70
+ if (scenes.length === 1) {
71
+ return shade_node_to_entity_composition(scenes[0]);
72
+ }
73
+
74
+ const root = new EntityNode();
75
+
76
+ root.entity.add(new Transform());
77
+ root.entity.add(new Name(""));
78
+
79
+ for (let i = 0; i < scenes.length; i++) {
80
+ root.addChild(shade_node_to_entity_composition(scenes[i]));
81
+ }
82
+
83
+ return root;
84
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"shader_blas_audit_leaf_triangles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js"],"names":[],"mappings":"AAqBA,2CAA4C;AA4D5C;;;;;;;;;;;;;;;;GAgBG;AACH,+CAFU,aAAa,CAOpB;8BApG2B,wCAAwC"}
1
+ {"version":3,"file":"shader_blas_audit_leaf_triangles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js"],"names":[],"mappings":"AAqBA,2CAA4C;AA4D5C;;;;;;;;;;;;;;;;GAgBG;AACH,+CAFU,aAAa,CAMpB;8BAnG2B,wCAAwC"}
@@ -100,5 +100,4 @@ export const shader_blas_audit_leaf_triangles = ComputeShader.from({
100
100
  label: "BLAS/AuditLeafTriangles",
101
101
  resources,
102
102
  body,
103
- group_size: [BLAS_AUDIT_WORKGROUP_SIZE, 1, 1],
104
103
  });
@@ -1 +1 @@
1
- {"version":3,"file":"shader_blas_audit_points.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js"],"names":[],"mappings":"AAkBA,4CAA6C;AAE7C;;GAEG;AACH,0CAFU,YAAY,CAOG;AA8CzB;;;;;;;;;;;;;GAaG;AACH,uCAFU,aAAa,CAOpB;6BA3F0B,4CAA4C;8BAE3C,wCAAwC"}
1
+ {"version":3,"file":"shader_blas_audit_points.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js"],"names":[],"mappings":"AAkBA,4CAA6C;AAE7C;;GAEG;AACH,0CAFU,YAAY,CAOG;AA8CzB;;;;;;;;;;;;;GAaG;AACH,uCAFU,aAAa,CAMpB;6BA1F0B,4CAA4C;8BAE3C,wCAAwC"}
@@ -90,5 +90,4 @@ export const shader_blas_audit_points = ComputeShader.from({
90
90
  label: "BLAS/AuditPoints",
91
91
  resources,
92
92
  body,
93
- group_size: [BLAS_POINTS_WORKGROUP_SIZE, 1, 1],
94
93
  });
@@ -1 +1 @@
1
- {"version":3,"file":"shader_blas_audit_visibility.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js"],"names":[],"mappings":"AAyBA,gDAAiD;AAEjD;;GAEG;AACH,8CAFU,YAAY,CASO;AA0E7B;;;;;;;;;;;;;;;;GAgBG;AACH,2CAFU,aAAa,CAOpB;6BAnI0B,4CAA4C;8BAE3C,wCAAwC"}
1
+ {"version":3,"file":"shader_blas_audit_visibility.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js"],"names":[],"mappings":"AAyBA,gDAAiD;AAEjD;;GAEG;AACH,8CAFU,YAAY,CASO;AA0E7B;;;;;;;;;;;;;;;;GAgBG;AACH,2CAFU,aAAa,CAMpB;6BAlI0B,4CAA4C;8BAE3C,wCAAwC"}
@@ -1,134 +1,133 @@
1
- import { f32, u32, vec3f } from "../../renderer/shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
- import { WebGPUArray } from "../../renderer/shader/type/WebGPUArray.js";
3
- import { WebGPUStruct } from "../../renderer/shader/type/WebGPUStruct.js";
4
- import { CodeChunk } from "../../renderer/shader/compiler/CodeChunk.js";
5
- import { ComputeShader } from "../../renderer/shader/ComputeShader.js";
6
- import { ShaderResourceSetDescriptor } from "../../renderer/shader/resource/ShaderResourceSetDescriptor.js";
7
- import {
8
- BVH_NODE_CHILD_2_WORD,
9
- BVH_NODE_STRIDE_WORDS
10
- } from "../../renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js";
11
- import { BVH2_NODE_STRUCT } from "../../renderer/shader/chunk/bvh/BVH2_NODE_STRUCT.js";
12
- import { BVH_TRAVERSAL_STACK_SIZE } from "../../renderer/shader/chunk/bvh/BVH_TRAVERSAL_STACK_SIZE.js";
13
- import {
14
- chunk_ray_query_blas_nearest
15
- } from "../../renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js";
16
- import {
17
- chunk_geometry_read_triangle_vertices
18
- } from "../../renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_vertices.js";
19
- import { RAY_STRUCT } from "../../renderer/shader/chunk/geometry/ray/RAY_STRUCT.js";
20
- import { GEOMETRY_METADATA_STRUCT } from "../../renderer/geometry/GEOMETRY_METADATA_STRUCT.js";
21
- import { GEOMETRY_ATTRIBUTE_DATA_TYPE } from "../../renderer/geometry/GEOMETRY_ATTRIBUTE_DATA_TYPE.js";
22
- import {
23
- MESHLET_METADATA_STRUCT
24
- } from "../../renderer/geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
25
-
26
- export const BLAS_VISIBILITY_WORKGROUP_SIZE = 64;
27
-
28
- /**
29
- * @type {WebGPUStruct}
30
- */
31
- export const BLAS_VISIBILITY_SETTINGS_STRUCT = WebGPUStruct.from({
32
- origin: vec3f,
33
- leaf_count: u32,
34
- node_word_offset: u32,
35
- leaf_nodes_offset: u32,
36
- geometry_index: u32,
37
- tmax: f32,
38
- }, "BlasVisibilitySettings");
39
-
40
- const resources = new ShaderResourceSetDescriptor();
41
- resources.createGroup()
42
- .addUniform("settings", BLAS_VISIBILITY_SETTINGS_STRUCT)
43
- .addStorageBuffer("leaf_nodes", WebGPUArray.from(u32), false)
44
- .addStorageBuffer("blas_lookup", WebGPUArray.from(u32), false)
45
- .addStorageBuffer("blas_data", WebGPUArray.from(BVH2_NODE_STRUCT), false)
46
- .addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT), false)
47
- .addStorageBuffer("meshlet_metadata", WebGPUArray.from(MESHLET_METADATA_STRUCT), false)
48
- .addStorageBuffer("meshlet_data", GEOMETRY_ATTRIBUTE_DATA_TYPE, false)
49
- .addStorageBuffer("nodes", WebGPUArray.from(f32), false)
50
- // per leaf: the parametric t the traversal came back with, negative for a miss
51
- .addStorageBuffer("out_t", WebGPUArray.from(f32), true)
52
- // per leaf: the triangle the traversal returned, or 0xFFFFFFFF
53
- .addStorageBuffer("out_triangle", WebGPUArray.from(u32), true)
54
- // per leaf: the distance to the point the ray was aimed at, which the answer cannot exceed
55
- .addStorageBuffer("out_expected_t", WebGPUArray.from(f32), true);
56
-
57
- const body = CodeChunk.from(
58
- //language=WGSL
59
- `
60
- const NODE_STRIDE = ${BVH_NODE_STRIDE_WORDS}u;
61
- const NODE_CHILD_2 = ${BVH_NODE_CHILD_2_WORD}u;
62
-
63
- @compute @workgroup_size(${BLAS_VISIBILITY_WORKGROUP_SIZE}, 1, 1)
64
- fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
65
- let i = gid.x;
66
-
67
- if (i >= settings.leaf_count) {
68
- return;
69
- }
70
-
71
- let leaf_node = leaf_nodes[settings.leaf_nodes_offset + i];
72
-
73
- let node_word = settings.node_word_offset + leaf_node * NODE_STRIDE;
74
-
75
- let meshlet_triangle_id = bitcast<u32>(nodes[node_word + NODE_CHILD_2]);
76
-
77
- let triangle = geometry_read_triangle_vertices(
78
- geometries[settings.geometry_index],
79
- meshlet_triangle_id
80
- );
81
-
82
- // Aim at the triangle's own centroid, which is strictly inside it. The ray provably intersects
83
- // this triangle, so the traversal has to come back with *something* — this one, or something
84
- // occluding it. A miss is not a geometric possibility; it is the traversal failing to reach a
85
- // leaf whose box, by construction, the ray passes through.
86
- let centre = (triangle.a.position + triangle.b.position + triangle.c.position) / 3.0;
87
-
88
- var ray: ${RAY_STRUCT.wgsl_ref};
89
-
90
- ray.origin = settings.origin;
91
- ray.direction = normalize(centre - settings.origin);
92
- ray.tmax = settings.tmax;
93
-
94
- var stack: array<u32, ${BVH_TRAVERSAL_STACK_SIZE}>;
95
-
96
- let hit = ray_query_blas_nearest(ray, settings.geometry_index, &stack, 0u);
97
-
98
- out_t[i] = hit.t;
99
- out_triangle[i] = select(0xFFFFFFFFu, hit.triangle, hit.t >= 0.0);
100
-
101
- // The ray was aimed at a point on this triangle, so the nearest surface along it is at most
102
- // this far. An answer beyond it is not an occlusion and not a miss — it is the traversal
103
- // walking past a surface it was pointed at, which is what a hole in the traced image is.
104
- out_expected_t[i] = length(centre - settings.origin);
105
- }
106
- `, [
107
- RAY_STRUCT.declaration_chunk,
108
- chunk_geometry_read_triangle_vertices,
109
- chunk_ray_query_blas_nearest,
110
- ]);
111
-
112
- /**
113
- * Ask the traversal, once per triangle, whether it can find that triangle.
114
- *
115
- * Every structural check on the tree has passed, which narrows the fault to the traversal itself —
116
- * and traversal is the one thing no readback of the tree can exercise. So this runs the real
117
- * `ray_query_blas_nearest`, the same function the path tracer calls, along a ray whose answer is
118
- * known in advance.
119
- *
120
- * The ray goes from the camera to a triangle's centroid. That point is inside the triangle, so the
121
- * ray intersects it, so the query must return a hit — this triangle if nothing is in front, some
122
- * other one if something is. Only a miss is impossible, and a miss is therefore a traversal that
123
- * failed to reach a leaf whose box it was inside.
124
- *
125
- * Which triangles miss, and where they are, is the whole diagnosis.
126
- *
127
- * @type {ComputeShader}
128
- */
129
- export const shader_blas_audit_visibility = ComputeShader.from({
130
- label: "BLAS/AuditVisibility",
131
- resources,
132
- body,
133
- group_size: [BLAS_VISIBILITY_WORKGROUP_SIZE, 1, 1],
134
- });
1
+ import { f32, u32, vec3f } from "../../renderer/shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
+ import { WebGPUArray } from "../../renderer/shader/type/WebGPUArray.js";
3
+ import { WebGPUStruct } from "../../renderer/shader/type/WebGPUStruct.js";
4
+ import { CodeChunk } from "../../renderer/shader/compiler/CodeChunk.js";
5
+ import { ComputeShader } from "../../renderer/shader/ComputeShader.js";
6
+ import { ShaderResourceSetDescriptor } from "../../renderer/shader/resource/ShaderResourceSetDescriptor.js";
7
+ import {
8
+ BVH_NODE_CHILD_2_WORD,
9
+ BVH_NODE_STRIDE_WORDS
10
+ } from "../../renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js";
11
+ import { BVH2_NODE_STRUCT } from "../../renderer/shader/chunk/bvh/BVH2_NODE_STRUCT.js";
12
+ import { BVH_TRAVERSAL_STACK_SIZE } from "../../renderer/shader/chunk/bvh/BVH_TRAVERSAL_STACK_SIZE.js";
13
+ import {
14
+ chunk_ray_query_blas_nearest
15
+ } from "../../renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js";
16
+ import {
17
+ chunk_geometry_read_triangle_vertices
18
+ } from "../../renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_vertices.js";
19
+ import { RAY_STRUCT } from "../../renderer/shader/chunk/geometry/ray/RAY_STRUCT.js";
20
+ import { GEOMETRY_METADATA_STRUCT } from "../../renderer/geometry/GEOMETRY_METADATA_STRUCT.js";
21
+ import { GEOMETRY_ATTRIBUTE_DATA_TYPE } from "../../renderer/geometry/GEOMETRY_ATTRIBUTE_DATA_TYPE.js";
22
+ import {
23
+ MESHLET_METADATA_STRUCT
24
+ } from "../../renderer/geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
25
+
26
+ export const BLAS_VISIBILITY_WORKGROUP_SIZE = 64;
27
+
28
+ /**
29
+ * @type {WebGPUStruct}
30
+ */
31
+ export const BLAS_VISIBILITY_SETTINGS_STRUCT = WebGPUStruct.from({
32
+ origin: vec3f,
33
+ leaf_count: u32,
34
+ node_word_offset: u32,
35
+ leaf_nodes_offset: u32,
36
+ geometry_index: u32,
37
+ tmax: f32,
38
+ }, "BlasVisibilitySettings");
39
+
40
+ const resources = new ShaderResourceSetDescriptor();
41
+ resources.createGroup()
42
+ .addUniform("settings", BLAS_VISIBILITY_SETTINGS_STRUCT)
43
+ .addStorageBuffer("leaf_nodes", WebGPUArray.from(u32), false)
44
+ .addStorageBuffer("blas_lookup", WebGPUArray.from(u32), false)
45
+ .addStorageBuffer("blas_data", WebGPUArray.from(BVH2_NODE_STRUCT), false)
46
+ .addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT), false)
47
+ .addStorageBuffer("meshlet_metadata", WebGPUArray.from(MESHLET_METADATA_STRUCT), false)
48
+ .addStorageBuffer("meshlet_data", GEOMETRY_ATTRIBUTE_DATA_TYPE, false)
49
+ .addStorageBuffer("nodes", WebGPUArray.from(f32), false)
50
+ // per leaf: the parametric t the traversal came back with, negative for a miss
51
+ .addStorageBuffer("out_t", WebGPUArray.from(f32), true)
52
+ // per leaf: the triangle the traversal returned, or 0xFFFFFFFF
53
+ .addStorageBuffer("out_triangle", WebGPUArray.from(u32), true)
54
+ // per leaf: the distance to the point the ray was aimed at, which the answer cannot exceed
55
+ .addStorageBuffer("out_expected_t", WebGPUArray.from(f32), true);
56
+
57
+ const body = CodeChunk.from(
58
+ //language=WGSL
59
+ `
60
+ const NODE_STRIDE = ${BVH_NODE_STRIDE_WORDS}u;
61
+ const NODE_CHILD_2 = ${BVH_NODE_CHILD_2_WORD}u;
62
+
63
+ @compute @workgroup_size(${BLAS_VISIBILITY_WORKGROUP_SIZE}, 1, 1)
64
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
65
+ let i = gid.x;
66
+
67
+ if (i >= settings.leaf_count) {
68
+ return;
69
+ }
70
+
71
+ let leaf_node = leaf_nodes[settings.leaf_nodes_offset + i];
72
+
73
+ let node_word = settings.node_word_offset + leaf_node * NODE_STRIDE;
74
+
75
+ let meshlet_triangle_id = bitcast<u32>(nodes[node_word + NODE_CHILD_2]);
76
+
77
+ let triangle = geometry_read_triangle_vertices(
78
+ geometries[settings.geometry_index],
79
+ meshlet_triangle_id
80
+ );
81
+
82
+ // Aim at the triangle's own centroid, which is strictly inside it. The ray provably intersects
83
+ // this triangle, so the traversal has to come back with *something* — this one, or something
84
+ // occluding it. A miss is not a geometric possibility; it is the traversal failing to reach a
85
+ // leaf whose box, by construction, the ray passes through.
86
+ let centre = (triangle.a.position + triangle.b.position + triangle.c.position) / 3.0;
87
+
88
+ var ray: ${RAY_STRUCT.wgsl_ref};
89
+
90
+ ray.origin = settings.origin;
91
+ ray.direction = normalize(centre - settings.origin);
92
+ ray.tmax = settings.tmax;
93
+
94
+ var stack: array<u32, ${BVH_TRAVERSAL_STACK_SIZE}>;
95
+
96
+ let hit = ray_query_blas_nearest(ray, settings.geometry_index, &stack, 0u);
97
+
98
+ out_t[i] = hit.t;
99
+ out_triangle[i] = select(0xFFFFFFFFu, hit.triangle, hit.t >= 0.0);
100
+
101
+ // The ray was aimed at a point on this triangle, so the nearest surface along it is at most
102
+ // this far. An answer beyond it is not an occlusion and not a miss — it is the traversal
103
+ // walking past a surface it was pointed at, which is what a hole in the traced image is.
104
+ out_expected_t[i] = length(centre - settings.origin);
105
+ }
106
+ `, [
107
+ RAY_STRUCT.declaration_chunk,
108
+ chunk_geometry_read_triangle_vertices,
109
+ chunk_ray_query_blas_nearest,
110
+ ]);
111
+
112
+ /**
113
+ * Ask the traversal, once per triangle, whether it can find that triangle.
114
+ *
115
+ * Every structural check on the tree has passed, which narrows the fault to the traversal itself —
116
+ * and traversal is the one thing no readback of the tree can exercise. So this runs the real
117
+ * `ray_query_blas_nearest`, the same function the path tracer calls, along a ray whose answer is
118
+ * known in advance.
119
+ *
120
+ * The ray goes from the camera to a triangle's centroid. That point is inside the triangle, so the
121
+ * ray intersects it, so the query must return a hit — this triangle if nothing is in front, some
122
+ * other one if something is. Only a miss is impossible, and a miss is therefore a traversal that
123
+ * failed to reach a leaf whose box it was inside.
124
+ *
125
+ * Which triangles miss, and where they are, is the whole diagnosis.
126
+ *
127
+ * @type {ComputeShader}
128
+ */
129
+ export const shader_blas_audit_visibility = ComputeShader.from({
130
+ label: "BLAS/AuditVisibility",
131
+ resources,
132
+ body,
133
+ });