@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
- /**
2
- * One entry of an {@link Animation} component's clip list, while it is being played.
3
- *
4
- * The `Animation` component says *what* to play — a name, a repeat count, a weight, a time scale —
5
- * and holds no clock of its own, because it is data that a level authors and a save round-trips.
6
- * This is the running half: where that clip is, how strongly it is contributing, and whether it has
7
- * run out. {@link AnimationSystem3} owns one per clip in the list and hands them out, because the
8
- * pose a gameplay query has to answer from is exactly this (I-4) — never a readback.
9
- */
10
- export class ClipPlayback {
11
- /**
12
- * The list entry being played. Its `weight`, `timeScale` and `repeatCount` are read every
13
- * frame, so changing one takes effect without removing and re-adding the clip.
14
- *
15
- * @type {AnimationClip}
16
- */
17
- clip = null;
18
-
19
- /**
20
- * Which of the model instance's clips this is, by index — the same order the animation
21
- * manager's registration uses, which is what makes it the lookup for both.
22
- *
23
- * @type {number}
24
- */
25
- slot = -1;
26
-
27
- /**
28
- * Seconds the clip runs for, taken from the model when the playback was created rather than
29
- * read per frame: `ShadeAnimationClip.duration` walks every channel and every curve.
30
- *
31
- * @type {number}
32
- */
33
- duration = 0;
34
-
35
- /**
36
- * Time played since the clip was added to the list, scaled by {@link clip}'s time scale and
37
- * **not** folded into the clip's own span — this is what says how many repeats have gone by.
38
- *
39
- * @type {number}
40
- */
41
- elapsed = 0;
42
-
43
- /**
44
- * Where the clip is playing, in seconds from its own start: wrapped while it is repeating and
45
- * held at the end once it has run out. Directly what the renderer's clip record wants.
46
- *
47
- * @type {number}
48
- */
49
- time = 0;
50
-
51
- /**
52
- * The share of the pose this clip is contributing, normalized across every clip in the list —
53
- * see {@link AnimationSystem3}.
54
- *
55
- * @type {number}
56
- */
57
- weight = 0;
58
-
59
- /**
60
- * Whether the clip has played out its repeat count. A looping clip never does.
61
- *
62
- * The clip goes on contributing afterwards, holding its last frame; what this marks is the
63
- * moment `animation-event-clip-ended` was fired for it.
64
- *
65
- * @type {boolean}
66
- */
67
- finished = false;
68
-
69
- /**
70
- * @param {AnimationClip} clip
71
- * @param {number} slot
72
- * @param {number} duration
73
- * @returns {ClipPlayback}
74
- */
75
- static from(clip, slot, duration) {
76
- const r = new ClipPlayback();
77
-
78
- r.clip = clip;
79
- r.slot = slot;
80
- r.duration = duration;
81
-
82
- return r;
83
- }
84
- }
1
+ /**
2
+ * One entry of an {@link Animation} component's clip list, while it is being played.
3
+ *
4
+ * The `Animation` component says *what* to play — a name, a repeat count, a weight, a time scale —
5
+ * and holds no clock of its own, because it is data that a level authors and a save round-trips.
6
+ * This is the running half: where that clip is, how strongly it is contributing, and whether it has
7
+ * run out. {@link AnimationSystem} owns one per clip in the list and hands them out, because the
8
+ * pose a gameplay query has to answer from is exactly this (I-4) — never a readback.
9
+ */
10
+ export class ClipPlayback {
11
+ /**
12
+ * The list entry being played. Its `weight`, `timeScale` and `repeatCount` are read every
13
+ * frame, so changing one takes effect without removing and re-adding the clip.
14
+ *
15
+ * @type {AnimationClip}
16
+ */
17
+ clip = null;
18
+
19
+ /**
20
+ * Which of the model instance's clips this is, by index — the same order the animation
21
+ * manager's registration uses, which is what makes it the lookup for both.
22
+ *
23
+ * @type {number}
24
+ */
25
+ slot = -1;
26
+
27
+ /**
28
+ * Seconds the clip runs for, taken from the model when the playback was created rather than
29
+ * read per frame: `ShadeAnimationClip.duration` walks every channel and every curve.
30
+ *
31
+ * @type {number}
32
+ */
33
+ duration = 0;
34
+
35
+ /**
36
+ * Time played since the clip was added to the list, scaled by {@link clip}'s time scale and
37
+ * **not** folded into the clip's own span — this is what says how many repeats have gone by.
38
+ *
39
+ * @type {number}
40
+ */
41
+ elapsed = 0;
42
+
43
+ /**
44
+ * Where the clip is playing, in seconds from its own start: wrapped while it is repeating and
45
+ * held at the end once it has run out. Directly what the renderer's clip record wants.
46
+ *
47
+ * @type {number}
48
+ */
49
+ time = 0;
50
+
51
+ /**
52
+ * The share of the pose this clip is contributing, normalized across every clip in the list —
53
+ * see {@link AnimationSystem}.
54
+ *
55
+ * @type {number}
56
+ */
57
+ weight = 0;
58
+
59
+ /**
60
+ * Whether the clip has played out its repeat count. A looping clip never does.
61
+ *
62
+ * The clip goes on contributing afterwards, holding its last frame; what this marks is the
63
+ * moment `animation-event-clip-ended` was fired for it.
64
+ *
65
+ * @type {boolean}
66
+ */
67
+ finished = false;
68
+
69
+ /**
70
+ * @param {AnimationClip} clip
71
+ * @param {number} slot
72
+ * @param {number} duration
73
+ * @returns {ClipPlayback}
74
+ */
75
+ static from(clip, slot, duration) {
76
+ const r = new ClipPlayback();
77
+
78
+ r.clip = clip;
79
+ r.slot = slot;
80
+ r.duration = duration;
81
+
82
+ return r;
83
+ }
84
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"graph_build_decal_clusters.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/graph_build_decal_clusters.js"],"names":[],"mappings":"AAiGA;;;;;;;;;;;;;;;GAeG;AACH;YAFsB,MAAM;UAAQ,MAAM;gBAAc,MAAM;EAoG7D"}
1
+ {"version":3,"file":"graph_build_decal_clusters.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/graph_build_decal_clusters.js"],"names":[],"mappings":"AA+FA;;;;;;;;;;;;;;;GAeG;AACH;YAFsB,MAAM;UAAQ,MAAM;gBAAc,MAAM;EAoG7D"}
@@ -16,12 +16,10 @@ import {
16
16
  } from "./DECAL_CLUSTER.js";
