@woosh/meep-engine 3.11.2 → 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 (551) hide show
  1. package/README.md +14 -18
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/editor/SelectionVisualizer.js +127 -127
  4. package/editor/entity_world_bounds.js +27 -27
  5. package/editor/particles/rebuildParticleEmitter.js +31 -31
  6. package/editor/process/SymbolicDisplayProcess.js +1 -1
  7. package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
  8. package/editor/process/symbolic/LightSymbolicDisplay.js +172 -172
  9. package/editor/prototypeEditorShell.js +156 -156
  10. package/editor/selection/editor_pick.js +130 -130
  11. package/editor/selection/screen_rect_frustum.js +119 -119
  12. package/editor/tools/v2/TransformControls.js +971 -971
  13. package/package.json +1 -1
  14. package/src/engine/Engine.d.ts +3 -3
  15. package/src/engine/Engine.d.ts.map +1 -1
  16. package/src/engine/Engine.js +726 -726
  17. package/src/engine/EngineHarness.d.ts +1 -1
  18. package/src/engine/EngineHarness.js +590 -590
  19. package/src/engine/ecs/HIERARCHY_REVIEW.md +717 -717
  20. package/src/engine/ecs/terrain/ecs/BuildLightTexture.d.ts +1 -1
  21. package/src/engine/ecs/terrain/ecs/BuildLightTexture.js +27 -27
  22. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +1 -5
  23. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  24. package/src/engine/ecs/terrain/ecs/Terrain.js +790 -790
  25. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -129
  26. package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +1 -1
  27. package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -28
  28. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +1 -1
  29. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +428 -428
  30. package/src/engine/graphics/ecs/water/Water.d.ts +1 -1
  31. package/src/engine/graphics/ecs/water/Water.js +104 -104
  32. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +1 -1
  33. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1 -1
  34. package/src/engine/graphics3/AnimationGraphSystem.d.ts +65 -0
  35. package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -0
  36. package/src/engine/graphics3/AnimationGraphSystem.js +329 -0
  37. package/src/engine/graphics3/AnimationGraphSystem3.d.ts +6 -61
  38. package/src/engine/graphics3/AnimationGraphSystem3.d.ts.map +1 -1
  39. package/src/engine/graphics3/AnimationGraphSystem3.js +6 -325
  40. package/src/engine/graphics3/AnimationSystem.d.ts +76 -0
  41. package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -0
  42. package/src/engine/graphics3/AnimationSystem.js +352 -0
  43. package/src/engine/graphics3/AnimationSystem3.d.ts +6 -72
  44. package/src/engine/graphics3/AnimationSystem3.d.ts.map +1 -1
  45. package/src/engine/graphics3/AnimationSystem3.js +6 -348
  46. package/src/engine/graphics3/CameraSystem.d.ts +49 -0
  47. package/src/engine/graphics3/CameraSystem.d.ts.map +1 -0
  48. package/src/engine/graphics3/CameraSystem.js +170 -0
  49. package/src/engine/graphics3/CameraSystem3.d.ts +6 -45
  50. package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
  51. package/src/engine/graphics3/CameraSystem3.js +6 -166
  52. package/src/engine/graphics3/DebugDrawSystem.d.ts +72 -0
  53. package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -0
  54. package/src/engine/graphics3/DebugDrawSystem.js +205 -0
  55. package/src/engine/graphics3/DebugDrawSystem3.d.ts +6 -68
  56. package/src/engine/graphics3/DebugDrawSystem3.d.ts.map +1 -1
  57. package/src/engine/graphics3/DebugDrawSystem3.js +6 -201
  58. package/src/engine/graphics3/DecalSystem.d.ts +81 -0
  59. package/src/engine/graphics3/DecalSystem.d.ts.map +1 -0
  60. package/src/engine/graphics3/DecalSystem.js +441 -0
  61. package/src/engine/graphics3/DecalSystem3.d.ts +6 -77
  62. package/src/engine/graphics3/DecalSystem3.d.ts.map +1 -1
  63. package/src/engine/graphics3/DecalSystem3.js +6 -437
  64. package/src/engine/graphics3/FogOfWarSystem.d.ts +74 -0
  65. package/src/engine/graphics3/FogOfWarSystem.d.ts.map +1 -0
  66. package/src/engine/graphics3/FogOfWarSystem.js +265 -0
  67. package/src/engine/graphics3/FogOfWarSystem3.d.ts +6 -70
  68. package/src/engine/graphics3/FogOfWarSystem3.d.ts.map +1 -1
  69. package/src/engine/graphics3/FogOfWarSystem3.js +6 -261
  70. package/src/engine/graphics3/GraphicsEngine.d.ts +340 -0
  71. package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -0
  72. package/src/engine/graphics3/GraphicsEngine.js +790 -0
  73. package/src/engine/graphics3/GraphicsEngine3.d.ts +6 -336
  74. package/src/engine/graphics3/GraphicsEngine3.d.ts.map +1 -1
  75. package/src/engine/graphics3/GraphicsEngine3.js +6 -786
  76. package/src/engine/graphics3/HighlightSystem.d.ts +82 -0
  77. package/src/engine/graphics3/HighlightSystem.d.ts.map +1 -0
  78. package/src/engine/graphics3/HighlightSystem.js +241 -0
  79. package/src/engine/graphics3/HighlightSystem3.d.ts +6 -78
  80. package/src/engine/graphics3/HighlightSystem3.d.ts.map +1 -1
  81. package/src/engine/graphics3/HighlightSystem3.js +6 -237
  82. package/src/engine/graphics3/LightSystem.d.ts +40 -0
  83. package/src/engine/graphics3/LightSystem.d.ts.map +1 -0
  84. package/src/engine/graphics3/LightSystem.js +211 -0
  85. package/src/engine/graphics3/LightSystem3.d.ts +6 -36
  86. package/src/engine/graphics3/LightSystem3.d.ts.map +1 -1
  87. package/src/engine/graphics3/LightSystem3.js +6 -207
  88. package/src/engine/graphics3/MeshSystem.d.ts +106 -0
  89. package/src/engine/graphics3/MeshSystem.d.ts.map +1 -0
  90. package/src/engine/graphics3/MeshSystem.js +647 -0
  91. package/src/engine/graphics3/MeshSystem3.d.ts +6 -102
  92. package/src/engine/graphics3/MeshSystem3.d.ts.map +1 -1
  93. package/src/engine/graphics3/MeshSystem3.js +6 -642
  94. package/src/engine/graphics3/ParticipatingMedia.d.ts +2 -2
  95. package/src/engine/graphics3/ParticipatingMedia.js +203 -203
  96. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts +87 -0
  97. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -0
  98. package/src/engine/graphics3/ParticipatingMediaSystem.js +184 -0
  99. package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts +6 -83
  100. package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts.map +1 -1
  101. package/src/engine/graphics3/ParticipatingMediaSystem3.js +6 -180
  102. package/src/engine/graphics3/ParticleEmitterSystem.d.ts +76 -0
  103. package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -0
  104. package/src/engine/graphics3/ParticleEmitterSystem.js +289 -0
  105. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +6 -72
  106. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
  107. package/src/engine/graphics3/ParticleEmitterSystem3.js +6 -285
  108. package/src/engine/graphics3/PathDisplaySystem.d.ts +70 -0
  109. package/src/engine/graphics3/PathDisplaySystem.d.ts.map +1 -0
  110. package/src/engine/graphics3/PathDisplaySystem.js +309 -0
  111. package/src/engine/graphics3/PathDisplaySystem3.d.ts +6 -66
  112. package/src/engine/graphics3/PathDisplaySystem3.d.ts.map +1 -1
  113. package/src/engine/graphics3/PathDisplaySystem3.js +6 -305
  114. package/src/engine/graphics3/Pickable.d.ts +1 -1
  115. package/src/engine/graphics3/Pickable.js +65 -65
  116. package/src/engine/graphics3/PickingQuery.d.ts +1 -1
  117. package/src/engine/graphics3/PickingQuery.js +48 -48
  118. package/src/engine/graphics3/PickingSystem.d.ts +67 -0
  119. package/src/engine/graphics3/PickingSystem.d.ts.map +1 -0
  120. package/src/engine/graphics3/PickingSystem.js +273 -0
  121. package/src/engine/graphics3/PickingSystem3.d.ts +6 -63
  122. package/src/engine/graphics3/PickingSystem3.d.ts.map +1 -1
  123. package/src/engine/graphics3/PickingSystem3.js +6 -269
  124. package/src/engine/graphics3/ShadedGeometrySystem.d.ts +47 -0
  125. package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -0
  126. package/src/engine/graphics3/ShadedGeometrySystem.js +169 -0
  127. package/src/engine/graphics3/ShadedGeometrySystem3.d.ts +6 -43
  128. package/src/engine/graphics3/ShadedGeometrySystem3.d.ts.map +1 -1
  129. package/src/engine/graphics3/ShadedGeometrySystem3.js +6 -165
  130. package/src/engine/graphics3/TerrainSystem.d.ts +80 -0
  131. package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -0
  132. package/src/engine/graphics3/TerrainSystem.js +566 -0
  133. package/src/engine/graphics3/TerrainSystem3.d.ts +6 -76
  134. package/src/engine/graphics3/TerrainSystem3.d.ts.map +1 -1
  135. package/src/engine/graphics3/TerrainSystem3.js +6 -562
  136. package/src/engine/graphics3/TooltipComponentSystem.d.ts +65 -0
  137. package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -0
  138. package/src/engine/graphics3/TooltipComponentSystem.js +328 -0
  139. package/src/engine/graphics3/TooltipComponentSystem3.d.ts +6 -61
  140. package/src/engine/graphics3/TooltipComponentSystem3.d.ts.map +1 -1
  141. package/src/engine/graphics3/TooltipComponentSystem3.js +6 -324
  142. package/src/engine/graphics3/Trail3DSystem.d.ts +73 -0
  143. package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -0
  144. package/src/engine/graphics3/Trail3DSystem.js +221 -0
  145. package/src/engine/graphics3/Trail3DSystem3.d.ts +6 -69
  146. package/src/engine/graphics3/Trail3DSystem3.d.ts.map +1 -1
  147. package/src/engine/graphics3/Trail3DSystem3.js +6 -217
  148. package/src/engine/graphics3/VolumetricLightMap.d.ts +2 -2
  149. package/src/engine/graphics3/VolumetricLightMap.js +2 -2
  150. package/src/engine/graphics3/VolumetricLightMapSystem.d.ts +98 -0
  151. package/src/engine/graphics3/VolumetricLightMapSystem.d.ts.map +1 -0
  152. package/src/engine/graphics3/VolumetricLightMapSystem.js +261 -0
  153. package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts +6 -94
  154. package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts.map +1 -1
  155. package/src/engine/graphics3/VolumetricLightMapSystem3.js +10 -261
  156. package/src/engine/graphics3/WaterSystem.d.ts +59 -0
  157. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -0
  158. package/src/engine/graphics3/WaterSystem.js +293 -0
  159. package/src/engine/graphics3/WaterSystem3.d.ts +6 -55
  160. package/src/engine/graphics3/WaterSystem3.d.ts.map +1 -1
  161. package/src/engine/graphics3/WaterSystem3.js +6 -289
  162. package/src/engine/graphics3/animation/AnimationGraphController.d.ts +1 -1
  163. package/src/engine/graphics3/animation/AnimationGraphController.js +518 -518
  164. package/src/engine/graphics3/animation/ClipListPlayer.d.ts +1 -1
  165. package/src/engine/graphics3/animation/ClipListPlayer.js +263 -263
  166. package/src/engine/graphics3/animation/ClipPlayback.d.ts +2 -2
  167. package/src/engine/graphics3/animation/ClipPlayback.js +84 -84
  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/highlight/pack_highlight_table.d.ts +2 -2
  177. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
  178. package/src/engine/graphics3/highlight/pack_highlight_table.js +74 -74
  179. package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +1 -1
  180. package/src/engine/graphics3/pose/query_entity_node_world_pose.js +101 -101
  181. package/src/engine/graphics3/preview/make_model_thumbnail.d.ts +3 -3
  182. package/src/engine/graphics3/preview/make_model_thumbnail.d.ts.map +1 -1
  183. package/src/engine/graphics3/preview/make_model_thumbnail.js +48 -48
  184. package/src/engine/graphics3/shade_camera_projection_ray.d.ts +1 -1
  185. package/src/engine/graphics3/shade_camera_projection_ray.js +77 -77
  186. package/src/engine/graphics3/shade_node_to_entity_composition.d.ts +1 -1
  187. package/src/engine/graphics3/shade_node_to_entity_composition.js +84 -84
  188. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts +16 -2
  189. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts.map +1 -1
  190. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +28 -4
  191. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +1 -1
  192. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
  193. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +5 -2
  194. package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +564 -451
  195. package/src/shade/device/ShadeGPUCommandContext.d.ts +18 -2
  196. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  197. package/src/shade/device/ShadeGPUCommandContext.js +994 -940
  198. package/src/shade/device/immediate_data_supported.d.ts +33 -0
  199. package/src/shade/device/immediate_data_supported.d.ts.map +1 -0
  200. package/src/shade/device/immediate_data_supported.js +53 -0
  201. package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts +18 -0
  202. package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts.map +1 -1
  203. package/src/shade/device/mock/SoftwareGPUCommandEncoder.js +24 -0
  204. package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts +7 -0
  205. package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts.map +1 -1
  206. package/src/shade/device/mock/SoftwareGPUComputePassEncoder.js +49 -1
  207. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  208. package/src/shade/device/mock/SoftwareGPUDevice.js +20 -2
  209. package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts +65 -0
  210. package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts.map +1 -0
  211. package/src/shade/device/mock/SoftwareGPUImmediateData.js +160 -0
  212. package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts +7 -0
  213. package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts.map +1 -1
  214. package/src/shade/device/mock/SoftwareGPURenderPassEncoder.js +50 -0
  215. package/src/shade/device/mock/pipeline_immediate_size.d.ts +11 -0
  216. package/src/shade/device/mock/pipeline_immediate_size.d.ts.map +1 -0
  217. package/src/shade/device/mock/pipeline_immediate_size.js +18 -0
  218. package/src/shade/device/pipeline/PipelineLayoutManager.d.ts.map +1 -1
  219. package/src/shade/device/pipeline/PipelineLayoutManager.js +1 -0
  220. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
  221. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +0 -1
  222. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
  223. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +0 -1
  224. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
  225. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +133 -134
  226. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -202
  227. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -249
  228. package/src/shade/renderer/GraphicsContext.d.ts +9 -2
  229. package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
  230. package/src/shade/renderer/GraphicsContext.js +13 -1
  231. package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSETS.js +1 -1
  232. package/src/shade/renderer/animation/pose/PosePlayback.d.ts +2 -1
  233. package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
  234. package/src/shade/renderer/animation/pose/PosePlayback.js +2 -1
  235. package/src/shade/renderer/animation/shader_animation_apply.d.ts.map +1 -1
  236. package/src/shade/renderer/animation/shader_animation_apply.js +128 -129
  237. package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
  238. package/src/shade/renderer/animation/shader_animation_pose_resolve.js +176 -177
  239. package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
  240. package/src/shade/renderer/animation/shader_animation_tick.js +125 -126
  241. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
  242. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +98 -99
  243. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
  244. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +212 -213
  245. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
  246. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +120 -121
  247. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
  248. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +75 -76
  249. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
  250. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +371 -372
  251. package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.d.ts.map +1 -1
  252. package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.js +104 -105
  253. package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
  254. package/src/shade/renderer/atmosphere/GPUSky.js +145 -142
  255. package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts +34 -0
  256. package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts.map +1 -0
  257. package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.js +36 -0
  258. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +20 -0
  259. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -0
  260. package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +25 -0
  261. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +14 -1
  262. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
  263. package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +163 -177
  264. package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts +20 -0
  265. package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts.map +1 -0
  266. package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.js +46 -0
  267. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +11 -1
  268. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
  269. package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +57 -27
  270. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +19 -1
  271. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
  272. package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +69 -33
  273. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +13 -0
  274. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
  275. package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +35 -35
  276. package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts +13 -0
  277. package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts.map +1 -0
  278. package/src/shade/renderer/atmosphere/chunk_sky_lut_params.js +38 -0
  279. package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts +17 -0
  280. package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts.map +1 -0
  281. package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.js +29 -0
  282. package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts +21 -0
  283. package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts.map +1 -0
  284. package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.js +42 -0
  285. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts +2 -2
  286. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
  287. package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +164 -84
  288. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
  289. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +215 -204
  290. package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
  291. package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +79 -67
  292. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +136 -136
  293. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  294. package/src/shade/renderer/buffer/table/GPUDatabase.js +2 -3
  295. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +319 -319
  296. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
  297. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +41 -42
  298. package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.d.ts.map +1 -1
  299. package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.js +83 -84
  300. package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts.map +1 -1
  301. package/src/shade/renderer/dynamic/shader_dynamic_mesh.js +177 -170
  302. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
  303. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +4 -4
  304. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
  305. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +121 -122
  306. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +774 -774
  307. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts +1 -1
  308. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
  309. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +69 -70
  310. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +367 -367
  311. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +184 -184
  312. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -1115
  313. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
  314. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
  315. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +142 -143
  316. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
  317. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +0 -1
  318. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
  319. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +140 -141
  320. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
  321. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +0 -1
  322. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
  323. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +0 -1
  324. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
  325. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +191 -198
  326. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts +0 -6
  327. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts.map +1 -1
  328. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.js +120 -120
  329. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts +0 -4
  330. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts.map +1 -1
  331. package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.js +112 -112
  332. package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
  333. package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +10 -9
  334. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts +0 -6
  335. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts.map +1 -1
  336. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.js +1 -1
  337. package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +222 -222
  338. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_tile_composit.js +81 -81
  339. package/src/shade/renderer/material/GPUMaterialContext.js +380 -380
  340. package/src/shade/renderer/material/standard/fragment_gbuffer_vt.js +169 -169
  341. package/src/shade/renderer/object_property/shader_object_property_process.d.ts.map +1 -1
  342. package/src/shade/renderer/object_property/shader_object_property_process.js +83 -84
  343. package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts.map +1 -1
  344. package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js +57 -58
  345. package/src/shade/renderer/particles/prototypeParticleSystem.js +2 -3
  346. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  347. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +117 -118
  348. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  349. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +77 -79
  350. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
  351. package/src/shade/renderer/particles/shaders/shader_particle_render.js +190 -183
  352. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  353. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +99 -100
  354. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  355. package/src/shade/renderer/particles/sort/shader_particle_sort.js +158 -161
  356. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +184 -184
  357. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +119 -119
  358. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +3 -4
  359. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
  360. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +266 -267
  361. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
  362. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +270 -271
  363. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
  364. package/src/shade/renderer/postprocess/gtao/GTAO.js +4 -0
  365. package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
  366. package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +68 -69
  367. package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.d.ts.map +1 -1
  368. package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.js +225 -226
  369. package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.d.ts.map +1 -1
  370. package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js +49 -50
  371. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
  372. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +291 -292
  373. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
  374. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +230 -231
  375. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts +16 -2
  376. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts.map +1 -1
  377. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +12 -12
  378. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  379. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +341 -345
  380. package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.d.ts.map +1 -1
  381. package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.js +68 -69
  382. package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.d.ts.map +1 -1
  383. package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.js +59 -60
  384. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts +0 -2
  385. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
  386. package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +57 -57
  387. package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.d.ts.map +1 -1
  388. package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.js +64 -65
  389. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
  390. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +168 -169
  391. package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.d.ts.map +1 -1
  392. package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.js +160 -161
  393. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
  394. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +109 -110
  395. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
  396. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +115 -116
  397. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.d.ts.map +1 -1
  398. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.js +139 -140
  399. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.d.ts.map +1 -1
  400. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.js +91 -92
  401. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.d.ts.map +1 -1
  402. package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.js +88 -89
  403. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.d.ts.map +1 -1
  404. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.js +90 -91
  405. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
  406. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +65 -66
  407. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.d.ts.map +1 -1
  408. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.js +89 -90
  409. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
  410. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +169 -170
  411. package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
  412. package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +7 -3
  413. package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.d.ts.map +1 -1
  414. package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.js +89 -90
  415. package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.d.ts.map +1 -1
  416. package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.js +61 -62
  417. package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.d.ts.map +1 -1
  418. package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.js +153 -154
  419. package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.d.ts.map +1 -1
  420. package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js +77 -81
  421. package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_alpha_tested_pass_descriptor.js +144 -144
  422. package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_pass_descriptor.js +88 -88
  423. package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +217 -217
  424. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +179 -179
  425. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +178 -178
  426. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +194 -194
  427. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +76 -76
  428. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
  429. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +5 -1
  430. package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
  431. package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +136 -137
  432. package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
  433. package/src/shade/renderer/restir/di/shader_restir_di_resample.js +129 -130
  434. package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
  435. package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +99 -100
  436. package/src/shade/renderer/restir/di/shader_restir_di_spatial.d.ts.map +1 -1
  437. package/src/shade/renderer/restir/di/shader_restir_di_spatial.js +116 -117
  438. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +383 -383
  439. package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy_naive.js +123 -123
  440. package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.d.ts.map +1 -1
  441. package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.js +64 -65
  442. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.d.ts.map +1 -1
  443. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.js +372 -373
  444. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.d.ts.map +1 -1
  445. package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.js +111 -112
  446. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
  447. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +0 -1
  448. package/src/shade/renderer/shader/ComputeShader.d.ts +24 -3
  449. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  450. package/src/shade/renderer/shader/ComputeShader.js +350 -292
  451. package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
  452. package/src/shade/renderer/shader/ImageShader.js +217 -214
  453. package/src/shade/renderer/shader/ShaderDescriptor.d.ts +5 -0
  454. package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
  455. package/src/shade/renderer/shader/ShaderDescriptor.js +46 -0
  456. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +18 -0
  457. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -0
  458. package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +32 -0
  459. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts +7 -0
  460. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts.map +1 -1
  461. package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.js +17 -6
  462. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts +21 -0
  463. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -0
  464. package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +69 -0
  465. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts +9 -0
  466. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts.map +1 -0
  467. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.js +22 -0
  468. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts +16 -0
  469. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts.map +1 -0
  470. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.js +41 -0
  471. package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts +11 -0
  472. package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts.map +1 -1
  473. package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.js +15 -19
  474. package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts +23 -0
  475. package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts.map +1 -0
  476. package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.js +44 -0
  477. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.d.ts.map +1 -1
  478. package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js +1 -4
  479. package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +7 -1
  480. package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
  481. package/src/shade/renderer/shader/compiler/CodeChunk.js +37 -2
  482. package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.d.ts.map +1 -1
  483. package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.js +6 -0
  484. package/src/shade/renderer/shader/graph/compute/graph_compute_indirect_pass.js +1 -1
  485. package/src/shade/renderer/shader/graph/compute/graph_compute_pass.js +1 -1
  486. package/src/shade/renderer/shader/graph/graph_image_pass.js +1 -1
  487. package/src/shade/renderer/shader/graph/graph_prepare_bindings.d.ts.map +1 -1
  488. package/src/shade/renderer/shader/graph/graph_prepare_bindings.js +7 -0
  489. package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts +3 -1
  490. package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts.map +1 -1
  491. package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js +12 -1
  492. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
  493. package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +1 -0
  494. package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts +21 -0
  495. package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts.map +1 -0
  496. package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.js +21 -0
  497. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts +59 -1
  498. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  499. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +195 -2
  500. package/src/shade/renderer/shader/type/type_has_arrays.d.ts +14 -0
  501. package/src/shade/renderer/shader/type/type_has_arrays.d.ts.map +1 -0
  502. package/src/shade/renderer/shader/type/type_has_arrays.js +33 -0
  503. package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts +47 -0
  504. package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts.map +1 -0
  505. package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.js +448 -0
  506. package/src/shade/renderer/shadow/map/csm/graph_csm_setup_cascades.js +3 -3
  507. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +3 -3
  508. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +2 -2
  509. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +4 -4
  510. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
  511. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +231 -232
  512. package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +1 -1
  513. package/src/shade/renderer/view/GPUViewSkyContext.js +169 -173
  514. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +1 -1
  515. package/src/shade/renderer/volumetrics/NOTES.md +238 -0
  516. package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.js +145 -145
  517. package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.d.ts.map +1 -1
  518. package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.js +38 -15
  519. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +14 -2
  520. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  521. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +591 -577
  522. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +17 -0
  523. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  524. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +20 -2
  525. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  526. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +29 -18
  527. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +260 -260
  528. package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts +53 -3
  529. package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -1
  530. package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +175 -59
  531. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts +0 -2
  532. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts.map +1 -1
  533. package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +17 -6
  534. package/src/shade/renderer/water/shader_water.js +246 -246
  535. package/src/shade/vitest.setup.mjs +1 -1
  536. package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +291 -291
  537. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +8 -1
  538. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  539. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +1325 -1297
  540. package/src/view/minimap/Minimap.d.ts +2 -2
  541. package/src/view/minimap/Minimap.d.ts.map +1 -1
  542. package/src/view/minimap/Minimap.js +225 -225
  543. package/src/view/minimap/dom/MinimapCameraView.d.ts +3 -3
  544. package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
  545. package/src/view/minimap/dom/MinimapCameraView.js +206 -206
  546. package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts +0 -3
  547. package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts.map +0 -1
  548. package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.js +0 -20
  549. package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts +0 -2
  550. package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts.map +0 -1
  551. package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.js +0 -1
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Mirrors light entities into Shade's scene.
3
+ *
4
+ * The same shape as {@link MeshSystem} and for the same reason: the ECS says what exists and where,
5
+ * and this keeps the renderer's own objects in step. A Shade light **is** a `Node3D`, so `Scene.add`
6
+ * routes it into the light collection on its own and placement is the same transform copy meshes
7
+ * get — which for a directional light is also what aims it, since the engine's convention is that a
8
+ * light shines along its forward.
9
+ *
10
+ * **Ambient lights are deliberately not carried over.** Shade lights indirect from the environment
11
+ * by default, and that environment is the ambient term — a separate flat ambient light would be
12
+ * double-counting it. An entity asking for one is served better by the environment it already has.
13
+ */
14
+ export class LightSystem extends System<any> {
15
+ /**
16
+ * @param {GraphicsEngine} graphics
17
+ * @param {Scene} scene
18
+ */
19
+ constructor(graphics: GraphicsEngine, scene: Scene);
20
+ dependencies: (typeof Transform | typeof Light)[];
21
+ startup(entityManager: any): Promise<void>;
22
+ shutdown(entityManager: any): Promise<void>;
23
+ /**
24
+ * @param {Light} component
25
+ * @param {Transform} transform
26
+ * @param {number} entity
27
+ */
28
+ link(component: Light, transform: Transform, entity: number): void;
29
+ /**
30
+ * @param {Light} component
31
+ * @param {Transform} transform
32
+ * @param {number} entity
33
+ */
34
+ unlink(component: Light, transform: Transform, entity: number): void;
35
+ #private;
36
+ }
37
+ import { System } from "../ecs/System.js";
38
+ import { Transform } from "../ecs/transform/Transform.js";
39
+ import { Light } from "../graphics/ecs/light/Light.js";
40
+ //# sourceMappingURL=LightSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/LightSystem.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;GAYG;AACH;IAgBI;;;OAGG;IACH,oDAUC;IADG,kDAAsC;IAG1C,2CAIC;IAED,4CAIC;IAED;;;;OAIG;IACH,gBAJW,KAAK,aACL,SAAS,UACT,MAAM,QAqEhB;IAED;;;;OAIG;IACH,kBAJW,KAAK,aACL,SAAS,UACT,MAAM,QAIhB;;CAoBJ;uBApKsB,kBAAkB;0BACf,+BAA+B;sBAEnC,gCAAgC"}
@@ -0,0 +1,211 @@
1
+ import { assert } from "../../core/assert.js";
2
+ import { SignalBinding } from "../../core/events/signal/SignalBinding.js";
3
+ import { DirectionalLight } from "../../shade/renderer/light/model/DirectionalLight.js";
4
+ import { PointLight } from "../../shade/renderer/light/model/PointLight.js";
5
+ import { SpotLight } from "../../shade/renderer/light/model/SpotLight.js";
6
+ import { System } from "../ecs/System.js";
7
+ import { Transform } from "../ecs/transform/Transform.js";
8
+ import { t64_copy_from_transform } from "../ecs/transform/t64_copy_from_transform.js";
9
+ import { Light } from "../graphics/ecs/light/Light.js";
10
+ import { LightType } from "../graphics/ecs/light/LightType.js";
11
+
12
+ /**
13
+ * Mirrors light entities into Shade's scene.
14
+ *
15
+ * The same shape as {@link MeshSystem} and for the same reason: the ECS says what exists and where,
16
+ * and this keeps the renderer's own objects in step. A Shade light **is** a `Node3D`, so `Scene.add`
17
+ * routes it into the light collection on its own and placement is the same transform copy meshes
18
+ * get — which for a directional light is also what aims it, since the engine's convention is that a
19
+ * light shines along its forward.
20
+ *
21
+ * **Ambient lights are deliberately not carried over.** Shade lights indirect from the environment
22
+ * by default, and that environment is the ambient term — a separate flat ambient light would be
23
+ * double-counting it. An entity asking for one is served better by the environment it already has.
24
+ */
25
+ export class LightSystem extends System {
26
+ /**
27
+ * @type {GraphicsEngine}
28
+ */
29
+ #graphics;
30
+
31
+ /**
32
+ * @type {Scene}
33
+ */
34
+ #scene;
35
+
36
+ /**
37
+ * @type {Map<number, {light: Light, bindings: SignalBinding[]}>}
38
+ */
39
+ #entries = new Map();
40
+
41
+ /**
42
+ * @param {GraphicsEngine} graphics
43
+ * @param {Scene} scene
44
+ */
45
+ constructor(graphics, scene) {
46
+ super();
47
+
48
+ assert.defined(graphics, 'graphics');
49
+ assert.equal(scene.isScene, true, 'scene.isScene !== true');
50
+
51
+ this.#graphics = graphics;
52
+ this.#scene = scene;
53
+
54
+ this.dependencies = [Light, Transform];
55
+ }
56
+
57
+ async startup(entityManager) {
58
+ this.entityManager = entityManager;
59
+
60
+ this.#graphics.set_scene(this.#scene);
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
+ * @param {Light} component
71
+ * @param {Transform} transform
72
+ * @param {number} entity
73
+ */
74
+ link(component, transform, entity) {
75
+ const light = make_shade_light(component.type.getValue());
76
+
77
+ if (light === null) {
78
+ // ambient, or a type Shade has no object for — see the class note
79
+ return;
80
+ }
81
+
82
+ apply_light_properties(light, component);
83
+
84
+ t64_copy_from_transform(light.transform_local, transform);
85
+ light.updateMatrices();
86
+
87
+ this.#scene.add(light);
88
+
89
+ const entry = { light, bindings: [] };
90
+
91
+ this.#entries.set(entity, entry);
92
+
93
+ /*
94
+ Adding and removing a light invalidates the collection on its own, but **changing one in
95
+ place does not** — the GPU light table is rebuilt only when the collection's version moves,
96
+ so a light that is recoloured, re-aimed or dimmed keeps rendering with the values it was
97
+ uploaded with. `needsUpdate` is what says otherwise, and both paths below go through it.
98
+
99
+ Worth knowing because it is invisible from the CPU side: the light object holds the new
100
+ value, everything reads back correctly, and only the picture is stale.
101
+ */
102
+ const place = () => {
103
+ t64_copy_from_transform(light.transform_local, transform);
104
+ light.updateMatrices();
105
+
106
+ this.#scene.lights.needsUpdate = true;
107
+ };
108
+
109
+ const refresh = () => {
110
+ apply_light_properties(light, component);
111
+
112
+ this.#scene.lights.needsUpdate = true;
113
+ };
114
+
115
+ for (const component_value of [transform.position, transform.rotation, transform.scale]) {
116
+ const binding = new SignalBinding(component_value.onChanged, place);
117
+
118
+ binding.link();
119
+
120
+ entry.bindings.push(binding);
121
+ }
122
+
123
+ // A light's properties are gameplay-driven — a torch guttering, a spell charging, a
124
+ // searchlight narrowing — so they are followed rather than sampled once at spawn.
125
+ const observed_properties = [
126
+ component.color,
127
+ component.intensity,
128
+ component.castShadow,
129
+ component.angle,
130
+ component.penumbra,
131
+ component.distance
132
+ ];
133
+
134
+ for (const observed of observed_properties) {
135
+ const binding = new SignalBinding(observed.onChanged, refresh);
136
+
137
+ binding.link();
138
+
139
+ entry.bindings.push(binding);
140
+ }
141
+ }
142
+
143
+ /**
144
+ * @param {Light} component
145
+ * @param {Transform} transform
146
+ * @param {number} entity
147
+ */
148
+ unlink(component, transform, entity) {
149
+ this.#drop(entity);
150
+ }
151
+
152
+ /**
153
+ * @param {number} entity
154
+ */
155
+ #drop(entity) {
156
+ const entry = this.#entries.get(entity);
157
+
158
+ if (entry === undefined) {
159
+ return;
160
+ }
161
+
162
+ for (let i = 0; i < entry.bindings.length; i++) {
163
+ entry.bindings[i].unlink();
164
+ }
165
+
166
+ this.#scene.remove(entry.light);
167
+
168
+ this.#entries.delete(entity);
169
+ }
170
+ }
171
+
172
+ /**
173
+ * @param {LightType} type
174
+ * @returns {Light|null} null when Shade has no object for it
175
+ */
176
+ function make_shade_light(type) {
177
+ switch (type) {
178
+ case LightType.DIRECTION:
179
+ return new DirectionalLight();
180
+ case LightType.SPOT:
181
+ return new SpotLight();
182
+ case LightType.POINT:
183
+ return new PointLight();
184
+ default:
185
+ // AMBIENT: the environment is the ambient term
186
+ return null;
187
+ }
188
+ }
189
+
190
+ /**
191
+ * Copy what the component says onto the light Shade will render.
192
+ *
193
+ * `maxShadowDistance` has no counterpart here on purpose: it caps the frustum the legacy renderer
194
+ * fits a cascade against, and Shade fits its own shadows.
195
+ *
196
+ * @param {Light} light Shade's
197
+ * @param {Light} component meep's
198
+ */
199
+ function apply_light_properties(light, component) {
200
+ light.color.copy(component.color);
201
+ light.intensity = component.intensity.getValue();
202
+ light.casts_shadow = component.castShadow.getValue();
203
+
204
+ if (light.isSpotLight === true) {
205
+ light.angle = component.angle.getValue();
206
+ light.penumbra = component.penumbra.getValue();
207
+ light.distance = component.distance.getValue();
208
+ } else if (light.isPointLight === true) {
209
+ light.distance = component.distance.getValue();
210
+ }
211
+ }
@@ -1,40 +1,10 @@
1
1
  /**
2
- * Mirrors light entities into Shade's scene.
2
+ * @deprecated Renamed to {@link LightSystem}. 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 same shape as {@link MeshSystem3} and for the same reason: the ECS says what exists and where,
5
- * and this keeps the renderer's own objects in step. A Shade light **is** a `Node3D`, so `Scene.add`
6
- * routes it into the light collection on its own and placement is the same transform copy meshes
7
- * get — which for a directional light is also what aims it, since the engine's convention is that a
8
- * light shines along its forward.
9
- *
10
- * **Ambient lights are deliberately not carried over.** Shade lights indirect from the environment
11
- * by default, and that environment is the ambient term — a separate flat ambient light would be
12
- * double-counting it. An entity asking for one is served better by the environment it already has.
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.
13
7
  */
