@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,170 +1,10 @@
1
- import { assert } from "../../core/assert.js";
2
- import { SignalBinding } from "../../core/events/signal/SignalBinding.js";
3
- import { DEG_TO_RAD } from "../../core/math/DEG_TO_RAD.js";
4
- import { System } from "../ecs/System.js";
5
- import { Transform } from "../ecs/transform/Transform.js";
6
- import { Camera } from "../graphics/ecs/camera/Camera.js";
7
- import { camera_sync_from_transform } from "./camera_sync_from_transform.js";
1
+ import { CameraSystem } from "./CameraSystem.js";
8
2
 
9
3
  /**
10
- * Drives the camera the frame is drawn from, from whichever camera entity is active.
4
+ * @deprecated Renamed to {@link CameraSystem}. 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.
11
6
  *
12
- * The old system gave every camera entity a three camera of its own and pointed
13
- * `graphics.camera` at one of them. Shade's facade **owns** its camera — one of them, for the whole
14
- * engine — so this does the other thing: whichever entity is active has its pose and its lens copied
15
- * onto that one. Nothing is swapped, so there is no state to get out of step, and a camera entity
16
- * appearing or leaving cannot leave the renderer pointed at a camera nobody owns.
17
- *
18
- * **Read once per tick rather than followed by signal**, which is the opposite of how
19
- * {@link MeshSystem3} and {@link LightSystem3} work, for a reason that is specific to cameras: the
20
- * component's clip planes are plain fields whose setters write straight through to the three camera
21
- * object it used to own, so there is no signal to bind to. A camera that changed its near plane while
22
- * standing still would silently keep the old one. It also happens to be the cheaper arrangement — a
23
- * game camera moves on almost every frame, so a signal per property would fire constantly to do work
24
- * this does once.
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.
25
9
  */
