@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,73 +1,10 @@
1
1
  /**
2
- * Draws {@link Trail3D}'s tubes under Shade, on the dynamic-geometry path.
2
+ * @deprecated Renamed to {@link Trail3DSystem}. The trailing `3` marked the 2.x → 3.x renderer transition;
3
+ * the 2.x name it disambiguated against is gone, so the suffix no longer distinguishes anything.
3
4
  *
4
- * **A trail is dynamic content by definition** every knot of it is rewritten as the entity moves
5
- * and every knot's opacity as it ages — so it goes down S4's dedicated non-meshlet path (D5/I-10),
6
- * the same one particles, paths and debug shapes take.
7
- *
8
- * **The simulation is not this system's, and that is deliberate.** {@link seed_trail_tube} and
9
- * {@link advance_trail} are what the legacy `Trail3DSystem` runs too: the knots a trail lays down
10
- * are a property of the trail, not of the renderer drawing it, and two implementations of them
11
- * would be two trails that age differently. What is this system's is turning those knots into
12
- * vertices, once a frame, per trail.
13
- *
14
- * **Every trail is rewritten every frame it exists**, moving or not, because the simulator ages
15
- * every knot on every tick and the age is what the vertex opacity carries. There is no quiet trail
16
- * — a trail that has stopped is a trail fading out.
17
- *
18
- * **What the tube material had and this does not**: a texture, and per-trail depth writing. The
19
- * dynamic path has one pipeline, one vertex layout — position and colour — and one blend mode
20
- * (straight alpha over the finished scene, depth tested, never written), which is what a trail
21
- * wants and what the game's trails are authored as. `Trail3D.textureURL` therefore draws untinted
22
- * here; nothing in the game's own effects sets it to anything a flat colour does not carry.
23
- */
24
- export class Trail3DSystem3 extends System<any> {
25
- /**
26
- * @param {GraphicsEngine3} graphics
27
- */
28
- constructor(graphics: GraphicsEngine3);
29
- dependencies: (typeof Transform | typeof Trail3D)[];
30
- /**
31
- * What the pass draws. Read-only — the meshes follow the entities.
32
- *
33
- * @returns {DynamicMeshBatch}
34
- */
35
- get batch(): DynamicMeshBatch;
36
- startup(entityManager: any): Promise<void>;
37
- shutdown(entityManager: any): Promise<void>;
38
- /**
39
- * @param {Trail3D} trail
40
- * @param {Transform} transform
41
- * @param {number} entity
42
- */
43
- link(trail: Trail3D, transform: Transform, entity: number): void;
44
- /**
45
- * @param {Trail3D} trail
46
- * @param {Transform} transform
47
- * @param {number} entity
48
- */
49
- unlink(trail: Trail3D, transform: Transform, entity: number): void;
50
- update(timeDelta: any): void;
51
- /**
52
- * @param {FrameContext} frame
53
- */
54
- record(frame: FrameContext): void;
55
- #private;
56
- }
57
- /**
58
- * A trail is drawn into the scene and is concealed by the fog of war like anything else in it.
5
+ * Kept as a re-export rather than removed: this is a library, and an import path is as much a
6
+ * published interface as a class name.
59
7
  */
60
- export class TrailExtension extends RenderExtension {
61
- /**
62
- * @param {Trail3DSystem3} system
63
- */
64
- constructor(system: Trail3DSystem3);
65
- record(frame: any): void;
66
- #private;
67
- }
68
- import { System } from "../ecs/System.js";
69
- import { Transform } from "../ecs/transform/Transform.js";
70
- import Trail3D from "../graphics/ecs/trail3d/Trail3D.js";
71
- import { DynamicMeshBatch } from "../../shade/renderer/scene/DynamicMeshBatch.js";
72
- import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
8
+ export const Trail3DSystem3: typeof Trail3DSystem;
9
+ import { Trail3DSystem } from "./Trail3DSystem.js";
73
10
  //# sourceMappingURL=Trail3DSystem3.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Trail3DSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/Trail3DSystem3.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IA0CI;;OAEG;IACH,uCAMC;IAlDD,oDAAoC;IAgCpC;;;;OAIG;IACH,8BAEC;IAaD,2CAIC;IAED,4CAWC;IAED;;;;OAIG;IACH,YAJW,OAAO,aACP,SAAS,UACT,MAAM,QAkBhB;IAED;;;;OAIG;IACH,cAJW,OAAO,aACP,SAAS,UACT,MAAM,QAiBhB;IAED,6BAYC;IAED;;OAEG;IACH,kCAeC;;CACJ;AAED;;GAEG;AACH;IAUI;;OAEG;IACH,oBAFW,cAAc,EAMxB;IAED,yBAEC;;CACJ;uBAnNsB,kBAAkB;0BACf,+BAA+B;oBAGrC,oCAAoC;iCALvB,gDAAgD;gCAJjD,mDAAmD"}