14
- export class LightSystem3 extends System<any> {
15
- /**
16
- * @param {GraphicsEngine3} graphics
17
- * @param {Scene} scene
18
- */
19
- constructor(graphics: GraphicsEngine3, scene: Scene);
20
- dependencies: (typeof Transform | typeof Light)[];
21
- startup(entityManager: any): Promise<void>;
22
- shutdown(entityManager: any): Promise<void>;
23
- /**
24
- * @param {Light} component
25
- * @param {Transform} transform
26
- * @param {number} entity
27
- */
28
- link(component: Light, transform: Transform, entity: number): void;
29
- /**
30
- * @param {Light} component
31
- * @param {Transform} transform
32
- * @param {number} entity
33
- */
34
- unlink(component: Light, transform: Transform, entity: number): void;
35
- #private;
36
- }
37
- import { System } from "../ecs/System.js";
38
- import { Transform } from "../ecs/transform/Transform.js";
39
- import { Light } from "../graphics/ecs/light/Light.js";
8
+ export const LightSystem3: typeof LightSystem;
9
+ import { LightSystem } from "./LightSystem.js";
40
10
  //# sourceMappingURL=LightSystem3.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LightSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/LightSystem3.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;GAYG;AACH;IAgBI;;;OAGG;IACH,qDAUC;IADG,kDAAsC;IAG1C,2CAIC;IAED,4CAIC;IAED;;;;OAIG;IACH,gBAJW,KAAK,aACL,SAAS,UACT,MAAM,QAqEhB;IAED;;;;OAIG;IACH,kBAJW,KAAK,aACL,SAAS,UACT,MAAM,QAIhB;;CAoBJ;uBApKsB,kBAAkB;0BACf,+BAA+B;sBAEnC,gCAAgC"}
