@woosh/meep-engine 3.11.3 → 3.13.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 (596) 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/GPUDecalRenderer.js +3 -3
  168. package/src/engine/graphics3/decal/graph_build_decal_clusters.d.ts.map +1 -1
  169. package/src/engine/graphics3/decal/graph_build_decal_clusters.js +6 -8
  170. package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts +0 -7
  171. package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts.map +1 -1
  172. package/src/engine/graphics3/decal/shader_cluster_assign_decals.js +1 -1
  173. package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts +0 -4
  174. package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts.map +1 -1
  175. package/src/engine/graphics3/decal/shader_cull_decals_frustum.js +1 -1
  176. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  177. package/src/engine/graphics3/decal/shader_decal_composite.js +4 -2
  178. package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
  179. package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +2 -3
  180. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +2 -2
  181. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
  182. package/src/engine/graphics3/highlight/pack_highlight_table.js +74 -74
  183. package/src/engine/graphics3/highlight/shader_highlight_outline.js +150 -150
  184. package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +1 -1
  185. package/src/engine/graphics3/pose/query_entity_node_world_pose.js +101 -101
  186. package/src/engine/graphics3/preview/make_model_thumbnail.d.ts +3 -3
  187. package/src/engine/graphics3/preview/make_model_thumbnail.d.ts.map +1 -1
  188. package/src/engine/graphics3/preview/make_model_thumbnail.js +48 -48
  189. package/src/engine/graphics3/shade_camera_projection_ray.d.ts +1 -1
  190. package/src/engine/graphics3/shade_camera_projection_ray.js +77 -77
  191. package/src/engine/graphics3/shade_node_to_entity_composition.d.ts +1 -1
  192. package/src/engine/graphics3/shade_node_to_entity_composition.js +84 -84
  193. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  194. package/src/shade/RENDERER_CONTRACT.md +2 -1
  195. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +18 -0
  196. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
  197. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +73 -0
  198. package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +750 -0
  199. package/src/shade/device/ShadeGPUCommandContext.d.ts +10 -16
  200. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  201. package/src/shade/device/ShadeGPUCommandContext.js +801 -994
  202. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +107 -0
  203. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -0
  204. package/src/shade/device/pass/ShadeGPUComputePassEncoder.js +222 -0
  205. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +168 -0
  206. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -0
  207. package/src/shade/device/pass/ShadeGPURenderPassEncoder.js +317 -0
  208. package/src/shade/device/timing/GPUTimerArray.d.ts +4 -9
  209. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  210. package/src/shade/device/timing/GPUTimerArray.js +261 -289
  211. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +20 -2
  212. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts +59 -0
  213. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts.map +1 -0
  214. package/src/shade/device/timing/ShadeGPUContextProfiler.js +182 -0
  215. package/src/shade/device/timing/profile/GPUProfileSession.d.ts +4 -4
  216. package/src/shade/device/timing/profile/GPUProfileSession.js +4 -4
  217. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
  218. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +3 -2
  219. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
  220. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +3 -2
  221. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
  222. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +135 -134
  223. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -202
  224. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -249
  225. package/src/shade/renderer/Renderer.d.ts +0 -6
  226. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  227. package/src/shade/renderer/Renderer.js +0 -29
  228. package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSETS.js +1 -1
  229. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  230. package/src/shade/renderer/animation/GPUAnimationManager.js +1 -3
  231. package/src/shade/renderer/animation/pose/PosePlayback.d.ts +2 -1
  232. package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
  233. package/src/shade/renderer/animation/pose/PosePlayback.js +2 -1
  234. package/src/shade/renderer/animation/shader_animation_apply.d.ts.map +1 -1
  235. package/src/shade/renderer/animation/shader_animation_apply.js +128 -129
  236. package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
  237. package/src/shade/renderer/animation/shader_animation_pose_resolve.js +176 -177
  238. package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
  239. package/src/shade/renderer/animation/shader_animation_tick.js +4 -2
  240. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  241. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +8 -18
  242. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
  243. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +3 -2
  244. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
  245. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +4 -2
  246. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts +1 -1
  247. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
  248. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +24 -10
  249. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
  250. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +3 -2
  251. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
  252. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +5 -2
  253. package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.d.ts.map +1 -1
  254. package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.js +104 -105
  255. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
  256. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +0 -1
  257. package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +3 -3
  258. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +136 -136
  259. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  260. package/src/shade/renderer/buffer/table/GPUDatabase.js +16 -22
  261. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.d.ts.map +1 -1
  262. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.js +7 -2
  263. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  264. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +11 -5
  265. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
  266. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +43 -42
  267. package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.d.ts.map +1 -1
  268. package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.js +83 -84
  269. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
  270. package/src/shade/renderer/deferred/shader_tonemap_HDR.js +4 -1
  271. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts +2 -2
  272. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts.map +1 -1
  273. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +167 -167
  274. package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts.map +1 -1
  275. package/src/shade/renderer/dynamic/shader_dynamic_mesh.js +177 -170
  276. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
  277. package/src/shade/renderer/fow/GPUFogOfWarRenderer.js +3 -3
  278. package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
  279. package/src/shade/renderer/fow/shader_fog_of_war.js +3 -1
  280. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -102
  281. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
  282. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +5 -2
  283. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
  284. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +3 -11
  285. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts +1 -1
  286. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
  287. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +6 -4
  288. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  289. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +5 -10
  290. package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +129 -129
  291. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
  292. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +5 -3
  293. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  294. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -1
  295. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.d.ts.map +1 -1
  296. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.js +3 -1
  297. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.d.ts.map +1 -1
  298. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.js +114 -112
  299. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +367 -367
  300. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.d.ts.map +1 -1
  301. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.js +4 -1
  302. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
  303. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +9 -6
  304. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
  305. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +4 -1
  306. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  307. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +6 -8
  308. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.d.ts.map +1 -1
  309. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.js +3 -1
  310. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.d.ts.map +1 -1
  311. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +3 -1
  312. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -1115
  313. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +3 -3
  314. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +10 -10
  315. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
  316. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +4 -2
  317. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
  318. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +87 -83
  319. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
  320. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +4 -2
  321. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +2 -2
  322. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -1
  323. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +43 -8
  324. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
  325. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +4 -5
  326. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
  327. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +88 -85
  328. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
  329. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +194 -192
  330. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  331. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +33 -69
  332. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  333. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +6 -1
  334. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
  335. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +23 -7
  336. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
  337. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +191 -198
  338. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts +0 -6
  339. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts.map +1 -1
  340. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.js +120 -120
  341. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts +0 -4
  342. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts.map +1 -1
  343. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.js +112 -112
  344. package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
  345. package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +4 -7
  346. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts +0 -6
  347. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts.map +1 -1
  348. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.js +1 -1
  349. package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
  350. package/src/shade/renderer/light/environment/execute_filter_environment_map.js +1 -2
  351. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
  352. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +6 -1
  353. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
  354. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +234 -219
  355. package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +222 -222
  356. package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.js +191 -191
  357. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.d.ts.map +1 -1
  358. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.js +85 -82
  359. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_tile_composit.js +81 -81
  360. package/src/shade/renderer/material/GPUMaterialContext.js +380 -380
  361. package/src/shade/renderer/material/standard/fragment_gbuffer_vt.js +169 -169
  362. package/src/shade/renderer/object_property/shader_object_property_process.d.ts.map +1 -1
  363. package/src/shade/renderer/object_property/shader_object_property_process.js +83 -84
  364. package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts.map +1 -1
  365. package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js +57 -58
  366. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  367. package/src/shade/renderer/particles/graph_particles.js +5 -3
  368. package/src/shade/renderer/particles/prototypeParticleSystem.js +5 -7
  369. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  370. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +27 -13
  371. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  372. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +4 -4
  373. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
  374. package/src/shade/renderer/particles/shaders/shader_particle_render.js +190 -183
  375. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  376. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +18 -7
  377. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  378. package/src/shade/renderer/particles/sort/shader_particle_sort.js +47 -21
  379. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  380. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +7 -10
  381. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  382. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +4 -1
  383. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +184 -184
  384. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.d.ts.map +1 -1
  385. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.js +3 -1
  386. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.d.ts.map +1 -1
  387. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.js +4 -2
  388. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +147 -147
  389. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.d.ts.map +1 -1
  390. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +19 -17
  391. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.d.ts.map +1 -1
  392. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.js +1 -2
  393. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.d.ts.map +1 -1
  394. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.js +4 -1
  395. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.d.ts.map +1 -1
  396. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.js +4 -1
  397. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.d.ts.map +1 -1
  398. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.js +4 -1
  399. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.d.ts.map +1 -1
  400. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.js +4 -1
  401. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.d.ts.map +1 -1
  402. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +5 -8
  403. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.d.ts.map +1 -1
  404. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.js +4 -1
  405. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.d.ts.map +1 -1
  406. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.js +4 -1
  407. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.d.ts.map +1 -1
  408. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.js +4 -1
  409. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
  410. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +4 -2
  411. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
  412. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +4 -2
  413. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.d.ts.map +1 -1
  414. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.js +4 -1
  415. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  416. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +8 -11
  417. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
  418. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +5 -1
  419. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  420. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +11 -8
  421. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  422. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +7 -8
  423. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.d.ts.map +1 -1
  424. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +3 -1
  425. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  426. package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
  427. package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +3 -2
  428. package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.d.ts.map +1 -1
  429. package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.js +225 -226
  430. package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.d.ts.map +1 -1
  431. package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js +49 -50
  432. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
  433. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +291 -292
  434. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
  435. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +230 -231
  436. package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +1 -1
  437. package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +70 -68
  438. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts +16 -2
  439. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts.map +1 -1
  440. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +12 -12
  441. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
  442. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +3 -1
  443. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
  444. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +4 -1
  445. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +1 -1
  446. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +103 -101
  447. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
  448. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -2
  449. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.d.ts.map +1 -1
  450. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.js +3 -1
  451. package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
  452. package/src/shade/renderer/postprocess/taa/shader_taa.js +4 -1
  453. package/src/shade/renderer/postprocess/upscale-dither/fragment_shader_upscale_dither.js +5 -5
  454. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  455. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +339 -341
  456. package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.d.ts.map +1 -1
  457. package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.js +68 -69
  458. package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.d.ts.map +1 -1
  459. package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.js +59 -60
  460. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
  461. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +0 -1
  462. package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.d.ts.map +1 -1
  463. package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.js +64 -65
  464. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
  465. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +168 -169
  466. package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.d.ts.map +1 -1
  467. package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.js +160 -161
  468. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
  469. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +6 -2
  470. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
  471. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +4 -2
  472. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.d.ts.map +1 -1
  473. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.js +139 -140
  474. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.d.ts.map +1 -1
  475. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.js +91 -92
  476. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.d.ts.map +1 -1
  477. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.js +88 -89
  478. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.d.ts.map +1 -1
  479. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.js +90 -91
  480. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
  481. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +5 -2
  482. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.d.ts.map +1 -1
  483. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.js +89 -90
  484. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
  485. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +169 -170
  486. package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.d.ts.map +1 -1
  487. package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.js +89 -90
  488. package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.d.ts.map +1 -1
  489. package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.js +61 -62
  490. package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.d.ts.map +1 -1
  491. package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.js +153 -154
  492. package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_alpha_tested_pass_descriptor.js +144 -144
  493. package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_pass_descriptor.js +88 -88
  494. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +722 -722
  495. package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +217 -217
  496. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +179 -179
  497. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +178 -178
  498. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +194 -194
  499. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +76 -76
  500. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  501. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +1 -9
  502. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  503. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +1 -6
  504. package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
  505. package/src/shade/renderer/restir/di/graph_restir_di.js +2 -3
  506. package/src/shade/renderer/restir/di/graph_restir_di_denoise.d.ts.map +1 -1
  507. package/src/shade/renderer/restir/di/graph_restir_di_denoise.js +1 -2
  508. package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
  509. package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +5 -3
  510. package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
  511. package/src/shade/renderer/restir/di/shader_restir_di_resample.js +4 -3
  512. package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
  513. package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +4 -3
  514. package/src/shade/renderer/restir/di/shader_restir_di_spatial.d.ts.map +1 -1
  515. package/src/shade/renderer/restir/di/shader_restir_di_spatial.js +116 -117
  516. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  517. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +3 -7
  518. package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy_naive.js +123 -123
  519. package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.d.ts.map +1 -1
  520. package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.js +64 -65
  521. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.d.ts.map +1 -1
  522. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.js +372 -373
  523. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.d.ts.map +1 -1
  524. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.js +111 -112
  525. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
  526. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +147 -145
  527. package/src/shade/renderer/shader/ComputeShader.d.ts +26 -5
  528. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  529. package/src/shade/renderer/shader/ComputeShader.js +347 -296
  530. package/src/shade/renderer/shader/ImageShader.js +217 -217
  531. package/src/shade/renderer/shader/ShaderDescriptor.d.ts +5 -0
  532. package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
  533. package/src/shade/renderer/shader/ShaderDescriptor.js +20 -0
  534. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +2 -2
  535. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
  536. package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +189 -189
  537. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  538. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +3 -1
  539. package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts +47 -0
  540. package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts.map +1 -0
  541. package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.js +448 -0
  542. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  543. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +14 -18
  544. package/src/shade/renderer/shadow/map/csm/graph_csm_setup_cascades.js +3 -3
  545. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.d.ts.map +1 -1
  546. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.js +5 -1
  547. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.d.ts.map +1 -1
  548. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +3 -1
  549. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +73 -73
  550. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
  551. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +151 -148
  552. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.d.ts.map +1 -1
  553. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +6 -4
  554. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.d.ts.map +1 -1
  555. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.js +18 -4
  556. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
  557. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +11 -12
  558. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.d.ts.map +1 -1
  559. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.js +6 -2
  560. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.d.ts.map +1 -1
  561. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.js +129 -127
  562. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
  563. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +5 -3
  564. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
  565. package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +2 -5
  566. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
  567. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +3 -2
  568. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +1 -1
  569. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  570. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +14 -19
  571. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +3 -2
  572. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  573. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +3 -2
  574. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts +0 -2
  575. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts.map +1 -1
  576. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +17 -6
  577. package/src/shade/renderer/water/shader_water.js +246 -246
  578. package/src/shade/vitest.setup.mjs +1 -1
  579. package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +291 -291
  580. package/src/shade/wgsl/validate_wgsl_source.d.ts.map +1 -1
  581. package/src/shade/wgsl/validate_wgsl_source.js +8 -3
  582. package/src/view/minimap/Minimap.d.ts +2 -2
  583. package/src/view/minimap/Minimap.d.ts.map +1 -1
  584. package/src/view/minimap/Minimap.js +225 -225
  585. package/src/view/minimap/dom/MinimapCameraView.d.ts +3 -3
  586. package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
  587. package/src/view/minimap/dom/MinimapCameraView.js +206 -206
  588. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts +0 -21
  589. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts.map +0 -1
  590. package/src/shade/device/timing/profile/make_profiling_pass_encoder.js +0 -114
  591. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts +0 -20
  592. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts.map +0 -1
  593. package/src/shade/device/timing/profile/parse_workgroup_size.js +0 -43
  594. package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts +0 -3
  595. package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts.map +0 -1
  596. package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.js +0 -20