26
- export class CameraSystem3 extends System {
27
- /**
28
- * @type {GraphicsEngine3}
29
- */
30
- #graphics;
31
-
32
- /**
33
- * The camera entities present, and the binding watching each one's active flag.
34
- *
35
- * @type {Map<number, {camera: Camera, transform: Transform, binding: SignalBinding}>}
36
- */
37
- #entries = new Map();
38
-
39
- /**
40
- * Which entity is driving the render camera, or −1 when none is.
41
- *
42
- * @type {number}
43
- */
44
- #active = -1;
45
-
46
- /**
47
- * @param {GraphicsEngine3} graphics
48
- */
49
- constructor(graphics) {
50
- super();
51
-
52
- assert.equal(graphics.isGraphicsEngine, true, 'graphics.isGraphicsEngine !== true');
53
-
54
- this.#graphics = graphics;
55
-
56
- this.dependencies = [Camera, Transform];
57
- }
58
-
59
- async startup(entityManager) {
60
- this.entityManager = entityManager;
61
- }
62
-
63
- async shutdown(entityManager) {
64
- for (const entity of Array.from(this.#entries.keys())) {
65
- this.#drop(entity);
66
- }
67
- }
68
-
69
- /**
70
- * Which entity is driving the render camera, or −1.
71
- *
72
- * @returns {number}
73
- */
74
- get active_entity() {
75
- return this.#active;
76
- }
77
-
78
- /**
79
- * @param {Camera} camera
80
- * @param {Transform} transform
81
- * @param {number} entity
82
- */
83
- link(camera, transform, entity) {
84
- const binding = new SignalBinding(camera.active.onChanged, () => this.#elect());
85
-
86
- binding.link();
87
-
88
- this.#entries.set(entity, { camera, transform, binding });
89
-
90
- this.#elect();
91
- }
92
-
93
- /**
94
- * @param {Camera} camera
95
- * @param {Transform} transform
96
- * @param {number} entity
97
- */
98
- unlink(camera, transform, entity) {
99
- this.#drop(entity);
100
- }
101
-
102
- /**
103
- * Copy the active camera entity onto the camera Shade draws with, and its frustum back.
104
- *
105
- * @param {number} time_delta
106
- */
107
- update(time_delta) {
108
- const entry = this.#entries.get(this.#active);
109
-
110
- if (entry === undefined) {
111
- // no camera entity is active; the facade keeps whatever it was last given, which is what
112
- // lets a scene without a camera still render from wherever the last one left it
113
- return;
114
- }
115
-
116
- const target = this.#graphics.camera.camera;
117
-
118
- // degrees on the component, radians on Shade's; the facade's own `render` owns the aspect
119
- // ratio, because only it knows what resolution the frame is going out at
120
- target.fov = entry.camera.fov.getValue() * DEG_TO_RAD;
121
- target.near = entry.camera.clip_near;
122
- target.far = entry.camera.clip_far;
123
-
124
- camera_sync_from_transform(target, entry.transform);
125
-
126
- /*
127
- The return trip. Gameplay asks what the camera can see — which armies to generate now,
128
- which terrain tiles a scene has to have before it is shown — and the honest answer is the
129
- frustum the renderer is drawing with, not a second one derived from the component. It is
130
- copied rather than aliased because the renderer's camera is one object and any number of
131
- camera entities can pass through it.
132
- */
133
- entry.camera.publishFrustum(target.frustum);
134
- }
135
-
136
- /**
137
- * Settle on which entity drives the camera.
138
- *
139
- * First active one wins, and it is re-decided from scratch rather than tracked incrementally so
140
- * that two entities both claiming to be active resolve the same way however they got there.
141
- */
142
- #elect() {
143
- this.#active = -1;
144
-
145
- for (const [entity, entry] of this.#entries) {
146
- if (entry.camera.active.getValue()) {
147
- this.#active = entity;
148
-
149
- return;
150
- }
151
- }
152
- }
153
-
154
- /**
155
- * @param {number} entity
156
- */
157
- #drop(entity) {
158
- const entry = this.#entries.get(entity);
159
-
160
- if (entry === undefined) {
161
- return;
162
- }
163
-
164
- entry.binding.unlink();
165
-
166
- this.#entries.delete(entity);
167
-
168
- this.#elect();
169
- }
170
- }
10
+ export const CameraSystem3 = CameraSystem;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Draws what {@link Gizmo} recorded this frame, under Shade.
3
+ *
4
+ * **The Shade half of the pair `GizmoRenderingPlugin` is the three half of.** The immediate-mode API
5
+ * a tool calls is renderer-neutral and records into buffers; this turns one frame of those buffers
6
+ * into geometry and puts it on the dynamic-mesh path (D5/D11), which is where every piece of
7
+ * generated content in this phase belongs.
8
+ *
9
+ * **One mesh, one geometry, rewritten every frame.** Debug drawing has no persistent objects to key
10
+ * anything on — a shape is a call, not a thing — so there is nothing to cache and nothing to
11
+ * release between frames. Colour rides the vertices rather than the mesh, which is what lets one
12
+ * draw carry a whole frame's worth of differently coloured shapes.
13
+ *
14
+ * **Blended and depth-tested, never depth-writing.** Debug shapes are occluded by the scene and
15
+ * occlude nothing, including each other: two overlapping solid shapes composite in the order they
16
+ * were recorded rather than by depth. Whether a gizmo should instead sit on top of everything is
17
+ * the gizmo's question and V6 answers it.
18
+ *
19
+ * **The recording is cleared once the frame that consumed it has been submitted**, on the same
20
+ * signal the three backend clears on. An immediate-mode API that leaks its contents keeps drawing a
21
+ * world that has moved on, so "what was drawn last frame is gone this frame" is a property of the
22
+ * pass rather than a courtesy of its callers.
23
+ */
24
+ export class DebugDrawSystem extends System<any> {
25
+ /**
26
+ * @param {GraphicsEngine} graphics
27
+ */
28
+ constructor(graphics: GraphicsEngine);
29
+ /**
30
+ * Width of a drawn line, in CSS pixels of the display — so it is the same thickness whatever
31
+ * the device pixel ratio is and wherever the resolution controller has the frame this instant.
32
+ *
33
+ * **A property of the pass, not of a draw.** The recording API has no width — it is an
34
+ * immediate-mode debug surface, and one that asked every caller for a line width would be
35
+ * asking about the display rather than about the thing being drawn.
36
+ *
37
+ * @type {number}
38
+ */
39
+ line_width: number;
40
+ /**
41
+ * What the pass draws. Read-only — the geometry follows the recording.
42
+ *
43
+ * @returns {DynamicMeshBatch}
44
+ */
45
+ get batch(): DynamicMeshBatch;
46
+ startup(entityManager: any): Promise<void>;
47
+ shutdown(entityManager: any): Promise<void>;
48
+ /**
49
+ * @param {FrameContext} frame
50
+ */
51
+ record(frame: FrameContext): void;
52
+ #private;
53
+ }
54
+ /**
55
+ * **The single deliberate exception to the fog of war.** Everything else drawn into the scene is
56
+ * concealed by it; developer geometry that the fog can hide is a debugging tool that stops working
57
+ * exactly where debugging is needed, so this says so rather than relying on where it was registered.
58
+ */
59
+ export class DebugDrawExtension extends RenderExtension {
60
+ /**
61
+ * @param {DebugDrawSystem} system
62
+ */
63
+ constructor(system: DebugDrawSystem);
64
+ after: (typeof FogOfWarExtension)[];
65
+ record(frame: any): void;
66
+ #private;
67
+ }
68
+ import { System } from "../ecs/System.js";
69
+ import { DynamicMeshBatch } from "../../shade/renderer/scene/DynamicMeshBatch.js";
70
+ import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
71
+ import { FogOfWarExtension } from "./FogOfWarSystem.js";
72
+ //# sourceMappingURL=DebugDrawSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugDrawSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/DebugDrawSystem.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IAkEI;;OAEG;IACH,sCAcC;IAlFD;;;;;;;;;OASG;IACH,YAFU,MAAM,CAED;IA8Cf;;;;OAIG;IACH,8BAEC;IAqBD,2CAMC;IAED,4CAYC;IAED;;OAEG;IACH,kCAwBC;;CACJ;AAED;;;;GAIG;AACH;IAYI;;OAEG;IACH,oBAFW,eAAe,EAMzB;IAdD,oCAA4B;IAgB5B,yBAEC;;CACJ;uBAlMsB,kBAAkB;iCADR,gDAAgD;gCAJjD,mDAAmD;kCAFjD,qBAAqB"}
@@ -0,0 +1,205 @@
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 { FogOfWarExtension } from "./FogOfWarSystem.js";
5
+ import { FramePhase } from "../../shade/renderer/extension/FramePhase.js";
6
+ import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
7
+ import { SceneColor } from "../../shade/renderer/extension/SceneColor.js";
8
+ import { ViewTextures } from "../../shade/renderer/extension/ViewTextures.js";
9
+ import { DynamicMesh } from "../../shade/renderer/scene/DynamicMesh.js";
10
+ import { DynamicMeshBatch } from "../../shade/renderer/scene/DynamicMeshBatch.js";
11
+ import { System } from "../ecs/System.js";
12
+ import { Gizmo } from "../graphics/render/gizmo/Gizmo.js";
13
+ import { gizmo_view_from_camera } from "./debug/gizmo_view_from_camera.js";
14
+ import { gizmo_write_geometry } from "./debug/gizmo_write_geometry.js";
15
+
16
+ /**
17
+ * Draws what {@link Gizmo} recorded this frame, under Shade.
18
+ *
19
+ * **The Shade half of the pair `GizmoRenderingPlugin` is the three half of.** The immediate-mode API
20
+ * a tool calls is renderer-neutral and records into buffers; this turns one frame of those buffers
21
+ * into geometry and puts it on the dynamic-mesh path (D5/D11), which is where every piece of
22
+ * generated content in this phase belongs.
23
+ *
24
+ * **One mesh, one geometry, rewritten every frame.** Debug drawing has no persistent objects to key
25
+ * anything on — a shape is a call, not a thing — so there is nothing to cache and nothing to
26
+ * release between frames. Colour rides the vertices rather than the mesh, which is what lets one
27
+ * draw carry a whole frame's worth of differently coloured shapes.
28
+ *
29
+ * **Blended and depth-tested, never depth-writing.** Debug shapes are occluded by the scene and
30
+ * occlude nothing, including each other: two overlapping solid shapes composite in the order they
31
+ * were recorded rather than by depth. Whether a gizmo should instead sit on top of everything is
32
+ * the gizmo's question and V6 answers it.
33
+ *
34
+ * **The recording is cleared once the frame that consumed it has been submitted**, on the same
35
+ * signal the three backend clears on. An immediate-mode API that leaks its contents keeps drawing a
36
+ * world that has moved on, so "what was drawn last frame is gone this frame" is a property of the
37
+ * pass rather than a courtesy of its callers.
38
+ */
39
+ export class DebugDrawSystem extends System {
40
+ /**
41
+ * Width of a drawn line, in CSS pixels of the display — so it is the same thickness whatever
42
+ * the device pixel ratio is and wherever the resolution controller has the frame this instant.
43
+ *
44
+ * **A property of the pass, not of a draw.** The recording API has no width — it is an
45
+ * immediate-mode debug surface, and one that asked every caller for a line width would be
46
+ * asking about the display rather than about the thing being drawn.
47
+ *
48
+ * @type {number}
49
+ */
50
+ line_width = 2;
51
+
52
+ /**
53
+ * @type {GraphicsEngine}
54
+ */
55
+ #graphics;
56
+
57
+ /**
58
+ * @type {GPUDynamicMeshRenderer}
59
+ */
60
+ #renderer = new GPUDynamicMeshRenderer();
61
+
62
+ /**
63
+ * @type {DynamicMeshBatch}
64
+ */
65
+ #batch = new DynamicMeshBatch();
66
+
67
+ /**
68
+ * @type {DynamicMesh}
69
+ */
70
+ #mesh = DynamicMesh.from(new Geometry());
71
+
72
+ /**
73
+ * @type {RenderExtension|null}
74
+ */
75
+ #extension = null;
76
+
77
+ /**
78
+ * @type {function}
79
+ */
80
+ #clear;
81
+
82
+ /**
83
+ * Where the camera is and what it looks along, refilled per frame — the pass runs once and
84
+ * nothing else reads this.
85
+ *
86
+ * @type {GizmoView}
87
+ */
88
+ #view = {
89
+ eye: new Float32Array(3),
90
+ forward: new Float32Array(3),
91
+ projection_scale: 1,
92
+ viewport_height: 1,
93
+ line_width: 1
94
+ };
95
+
96
+ /**
97
+ * What the pass draws. Read-only — the geometry follows the recording.
98
+ *
99
+ * @returns {DynamicMeshBatch}
100
+ */
101
+ get batch() {
102
+ return this.#batch;
103
+ }
104
+
105
+ /**
106
+ * @param {GraphicsEngine} graphics
107
+ */
108
+ constructor(graphics) {
109
+ super();
110
+
111
+ assert.defined(graphics, 'graphics');
112
+
113
+ this.#graphics = graphics;
114
+
115
+ // vertices are written in world space, so what the draw applies is identity — but a node's
116
+ // world transform is derived and stays unset until it is asked for
117
+ this.#mesh.updateMatrices();
118
+
119
+ this.#batch.add(this.#mesh);
120
+
121
+ this.#clear = () => Gizmo.clear();
122
+ }
123
+
124
+ async startup(entityManager) {
125
+ this.entityManager = entityManager;
126
+
127
+ this.#extension = this.#graphics.add_extension(new DebugDrawExtension(this));
128
+
129
+ this.#graphics.on.postRender.add(this.#clear);
130
+ }
131
+
132
+ async shutdown(entityManager) {
133
+ if (this.#extension !== null) {
134
+ this.#graphics.remove_extension(this.#extension);
135
+
136
+ this.#extension = null;
137
+ }
138
+
139
+ this.#graphics.on.postRender.remove(this.#clear);
140
+
141
+ this.#renderer.destroy();
142
+
143
+ Gizmo.clear();
144
+ }
145
+
146
+ /**
147
+ * @param {FrameContext} frame
148
+ */
149
+ record(frame) {
150
+ gizmo_view_from_camera(
151
+ this.#view,
152
+ frame.view.camera.camera,
153
+ this.#graphics.viewport.size.y,
154
+ this.line_width
155
+ );
156
+
157
+ gizmo_write_geometry(this.#mesh.geometry, Gizmo, this.#view);
158
+
159
+ if (Gizmo.empty) {
160
+ // nothing was recorded, and the frame's colour is left exactly as it was
161
+ return;
162
+ }
163
+
164
+ const scene = frame.get(SceneColor);
165
+
166
+ scene.color = this.#renderer.graph_draw({
167
+ graph: frame.graph,
168
+ batch: this.#batch,
169
+ color: scene.color,
170
+ depth: frame.get(ViewTextures).depth,
171
+ camera: frame.view.camera.buffer
172
+ });
173
+ }
174
+ }
175
+
176
+ /**
177
+ * **The single deliberate exception to the fog of war.** Everything else drawn into the scene is
178
+ * concealed by it; developer geometry that the fog can hide is a debugging tool that stops working
179
+ * exactly where debugging is needed, so this says so rather than relying on where it was registered.
180
+ */
181
+ export class DebugDrawExtension extends RenderExtension {
182
+ name = "debug draw";
183
+
184
+ phase = FramePhase.AfterTransparency;
185
+
186
+ after = [FogOfWarExtension];
187
+
188
+ /**
189
+ * @type {DebugDrawSystem}
190
+ */
191
+ #system;
192
+
193
+ /**
194
+ * @param {DebugDrawSystem} system
195
+ */
196
+ constructor(system) {
197
+ super();
198
+
199
+ this.#system = system;
200
+ }
201
+
202
+ record(frame) {
203
+ this.#system.record(frame);
204
+ }
205
+ }
@@ -1,72 +1,10 @@
1
1
  /**
2
- * Draws what {@link Gizmo} recorded this frame, under Shade.
2
+ * @deprecated Renamed to {@link DebugDrawSystem}. 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
- * **The Shade half of the pair `GizmoRenderingPlugin` is the three half of.** The immediate-mode API
5
- * a tool calls is renderer-neutral and records into buffers; this turns one frame of those buffers
6
- * into geometry and puts it on the dynamic-mesh path (D5/D11), which is where every piece of
7
- * generated content in this phase belongs.
8
- *
9
- * **One mesh, one geometry, rewritten every frame.** Debug drawing has no persistent objects to key
10
- * anything on — a shape is a call, not a thing — so there is nothing to cache and nothing to
11
- * release between frames. Colour rides the vertices rather than the mesh, which is what lets one
12
- * draw carry a whole frame's worth of differently coloured shapes.
13
- *
14
- * **Blended and depth-tested, never depth-writing.** Debug shapes are occluded by the scene and
15
- * occlude nothing, including each other: two overlapping solid shapes composite in the order they
16
- * were recorded rather than by depth. Whether a gizmo should instead sit on top of everything is
17
- * the gizmo's question and V6 answers it.
18
- *
19
- * **The recording is cleared once the frame that consumed it has been submitted**, on the same
20
- * signal the three backend clears on. An immediate-mode API that leaks its contents keeps drawing a
21
- * world that has moved on, so "what was drawn last frame is gone this frame" is a property of the
22
- * pass rather than a courtesy of its callers.
23
- */
24
- export class DebugDrawSystem3 extends System<any> {
25
- /**
26
- * @param {GraphicsEngine3} graphics
27
- */
28
- constructor(graphics: GraphicsEngine3);
29
- /**
30
- * Width of a drawn line, in CSS pixels of the display — so it is the same thickness whatever
31
- * the device pixel ratio is and wherever the resolution controller has the frame this instant.
32
- *
33
- * **A property of the pass, not of a draw.** The recording API has no width — it is an
34
- * immediate-mode debug surface, and one that asked every caller for a line width would be
35
- * asking about the display rather than about the thing being drawn.
36
- *
37
- * @type {number}
38
- */
39
- line_width: number;
40
- /**
41
- * What the pass draws. Read-only — the geometry follows the recording.
42
- *
43
- * @returns {DynamicMeshBatch}
44
- */
45
- get batch(): DynamicMeshBatch;
46
- startup(entityManager: any): Promise<void>;
47
- shutdown(entityManager: any): Promise<void>;
48
- /**
49
- * @param {FrameContext} frame
50
- */
51
- record(frame: FrameContext): void;
52
- #private;
53
- }
54
- /**
55
- * **The single deliberate exception to the fog of war.** Everything else drawn into the scene is
56
- * concealed by it; developer geometry that the fog can hide is a debugging tool that stops working
57
- * exactly where debugging is needed, so this says so rather than relying on where it was registered.
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.
58
7
  */