1
+ {"version":3,"file":"LightSystem3.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/LightSystem3.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,8CAAwC;4BATZ,kBAAkB"}
@@ -1,211 +1,10 @@
1
- import { assert } from "../../core/assert.js";
2
- import { SignalBinding } from "../../core/events/signal/SignalBinding.js";
3
- import { DirectionalLight } from "../../shade/renderer/light/model/DirectionalLight.js";
4
- import { PointLight } from "../../shade/renderer/light/model/PointLight.js";
5
- import { SpotLight } from "../../shade/renderer/light/model/SpotLight.js";
6
- import { System } from "../ecs/System.js";
7
- import { Transform } from "../ecs/transform/Transform.js";
8
- import { t64_copy_from_transform } from "../ecs/transform/t64_copy_from_transform.js";
9
- import { Light } from "../graphics/ecs/light/Light.js";
10
- import { LightType } from "../graphics/ecs/light/LightType.js";
1
+ import { LightSystem } from "./LightSystem.js";
11
2
 
12
3
  /**
13
- * Mirrors light entities into Shade's scene.
4
+ * @deprecated Renamed to {@link LightSystem}. 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.
14
6
  *
15
- * The same shape as {@link MeshSystem3} and for the same reason: the ECS says what exists and where,
16
- * and this keeps the renderer's own objects in step. A Shade light **is** a `Node3D`, so `Scene.add`
17
- * routes it into the light collection on its own and placement is the same transform copy meshes
18
- * get — which for a directional light is also what aims it, since the engine's convention is that a
19
- * light shines along its forward.
20
- *
21
- * **Ambient lights are deliberately not carried over.** Shade lights indirect from the environment
22
- * by default, and that environment is the ambient term — a separate flat ambient light would be
23
- * double-counting it. An entity asking for one is served better by the environment it already has.
24
- */
25
- export class LightSystem3 extends System {
26
- /**
27
- * @type {GraphicsEngine3}
28
- */
29
- #graphics;
30
-
31
- /**
32
- * @type {Scene}
33
- */
34
- #scene;
35
-
36
- /**
37
- * @type {Map<number, {light: Light, bindings: SignalBinding[]}>}
38
- */
39
- #entries = new Map();
40
-
41
- /**
42
- * @param {GraphicsEngine3} graphics
43
- * @param {Scene} scene
44
- */
45
- constructor(graphics, scene) {
46
- super();
47
-
48
- assert.defined(graphics, 'graphics');
49
- assert.equal(scene.isScene, true, 'scene.isScene !== true');
50
-
51
- this.#graphics = graphics;
52
- this.#scene = scene;
53
-
54
- this.dependencies = [Light, Transform];
55
- }
56
-
57
- async startup(entityManager) {
58
- this.entityManager = entityManager;
59
-
60
- this.#graphics.set_scene(this.#scene);
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
- * @param {Light} component
71
- * @param {Transform} transform
72
- * @param {number} entity
73
- */
74
- link(component, transform, entity) {
75
- const light = make_shade_light(component.type.getValue());
76
-
77
- if (light === null) {
78
- // ambient, or a type Shade has no object for — see the class note
79
- return;
80
- }
81
-
82
- apply_light_properties(light, component);
83
-
84
- t64_copy_from_transform(light.transform_local, transform);
85
- light.updateMatrices();
86
-
87
- this.#scene.add(light);
88
-
89
- const entry = { light, bindings: [] };
90
-
91
- this.#entries.set(entity, entry);
92
-
93
- /*
94
- Adding and removing a light invalidates the collection on its own, but **changing one in
95
- place does not** — the GPU light table is rebuilt only when the collection's version moves,
96
- so a light that is recoloured, re-aimed or dimmed keeps rendering with the values it was
97
- uploaded with. `needsUpdate` is what says otherwise, and both paths below go through it.
98
-
99
- Worth knowing because it is invisible from the CPU side: the light object holds the new
100
- value, everything reads back correctly, and only the picture is stale.
101
- */
102
- const place = () => {
103
- t64_copy_from_transform(light.transform_local, transform);
104
- light.updateMatrices();
105
-
106
- this.#scene.lights.needsUpdate = true;
107
- };
108
-
109
- const refresh = () => {
110
- apply_light_properties(light, component);
111
-
112
- this.#scene.lights.needsUpdate = true;
113
- };
114
-
115
- for (const component_value of [transform.position, transform.rotation, transform.scale]) {
116
- const binding = new SignalBinding(component_value.onChanged, place);
117
-
118
- binding.link();
119
-
120
- entry.bindings.push(binding);
121
- }
122
-
123
- // A light's properties are gameplay-driven — a torch guttering, a spell charging, a
124
- // searchlight narrowing — so they are followed rather than sampled once at spawn.
125
- const observed_properties = [
126
- component.color,
127
- component.intensity,
128
- component.castShadow,
129
- component.angle,
130
- component.penumbra,
131
- component.distance
132
- ];
133
-
134
- for (const observed of observed_properties) {
135
- const binding = new SignalBinding(observed.onChanged, refresh);
136
-
137
- binding.link();
138
-
139
- entry.bindings.push(binding);
140
- }
141
- }
142
-
143
- /**
144
- * @param {Light} component
145
- * @param {Transform} transform
146
- * @param {number} entity
147
- */
148
- unlink(component, transform, entity) {
149
- this.#drop(entity);
150
- }
151
-
152
- /**
153
- * @param {number} entity
154
- */
155
- #drop(entity) {
156
- const entry = this.#entries.get(entity);
157
-
158
- if (entry === undefined) {
159
- return;
160
- }
161
-
162
- for (let i = 0; i < entry.bindings.length; i++) {
163
- entry.bindings[i].unlink();
164
- }
165
-
166
- this.#scene.remove(entry.light);
167
-
168
- this.#entries.delete(entity);
169
- }
170
- }
171
-
172
- /**
173
- * @param {LightType} type
174
- * @returns {Light|null} null when Shade has no object for it
7
+ * Kept as a re-export rather than removed: this is a library, and an import path is as much a
8
+ * published interface as a class name.
175
9
  */