17
17
  import {
18
18
  DECAL_CLUSTER_ASSIGNMENT_SETTINGS,
19
- DECAL_CLUSTER_WORKGROUP_SIZE,
20
19
  shader_cluster_assign_decals
21
20
  } from "./shader_cluster_assign_decals.js";
22
21
  import {
23
22
  DECAL_CULL_SETTINGS,
24
- SHADER_CULL_DECALS_WORKGROUP_SIZE,
25
23
  shader_cull_decals_frustum
26
24
  } from "./shader_cull_decals_frustum.js";
27
25
 
@@ -75,7 +73,7 @@ function graph_cull_decals({ graph, camera, decals, decal_count }) {
75
73
  const output = resources.get(data.output);
76
74
  const settings = resources.get(data.settings);
77
75
 
78
- shader_cull_decals_frustum.dispatch({
76
+ shader_cull_decals_frustum.dispatchThreads({
79
77
  encoder: context.encoder,
80
78
  bindings: {
81
79
  camera: camera.buffer,
@@ -83,7 +81,7 @@ function graph_cull_decals({ graph, camera, decals, decal_count }) {
83
81
  decal_data: decals.buffer,
84
82
  output,
85
83
  },
86
- group_count_x: Math.ceil(decal_count / SHADER_CULL_DECALS_WORKGROUP_SIZE),
84
+ thread_count_x: decal_count,
87
85
  });
88
86
  }
89
87
 
@@ -170,12 +168,12 @@ export function graph_build_decal_clusters({ graph, camera, decals, decal_count,
170
168
  const cluster_data = resources.get(data.cluster_data);
171
169
  const settings = resources.get(data.settings);
172
170
 
173
- shader_cluster_assign_decals.dispatch({
171
+ shader_cluster_assign_decals.dispatchThreads({
174
172
  encoder: context.encoder,
175
173
 
176
- group_count_x: Math.ceil(cluster_count_x / DECAL_CLUSTER_WORKGROUP_SIZE[0]),
177
- group_count_y: Math.ceil(cluster_count_y / DECAL_CLUSTER_WORKGROUP_SIZE[1]),
178
- group_count_z: Math.ceil(DECAL_CLUSTER_RESOLUTION_Z / DECAL_CLUSTER_WORKGROUP_SIZE[2]),
174
+ thread_count_x: cluster_count_x,
175
+ thread_count_y: cluster_count_y,
176
+ thread_count_z: DECAL_CLUSTER_RESOLUTION_Z,
179
177
 
180
178
  bindings: {
181
179
  camera: camera.buffer,
@@ -1,12 +1,5 @@
1
1
  export const DECAL_CLUSTER_ASSIGNMENT_SETTINGS: WebGPUStruct;
2
2
  export const DECAL_CLUSTER_LOOKUP_STRUCT: WebGPUArray;
3
- /**
4
- * Matching the light assignment's own reasoning: this shader uses a great many registers, and larger
5
- * workgroups mostly fail to get an allocation and sit idle.
6
- *
7
- * @type {number[]}
8
- */
9
- export const DECAL_CLUSTER_WORKGROUP_SIZE: number[];
10
3
  /**
11
4
  * Which decals cover which froxel.
12
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"shader_cluster_assign_decals.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_cluster_assign_decals.js"],"names":[],"mappings":"AAuCA,6DAMG;AAiBH,sDAAoF;AAMpF;;;;;GAKG;AACH,2CAFU,MAAM,EAAE,CAEoC;AAuHtD;;;;;;;;GAQG;AACH,2CAFU,aAAa,CAMpB;6BAjL0B,qDAAqD;4BADtD,oDAAoD;8BALlD,iDAAiD"}
1
+ {"version":3,"file":"shader_cluster_assign_decals.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_cluster_assign_decals.js"],"names":[],"mappings":"AAuCA,6DAMG;AAiBH,sDAAoF;AAmIpF;;;;;;;;GAQG;AACH,2CAFU,aAAa,CAMpB;6BAjL0B,qDAAqD;4BADtD,oDAAoD;8BALlD,iDAAiD"}
@@ -72,7 +72,7 @@ resources.createGroup({ label: "output" })
72
72
  *
73
73
  * @type {number[]}
74
74
  */
75
- export const DECAL_CLUSTER_WORKGROUP_SIZE = [4, 4, 4];
75
+ const DECAL_CLUSTER_WORKGROUP_SIZE = [4, 4, 4];
76
76
 
77
77
  const body = CodeChunk.from(
78
78
  //language=WGSL
@@ -1,7 +1,3 @@
1
- /**
2
- * @type {number}
3
- */
4
- export const SHADER_CULL_DECALS_WORKGROUP_SIZE: number;
5
1
  /**
6
2
  * Which decals are worth binning into froxels at all.
7
3
  *
@@ -1 +1 @@
1
- {"version":3,"file":"shader_cull_decals_frustum.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_cull_decals_frustum.js"],"names":[],"mappings":"AAeA;;GAEG;AACH,gDAFU,MAAM,CAEmE;AAuEnF;;;;;;;;GAQG;AACH,yCAFU,aAAa,CAMpB;AAEH;;GAEG;AACH,kCAFU,YAAY,CAE6B;8BAtGrB,iDAAiD;6BAMlD,qDAAqD"}
1
+ {"version":3,"file":"shader_cull_decals_frustum.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_cull_decals_frustum.js"],"names":[],"mappings":"AAyFA;;;;;;;;GAQG;AACH,yCAFU,aAAa,CAMpB;AAEH;;GAEG;AACH,kCAFU,YAAY,CAE6B;8BAtGrB,iDAAiD;6BAMlD,qDAAqD"}
@@ -16,7 +16,7 @@ import { DECAL_RECORD_OFFSET_TRANSFORM, DECAL_RECORD_WORD_COUNT } from "./DECAL_
16
16
  /**
17
17
  * @type {number}
18
18
  */
19
- export const SHADER_CULL_DECALS_WORKGROUP_SIZE = COMPUTE_SHADER_DEFAULT_GROUP_SIZE;
19
+ const SHADER_CULL_DECALS_WORKGROUP_SIZE = COMPUTE_SHADER_DEFAULT_GROUP_SIZE;
20
20
 
21
21
  const OUTPUT_STRUCT = WebGPUStruct.from({
22
22
  offset: atomic_u32,
@@ -13,7 +13,7 @@
13
13
  *
14
14
  * @param {object} args
15
15
  * @param {Array<{entity: number, highlight: Highlight}>} args.entries
16
- * @param {MeshSystem3} args.meshes resolves an entity to the nodes it has in the scene
16
+ * @param {MeshSystem} args.meshes resolves an entity to the nodes it has in the scene
17
17
  * @param {GPUSceneContext} args.scene resolves a node to its row
18
18
  * @param {Uint32Array} args.table reused between frames; replaced when it is too small
19
19
  * @returns {{table: Uint32Array, size: number}} `size` is one past the highest row written, and is
@@ -24,7 +24,7 @@ export function pack_highlight_table({ entries, meshes, scene, table }: {
24
24
  entity: number;
25
25
  highlight: Highlight;
26
26
  }>;
27
- meshes: MeshSystem3;
27
+ meshes: MeshSystem;
28
28
  scene: GPUSceneContext;
29
29
  table: Uint32Array;
30
30
  }): {
@@ -1 +1 @@
1
- {"version":3,"file":"pack_highlight_table.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/highlight/pack_highlight_table.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAP+D,OAAO,EAA3D,MAAM;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,YAAW;KAAC,CAAC;IAC3B,MAAM;IACF,KAAK;IACT,KAAK,EAAvB,WAAW;;WACD,WAAW;UAAQ,MAAM;EAqD7C"}
1
+ {"version":3,"file":"pack_highlight_table.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/highlight/pack_highlight_table.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAP+D,OAAO,EAA3D,MAAM;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,YAAW;KAAC,CAAC;IAC5B,MAAM;IACD,KAAK;IACT,KAAK,EAAvB,WAAW;;WACD,WAAW;UAAQ,MAAM;EAqD7C"}
@@ -1,74 +1,74 @@
1
- import { pack_highlight_color } from "./pack_highlight_color.js";
2
-
3
- /**
4
- * Build the lookup the outline shader reads: one packed colour per mesh row, addressed by the row
5
- * the visibility buffer writes.
6
- *
7
- * **The scene decides the indices.** A highlight is attached to an entity, an entity's model is
8
- * several nodes, and each node that carries geometry has a row — so the walk is entity → nodes →
9
- * rows, and an entity whose model has not loaded contributes none and needs no special case.
10
- *
11
- * Rebuilt every frame, which is the cheaper arrangement and not a concession: the game's highlights
12
- * animate colour and alpha continuously, so nothing is saved by watching for changes — and a
13
- * `Color`'s change signal does not fire for alpha-only edits, which is precisely what the animation
14
- * is.
15
- *
16
- * @param {object} args
17
- * @param {Array<{entity: number, highlight: Highlight}>} args.entries
18
- * @param {MeshSystem3} args.meshes resolves an entity to the nodes it has in the scene
19
- * @param {GPUSceneContext} args.scene resolves a node to its row
20
- * @param {Uint32Array} args.table reused between frames; replaced when it is too small
21
- * @returns {{table: Uint32Array, size: number}} `size` is one past the highest row written, and is
22
- * zero when nothing highlighted is in the scene
23
- */
24
- export function pack_highlight_table({ entries, meshes, scene, table }) {
25
- let highest = -1;
26
-
27
- /*
28
- Two sweeps, because the table has to be as long as the highest row before anything can be
29
- written into it and the rows are not known until the scene is asked. Asking twice is cheaper
30
- than growing a typed array mid-walk, and the walk is over the handful of things highlighted
31
- rather than over the scene.
32
- */
33
- for (let i = 0; i < entries.length; i++) {
34
- meshes.traverse_meshes(entries[i].entity, node => {
35
- const row = scene.mesh_row_of(node);
36
-
37
- if (row > highest) {
38
- highest = row;
39
- }
40
- });
41
- }
42
-
43
- const size = highest + 1;
44
-
45
- let result = table;
46
-
47
- if (result.length < size) {
48
- result = new Uint32Array(size);
49
- } else {
50
- result.fill(0, 0, size);
51
- }
52
-
53
- for (let i = 0; i < entries.length; i++) {
54
- const entry = entries[i];
55
-
56
- const packed = pack_highlight_color(entry.highlight.elements);
57
-
58
- if (packed === 0) {
59
- // a highlight faded to nothing is not a highlight, and zero is what the shader reads
60
- // as "no outline" anyway
61
- continue;
62
- }
63
-
64
- meshes.traverse_meshes(entry.entity, node => {
65
- const row = scene.mesh_row_of(node);
66
-
67
- if (row >= 0) {
68
- result[row] = packed;
69
- }
70
- });
71
- }
72
-
73
- return { table: result, size };
74
- }
1
+ import { pack_highlight_color } from "./pack_highlight_color.js";
2
+
3
+ /**
4
+ * Build the lookup the outline shader reads: one packed colour per mesh row, addressed by the row
5
+ * the visibility buffer writes.
6
+ *
7
+ * **The scene decides the indices.** A highlight is attached to an entity, an entity's model is
8
+ * several nodes, and each node that carries geometry has a row — so the walk is entity → nodes →
9
+ * rows, and an entity whose model has not loaded contributes none and needs no special case.
10
+ *
11
+ * Rebuilt every frame, which is the cheaper arrangement and not a concession: the game's highlights
12
+ * animate colour and alpha continuously, so nothing is saved by watching for changes — and a
13
+ * `Color`'s change signal does not fire for alpha-only edits, which is precisely what the animation
14
+ * is.
15
+ *
16
+ * @param {object} args
17
+ * @param {Array<{entity: number, highlight: Highlight}>} args.entries
18
+ * @param {MeshSystem} args.meshes resolves an entity to the nodes it has in the scene
19
+ * @param {GPUSceneContext} args.scene resolves a node to its row
20
+ * @param {Uint32Array} args.table reused between frames; replaced when it is too small
21
+ * @returns {{table: Uint32Array, size: number}} `size` is one past the highest row written, and is
22
+ * zero when nothing highlighted is in the scene
23
+ */
24
+ export function pack_highlight_table({ entries, meshes, scene, table }) {
25
+ let highest = -1;
26
+
27
+ /*
28
+ Two sweeps, because the table has to be as long as the highest row before anything can be
29
+ written into it and the rows are not known until the scene is asked. Asking twice is cheaper
30
+ than growing a typed array mid-walk, and the walk is over the handful of things highlighted
31
+ rather than over the scene.
32
+ */
33
+ for (let i = 0; i < entries.length; i++) {
34
+ meshes.traverse_meshes(entries[i].entity, node => {
35
+ const row = scene.mesh_row_of(node);
36
+
37
+ if (row > highest) {
38
+ highest = row;
39
+ }
40
+ });
41
+ }
42
+
43
+ const size = highest + 1;
44
+
45
+ let result = table;
46
+
47
+ if (result.length < size) {
48
+ result = new Uint32Array(size);
49
+ } else {
50
+ result.fill(0, 0, size);
51
+ }
52
+
53
+ for (let i = 0; i < entries.length; i++) {
54
+ const entry = entries[i];
55
+
56
+ const packed = pack_highlight_color(entry.highlight.elements);
57
+
58
+ if (packed === 0) {
59
+ // a highlight faded to nothing is not a highlight, and zero is what the shader reads
60
+ // as "no outline" anyway
61
+ continue;
62
+ }
63
+
64
+ meshes.traverse_meshes(entry.entity, node => {
65
+ const row = scene.mesh_row_of(node);
66
+
67
+ if (row >= 0) {
68
+ result[row] = packed;
69
+ }
70
+ });
71
+ }
72
+
73
+ return { table: result, size };
74
+ }
@@ -5,7 +5,7 @@
5
5
  * where does this projectile leave from, where does that effect anchor, where does the floating UI
6
6
  * hang. **The answer is computed, never read back** — GPU readback is a frame late and asynchronous,
7
7
  * so an outcome that depended on it would depend on frame pacing, and determinism and replay would
8
- * go with it (`EXECUTION.md` I-4).
8
+ * go with it: no GPU readback on a gameplay-affecting path.
9
9
  *
10
10
  * The pose is {@link pose_evaluate_world} over the clips the animation systems are driving: a pure
11
11
  * function of (clip set, time, weights), off the same clock the renderer is written from, which is