1
+ {"version":3,"file":"Trail3DSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/Trail3DSystem3.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,kDAA4C;8BATd,oBAAoB"}
@@ -1,221 +1,10 @@
1
- import { assert } from "../../core/assert.js";
2
- import { GPUDynamicMeshRenderer } from "../../shade/renderer/dynamic/GPUDynamicMeshRenderer.js";
3
- import { Geometry } from "../../shade/renderer/geometry/Geometry.js";
4
- import { FramePhase } from "../../shade/renderer/extension/FramePhase.js";
5
- import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
6
- import { SceneColor } from "../../shade/renderer/extension/SceneColor.js";
7
- import { ViewTextures } from "../../shade/renderer/extension/ViewTextures.js";
8
- import { DynamicMesh } from "../../shade/renderer/scene/DynamicMesh.js";
9
- import { DynamicMeshBatch } from "../../shade/renderer/scene/DynamicMeshBatch.js";
10
- import { System } from "../ecs/System.js";
11
- import { Transform } from "../ecs/transform/Transform.js";
12
- import { advance_trail } from "../graphics/ecs/trail3d/advance_trail.js";
13
- import { seed_trail_tube } from "../graphics/ecs/trail3d/seed_trail_tube.js";
14
- import Trail3D from "../graphics/ecs/trail3d/Trail3D.js";
15
- import { Trail3DFlags } from "../graphics/ecs/trail3d/Trail3DFlags.js";
16
- import {
17
- TubeXFixedPhysicsSimulator
18
- } from "../graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js";
19
- import { trail_tube_write_geometry } from "./trail/trail_tube_write_geometry.js";
1
+ import { Trail3DSystem } from "./Trail3DSystem.js";
20
2
 
