@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
@@ -1,249 +1,249 @@
1
- import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
2
- import {
3
- BLAS_VISIBILITY_SETTINGS_STRUCT,
4
- shader_blas_audit_visibility
5
- } from "./shader_blas_audit_visibility.js";
6
-
7
- /**
8
- * Can the traversal reach every triangle in the tree?
9
- *
10
- * The last unexercised link. Everything about the tree itself checks out — leaf boxes contain the
11
- * triangles the intersector fetches, internal nodes are their children's union, the root matches an
12
- * independently computed box, the instance's world AABB contains the geometry, and the stack does
13
- * not overflow. None of that runs `ray_query_blas_nearest`, and that function is what the picture
14
- * is made of.
15
- *
16
- * So: one ray per triangle, from the camera to that triangle's own centroid. The centroid is inside
17
- * the triangle, so the ray intersects it, so a hit is guaranteed — this triangle, or whatever
18
- * occludes it. A miss cannot happen geometrically. Every miss is the traversal declining to enter a
19
- * box the ray is inside.
20
- *
21
- * Run it from a view that the picture disagrees at and from one it agrees at; the difference
22
- * between the two counts is the fault, expressed as triangles rather than pixels.
23
- */
24
-
25
- /**
26
- * @param {GPUDevice} device
27
- * @param {GPUBuffer} buffer
28
- * @param {number} size
29
- * @returns {Promise<ArrayBuffer>}
30
- */
31
- async function read_back(device, buffer, size) {
32
- const staging = device.createBuffer({
33
- label: 'reachability/readback',
34
- size,
35
- usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
36
- });
37
-
38
- const encoder = device.createCommandEncoder({ label: 'reachability/readback' });
39
-
40
- encoder.copyBufferToBuffer(buffer, 0, staging, 0, size);
41
-
42
- device.queue.submit([encoder.finish()]);
43
-
44
- await staging.mapAsync(GPUMapMode.READ);
45
-
46
- const copy = staging.getMappedRange().slice(0);
47
-
48
- staging.unmap();
49
- staging.destroy();
50
-
51
- return copy;
52
- }
53
-
54
- /**
55
- * Apply the inverse of a mesh's transform to a world point — the same trip `chunk_ray_query_nearest`
56
- * makes to put a ray into geometry space.
57
- *
58
- * Done on the host with a full inverse rather than by transposing a rotation, because the transform
59
- * carries the asset's centimetre scale and a shortcut that assumes orthonormality would silently be
60
- * a hundred times wrong here.
61
- *
62
- * @param {ArrayLike<number>} m column-major 4x4
63
- * @param {number[]} point
64
- * @returns {number[]}
65
- */
66
- function inverse_transform_point(m, point) {
67
- const a = [
68
- [m[0], m[4], m[8], m[12]],
69
- [m[1], m[5], m[9], m[13]],
70
- [m[2], m[6], m[10], m[14]],
71
- [m[3], m[7], m[11], m[15]],
72
- ];
73
-
74
- const b = [point[0], point[1], point[2], 1];
75
-
76
- // Gaussian elimination on the 4x4 — small, and clearer than an inlined cofactor expansion
77
- for (let column = 0; column < 4; column++) {
78
- let pivot = column;
79
-
80
- for (let row = column + 1; row < 4; row++) {
81
- if (Math.abs(a[row][column]) > Math.abs(a[pivot][column])) {
82
- pivot = row;
83
- }
84
- }
85
-
86
- [a[column], a[pivot]] = [a[pivot], a[column]];
87
- [b[column], b[pivot]] = [b[pivot], b[column]];
88
-
89
- const divisor = a[column][column];
90
-
91
- for (let k = column; k < 4; k++) {
92
- a[column][k] /= divisor;
93
- }
94
-
95
- b[column] /= divisor;
96
-
97
- for (let row = 0; row < 4; row++) {
98
- if (row === column) {
99
- continue;
100
- }
101
-
102
- const factor = a[row][column];
103
-
104
- for (let k = column; k < 4; k++) {
105
- a[row][k] -= factor * a[column][k];
106
- }
107
-
108
- b[row] -= factor * b[column];
109
- }
110
- }
111
-
112
- const w = b[3] === 0 ? 1 : b[3];
113
-
114
- return [b[0] / w, b[1] / w, b[2] / w];
115
- }
116
-
117
- /**
118
- * @param {object} options
119
- * @param {Renderer} options.renderer
120
- * @param {PerspectiveCamera} options.camera whose position the rays start from
121
- * @param {Mesh} options.mesh the instance whose transform puts the camera into geometry space
122
- * @param {object} options.target refit target of the tree to audit
123
- * @param {number} options.geometry_index
124
- * @returns {Promise<object>}
125
- */
126
- export async function verify_traversal_reachability({
127
- renderer,
128
- camera,
129
- mesh,
130
- target,
131
- geometry_index,
132
- }) {
133
- const graphics = renderer.graphics;
134
- const device = graphics.device;
135
-
136
- const geometries = graphics.geometries;
137
- const blas = geometries.blas;
138
- const meshlets = geometries.meshlets;
139
-
140
- const { leaf_count, node_word_offset, leaf_nodes_offset } = target;
141
-
142
- const origin = inverse_transform_point(
143
- mesh.transform_global.matrix,
144
- [...camera.transform.position]
145
- );
146
-
147
- const t_bytes = leaf_count * Float32Array.BYTES_PER_ELEMENT;
148
-
149
- const out_t = device.createBuffer({
150
- label: 'reachability/t',
151
- size: t_bytes,
152
- usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
153
- });
154
-
155
- const out_triangle = device.createBuffer({
156
- label: 'reachability/triangle',
157
- size: t_bytes,
158
- usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
159
- });
160
-
161
- const out_expected_t = device.createBuffer({
162
- label: 'reachability/expected t',
163
- size: t_bytes,
164
- usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
165
- });
166
-
167
- const cmd = ShadeGPUCommandContext.create(graphics, 'audit/reachability');
168
-
169
- shader_blas_audit_visibility.dispatchLinear({
170
- encoder: cmd,
171
- element_count: leaf_count,
172
- bindings: {
173
- settings: cmd.allocateTransientValueBuffer(BLAS_VISIBILITY_SETTINGS_STRUCT, {
174
- origin,
175
- leaf_count,
176
- node_word_offset,
177
- leaf_nodes_offset,
178
- geometry_index,
179
- tmax: 1e12,
180
- }),
181
- leaf_nodes: blas.buffer_leaf_nodes,
182
- blas_lookup: blas.buffer_metadata,
183
- blas_data: blas.buffer_data,
184
- geometries: geometries.buffer_metadata,
185
- meshlet_metadata: meshlets.buffer_metadata,
186
- meshlet_data: meshlets.buffer_data,
187
- nodes: blas.buffer_data,
188
- out_t,
189
- out_triangle,
190
- out_expected_t,
191
- },
192
- });
193
-
194
- cmd.finish();
195
-
196
- await device.queue.onSubmittedWorkDone();
197
-
198
- const t = new Float32Array(await read_back(device, out_t, t_bytes));
199
- const expected = new Float32Array(await read_back(device, out_expected_t, t_bytes));
200
-
201
- out_t.destroy();
202
- out_triangle.destroy();
203
- out_expected_t.destroy();
204
-
205
- let missed = 0;
206
- let overshot = 0;
207
- let worst_overshoot = 0;
208
-
209
- for (let i = 0; i < leaf_count; i++) {
210
- if (!(t[i] >= 0)) {
211
- missed += 1;
212
-
213
- continue;
214
- }
215
-
216
- // 1e-3 of the aimed distance, which is far above float error on these magnitudes and far
217
- // below the gap between one surface and the next
218
- const overshoot = (t[i] - expected[i]) / Math.max(1e-9, expected[i]);
219
-
220
- if (overshoot > 1e-3) {
221
- overshot += 1;
222
-
223
- worst_overshoot = Math.max(worst_overshoot, overshoot);
224
- }
225
- }
226
-
227
- const lost = missed + overshot;
228
-
229
- const result = {
230
- leaf_count,
231
- missed,
232
- overshot,
233
- worst_overshoot: +worst_overshoot.toFixed(4),
234
- lost,
235
- lost_pct: +(lost / leaf_count * 100).toFixed(3),
236
- origin: origin.map(v => +v.toFixed(3)),
237
- verdict: lost === 0
238
- ? `pass — the traversal returns a surface at or before every one of ${leaf_count} `
239
- + `triangles it was aimed at`
240
- : `FAIL — ${lost} of ${leaf_count} (${(lost / leaf_count * 100).toFixed(2)}%) rays aimed `
241
- + `at a triangle came back with nothing (${missed}) or with something behind it `
242
- + `(${overshot}). Neither is geometrically possible, so the traversal is walking past `
243
- + `surfaces it was pointed at — which is the hole in the traced image.`,
244
- };
245
-
246
- console.log(result.verdict, result);
247
-
248
- return result;
249
- }
1
+ import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
2
+ import {
3
+ BLAS_VISIBILITY_SETTINGS_STRUCT,
4
+ shader_blas_audit_visibility
5
+ } from "./shader_blas_audit_visibility.js";
6
+
7
+ /**
8
+ * Can the traversal reach every triangle in the tree?
9
+ *
10
+ * The last unexercised link. Everything about the tree itself checks out — leaf boxes contain the
11
+ * triangles the intersector fetches, internal nodes are their children's union, the root matches an
12
+ * independently computed box, the instance's world AABB contains the geometry, and the stack does
13
+ * not overflow. None of that runs `ray_query_blas_nearest`, and that function is what the picture
14
+ * is made of.
15
+ *
16
+ * So: one ray per triangle, from the camera to that triangle's own centroid. The centroid is inside
17
+ * the triangle, so the ray intersects it, so a hit is guaranteed — this triangle, or whatever
18
+ * occludes it. A miss cannot happen geometrically. Every miss is the traversal declining to enter a
19
+ * box the ray is inside.
20
+ *
21
+ * Run it from a view that the picture disagrees at and from one it agrees at; the difference
22
+ * between the two counts is the fault, expressed as triangles rather than pixels.
23
+ */
24
+
25
+ /**
26
+ * @param {GPUDevice} device
27
+ * @param {GPUBuffer} buffer
28
+ * @param {number} size
29
+ * @returns {Promise<ArrayBuffer>}
30
+ */
31
+ async function read_back(device, buffer, size) {
32
+ const staging = device.createBuffer({
33
+ label: 'reachability/readback',
34
+ size,
35
+ usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
36
+ });
37
+
38
+ const encoder = device.createCommandEncoder({ label: 'reachability/readback' });
39
+
40
+ encoder.copyBufferToBuffer(buffer, 0, staging, 0, size);
41
+
42
+ device.queue.submit([encoder.finish()]);
43
+
44
+ await staging.mapAsync(GPUMapMode.READ);
45
+
46
+ const copy = staging.getMappedRange().slice(0);
47
+
48
+ staging.unmap();
49
+ staging.destroy();
50
+
51
+ return copy;
52
+ }
53
+
54
+ /**
55
+ * Apply the inverse of a mesh's transform to a world point — the same trip `chunk_ray_query_nearest`
56
+ * makes to put a ray into geometry space.
57
+ *
58
+ * Done on the host with a full inverse rather than by transposing a rotation, because the transform
59
+ * carries the asset's centimetre scale and a shortcut that assumes orthonormality would silently be
60
+ * a hundred times wrong here.
61
+ *
62
+ * @param {ArrayLike<number>} m column-major 4x4
63
+ * @param {number[]} point
64
+ * @returns {number[]}
65
+ */
66
+ function inverse_transform_point(m, point) {
67
+ const a = [
68
+ [m[0], m[4], m[8], m[12]],
69
+ [m[1], m[5], m[9], m[13]],
70
+ [m[2], m[6], m[10], m[14]],
71
+ [m[3], m[7], m[11], m[15]],
72
+ ];
73
+
74
+ const b = [point[0], point[1], point[2], 1];
75
+
76
+ // Gaussian elimination on the 4x4 — small, and clearer than an inlined cofactor expansion
77
+ for (let column = 0; column < 4; column++) {
78
+ let pivot = column;
79
+
80
+ for (let row = column + 1; row < 4; row++) {
81
+ if (Math.abs(a[row][column]) > Math.abs(a[pivot][column])) {
82
+ pivot = row;
83
+ }
84
+ }
85
+
86
+ [a[column], a[pivot]] = [a[pivot], a[column]];
87
+ [b[column], b[pivot]] = [b[pivot], b[column]];
88
+
89
+ const divisor = a[column][column];
90
+
91
+ for (let k = column; k < 4; k++) {
92
+ a[column][k] /= divisor;
93
+ }
94
+
95
+ b[column] /= divisor;
96
+
97
+ for (let row = 0; row < 4; row++) {
98
+ if (row === column) {
99
+ continue;
100
+ }
101
+
102
+ const factor = a[row][column];
103
+
104
+ for (let k = column; k < 4; k++) {
105
+ a[row][k] -= factor * a[column][k];
106
+ }
107
+
108
+ b[row] -= factor * b[column];
109
+ }
110
+ }
111
+
112
+ const w = b[3] === 0 ? 1 : b[3];
113
+
114
+ return [b[0] / w, b[1] / w, b[2] / w];
115
+ }
116
+
117
+ /**
118
+ * @param {object} options
119
+ * @param {Renderer} options.renderer
120
+ * @param {PerspectiveCamera} options.camera whose position the rays start from
121
+ * @param {Mesh} options.mesh the instance whose transform puts the camera into geometry space
122
+ * @param {object} options.target refit target of the tree to audit
123
+ * @param {number} options.geometry_index
124
+ * @returns {Promise<object>}
125
+ */
126
+ export async function verify_traversal_reachability({
127
+ renderer,
128
+ camera,
129
+ mesh,
130
+ target,
131
+ geometry_index,
132
+ }) {
133
+ const graphics = renderer.graphics;
134
+ const device = graphics.device;
135
+
136
+ const geometries = graphics.geometries;
137
+ const blas = geometries.blas;
138
+ const meshlets = geometries.meshlets;
139
+
140
+ const { leaf_count, node_word_offset, leaf_nodes_offset } = target;
141
+
142
+ const origin = inverse_transform_point(
143
+ mesh.transform_global.matrix,
144
+ [...camera.transform.position]
145
+ );
146
+
147
+ const t_bytes = leaf_count * Float32Array.BYTES_PER_ELEMENT;
148
+
149
+ const out_t = device.createBuffer({
150
+ label: 'reachability/t',
151
+ size: t_bytes,
152
+ usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
153
+ });
154
+
155
+ const out_triangle = device.createBuffer({
156
+ label: 'reachability/triangle',
157
+ size: t_bytes,
158
+ usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
159
+ });
160
+
161
+ const out_expected_t = device.createBuffer({
162
+ label: 'reachability/expected t',
163
+ size: t_bytes,
164
+ usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
165
+ });
166
+
167
+ const cmd = ShadeGPUCommandContext.create(graphics, 'audit/reachability');
168
+
169
+ shader_blas_audit_visibility.dispatchThreads({
170
+ encoder: cmd,
171
+ thread_count_x: leaf_count,
172
+ bindings: {
173
+ settings: cmd.allocateTransientValueBuffer(BLAS_VISIBILITY_SETTINGS_STRUCT, {
174
+ origin,
175
+ leaf_count,
176
+ node_word_offset,
177
+ leaf_nodes_offset,
178
+ geometry_index,
179
+ tmax: 1e12,
180
+ }),
181
+ leaf_nodes: blas.buffer_leaf_nodes,
182
+ blas_lookup: blas.buffer_metadata,
183
+ blas_data: blas.buffer_data,
184
+ geometries: geometries.buffer_metadata,
185
+ meshlet_metadata: meshlets.buffer_metadata,
186
+ meshlet_data: meshlets.buffer_data,
187
+ nodes: blas.buffer_data,
188
+ out_t,
189
+ out_triangle,
190
+ out_expected_t,
191
+ },
192
+ });
193
+
194
+ cmd.finish();
195
+
196
+ await device.queue.onSubmittedWorkDone();
197
+
198
+ const t = new Float32Array(await read_back(device, out_t, t_bytes));
199
+ const expected = new Float32Array(await read_back(device, out_expected_t, t_bytes));
200
+
201
+ out_t.destroy();
202
+ out_triangle.destroy();
203
+ out_expected_t.destroy();
204
+
205
+ let missed = 0;
206
+ let overshot = 0;
207
+ let worst_overshoot = 0;
208
+
209
+ for (let i = 0; i < leaf_count; i++) {
210
+ if (!(t[i] >= 0)) {
211
+ missed += 1;
212
+
213
+ continue;
214
+ }
215
+
216
+ // 1e-3 of the aimed distance, which is far above float error on these magnitudes and far
217
+ // below the gap between one surface and the next
218
+ const overshoot = (t[i] - expected[i]) / Math.max(1e-9, expected[i]);
219
+
220
+ if (overshoot > 1e-3) {
221
+ overshot += 1;
222
+
223
+ worst_overshoot = Math.max(worst_overshoot, overshoot);
224
+ }
225
+ }
226
+
227
+ const lost = missed + overshot;
228
+
229
+ const result = {
230
+ leaf_count,
231
+ missed,
232
+ overshot,
233
+ worst_overshoot: +worst_overshoot.toFixed(4),
234
+ lost,
235
+ lost_pct: +(lost / leaf_count * 100).toFixed(3),
236
+ origin: origin.map(v => +v.toFixed(3)),
237
+ verdict: lost === 0
238
+ ? `pass — the traversal returns a surface at or before every one of ${leaf_count} `
239
+ + `triangles it was aimed at`
240
+ : `FAIL — ${lost} of ${leaf_count} (${(lost / leaf_count * 100).toFixed(2)}%) rays aimed `
241
+ + `at a triangle came back with nothing (${missed}) or with something behind it `
242
+ + `(${overshot}). Neither is geometrically possible, so the traversal is walking past `
243
+ + `surfaces it was pointed at — which is the hole in the traced image.`,
244
+ };
245
+
246
+ console.log(result.verdict, result);
247
+
248
+ return result;
249
+ }
@@ -89,8 +89,15 @@ export class GraphicsContext {
89
89
  * @param {GPUBindingCommandsMixin} pass
90
90
  * @param {PipelineDescriptorBase} pipeline
91
91
  * @param {GPUBindingResource[][]} [bindings]
92
- */
93
- setPipelineBindings(pass: GPUBindingCommandsMixin, pipeline: PipelineDescriptorBase, bindings?: GPUBindingResource[][]): void;
92
+ * @param {{buffer: BinaryBuffer, offset: number, size: number}} [immediate] bytes to hand the
93
+ * pass through `setImmediates`, when the pipeline declares immediate data. Optional so
94
+ * that every caller predating immediates keeps working unchanged.
95
+ */
96
+ setPipelineBindings(pass: GPUBindingCommandsMixin, pipeline: PipelineDescriptorBase, bindings?: GPUBindingResource[][], immediate?: {
97
+ buffer: BinaryBuffer;
98
+ offset: number;
99
+ size: number;
100
+ }): void;
94
101
  /**
95
102
  *
96
103
  * @param {BufferDescriptor} buffer_descriptor
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicsContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/GraphicsContext.js"],"names":[],"mappings":"AAwBA;IAoJI,yBA8BC;IAjLD;;OAEG;IACH,YAFU,kBAAkB,CAEjB;IAEX;;OAEG;IACH,WAFU,kBAAkB,CAElB;IAOV;;OAEG;IACH,UAFU,iBAAiB,CAElB;IAET;;;OAGG;IACH,qDAOC;IAOD;;;OAGG;IACH,6CAEC;IAED;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,mBAFU,sBAAsB,CAEd;IAGlB;;OAEG;IACH,gBAFU,oBAAoB,CAEf;IAEf;;OAEG;IACH,UAFU,cAAc,CAEf;IAET;;;;OAIG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,aAFU,gBAAgB,CAEd;IAQZ;;;OAGG;IACH,uBAFU,kBAAkB,CAEN;IAEtB;;;;OAIG;IACH,yBAFU,wBAAwB,CAEV;IAExB;;;OAGG;IACH,0BAFU,yBAAyB,CAEV;IAEzB;;;OAGG;IACH,oBAFU,mBAAmB,CAEV;IAUnB;;;OAGG;IACH,8BAEC;IAED,uBAMC;IAED;;;OAGG;IACH,wBAEC;IAkCD;;;;;OAKG;IACH,gGAFW,oBAAoB,EAAE,QAwDhC;IAED;;;;OAIG;IACH,mDAFa,gBAAgB,CAI5B;IAED;;OAEG;IACH,+BAcC;IAED,4BAEC;IAED,eAmBC;IAED,gBAcC;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;;CAN1C;mCAlUkC,kCAAkC;mCAGlC,kCAAkC;kCADnC,wBAAwB;2CAEf,mDAAmD;oCAH1D,2CAA2C;sCAXzC,6CAA6C;sCAC7C,6CAA6C;uCAF5C,8CAA8C;qCAIhD,0CAA0C;+BAchD,6BAA6B;sCACtB,4CAA4C;iCAbjD,+BAA+B;mCAC7B,gCAAgC;yCAC1B,sCAAsC;0CAErC,uCAAuC;oCAO7C,kCAAkC;iCARtB,8BAA8B"}
1
+ {"version":3,"file":"GraphicsContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/GraphicsContext.js"],"names":[],"mappings":"AAwBA;IAoJI,yBA8BC;IAjLD;;OAEG;IACH,YAFU,kBAAkB,CAEjB;IAEX;;OAEG;IACH,WAFU,kBAAkB,CAElB;IAOV;;OAEG;IACH,UAFU,iBAAiB,CAElB;IAET;;;OAGG;IACH,qDAOC;IAOD;;;OAGG;IACH,6CAEC;IAED;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,mBAFU,sBAAsB,CAEd;IAGlB;;OAEG;IACH,gBAFU,oBAAoB,CAEf;IAEf;;OAEG;IACH,UAFU,cAAc,CAEf;IAET;;;;OAIG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,aAFU,gBAAgB,CAEd;IAQZ;;;OAGG;IACH,uBAFU,kBAAkB,CAEN;IAEtB;;;;OAIG;IACH,yBAFU,wBAAwB,CAEV;IAExB;;;OAGG;IACH,0BAFU,yBAAyB,CAEV;IAEzB;;;OAGG;IACH,oBAFU,mBAAmB,CAEV;IAUnB;;;OAGG;IACH,8BAEC;IAED,uBAMC;IAED;;;OAGG;IACH,wBAEC;IAkCD;;;;;;;;OAQG;IACH,gGALW,oBAAoB,EAAE,cACtB;QAAC,MAAM,eAAe;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,QAmE9D;IAED;;;;OAIG;IACH,mDAFa,gBAAgB,CAI5B;IAED;;OAEG;IACH,+BAcC;IAED,4BAEC;IAED,eAmBC;IAED,gBAcC;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;;CAN1C;mCA9UkC,kCAAkC;mCAGlC,kCAAkC;kCADnC,wBAAwB;2CAEf,mDAAmD;oCAH1D,2CAA2C;sCAXzC,6CAA6C;sCAC7C,6CAA6C;uCAF5C,8CAA8C;qCAIhD,0CAA0C;+BAchD,6BAA6B;sCACtB,4CAA4C;iCAbjD,+BAA+B;mCAC7B,gCAAgC;yCAC1B,sCAAsC;0CAErC,uCAAuC;oCAO7C,kCAAkC;iCARtB,8BAA8B"}
@@ -207,14 +207,26 @@ export class GraphicsContext {
207
207
  * @param {GPUBindingCommandsMixin} pass
208
208
  * @param {PipelineDescriptorBase} pipeline
209
209
  * @param {GPUBindingResource[][]} [bindings]
210
+ * @param {{buffer: BinaryBuffer, offset: number, size: number}} [immediate] bytes to hand the
211
+ * pass through `setImmediates`, when the pipeline declares immediate data. Optional so
212
+ * that every caller predating immediates keeps working unchanged.
210
213
  */
211
214
  setPipelineBindings(
212
215
  pass,
213
216
  pipeline,
214
- bindings
217
+ bindings,
218
+ immediate
215
219
  ) {
216
220
  assert.isArray(bindings, 'bindings');
217
221
 
222
+ if (immediate !== undefined) {
223
+ // `raw_bytes` is read here rather than cached by the caller: BinaryBuffer rebinds it
224
+ // when the backing store grows, so a reference taken earlier can be stale. It is also a
225
+ // Uint8Array, for which `setImmediates` counts offset and size in elements — and its
226
+ // elements are bytes, so the range passes through unchanged.
227
+ pass.setImmediates(0, immediate.buffer.raw_bytes, immediate.offset, immediate.size);
228
+ }
229
+
218
230
  const bind_group_descriptors = pipeline.layout.bindGroupLayouts;
219
231
 
220
232
  const bind_group_count = bindings.length;
@@ -23,7 +23,7 @@ export class StaticGraphicsEngineAssets {
23
23
  // Spatio-Temporal Blue Noise (NVIDIA 2020-ish)
24
24
 
25
25
  // vendored alongside the engine rather than at the repo root, so `src/shade` stays one
26
- // directory that can be diffed against upstream (MEEP3 §4.1)
26
+ // directory that can be diffed against upstream (../../../SHADE_ORIGIN.md)
27
27
  const asset_url = (name) => new URL(`../assets/textures/${name}`, import.meta.url).href;
28
28
 
29
29
  const [
@@ -5,7 +5,8 @@
5
5
  * Gameplay poses — a socket, an effect anchor, the muzzle a projectile leaves from — are a **pure
6
6
  * function of (clip set, time, weights)**, evaluated on demand at query time. They are never read
7
7
  * back from the GPU: readback is asynchronous and a frame late, which would make a projectile's
8
- * origin depend on frame pacing and poison determinism and replay (`EXECUTION.md` I-4).
8
+ * origin depend on frame pacing and poison determinism and replay no GPU readback on a
9
+ * gameplay-affecting path.
9
10
  */
10
11
  export class PosePlayback {
11
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PosePlayback.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/animation/pose/PosePlayback.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH;IAwBI;;;;;OAKG;IACH,4CAJW,MAAM,UACN,MAAM,GACJ,YAAY,CAcxB;IAzCD;;OAEG;IACH,yBAAY;IAEZ;;;;OAIG;IACH,MAFU,MAAM,CAEP;IAET;;;;;;;;OAQG;IACH,QAFU,MAAM,CAEL;CAqBd"}
1
+ {"version":3,"file":"PosePlayback.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/animation/pose/PosePlayback.js"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH;IAwBI;;;;;OAKG;IACH,4CAJW,MAAM,UACN,MAAM,GACJ,YAAY,CAcxB;IAzCD;;OAEG;IACH,yBAAY;IAEZ;;;;OAIG;IACH,MAFU,MAAM,CAEP;IAET;;;;;;;;OAQG;IACH,QAFU,MAAM,CAEL;CAqBd"}
@@ -7,7 +7,8 @@ import { assert } from "../../../../core/assert.js";
7
7
  * Gameplay poses — a socket, an effect anchor, the muzzle a projectile leaves from — are a **pure
8
8
  * function of (clip set, time, weights)**, evaluated on demand at query time. They are never read
9
9
  * back from the GPU: readback is asynchronous and a frame late, which would make a projectile's
10
- * origin depend on frame pacing and poison determinism and replay (`EXECUTION.md` I-4).
10
+ * origin depend on frame pacing and poison determinism and replay no GPU readback on a
11
+ * gameplay-affecting path.
11
12
  */
12
13
  export class PosePlayback {
13
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shader_animation_apply.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/shader_animation_apply.js"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,gCAAiC;AAoFjC;;;;;;;;;;;;;;;;;;GAkBG;AACH,mDAKG;8BA3H2B,4BAA4B"}
1
+ {"version":3,"file":"shader_animation_apply.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/shader_animation_apply.js"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,gCAAiC;AAoFjC;;;;;;;;;;;;;;;;;;GAkBG;AACH,mDAIG;8BA1H2B,4BAA4B"}