@@ -1,146 +1,146 @@
1
- import { DEG_TO_RAD } from "../../../src/core/math/DEG_TO_RAD.js";
2
- import { v3_quaternion_apply } from "../../../src/core/geom/vec3/v3_quaternion_apply.js";
3
- import { Transform } from "../../../src/engine/ecs/transform/Transform.js";
4
- import { Camera } from "../../../src/engine/graphics/ecs/camera/Camera.js";
5
- import { Gizmo } from "../../../src/engine/graphics/render/gizmo/Gizmo.js";
6
- import { entity_is_editor_owned, SymbolicDisplay } from "./SymbolicDisplay.js";
7
-
8
- /**
9
- * @type {number[]}
10
- */
11
- const CAMERA_COLOR = [0.4, 0.9, 1, 1];
12
-
13
- /**
14
- * Which corners are joined: the near rectangle, the far one, and the four edges between them.
15
- *
16
- * @type {number[]}
17
- */
18
- const EDGES = [
19
- 0, 1, 1, 2, 2, 3, 3, 0,
20
- 4, 5, 5, 6, 6, 7, 7, 4,
21
- 0, 4, 1, 5, 2, 6, 3, 7
22
- ];
23
-
24
- /**
25
- * Eight frustum corners in world space, near plane first.
26
- *
27
- * @type {Float32Array}
28
- */
29
- const corners = new Float32Array(24);
30
-
31
- /**
32
- * @type {Float32Array}
33
- */
34
- const from = new Float32Array(3);
35
-
36
- /**
37
- * @type {Float32Array}
38
- */
39
- const to = new Float32Array(3);
40
-
41
- /**
42
- * The two depths the corners are taken at, near then far.
43
- *
44
- * @type {Float64Array}
45
- */
46
- const depths = new Float64Array(2);
47
-
48
- /**
49
- * The volume a camera entity can see.
50
- *
51
- * **Built from the component rather than from a renderer's camera object.** A camera entity has no
52
- * renderer object of its own, which is why the three `CameraHelper` this replaces could not survive
53
- * the port; everything the frustum needs — field of view, the two clip planes — is on the component,
54
- * and where the camera is and which way it faces is its `Transform`.
55
- * The one thing that is not is the aspect ratio, which belongs to the frame rather than to the
56
- * camera: it is the viewport's, exactly as the renderer's own is.
57
- *
58
- * **Perspective always, because that is what gets drawn.** `Camera.projectionType` carries an
59
- * orthographic option and no renderer in the program reads it — `CameraSystem3` copies the field of
60
- * view and the clip planes and nothing else — so a symbol that branched on it would be drawing a
61
- * projection the game cannot render.
62
- *
63
- * The transform's scale is deliberately not applied. A camera has no size, and a scaled entity
64
- * carrying one still sees exactly as far as its clip planes say.
65
- *
66
- * @see SymbolicDisplay
67
- */
68
- export class CameraSymbolicDisplay extends SymbolicDisplay {
69
- /**
70
- * Record a frustum per camera entity.
71
- *
72
- * The engine's viewport is expected to have a size: `preRender` is dispatched from inside a
73
- * frame, and a frame is not drawn into a collapsed viewport at all.
74
- *
75
- * @param {EntityComponentDataset} dataset
76
- */
77
- record(dataset) {
78
- const viewport = this.engine.graphics.viewport.size;
79
- const aspect = viewport.x / viewport.y;
80
-
81
- Gizmo.color = CAMERA_COLOR;
82
-
83
- dataset.traverseEntities([Camera, Transform], (camera, transform, entity) => {
84
- if (entity_is_editor_owned(dataset, entity)) {
85
- return;
86
- }
87
-
88
- this.#write_corners(camera, transform, aspect);
89
-
90
- for (let i = 0; i < 12; i++) {
91
- const a = EDGES[i * 2] * 3;
92
- const b = EDGES[i * 2 + 1] * 3;
93
-
94
- from[0] = corners[a];
95
- from[1] = corners[a + 1];
96
- from[2] = corners[a + 2];
97
-
98
- to[0] = corners[b];
99
- to[1] = corners[b + 1];
100
- to[2] = corners[b + 2];
101
-
102
- Gizmo.draw_line(from, to);
103
- }
104
- });
105
- }
106
-
107
- /**
108
- * @param {Camera} camera
109
- * @param {Transform} transform
110
- * @param {number} aspect
111
- */
112
- #write_corners(camera, transform, aspect) {
113
- const tangent = Math.tan(camera.fov.getValue() * DEG_TO_RAD / 2);
114
-
115
- const rotation = transform.rotation;
116
- const position = transform.position;
117
-
118
- // near plane first, then far, each anticlockwise from the top right as the camera sees it
119
- depths[0] = camera.clip_near;
120
- depths[1] = camera.clip_far;
121
-
122
- for (let plane = 0; plane < 2; plane++) {
123
- const depth = depths[plane];
124
-
125
- const half_height = depth * tangent;
126
- const half_width = half_height * aspect;
127
-
128
- for (let corner = 0; corner < 4; corner++) {
129
- const x = (corner === 0 || corner === 3) ? half_width : -half_width;
130
- const y = (corner === 0 || corner === 1) ? half_height : -half_height;
131
-
132
- const address = (plane * 4 + corner) * 3;
133
-
134
- v3_quaternion_apply(
135
- corners, address,
136
- x, y, depth,
137
- rotation.x, rotation.y, rotation.z, rotation.w
138
- );
139
-
140
- corners[address] += position.x;
141
- corners[address + 1] += position.y;
142
- corners[address + 2] += position.z;
143
- }
144
- }
145
- }
146
- }
1
+ import { DEG_TO_RAD } from "../../../src/core/math/DEG_TO_RAD.js";
2
+ import { v3_quaternion_apply } from "../../../src/core/geom/vec3/v3_quaternion_apply.js";
3
+ import { Transform } from "../../../src/engine/ecs/transform/Transform.js";
4
+ import { Camera } from "../../../src/engine/graphics/ecs/camera/Camera.js";
5
+ import { Gizmo } from "../../../src/engine/graphics/render/gizmo/Gizmo.js";
6
+ import { entity_is_editor_owned, SymbolicDisplay } from "./SymbolicDisplay.js";
7
+
8
+ /**
9
+ * @type {number[]}
10
+ */
11
+ const CAMERA_COLOR = [0.4, 0.9, 1, 1];
12
+
13
+ /**
14
+ * Which corners are joined: the near rectangle, the far one, and the four edges between them.
15
+ *
16
+ * @type {number[]}
17
+ */
18
+ const EDGES = [
19
+ 0, 1, 1, 2, 2, 3, 3, 0,
20
+ 4, 5, 5, 6, 6, 7, 7, 4,
21
+ 0, 4, 1, 5, 2, 6, 3, 7
22
+ ];
23
+
24
+ /**
25
+ * Eight frustum corners in world space, near plane first.
26
+ *
27
+ * @type {Float32Array}
28
+ */
29
+ const corners = new Float32Array(24);
30
+
31
+ /**
32
+ * @type {Float32Array}
33
+ */
34
+ const from = new Float32Array(3);
35
+
36
+ /**
37
+ * @type {Float32Array}
38
+ */
39
+ const to = new Float32Array(3);
40
+
41
+ /**
42
+ * The two depths the corners are taken at, near then far.
43
+ *
44
+ * @type {Float64Array}
45
+ */
46
+ const depths = new Float64Array(2);
47
+
48
+ /**
49
+ * The volume a camera entity can see.
50
+ *
51
+ * **Built from the component rather than from a renderer's camera object.** A camera entity has no
52
+ * renderer object of its own, which is why the three `CameraHelper` this replaces could not survive
53
+ * the port; everything the frustum needs — field of view, the two clip planes — is on the component,
54
+ * and where the camera is and which way it faces is its `Transform`.
55
+ * The one thing that is not is the aspect ratio, which belongs to the frame rather than to the
56
+ * camera: it is the viewport's, exactly as the renderer's own is.
57
+ *
58
+ * **Perspective always, because that is what gets drawn.** `Camera.projectionType` carries an
59
+ * orthographic option and no renderer in the program reads it — `CameraSystem` copies the field of
60
+ * view and the clip planes and nothing else — so a symbol that branched on it would be drawing a
61
+ * projection the game cannot render.
62
+ *
63
+ * The transform's scale is deliberately not applied. A camera has no size, and a scaled entity
64
+ * carrying one still sees exactly as far as its clip planes say.
65
+ *
66
+ * @see SymbolicDisplay
67
+ */
68
+ export class CameraSymbolicDisplay extends SymbolicDisplay {
69
+ /**
70
+ * Record a frustum per camera entity.
71
+ *
72
+ * The engine's viewport is expected to have a size: `preRender` is dispatched from inside a
73
+ * frame, and a frame is not drawn into a collapsed viewport at all.
74
+ *
75
+ * @param {EntityComponentDataset} dataset
76
+ */
77
+ record(dataset) {
78
+ const viewport = this.engine.graphics.viewport.size;
79
+ const aspect = viewport.x / viewport.y;
80
+
81
+ Gizmo.color = CAMERA_COLOR;
82
+
83
+ dataset.traverseEntities([Camera, Transform], (camera, transform, entity) => {
84
+ if (entity_is_editor_owned(dataset, entity)) {
85
+ return;
86
+ }
87
+
88
+ this.#write_corners(camera, transform, aspect);
89
+
90
+ for (let i = 0; i < 12; i++) {
91
+ const a = EDGES[i * 2] * 3;
92
+ const b = EDGES[i * 2 + 1] * 3;
93
+
94
+ from[0] = corners[a];
95
+ from[1] = corners[a + 1];
96
+ from[2] = corners[a + 2];
97
+
98
+ to[0] = corners[b];
99
+ to[1] = corners[b + 1];
100
+ to[2] = corners[b + 2];
101
+
102
+ Gizmo.draw_line(from, to);
103
+ }
104
+ });
105
+ }
106
+
107
+ /**
108
+ * @param {Camera} camera
109
+ * @param {Transform} transform
110
+ * @param {number} aspect
111
+ */
112
+ #write_corners(camera, transform, aspect) {
113
+ const tangent = Math.tan(camera.fov.getValue() * DEG_TO_RAD / 2);
114
+
115
+ const rotation = transform.rotation;
116
+ const position = transform.position;
117
+
118
+ // near plane first, then far, each anticlockwise from the top right as the camera sees it
119
+ depths[0] = camera.clip_near;
120
+ depths[1] = camera.clip_far;
121
+
122
+ for (let plane = 0; plane < 2; plane++) {
123
+ const depth = depths[plane];
124
+
125
+ const half_height = depth * tangent;
126
+ const half_width = half_height * aspect;
127
+
128
+ for (let corner = 0; corner < 4; corner++) {
129
+ const x = (corner === 0 || corner === 3) ? half_width : -half_width;
130
+ const y = (corner === 0 || corner === 1) ? half_height : -half_height;
131
+
132
+ const address = (plane * 4 + corner) * 3;
133
+
134
+ v3_quaternion_apply(
135
+ corners, address,
136
+ x, y, depth,
137
+ rotation.x, rotation.y, rotation.z, rotation.w
138
+ );
139
+
140
+ corners[address] += position.x;
141
+ corners[address + 1] += position.y;
142
+ corners[address + 2] += position.z;
143
+ }
144
+ }
145
+ }
146
+ }
@@ -1,172 +1,172 @@
1
- import { v3_quaternion_apply } from "../../../src/core/geom/vec3/v3_quaternion_apply.js";
2
- import { Transform } from "../../../src/engine/ecs/transform/Transform.js";
3
- import { Light } from "../../../src/engine/graphics/ecs/light/Light.js";
4
- import { LightType } from "../../../src/engine/graphics/ecs/light/LightType.js";
5
- import { Gizmo } from "../../../src/engine/graphics/render/gizmo/Gizmo.js";
6
- import { gizmo_draw_wire_circle } from "./gizmo_draw_wire_circle.js";
7
- import { entity_is_editor_owned, SymbolicDisplay } from "./SymbolicDisplay.js";
8
-
9
- /**
10
- * @type {number[]}
11
- */
12
- const LIGHT_COLOR = [1, 0.9, 0.3, 1];
13
-
14
- /**
15
- * How many straight pieces a drawn circle is made of. Enough to read as round at the distance an
16
- * editor looks at a light from, and few enough that a scene full of lights is not a scene full of
17
- * lines.
18
- *
19
- * @type {number}
20
- */
21
- const CIRCLE_SEGMENTS = 24;
22
-
23
- /**
24
- * How far a directional light's arrow reaches, in world units. It has no range to draw — that is
25
- * what makes it directional — so the length is the symbol's own and says only which way.
26
- *
27
- * @type {number}
28
- */
29
- const DIRECTION_LENGTH = 2;
30
-
31
- /**
32
- * @type {number}
33
- */
34
- const DIRECTION_DISC_RADIUS = 0.5;
35
-
36
- /**
37
- * @type {Float32Array}
38
- */
39
- const origin = new Float32Array(3);
40
-
41
- /**
42
- * @type {Float32Array}
43
- */
44
- const forward = new Float32Array(3);
45
-
46
- /**
47
- * @type {Float32Array}
48
- */
49
- const right = new Float32Array(3);
50
-
51
- /**
52
- * @type {Float32Array}
53
- */
54
- const up = new Float32Array(3);
55
-
56
- /**
57
- * @type {Float32Array}
58
- */
59
- const rim_center = new Float32Array(3);
60
-
61
- /**
62
- * @type {Float32Array}
63
- */
64
- const rim_point = new Float32Array(3);
65
-
66
- /**
67
- * What a light reaches, drawn as the shape of its own type.
68
- *
69
- * **Range rather than a fixed-size badge.** three's `PointLightHelper` drew a unit sphere whatever
70
- * the light's distance was, so the symbol said where the light was and nothing about what it lit;
71
- * the useful question in an editor is the second one, and the component already answers it. Where
72
- * the light *is* stays answered too — the positioned marker draws that, on the same entity.
73
- *
74
- * **A light shines along its forward**, which is `LightSystem3`'s stated convention and puts it on
75
- * the transform's local +Z. The spot cone and the directional arrow are both built from that, so a
76
- * light that is turned in the editor turns its symbol with it.
77
- *
78
- * @see SymbolicDisplay
79
- */
80
- export class LightSymbolicDisplay extends SymbolicDisplay {
81
- /**
82
- * @param {EntityComponentDataset} dataset
83
- */
84
- record(dataset) {
85
- Gizmo.color = LIGHT_COLOR;
86
-
87
- dataset.traverseEntities([Light, Transform], (light, transform, entity) => {
88
- if (entity_is_editor_owned(dataset, entity)) {
89
- return;
90
- }
91
-
92
- const position = transform.position;
93
-
94
- origin[0] = position.x;
95
- origin[1] = position.y;
96
- origin[2] = position.z;
97
-
98
- switch (light.type.getValue()) {
99
- case LightType.POINT:
100
- Gizmo.draw_wire_sphere(origin, light.distance.getValue());
101
- break;
102
-
103
- case LightType.SPOT:
104
- this.#write_basis(transform);
105
- this.#draw_cone(light.angle.getValue(), light.distance.getValue());
106
- break;
107
-
108
- case LightType.DIRECTION:
109
- this.#write_basis(transform);
110
- this.#draw_arrow();
111
- break;
112
- }
113
- });
114
- }
115
-
116
- /**
117
- * Fill {@link forward}, {@link right} and {@link up} with the entity's own axes.
118
- *
119
- * @param {Transform} transform
120
- */
121
- #write_basis(transform) {
122
- const rotation = transform.rotation;
123
-
124
- v3_quaternion_apply(forward, 0, 0, 0, 1, rotation.x, rotation.y, rotation.z, rotation.w);
125
- v3_quaternion_apply(right, 0, 1, 0, 0, rotation.x, rotation.y, rotation.z, rotation.w);
126
- v3_quaternion_apply(up, 0, 0, 1, 0, rotation.x, rotation.y, rotation.z, rotation.w);
127
- }
128
-
129
- /**
130
- * Four edges to the rim of the cone, and the rim.
131
- *
132
- * @param {number} half_angle in radians, from the axis to the edge
133
- * @param {number} length
134
- */
135
- #draw_cone(half_angle, length) {
136
- const radius = Math.tan(half_angle) * length;
137
-
138
- for (let c = 0; c < 3; c++) {
139
- rim_center[c] = origin[c] + forward[c] * length;
140
- }
141
-
142
- // the four edges are the rim's own axis points, so an edge and the rim always meet
143
- for (let i = 0; i < 4; i++) {
144
- const angle = i * (Math.PI / 2);
145
-
146
- const cos = Math.cos(angle) * radius;
147
- const sin = Math.sin(angle) * radius;
148
-
149
- for (let c = 0; c < 3; c++) {
150
- rim_point[c] = rim_center[c] + right[c] * cos + up[c] * sin;
151
- }
152
-
153
- Gizmo.draw_line(origin, rim_point);
154
- }
155
-
156
- gizmo_draw_wire_circle(rim_center, right, up, radius, CIRCLE_SEGMENTS);
157
- }
158
-
159
- /**
160
- * A shaft along the direction, and a disc across it to say the light is a plane of rays rather
161
- * than a point.
162
- */
163
- #draw_arrow() {
164
- for (let c = 0; c < 3; c++) {
165
- rim_center[c] = origin[c] + forward[c] * DIRECTION_LENGTH;
166
- }
167
-
168
- Gizmo.draw_line(origin, rim_center);
169
-
170
- gizmo_draw_wire_circle(origin, right, up, DIRECTION_DISC_RADIUS, CIRCLE_SEGMENTS);
171
- }
172
- }
1
+ import { v3_quaternion_apply } from "../../../src/core/geom/vec3/v3_quaternion_apply.js";
2
+ import { Transform } from "../../../src/engine/ecs/transform/Transform.js";
3
+ import { Light } from "../../../src/engine/graphics/ecs/light/Light.js";
4
+ import { LightType } from "../../../src/engine/graphics/ecs/light/LightType.js";
5
+ import { Gizmo } from "../../../src/engine/graphics/render/gizmo/Gizmo.js";
6
+ import { gizmo_draw_wire_circle } from "./gizmo_draw_wire_circle.js";
7
+ import { entity_is_editor_owned, SymbolicDisplay } from "./SymbolicDisplay.js";
8
+
9
+ /**
10
+ * @type {number[]}
11
+ */
12
+ const LIGHT_COLOR = [1, 0.9, 0.3, 1];
13
+
14
+ /**
15
+ * How many straight pieces a drawn circle is made of. Enough to read as round at the distance an
16
+ * editor looks at a light from, and few enough that a scene full of lights is not a scene full of
17
+ * lines.
18
+ *
19
+ * @type {number}
20
+ */
21
+ const CIRCLE_SEGMENTS = 24;
22
+
23
+ /**
24
+ * How far a directional light's arrow reaches, in world units. It has no range to draw — that is
25
+ * what makes it directional — so the length is the symbol's own and says only which way.
26
+ *
27
+ * @type {number}
28
+ */
29
+ const DIRECTION_LENGTH = 2;
30
+
31
+ /**
32
+ * @type {number}
33
+ */
34
+ const DIRECTION_DISC_RADIUS = 0.5;
35
+
36
+ /**
37
+ * @type {Float32Array}
38
+ */
39
+ const origin = new Float32Array(3);
40
+
41
+ /**
42
+ * @type {Float32Array}
43
+ */
44
+ const forward = new Float32Array(3);
45
+
46
+ /**
47
+ * @type {Float32Array}
48
+ */
49
+ const right = new Float32Array(3);
50
+
51
+ /**
52
+ * @type {Float32Array}
53
+ */
54
+ const up = new Float32Array(3);
55
+
56
+ /**
57
+ * @type {Float32Array}
58
+ */
59
+ const rim_center = new Float32Array(3);
60
+
61
+ /**
62
+ * @type {Float32Array}
63
+ */
64
+ const rim_point = new Float32Array(3);
65
+
66
+ /**
67
+ * What a light reaches, drawn as the shape of its own type.
68
+ *
69
+ * **Range rather than a fixed-size badge.** three's `PointLightHelper` drew a unit sphere whatever
70
+ * the light's distance was, so the symbol said where the light was and nothing about what it lit;
71
+ * the useful question in an editor is the second one, and the component already answers it. Where
72
+ * the light *is* stays answered too — the positioned marker draws that, on the same entity.
73
+ *
74
+ * **A light shines along its forward**, which is `LightSystem`'s stated convention and puts it on
75
+ * the transform's local +Z. The spot cone and the directional arrow are both built from that, so a
76
+ * light that is turned in the editor turns its symbol with it.
77
+ *
78
+ * @see SymbolicDisplay
79
+ */
80
+ export class LightSymbolicDisplay extends SymbolicDisplay {
81
+ /**
82
+ * @param {EntityComponentDataset} dataset
83
+ */
84
+ record(dataset) {
85
+ Gizmo.color = LIGHT_COLOR;
86
+
87
+ dataset.traverseEntities([Light, Transform], (light, transform, entity) => {
88
+ if (entity_is_editor_owned(dataset, entity)) {
89
+ return;
90
+ }
91
+
92
+ const position = transform.position;
93
+
94
+ origin[0] = position.x;
95
+ origin[1] = position.y;
96
+ origin[2] = position.z;
97
+
98
+ switch (light.type.getValue()) {
99
+ case LightType.POINT:
100
+ Gizmo.draw_wire_sphere(origin, light.distance.getValue());
101
+ break;
102
+
103
+ case LightType.SPOT:
104
+ this.#write_basis(transform);
105
+ this.#draw_cone(light.angle.getValue(), light.distance.getValue());
106
+ break;
107
+
108
+ case LightType.DIRECTION:
109
+ this.#write_basis(transform);
110
+ this.#draw_arrow();
111
+ break;
112
+ }
113
+ });
114
+ }
115
+
116
+ /**
117
+ * Fill {@link forward}, {@link right} and {@link up} with the entity's own axes.
118
+ *
119
+ * @param {Transform} transform
120
+ */
121
+ #write_basis(transform) {
122
+ const rotation = transform.rotation;
123
+
124
+ v3_quaternion_apply(forward, 0, 0, 0, 1, rotation.x, rotation.y, rotation.z, rotation.w);
125
+ v3_quaternion_apply(right, 0, 1, 0, 0, rotation.x, rotation.y, rotation.z, rotation.w);
126
+ v3_quaternion_apply(up, 0, 0, 1, 0, rotation.x, rotation.y, rotation.z, rotation.w);
127
+ }
128
+
129
+ /**
130
+ * Four edges to the rim of the cone, and the rim.
131
+ *
132
+ * @param {number} half_angle in radians, from the axis to the edge
133
+ * @param {number} length
134
+ */
135
+ #draw_cone(half_angle, length) {
136
+ const radius = Math.tan(half_angle) * length;
137
+
138
+ for (let c = 0; c < 3; c++) {
139
+ rim_center[c] = origin[c] + forward[c] * length;
140
+ }
141
+
142
+ // the four edges are the rim's own axis points, so an edge and the rim always meet
143
+ for (let i = 0; i < 4; i++) {
144
+ const angle = i * (Math.PI / 2);
145
+
146
+ const cos = Math.cos(angle) * radius;
147
+ const sin = Math.sin(angle) * radius;
148
+
149
+ for (let c = 0; c < 3; c++) {
150
+ rim_point[c] = rim_center[c] + right[c] * cos + up[c] * sin;
151
+ }
152
+
153
+ Gizmo.draw_line(origin, rim_point);
154
+ }
155
+
156
+ gizmo_draw_wire_circle(rim_center, right, up, radius, CIRCLE_SEGMENTS);
157
+ }
158
+
159
+ /**
160
+ * A shaft along the direction, and a disc across it to say the light is a plane of rays rather
161
+ * than a point.
162
+ */
163
+ #draw_arrow() {
164
+ for (let c = 0; c < 3; c++) {
165
+ rim_center[c] = origin[c] + forward[c] * DIRECTION_LENGTH;
166
+ }
167
+
168
+ Gizmo.draw_line(origin, rim_center);
169
+
170
+ gizmo_draw_wire_circle(origin, right, up, DIRECTION_DISC_RADIUS, CIRCLE_SEGMENTS);
171
+ }
172
+ }