21
3
  /**
22
- * Draws {@link Trail3D}'s tubes under Shade, on the dynamic-geometry path.
4
+ * @deprecated Renamed to {@link Trail3DSystem}. The trailing `3` marked the 2.x → 3.x renderer transition;
5
+ * the 2.x name it disambiguated against is gone, so the suffix no longer distinguishes anything.
23
6
  *
24
- * **A trail is dynamic content by definition** every knot of it is rewritten as the entity moves
25
- * and every knot's opacity as it ages — so it goes down S4's dedicated non-meshlet path (D5/I-10),
26
- * the same one particles, paths and debug shapes take.
27
- *
28
- * **The simulation is not this system's, and that is deliberate.** {@link seed_trail_tube} and
29
- * {@link advance_trail} are what the legacy `Trail3DSystem` runs too: the knots a trail lays down
30
- * are a property of the trail, not of the renderer drawing it, and two implementations of them
31
- * would be two trails that age differently. What is this system's is turning those knots into
32
- * vertices, once a frame, per trail.
33
- *
34
- * **Every trail is rewritten every frame it exists**, moving or not, because the simulator ages
35
- * every knot on every tick and the age is what the vertex opacity carries. There is no quiet trail
36
- * — a trail that has stopped is a trail fading out.
37
- *
38
- * **What the tube material had and this does not**: a texture, and per-trail depth writing. The
39
- * dynamic path has one pipeline, one vertex layout — position and colour — and one blend mode
40
- * (straight alpha over the finished scene, depth tested, never written), which is what a trail
41
- * wants and what the game's trails are authored as. `Trail3D.textureURL` therefore draws untinted
42
- * here; nothing in the game's own effects sets it to anything a flat colour does not carry.
43
- */
44
- export class Trail3DSystem3 extends System {
45
- dependencies = [Trail3D, Transform];
46
-
47
- /**
48
- * @type {GraphicsEngine3}
49
- */
50
- #graphics;
51
-
52
- /**
53
- * @type {GPUDynamicMeshRenderer}
54
- */
55
- #renderer = new GPUDynamicMeshRenderer();
56
-
57
- /**
58
- * @type {DynamicMeshBatch}
59
- */
60
- #batch = new DynamicMeshBatch();
61
-
62
- /**
63
- * @type {Map<number, {trail: Trail3D, transform: Transform, mesh: DynamicMesh}>}
64
- */
65
- #entries = new Map();
66
-
67
- /**
68
- * @type {TubeXFixedPhysicsSimulator}
69
- */
70
- #simulator = new TubeXFixedPhysicsSimulator();
71
-
72
- /**
73
- * @type {RenderExtension|null}
74
- */
75
- #extension = null;
76
-
77
- /**
78
- * What the pass draws. Read-only — the meshes follow the entities.
79
- *
80
- * @returns {DynamicMeshBatch}
81
- */
82
- get batch() {
83
- return this.#batch;
84
- }
85
-
86
- /**
87
- * @param {GraphicsEngine3} graphics
88
- */
89
- constructor(graphics) {
90
- super();
91
-
92
- assert.defined(graphics, 'graphics');
93
-
94
- this.#graphics = graphics;
95
- }
96
-
97
- async startup(entityManager) {
98
- this.entityManager = entityManager;
99
-
100
- this.#extension = this.#graphics.add_extension(new TrailExtension(this));
101
- }
102
-
103
- async shutdown(entityManager) {
104
- if (this.#extension !== null) {
105
- this.#graphics.remove_extension(this.#extension);
106
-
107
- this.#extension = null;
108
- }
109
-
110
- this.#renderer.destroy();
111
-
112
- this.#batch.clear();
113
- this.#entries.clear();
114
- }
115
-
116
- /**
117
- * @param {Trail3D} trail
118
- * @param {Transform} transform
119
- * @param {number} entity
120
- */
121
- link(trail, transform, entity) {
122
- if (!trail.getFlag(Trail3DFlags.Built)) {
123
- seed_trail_tube(trail, transform);
124
- }
125
-
126
- const mesh = DynamicMesh.from(new Geometry());
127
-
128
- // the extrusion produces world-space vertices, so what the draw applies is identity — but a
129
- // node's world transform is derived and stays unset until it is asked for
130
- mesh.updateMatrices();
131
-
132
- trail_tube_write_geometry(mesh.geometry, trail.tube);
133
-
134
- this.#batch.add(mesh);
135
-
136
- this.#entries.set(entity, { trail, transform, mesh });
137
- }
138
-
139
- /**
140
- * @param {Trail3D} trail
141
- * @param {Transform} transform
142
- * @param {number} entity
143
- */
144
- unlink(trail, transform, entity) {
145
- const entry = this.#entries.get(entity);
146
-
147
- if (entry === undefined) {
148
- return;
149
- }
150
-
151
- this.#batch.remove(entry.mesh);
152
-
153
- // residency deliberately survives leaving the batch, so nothing else would free it
154
- this.#renderer.release(entry.mesh.geometry);
155
-
156
- this.#entries.delete(entity);
157
-
158
- trail.dispose();
159
- }
160
-
161
- update(timeDelta) {
162
- for (const entry of this.#entries.values()) {
163
- const trail = entry.trail;
164
-
165
- advance_trail(trail, entry.transform, timeDelta, this.#simulator);
166
-
167
- // bounds are the GPU's business on this path (§4.5), so the flag the head raises has
168
- // nobody else to answer it
169
- trail.clearFlag(Trail3DFlags.BoundsNeedUpdate);
170
-
171
- trail_tube_write_geometry(entry.mesh.geometry, trail.tube);
172
- }
173
- }
174
-
175
- /**
176
- * @param {FrameContext} frame
177
- */
178
- record(frame) {
179
- if (this.#batch.count === 0) {
180
- // nothing to draw, and the frame's colour is left exactly as it was
181
- return;
182
- }
183
-
184
- const scene = frame.get(SceneColor);
185
-
186
- scene.color = this.#renderer.graph_draw({
187
- graph: frame.graph,
188
- batch: this.#batch,
189
- color: scene.color,
190
- depth: frame.get(ViewTextures).depth,
191
- camera: frame.view.camera.buffer
192
- });
193
- }
194
- }
195
-
196
- /**
197
- * A trail is drawn into the scene and is concealed by the fog of war like anything else in it.
7
+ * Kept as a re-export rather than removed: this is a library, and an import path is as much a
8
+ * published interface as a class name.
198
9
  */
199
- export class TrailExtension extends RenderExtension {
200
- name = "trails";
201
-
202
- phase = FramePhase.AfterTransparency;
203
-
204
- /**
205
- * @type {Trail3DSystem3}
206
- */
207
- #system;
208
-
209
- /**
210
- * @param {Trail3DSystem3} system
211
- */
212
- constructor(system) {
213
- super();
214
-
215
- this.#system = system;
216
- }
217
-
218
- record(frame) {
219
- this.#system.record(frame);
220
- }
221
- }
10
+ export const Trail3DSystem3 = Trail3DSystem;
@@ -6,7 +6,7 @@
6
6
  * is in Brick4 mode — so a level's lightmap is a property of the level, not of a thing standing in