176
- function make_shade_light(type) {
177
- switch (type) {
178
- case LightType.DIRECTION:
179
- return new DirectionalLight();
180
- case LightType.SPOT:
181
- return new SpotLight();
182
- case LightType.POINT:
183
- return new PointLight();
184
- default:
185
- // AMBIENT: the environment is the ambient term
186
- return null;
187
- }
188
- }
189
-
190
- /**
191
- * Copy what the component says onto the light Shade will render.
192
- *
193
- * `maxShadowDistance` has no counterpart here on purpose: it caps the frustum the legacy renderer
194
- * fits a cascade against, and Shade fits its own shadows.
195
- *
196
- * @param {Light} light Shade's
197
- * @param {Light} component meep's
198
- */
199
- function apply_light_properties(light, component) {
200
- light.color.copy(component.color);
201
- light.intensity = component.intensity.getValue();
202
- light.casts_shadow = component.castShadow.getValue();
203
-
204
- if (light.isSpotLight === true) {
205
- light.angle = component.angle.getValue();
206
- light.penumbra = component.penumbra.getValue();
207
- light.distance = component.distance.getValue();
208
- } else if (light.isPointLight === true) {
209
- light.distance = component.distance.getValue();
210
- }
211
- }
10
+ export const LightSystem3 = LightSystem;
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Puts entities into Shade's scene and keeps them where the ECS says they are.
3
+ *
4
+ * **It owns the scene and tells the facade to draw it**, rather than the facade handing a graph out
5
+ * for anyone to write into — that coupling is what §2.1 retires along with `GraphicsEngine.scene`.
6
+ *
7
+ * Placement is a `Transform` copied into `Node3D.transform_local`, through
8
+ * {@link t64_copy_from_transform} because the node's transform is a `Transform64` since S2 and the
9
+ * two types stay deliberately distinct. `transform_global` is **derived** — `updateMatrices`
10
+ * recomputes it from the local transform and the parent chain — so writing it directly would be
11
+ * undone by the next refresh, and the entity is placed through the local one.
12
+ *
13
+ * What makes this affordable is S1: the scene database takes row-level updates, so moving one
14
+ * entity writes one row. Nothing here rebuilds anything.
15
+ *
16
+ * **It also hands each instance to the GPU's animation manager** ({@link update}), because it is
17
+ * what builds instances and therefore the only thing that knows when one exists. Driving those
18
+ * clips is not its business — that is the animation systems' — but a clip nothing has registered
19
+ * cannot be driven by anyone.
20
+ */
21
+ export class MeshSystem extends System<any> {
22
+ /**
23
+ * @param {GraphicsEngine} graphics
24
+ * @param {Scene} scene
25
+ * @param {function(string): Promise<SceneBundle>} load
26
+ */
27
+ constructor(graphics: GraphicsEngine, scene: Scene, load: (arg0: string) => Promise<SceneBundle>);
28
+ dependencies: (typeof Transform | typeof SGMesh)[];
29
+ /**
30
+ * @returns {Scene}
31
+ */
32
+ get scene(): Scene;
33
+ /**
34
+ * Visit every node of an entity's model that carries geometry.
35
+ *
36
+ * The nodes are what the scene database keys on, so anything that has to say something about a
37
+ * particular entity's meshes — which rows they occupy, which of them the visibility buffer will
38
+ * name — starts here. A grouping node is skipped, because it has no geometry and therefore no
39
+ * row of its own.
40
+ *
41
+ * @param {number} entity
42
+ * @param {function(SGMesh): void} visitor
43
+ * @returns {boolean} `false` when the entity has nothing in the scene — never seen, or still
44
+ * loading, and neither is an error
45
+ */
46
+ traverse_meshes(entity: number, visitor: (arg0: SGMesh) => void): boolean;
47
+ /**
48
+ * The private copy of the model an entity is showing — its clips among other things, which is
49
+ * where their names and their durations come from.
50
+ *
51
+ * Handed out rather than copied because an animation driver has to know *which* instance it is
52
+ * bound to: a model swap builds a new one, and a driver still holding the old one would be
53
+ * driving nodes that left the scene. The object's identity is the only signal that says so.
54
+ *
55
+ * @param {number} entity
56
+ * @returns {SceneBundleInstance|null} `null` for an entity this system has never seen, or one
57
+ * whose model has not finished loading
58
+ */
59
+ instance_of(entity: number): SceneBundleInstance | null;
60
+ /**
61
+ * What the GPU's animation manager gave back for that instance — the skin and clip ids, in the
62
+ * instance's own order.
63
+ *
64
+ * Same reasoning as {@link instance_of} and a stronger version of it: these ids belong to one
65
+ * renderer, and a restart voids every one of them. The object is replaced when that happens, so
66
+ * a driver that compares it against what it bound against notices in the same frame.
67
+ *
68
+ * @param {number} entity
69
+ * @returns {InstanceAnimationRegistration|null} `null` while there is nothing registered — no
70
+ * model yet, no device yet, or a renderer restart that has not been drained
71
+ */
72
+ animation_of(entity: number): InstanceAnimationRegistration | null;
73
+ /**
74
+ * Where an entity's model is, in world space.
75
+ *
76
+ * This is what makes picking possible without a second copy of the geometry: Shade already keeps
77
+ * a world bounding box per mesh, refreshed as part of the `updateMatrices` that places it, so the
78
+ * answer is a walk over what the entity has in the scene and nothing is recomputed.
79
+ *
80
+ * @param {ArrayLike<number>|number[]|Float32Array} target aabb3, order `x0,y0,z0,x1,y1,z1`
81
+ * @param {number} entity
82
+ * @returns {boolean} `false` when the entity has nothing in the scene — it may be an entity this
83
+ * system has never seen, or one whose model is still loading, and neither is an error
84
+ */
85
+ compute_world_bounds(target: ArrayLike<number> | number[] | Float32Array, entity: number): boolean;
86
+ startup(entityManager: any): Promise<void>;
87
+ shutdown(entityManager: any): Promise<void>;
88
+ /**
89
+ * @param {SGMesh} model
90
+ * @param {Transform} transform
91
+ * @param {number} entity
92
+ */
93
+ link(model: SGMesh, transform: Transform, entity: number): void;
94
+ /**
95
+ * @param {SGMesh} model
96
+ * @param {Transform} transform
97
+ * @param {number} entity
98
+ */
99
+ unlink(model: SGMesh, transform: Transform, entity: number): void;
100
+ #private;
101
+ }
102
+ import { System } from "../ecs/System.js";
103
+ import { Transform } from "../ecs/transform/Transform.js";
104
+ import { SGMesh } from "../graphics/ecs/mesh-v2/aggregate/SGMesh.js";
105
+ import { Scene } from "../../shade/renderer/scene/Scene.js";
106
+ //# sourceMappingURL=MeshSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeshSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/MeshSystem.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAmFI;;;;OAIG;IACH,6CAHW,KAAK,eACI,MAAM,KAAG,oBAAoB,EAchD;IADG,mDAAuC;IAG3C;;OAEG;IACH,mBAEC;IAED;;;;;;;;;;;;OAYG;IACH,wBALW,MAAM,kBACG,MAAM,KAAG,IAAI,GACpB,OAAO,CAqBnB;IAoCD;;;;;;;;;;;OAWG;IACH,oBAJW,MAAM,GACJ,sBAAoB,IAAI,CAWpC;IAED;;;;;;;;;;;OAWG;IACH,qBAJW,MAAM,GACJ,gCAA8B,IAAI,CAW9C;IAED;;;;;;;;;;;OAWG;IACH,6BALW,UAAU,MAAM,CAAC,GAAC,MAAM,EAAE,GAAC,YAAY,UACvC,MAAM,GACJ,OAAO,CAuCnB;IAED,2CAIC;IAED,4CASC;IA6GD;;;;OAIG;IACH,YAJW,MAAM,aACN,SAAS,UACT,MAAM,QA2BhB;IAED;;;;OAIG;IACH,cAJW,MAAM,aACN,SAAS,UACT,MAAM,QAIhB;;CAgLJ;uBA7nBsB,kBAAkB;0BACf,+BAA+B;uBAIlC,6CAA6C;sBAX9C,qCAAqC"}