59
- export class DebugDrawExtension extends RenderExtension {
60
- /**
61
- * @param {DebugDrawSystem3} system
62
- */
63
- constructor(system: DebugDrawSystem3);
64
- after: (typeof FogOfWarExtension)[];
65
- record(frame: any): void;
66
- #private;
67
- }
68
- import { System } from "../ecs/System.js";
69
- import { DynamicMeshBatch } from "../../shade/renderer/scene/DynamicMeshBatch.js";
70
- import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
71
- import { FogOfWarExtension } from "./FogOfWarSystem3.js";
8
+ export const DebugDrawSystem3: typeof DebugDrawSystem;
9
+ import { DebugDrawSystem } from "./DebugDrawSystem.js";
72
10
  //# sourceMappingURL=DebugDrawSystem3.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DebugDrawSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/DebugDrawSystem3.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IAkEI;;OAEG;IACH,uCAcC;IAlFD;;;;;;;;;OASG;IACH,YAFU,MAAM,CAED;IA8Cf;;;;OAIG;IACH,8BAEC;IAqBD,2CAMC;IAED,4CAYC;IAED;;OAEG;IACH,kCAwBC;;CACJ;AAED;;;;GAIG;AACH;IAYI;;OAEG;IACH,oBAFW,gBAAgB,EAM1B;IAdD,oCAA4B;IAgB5B,yBAEC;;CACJ;uBAlMsB,kBAAkB;iCADR,gDAAgD;gCAJjD,mDAAmD;kCAFjD,sBAAsB"}
1
+ {"version":3,"file":"DebugDrawSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/DebugDrawSystem3.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,sDAAgD;gCAThB,sBAAsB"}