7
7
  * it. Making it a component is what gives it a lifetime an entity already has: it arrives when the
8
8
  * level's entity is built, it is saved with it, and it goes away when the entity does. See
9
- * {@link VolumetricLightMapSystem3} for what happens when two entities claim the scene at once.
9
+ * {@link VolumetricLightMapSystem} for what happens when two entities claim the scene at once.
10
10
  *
11
11
  * **The payload is opaque here on purpose.** It is brick4's own GPU structure — the format
12
12
  * `brick4_to_gpu_structure` writes and the indirect-lighting shaders read — and everything inside
@@ -18,7 +18,7 @@
18
18
  * with the world-space bounds it was baked against, so the map already knows where it is. Moving
19
19
  * the entity that carries it moves nothing.
20
20
  *
21
- * @see VolumetricLightMapSystem3
21
+ * @see VolumetricLightMapSystem
22
22
  * @see Brick4LightMap
23
23
  */
24
24
  export class VolumetricLightMap {
@@ -10,7 +10,7 @@ import { is_array_buffer_equals } from "../../core/collection/array/typed/is_arr
10
10
  * is in Brick4 mode — so a level's lightmap is a property of the level, not of a thing standing in
11
11
  * it. Making it a component is what gives it a lifetime an entity already has: it arrives when the
12
12
  * level's entity is built, it is saved with it, and it goes away when the entity does. See
13
- * {@link VolumetricLightMapSystem3} for what happens when two entities claim the scene at once.
13
+ * {@link VolumetricLightMapSystem} for what happens when two entities claim the scene at once.
14
14
  *
15
15
  * **The payload is opaque here on purpose.** It is brick4's own GPU structure — the format
16
16
  * `brick4_to_gpu_structure` writes and the indirect-lighting shaders read — and everything inside
@@ -22,7 +22,7 @@ import { is_array_buffer_equals } from "../../core/collection/array/typed/is_arr
22
22
  * with the world-space bounds it was baked against, so the map already knows where it is. Moving
23
23
  * the entity that carries it moves nothing.
24
24
  *
25
- * @see VolumetricLightMapSystem3
25
+ * @see VolumetricLightMapSystem
26
26
  * @see Brick4LightMap
27
27
  */
28
28
  export class VolumetricLightMap {
@@ -0,0 +1,98 @@
1
+ /**
2
+ * The bytes the scene's lightmap buffer should hold for a given claim.
3
+ *
4
+ * **A claim with nothing usable in it is still a claim.** A component whose bake has not finished
5
+ * loading holds `null`, and one whose file turned out to be empty holds a zero-length buffer —
6
+ * neither is a structure the shader can traverse, and neither can simply be handed to
7
+ * `Brick4LightMap.upload`: it copies what it is given and no more, so a zero-length upload writes
8
+ * nothing at all and leaves the previous level's lighting exactly where it was. Both therefore
9
+ * resolve to an empty map, which is a real structure that lights nothing.
10
+ *
11
+ * @param {VolumetricLightMap|null} map `null` when nothing claims the scene
12
+ * @returns {ArrayBuffer}
13
+ */
14
+ export function volumetric_light_map_payload(map: VolumetricLightMap | null): ArrayBuffer;
15
+ /**
16
+ * Whether the scene's lightmap buffer is already holding what the claim says it should.
17
+ *
18
+ * The whole of what {@link VolumetricLightMapSystem.update} decides, and true on all but a handful
19
+ * of frames in a session — an upload is a state change, and there are only so many of those.
20
+ *
21
+ * **A claim is identified by the component, not by its bytes.** Comparing the buffers would answer
22
+ * the same question and cost a full read of a megabyte-scale map to do it; the version is what makes
23
+ * a component that swapped its bytes distinguishable from one that did not.
24
+ *
25
+ * **No claim and nothing uploaded is current; no claim after an upload is not.** That asymmetry is
26
+ * the unlink: a buffer nobody has written to holds nothing, and a buffer holding the last level's
27
+ * lighting has to be given an empty map before it holds nothing too.
28
+ *
29
+ * @param {VolumetricLightMap|null} active what claims the scene now
30
+ * @param {VolumetricLightMap|null} uploaded what the buffer was last given, `null` for none
31
+ * @param {number} uploaded_version {@link VolumetricLightMap.version} as of that upload
32
+ * @returns {boolean}
33
+ */
34
+ export function volumetric_light_map_is_current(active: VolumetricLightMap | null, uploaded: VolumetricLightMap | null, uploaded_version: number): boolean;
35
+ /**
36
+ * Feeds the scene's baked volumetric lightmap to the GPU, and takes it away again.
37
+ *
38
+ * **The whole system is one buffer's worth of state.** Shade keeps a single `Brick4LightMap` on the
39
+ * scene's GPU context; a `VolumetricLightMap` component is a claim on it. So unlike the systems
40
+ * around it there is no per-entity object to build and place — there is one upload, and the work is
41
+ * deciding when it has to happen.
42
+ *
43
+ * **A scene has one lightmap, so a second claim waits rather than wins.** {@link active} is the
44
+ * *first* component to link and stays that way until it unlinks, at which point the next in line
45
+ * takes over. The alternative — last writer wins — makes the scene's lighting depend on the order
46
+ * entities happened to be built in, which is not a thing a level author controls. Swapping one map
47
+ * for another is therefore: remove the old component, add the new one.
48
+ *
49
+ * **The upload is decided in {@link update}, not in {@link link}.** A lightmap arrives whenever its
50
+ * level does, including before the renderer has a device — `scene_context` answers `null` until one
51
+ * exists, and answers with a *different* context after a restart, whose buffer is empty again. Both
52
+ * are the same question asked once a frame: is what the GPU holds still what the components say. A
53
+ * link is therefore eventually consistent, by at most one frame.
54
+ *
55
+ * **Unlinking uploads an empty map rather than leaving the last one there.** There is no way to
56
+ * un-upload — the shader reads the buffer unconditionally in Brick4 mode — so a component that
57
+ * removed itself and left the scene lit exactly as before would make the lifetime a fiction. A
58
+ * claim carrying nothing usable resolves the same way; see {@link volumetric_light_map_payload}.
59
+ *
60
+ * **What this does not do is turn Brick4 on.** Which indirect-lighting technique a frame uses is the
61
+ * renderer's setting, and a scene in IBL or LPV mode never reads this buffer no matter what is in
62
+ * it. Uploading a lightmap is necessary for Brick4 lighting and not sufficient for it.
63
+ *
64
+ * @see VolumetricLightMap
65
+ */
66
+ export class VolumetricLightMapSystem extends System<any> {
67
+ /**
68
+ * @param {GraphicsEngine} graphics
69
+ * @param {Scene} scene
70
+ */
71
+ constructor(graphics: GraphicsEngine, scene: Scene);
72
+ dependencies: (typeof VolumetricLightMap)[];
73
+ /**
74
+ * The component the scene is lit from, or `null` when nothing claims it.
75
+ *
76
+ * Read-only — it follows the entities. What the GPU holds catches up with this on the next
77
+ * {@link update}.
78
+ *
79
+ * @returns {VolumetricLightMap|null}
80
+ */
81
+ get active(): VolumetricLightMap;
82
+ startup(entityManager: any): Promise<void>;
83
+ shutdown(entityManager: any): Promise<void>;
84
+ /**
85
+ * @param {VolumetricLightMap} map
86
+ * @param {number} entity
87
+ */
88
+ link(map: VolumetricLightMap, entity: number): void;
89
+ /**
90
+ * @param {VolumetricLightMap} map
91
+ * @param {number} entity
92
+ */
93
+ unlink(map: VolumetricLightMap, entity: number): void;
94
+ #private;
95
+ }
96
+ import { VolumetricLightMap } from "./VolumetricLightMap.js";
97
+ import { System } from "../ecs/System.js";
98
+ //# sourceMappingURL=VolumetricLightMapSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VolumetricLightMapSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/VolumetricLightMapSystem.js"],"names":[],"mappings":"AAoNA;;;;;;;;;;;;GAYG;AACH,kDAHW,kBAAkB,GAAC,IAAI,GACrB,WAAW,CAUvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wDALW,kBAAkB,GAAC,IAAI,YACvB,kBAAkB,GAAC,IAAI,oBACvB,MAAM,GACJ,OAAO,CAQnB;AA7PD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;IAyDI;;;OAGG;IACH,oDAQC;IAnED,4CAAoC;IAyCpC;;;;;;;OAOG;IACH,iCAIC;IAgBD,2CAEC;IAED,4CAUC;IAED;;;OAGG;IACH,UAHW,kBAAkB,UAClB,MAAM,QAIhB;IAED;;;OAGG;IACH,YAHW,kBAAkB,UAClB,MAAM,QAYhB;;CA+DJ;mCA7MkC,yBAAyB;uBADrC,kBAAkB"}