@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,69 @@
1
+ import { CodeChunk } from "../../compiler/CodeChunk.js";
2
+ import { ATMOSPHERE_RADII_DECLARATION } from "./ATMOSPHERE_RADII_DECLARATION.js";
3
+
4
+ /**
5
+ * How far a ray inside the atmosphere may be marched, and whether it ends on the surface.
6
+ *
7
+ * The ground and the atmosphere shell are concentric on the planet and the ray is shared, so
8
+ * one quadratic setup serves both intersections — only the radius term differs. Calling a
9
+ * general sphere-intersection routine twice instead recomputes the ray-origin offset and all
10
+ * three dot products for the second sphere, and re-derives a leading coefficient that is 1
11
+ * for a unit direction.
12
+ *
13
+ * `origin_rel` is relative to the planet centre and assumed to be inside the atmosphere and
14
+ * at or above the surface, which is what makes the shell's far root the exit point.
15
+ * `ray_direction` must be normalised.
16
+ *
17
+ * `ground_distance` is negative when the ray never meets the surface, which includes looking
18
+ * up from above it: both roots are behind the origin there.
19
+ *
20
+ * @type {CodeChunk}
21
+ */
22
+ export const chunk_atmosphere_ray_bounds = CodeChunk.from(
23
+ //language=WGSL
24
+ `
25
+ struct AtmosphereRayBounds {
26
+ // as far as a march may go: the surface when the ray meets it, the shell otherwise
27
+ t_max: f32,
28
+ // distance to the surface, negative when there is no hit ahead
29
+ ground_distance: f32,
30
+ hits_ground: bool,
31
+ }
32
+
33
+ fn atmosphere_ray_bounds(
34
+ origin_rel: vec3<f32>,
35
+ ray_direction: vec3<f32>
36
+ ) -> AtmosphereRayBounds {
37
+
38
+ // ray_direction is a unit vector, so the leading coefficient is 1 and the factors of two
39
+ // divide out of both roots
40
+ let b = dot(origin_rel, ray_direction);
41
+ let r2 = dot(origin_rel, origin_rel);
42
+ let b2 = b * b;
43
+
44
+ // inside the shell, so its constant term is negative, the discriminant is positive, and
45
+ // the far root is where the ray leaves
46
+ let atmosphere_distance = -b + sqrt(max(b2 - (r2 - ATMOSPHERE_TOP_RADIUS_SQUARED), 0.0));
47
+
48
+ // the ground is the near root, and only when that root is ahead of us
49
+ let ground_discriminant = b2 - (r2 - ATMOSPHERE_GROUND_RADIUS_SQUARED);
50
+ let ground_distance = select(
51
+ -1.0,
52
+ -b - sqrt(max(ground_discriminant, 0.0)),
53
+ ground_discriminant >= 0.0
54
+ );
55
+
56
+ let hits_ground = ground_distance > 0.0;
57
+
58
+ var result: AtmosphereRayBounds;
59
+
60
+ result.t_max = select(atmosphere_distance, ground_distance, hits_ground);
61
+ result.ground_distance = ground_distance;
62
+ result.hits_ground = hits_ground;
63
+
64
+ return result;
65
+ }
66
+ `, [
67
+ ATMOSPHERE_RADII_DECLARATION,
68
+ ]
69
+ );
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Whether `inner` lies entirely within `outer`. Closed on both sides: touching faces count as
3
+ * contained, matching {@link chunk_aabb3_intersects_point}'s treatment of the boundary.
4
+ *
5
+ * @type {CodeChunk}
6
+ */
7
+ export const chunk_aabb3_contains_aabb3: CodeChunk;
8
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
9
+ //# sourceMappingURL=chunk_aabb3_contains_aabb3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_aabb3_contains_aabb3.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,yCAFU,SAAS,CAcZ;0BArBmB,gCAAgC"}
@@ -0,0 +1,22 @@
1
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
+ import { AABB3_STRUCT } from "./AABB3_STRUCT.js";
3
+
4
+ /**
5
+ * Whether `inner` lies entirely within `outer`. Closed on both sides: touching faces count as
6
+ * contained, matching {@link chunk_aabb3_intersects_point}'s treatment of the boundary.
7
+ *
8
+ * @type {CodeChunk}
9
+ */
10
+ export const chunk_aabb3_contains_aabb3 = CodeChunk.from(
11
+ //language=WGSL
12
+ `
13
+ fn aabb3_contains_aabb3(
14
+ outer: ${AABB3_STRUCT.wgsl_ref},
15
+ inner: ${AABB3_STRUCT.wgsl_ref}
16
+ ) -> bool{
17
+
18
+ return all(inner.min >= outer.min) && all(inner.max <= outer.max);
19
+
20
+ }`, [
21
+ AABB3_STRUCT.declaration_chunk
22
+ ]);
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Bounds of 8 corner points after a point transform.
3
+ *
4
+ * The corners are transformed and *then* bounded, so the result is the tight bound of the
5
+ * transformed hull rather than the transform of a bound — no inflation under rotation. That
6
+ * distinction is the reason this exists instead of transforming an existing AABB3.
7
+ *
8
+ * Written out rather than looped: the corner array stays register-resident this way, and a
9
+ * dynamically indexed local array is the classic route to a scratch-memory spill in a kernel that
10
+ * runs once per froxel.
11
+ *
12
+ * @type {CodeChunk}
13
+ */
14
+ export const chunk_aabb3_from_transformed_corners: CodeChunk;
15
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
16
+ //# sourceMappingURL=chunk_aabb3_from_transformed_corners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_aabb3_from_transformed_corners.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,mDAFU,SAAS,CA0BZ;0BAxCmB,gCAAgC"}
@@ -0,0 +1,41 @@
1
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
+ import { AABB3_STRUCT } from "./AABB3_STRUCT.js";
3
+
4
+ /**
5
+ * Bounds of 8 corner points after a point transform.
6
+ *
7
+ * The corners are transformed and *then* bounded, so the result is the tight bound of the
8
+ * transformed hull rather than the transform of a bound — no inflation under rotation. That
9
+ * distinction is the reason this exists instead of transforming an existing AABB3.
10
+ *
11
+ * Written out rather than looped: the corner array stays register-resident this way, and a
12
+ * dynamically indexed local array is the classic route to a scratch-memory spill in a kernel that
13
+ * runs once per froxel.
14
+ *
15
+ * @type {CodeChunk}
16
+ */
17
+ export const chunk_aabb3_from_transformed_corners = CodeChunk.from(
18
+ //language=WGSL
19
+ `
20
+ fn aabb3_from_transformed_corners(
21
+ corners: array<vec3<f32>, 8>,
22
+ transform: mat4x4<f32>
23
+ ) -> ${AABB3_STRUCT.wgsl_ref}{
24
+
25
+ let p0 = (transform * vec4<f32>(corners[0], 1.0)).xyz;
26
+ let p1 = (transform * vec4<f32>(corners[1], 1.0)).xyz;
27
+ let p2 = (transform * vec4<f32>(corners[2], 1.0)).xyz;
28
+ let p3 = (transform * vec4<f32>(corners[3], 1.0)).xyz;
29
+ let p4 = (transform * vec4<f32>(corners[4], 1.0)).xyz;
30
+ let p5 = (transform * vec4<f32>(corners[5], 1.0)).xyz;
31
+ let p6 = (transform * vec4<f32>(corners[6], 1.0)).xyz;
32
+ let p7 = (transform * vec4<f32>(corners[7], 1.0)).xyz;
33
+
34
+ let lo = min(min(min(p0, p1), min(p2, p3)), min(min(p4, p5), min(p6, p7)));
35
+ let hi = max(max(max(p0, p1), max(p2, p3)), max(max(p4, p5), max(p6, p7)));
36
+
37
+ return ${AABB3_STRUCT.make({ min: "lo", max: "hi" })};
38
+
39
+ }`, [
40
+ AABB3_STRUCT.declaration_chunk
41
+ ]);
@@ -1,3 +1,14 @@
1
+ /**
2
+ * Transforms a frustum's 6 planes by a point transform, deriving the plane matrix from it.
3
+ *
4
+ * The derivation costs a generic 4x4 inverse. When the caller already holds the inverse of the
5
+ * transform it is passing — which is the usual shape, since object structs tend to carry both
6
+ * directions — `transpose(inverse(M)) == transpose(other_direction)` and
7
+ * {@link chunk_frustum_transform_plane_matrix} should be called directly with that transpose
8
+ * instead. Nothing is approximated by doing so; it removes a round-trip.
9
+ *
10
+ * @type {CodeChunk}
11
+ */
1
12
  export const chunk_frustum_transform_m4: CodeChunk;
2
13
  import { CodeChunk } from "../../../compiler/CodeChunk.js";
3
14
  //# sourceMappingURL=chunk_frustum_transform_m4.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_frustum_transform_m4.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.js"],"names":[],"mappings":"AAIA,mDA2BC;0BA/ByB,gCAAgC"}
1
+ {"version":3,"file":"chunk_frustum_transform_m4.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.js"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,yCAFU,SAAS,CAelB;0BA5ByB,gCAAgC"}
@@ -1,33 +1,29 @@
1
1
  import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
2
  import { chunk_mat4_inverse } from "../mat4/chunk_mat4_inverse.js";
3
- import { chunk_plane_normalize } from "../plane/chunk_plane_normalize.js";
3
+ import { chunk_frustum_transform_plane_matrix } from "./chunk_frustum_transform_plane_matrix.js";
4
4
 
5
+ /**
6
+ * Transforms a frustum's 6 planes by a point transform, deriving the plane matrix from it.
7
+ *
8
+ * The derivation costs a generic 4x4 inverse. When the caller already holds the inverse of the
9
+ * transform it is passing — which is the usual shape, since object structs tend to carry both
10
+ * directions — `transpose(inverse(M)) == transpose(other_direction)` and
11
+ * {@link chunk_frustum_transform_plane_matrix} should be called directly with that transpose
12
+ * instead. Nothing is approximated by doing so; it removes a round-trip.
13
+ *
14
+ * @type {CodeChunk}
15
+ */
5
16
  export const chunk_frustum_transform_m4 = CodeChunk.from(
6
17
  //language=WGSL
7
18
  `
8
19
  fn frustum_transform_m4(frustum: array<vec4<f32>, 6>, transform: mat4x4<f32>) -> array<vec4<f32>, 6> {
9
- var result: array<vec4<f32>, 6>;
10
-
11
- // 1. Compute the "Normal Matrix"
12
- // The mathematical rule for transforming planes (or normals) is:
20
+ // The mathematical rule for transforming planes is
13
21
  // NewPlane = Transpose(Inverse(Transform)) * OldPlane
14
22
  // This automatically handles rotation, translation, AND non-uniform scaling correctly.
15
- let normal_matrix = transpose(mat4_inverse(transform));
16
-
17
- for (var i = 0u; i < 6u; i++) {
18
- // 2. Transform the plane equation
19
- // We treat the plane (a,b,c,d) as a 4D vector.
20
- var p = normal_matrix * frustum[i];
21
-
22
- // 3. Re-normalize the plane
23
- result[i] = plane_normalize(p);
24
- }
25
-
26
- return result;
23
+ return frustum_transform_plane_matrix(frustum, transpose(mat4_inverse(transform)));
27
24
  }
28
25
  `, [
29
26
  chunk_mat4_inverse,
30
- chunk_plane_normalize,
27
+ chunk_frustum_transform_plane_matrix,
31
28
  ]
32
29
  )
33
-
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Transforms a frustum's 6 planes by an already-built plane matrix.
3
+ *
4
+ * A plane `p` satisfies `dot(p, x) == 0` for points `x` on it, so if points move by `x' = T x` the
5
+ * plane must move by `p' = inverse(transpose(T)) p` to describe the same surface. `T` and its
6
+ * transpose-inverse are therefore *different* matrices, and this function takes the second one
7
+ * ready-made — {@link chunk_frustum_transform_m4} is the wrapper that derives it from the first.
8
+ *
9
+ * The matrix is a full 4x4, not a 3x3 basis: its last row carries the translation, and that is
10
+ * exactly what produces the transformed plane's distance term. Rotating the normals alone would
11
+ * leave every plane at its original offset from the origin.
12
+ *
13
+ * Callers that already hold the transpose-inverse should use this directly. The common case is
14
+ * mapping a frustum into an object's local space: points go world -> local through
15
+ * `inverse(transform)`, so planes go through `transpose(inverse(inverse(transform)))`, which is just
16
+ * `transpose(transform)` — no inverse to compute at all when the object's forward transform is at
17
+ * hand.
18
+ *
19
+ * @type {CodeChunk}
20
+ */
21
+ export const chunk_frustum_transform_plane_matrix: CodeChunk;
22
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
23
+ //# sourceMappingURL=chunk_frustum_transform_plane_matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_frustum_transform_plane_matrix.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,mDAFU,SAAS,CAsBlB;0BA3CyB,gCAAgC"}
@@ -0,0 +1,44 @@
1
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
+ import { chunk_plane_normalize } from "../plane/chunk_plane_normalize.js";
3
+
4
+ /**
5
+ * Transforms a frustum's 6 planes by an already-built plane matrix.
6
+ *
7
+ * A plane `p` satisfies `dot(p, x) == 0` for points `x` on it, so if points move by `x' = T x` the
8
+ * plane must move by `p' = inverse(transpose(T)) p` to describe the same surface. `T` and its
9
+ * transpose-inverse are therefore *different* matrices, and this function takes the second one
10
+ * ready-made — {@link chunk_frustum_transform_m4} is the wrapper that derives it from the first.
11
+ *
12
+ * The matrix is a full 4x4, not a 3x3 basis: its last row carries the translation, and that is
13
+ * exactly what produces the transformed plane's distance term. Rotating the normals alone would
14
+ * leave every plane at its original offset from the origin.
15
+ *
16
+ * Callers that already hold the transpose-inverse should use this directly. The common case is
17
+ * mapping a frustum into an object's local space: points go world -> local through
18
+ * `inverse(transform)`, so planes go through `transpose(inverse(inverse(transform)))`, which is just
19
+ * `transpose(transform)` — no inverse to compute at all when the object's forward transform is at
20
+ * hand.
21
+ *
22
+ * @type {CodeChunk}
23
+ */
24
+ export const chunk_frustum_transform_plane_matrix = CodeChunk.from(
25
+ //language=WGSL
26
+ `
27
+ fn frustum_transform_plane_matrix(
28
+ frustum: array<vec4<f32>, 6>,
29
+ plane_matrix: mat4x4<f32>
30
+ ) -> array<vec4<f32>, 6> {
31
+ var result: array<vec4<f32>, 6>;
32
+
33
+ for (var i = 0u; i < 6u; i++) {
34
+ // Re-normalize: the plane's normal picks up the transform's scale, and consumers that
35
+ // interpolate plane pairs (frustum_sample_point, frustum_slice) weight by normal length.
36
+ result[i] = plane_normalize(plane_matrix * frustum[i]);
37
+ }
38
+
39
+ return result;
40
+ }
41
+ `, [
42
+ chunk_plane_normalize,
43
+ ]
44
+ )
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_uv_octahedral_unit_decode.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,8CAFU,SAAS,CAmBb;0BA5BoB,gCAAgC"}
1
+ {"version":3,"file":"chunk_uv_octahedral_unit_decode.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,8CAFU,SAAS,CAiBb;0BAzBoB,gCAAgC"}
@@ -1,5 +1,4 @@
1
1
  import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
- import { chunk_sign_not_zero } from "../../math/chunk_sign_not_zero.js";
3
2
 
4
3
  /**
5
4
  *
@@ -24,6 +23,4 @@ fn uv_octahedral_unit_decode( uv: vec2<f32> ) -> vec3<f32>{
24
23
 
25
24
  return normalize( nor );
26
25
  }
27
- `,[
28
- chunk_sign_not_zero
29
- ])
26
+ `, [])
@@ -23,6 +23,11 @@ export class CodeChunk {
23
23
  * @returns {boolean} true iff added, false if already present
24
24
  */
25
25
  addExtension(extension: WebGPUExtensionType): boolean;
26
+ /**
27
+ * @param {string} extension a WGSL language extension name, e.g. `immediate_address_space`
28
+ * @returns {boolean} true iff added, false if already present
29
+ */
30
+ addLanguageExtension(extension: string): boolean;
26
31
  /**
27
32
  *
28
33
  * @param {CodeChunk} dependency
@@ -52,11 +57,12 @@ export class CodeChunk {
52
57
  */
53
58
  coalesceDependencies(): CodeChunk[];
54
59
  /**
55
- * @returns {{text:string, extensions: string[]}}
60
+ * @returns {{text:string, extensions: string[], language_extensions: string[]}}
56
61
  */
57
62
  compile(): {
58
63
  text: string;
59
64
  extensions: string[];
65
+ language_extensions: string[];
60
66
  };
61
67
  toString(): string;
62
68
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"CodeChunk.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/compiler/CodeChunk.js"],"names":[],"mappings":"AAOA;IAMI;;;OAGG;IACH,cAFU,SAAS,SAAS,CAAC,CAEoB;IAwEjD;;;;;OAKG;IACH,kBAHW,MAAM,iBADN,SAAS,EAAE,GAET,SAAS,CAqBrB;IAzGD,2BAEC;IAcD;;;OAGG;IACH,mBAEC;IAeD;;;;OAIG;IACH,wBAHW,mBAAmB,GACjB,OAAO,CAMnB;IAED;;;;OAIG;IACH,0BAHW,SAAS,GACP,OAAO,CAmBnB;IAqCD;;;;OAIG;IACH,6CAHW,IAAI,SAAS,CAAC,GACZ,OAAO,CAgBnB;IAED;;;;OAIG;IACH,+BAHW,SAAS,GACP,OAAO,CAqBnB;IAED;;;OAGG;IACH,uBAFa,SAAS,EAAE,CAoCvB;IAED;;;OAGG;IACH,wBAFY,SAAS,EAAE,CAgDtB;IAED;;OAEG;IACH;cAFmB,MAAM;oBAAc,MAAM,EAAE;MAoC9C;IAED,mBAEC;IAED;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,YAFW,SAAS,QAMnB;IAED;;;OAGG;IACH,SAFY,SAAS,CAQpB;IAED;;;;OAIG;IACH,cAHW,SAAS,GACP,OAAO,CAWnB;;CACJ;oCAnVmC,4CAA4C"}
1
+ {"version":3,"file":"CodeChunk.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/compiler/CodeChunk.js"],"names":[],"mappings":"AAOA;IAMI;;;OAGG;IACH,cAFU,SAAS,SAAS,CAAC,CAEoB;IAkGjD;;;;;OAKG;IACH,kBAHW,MAAM,iBADN,SAAS,EAAE,GAET,SAAS,CAqBrB;IAnID,2BAEC;IAcD;;;OAGG;IACH,mBAEC;IAeD;;;;OAIG;IACH,wBAHW,mBAAmB,GACjB,OAAO,CAMnB;IAkBD;;;OAGG;IACH,gCAHW,MAAM,GACJ,OAAO,CAMnB;IAED;;;;OAIG;IACH,0BAHW,SAAS,GACP,OAAO,CAmBnB;IAqCD;;;;OAIG;IACH,6CAHW,IAAI,SAAS,CAAC,GACZ,OAAO,CAgBnB;IAED;;;;OAIG;IACH,+BAHW,SAAS,GACP,OAAO,CAqBnB;IAED;;;OAGG;IACH,uBAFa,SAAS,EAAE,CAoCvB;IAED;;;OAGG;IACH,wBAFY,SAAS,EAAE,CAgDtB;IAED;;OAEG;IACH;cAFmB,MAAM;oBAAc,MAAM,EAAE;6BAAuB,MAAM,EAAE;MA4C7E;IAED,mBAEC;IAED;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,YAFW,SAAS,QAOnB;IAED;;;OAGG;IACH,SAFY,SAAS,CAQpB;IAED;;;;OAIG;IACH,cAHW,SAAS,GACP,OAAO,CAWnB;;CACJ;oCAtXmC,4CAA4C"}
@@ -55,6 +55,32 @@ export class CodeChunk {
55
55
  return array_push_if_unique(this.#extensions, extension);
56
56
  }
57
57
 
58
+ /**
59
+ * WGSL language extensions this chunk uses, emitted as `requires`.
60
+ *
61
+ * A separate channel from {@link #extensions} on purpose. WGSL has two kinds of extension and
62
+ * they take different directives: an *enable-extension* is a device capability negotiated
63
+ * through `GPUFeatureName` and written `enable f16;`, while a *language extension* is available
64
+ * whenever the implementation supports it, is not a `GPUFeatureName` at all, and is written
65
+ * `requires immediate_address_space;`. Putting a language extension through
66
+ * {@link addExtension} would fail its {@link WebGPUExtensionType} assert, and if it somehow got
67
+ * past that it would emit the wrong directive and be looked for in the wrong namespace.
68
+ *
69
+ * @see https://www.w3.org/TR/WGSL/#language-extensions
70
+ * @type {string[]}
71
+ */
72
+ #language_extensions = [];
73
+
74
+ /**
75
+ * @param {string} extension a WGSL language extension name, e.g. `immediate_address_space`
76
+ * @returns {boolean} true iff added, false if already present
77
+ */
78
+ addLanguageExtension(extension) {
79
+ assert.isString(extension, 'extension');
80
+
81
+ return array_push_if_unique(this.#language_extensions, extension);
82
+ }
83
+
58
84
  /**
59
85
  *
60
86
  * @param {CodeChunk} dependency
@@ -254,7 +280,7 @@ export class CodeChunk {
254
280
  }
255
281
 
256
282
  /**
257
- * @returns {{text:string, extensions: string[]}}
283
+ * @returns {{text:string, extensions: string[], language_extensions: string[]}}
258
284
  */
259
285
  compile() {
260
286
 
@@ -262,6 +288,7 @@ export class CodeChunk {
262
288
  queue.push(this);
263
289
 
264
290
  const extension_hash = {};
291
+ const language_extension_hash = {};
265
292
 
266
293
  /**
267
294
  *
@@ -279,16 +306,23 @@ export class CodeChunk {
279
306
  for (let j = 0; j < ext.length; j++) {
280
307
  extension_hash[ext[j]] = true;
281
308
  }
309
+
310
+ const lang_ext = chunk.#language_extensions;
311
+ for (let j = 0; j < lang_ext.length; j++) {
312
+ language_extension_hash[lang_ext[j]] = true;
313
+ }
282
314
  }
283
315
 
284
316
  // Enable required extensions
285
317
  const extensions = Object.keys(extension_hash).sort();
318
+ const language_extensions = Object.keys(language_extension_hash).sort();
286
319
 
287
320
  const text = result_parts.join('\n');
288
321
 
289
322
  return {
290
323
  text,
291
- extensions
324
+ extensions,
325
+ language_extensions
292
326
  };
293
327
  }
294
328
 
@@ -312,6 +346,7 @@ export class CodeChunk {
312
346
  this.#text = other.#text;
313
347
  this.#dependencies = other.#dependencies.slice();
314
348
  this.#extensions = other.#extensions.slice();
349
+ this.#language_extensions = other.#language_extensions.slice();
315
350
  }
316
351
 
317
352
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"compute_binding_read_names.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/graph/compute/compute_binding_read_names.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+GAFY,MAAM,EAAE,CAuBnB"}
1
+ {"version":3,"file":"compute_binding_read_names.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/graph/compute/compute_binding_read_names.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+GAFY,MAAM,EAAE,CA6BnB"}
@@ -14,6 +14,12 @@ export function compute_binding_read_names(binding_names, shader_resources) {
14
14
  const binding_names_read = [];
15
15
 
16
16
  for (const binding_name of binding_names) {
17
+ if (shader_resources.isImmediateName(binding_name)) {
18
+ // immediate data is immutable, so it is always a read
19
+ binding_names_read.push(binding_name);
20
+ continue;
21
+ }
22
+
17
23
  const resource = shader_resources.getResourceByName(binding_name);
18
24
 
19
25
  if (resource === undefined) {
@@ -58,7 +58,7 @@ export function graph_compute_indirect_pass({
58
58
 
59
59
  command_handle = pass.read(command);
60
60
 
61
- graph_prepare_pass_input_data(binding_names_read, bindings, pass, pass_data);
61
+ graph_prepare_pass_input_data(binding_names_read, bindings, pass, pass_data, shader_resources);
62
62
 
63
63
  return graph_prepare_compute_resources(
64
64
  shader_resources,
@@ -56,7 +56,7 @@ export function graph_compute_pass({
56
56
 
57
57
  const pass = graph.add(shader_descriptor.label, pass_data, execute);
58
58
 
59
- graph_prepare_pass_input_data(binding_names_read, bindings, pass, pass_data);
59
+ graph_prepare_pass_input_data(binding_names_read, bindings, pass, pass_data, shader_resources);
60
60
 
61
61
  return graph_prepare_compute_resources(
62
62
  shader_resources,
@@ -152,7 +152,7 @@ export function graph_image_pass({
152
152
  const pass = graph.add(shader_descriptor.label, pass_data, execute);
153
153
 
154
154
  // parse inputs
155
- graph_prepare_pass_input_data(input_names, inputs, pass, pass_data);
155
+ graph_prepare_pass_input_data(input_names, inputs, pass, pass_data, shader_descriptor.resources);
156
156
 
157
157
  if (input_depth !== -1) {
158
158
  pass_data[DEPTH_TEXTURE_NAME] = pass.read(input_depth);
@@ -1 +1 @@
1
- {"version":3,"file":"graph_prepare_bindings.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/graph/graph_prepare_bindings.js"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,yFANW,MAAM,EAAE,oFAmDlB"}
1
+ {"version":3,"file":"graph_prepare_bindings.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/graph/graph_prepare_bindings.js"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,yFANW,MAAM,EAAE,oFA0DlB"}
@@ -27,6 +27,13 @@ export function graph_prepare_bindings(
27
27
  for (let i = 0; i < input_name_count; i++) {
28
28
  const input_key = input_names[i];
29
29
 
30
+ if (resources_descriptor.isImmediateName(input_key)) {
31
+ // hand the value on unchanged — ComputeShader/ImageShader serialise it through
32
+ // ShaderResourceSetDescriptor#writeImmediate, and it never becomes a binding
33
+ bindings[input_key] = data[input_key];
34
+ continue;
35
+ }
36
+
30
37
  const resource_spec = resources_descriptor.getResourceByName(input_key);
31
38
 
32
39
  if (resource_spec === undefined) {
@@ -4,6 +4,8 @@
4
4
  * @param {Object} inputs
5
5
  * @param {FrameGraphBuilder} pass
6
6
  * @param {Object} pass_data
7
+ * @param {ShaderResourceSetDescriptor} [shader_resources] when given, its immediate data is carried
8
+ * through verbatim instead of being read as a graph resource
7
9
  */
8
- export function graph_prepare_pass_input_data(input_names: string[], inputs: any, pass: FrameGraphBuilder, pass_data: any): void;
10
+ export function graph_prepare_pass_input_data(input_names: string[], inputs: any, pass: FrameGraphBuilder, pass_data: any, shader_resources?: ShaderResourceSetDescriptor): void;
9
11
  //# sourceMappingURL=graph_prepare_pass_input_data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph_prepare_pass_input_data.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,2DALW,MAAM,EAAE,8DA+BlB"}
1
+ {"version":3,"file":"graph_prepare_pass_input_data.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,2DAPW,MAAM,EAAE,8GA0ClB"}
@@ -4,12 +4,15 @@
4
4
  * @param {Object} inputs
5
5
  * @param {FrameGraphBuilder} pass
6
6
  * @param {Object} pass_data
7
+ * @param {ShaderResourceSetDescriptor} [shader_resources] when given, its immediate data is carried
8
+ * through verbatim instead of being read as a graph resource
7
9
  */
8
10
  export function graph_prepare_pass_input_data(
9
11
  input_names,
10
12
  inputs,
11
13
  pass,
12
- pass_data
14
+ pass_data,
15
+ shader_resources
13
16
  ) {
14
17
  const input_count = input_names.length;
15
18
  for (let i = 0; i < input_count; i++) {
@@ -17,6 +20,14 @@ export function graph_prepare_pass_input_data(
17
20
 
18
21
  const input_field_value = inputs[input_key];
19
22
 
23
+ // An immediate is a value, not a resource the graph owns — and a `u32` immediate is a
24
+ // number, which the branch below would otherwise take for a graph resource id and read as
25
+ // one. Nothing to declare to the graph, so it passes straight through.
26
+ if (shader_resources !== undefined && shader_resources.isImmediateName(input_key)) {
27
+ pass_data[input_key] = input_field_value;
28
+ continue;
29
+ }
30
+
20
31
  let pass_input_value;
21
32
 
22
33
  const input_field_type = typeof input_field_value;
@@ -1 +1 @@
1
- {"version":3,"file":"RenderPassDescriptor.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/pass/RenderPassDescriptor.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IACI;;OAEG;IACH,mCAAQ;IAER;;OAEG;IACH,uCAAS;IAET;;;OAGG;IACH,kBAFU,qCAAqC,CAEzB;IAEtB;;;OAGG;IACH,wBAFU,0CAA0C,CAEsB;IAG1E;;;;;;;;;;OAUG;IACH,8GAVW,mBAAmB,2BA+E7B;IAED;;;;;;;;;;OAUG;IACH,yIAiCC;IAED;;;;;;;OAOG;IACH,0GAcC;IAGL;;;OAGG;IACH,iCAFU,OAAO,CAEoC;CANpD;2DApL0D,iDAAiD"}
1
+ {"version":3,"file":"RenderPassDescriptor.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/pass/RenderPassDescriptor.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IACI;;OAEG;IACH,mCAAQ;IAER;;OAEG;IACH,uCAAS;IAET;;;OAGG;IACH,kBAFU,qCAAqC,CAEzB;IAEtB;;;OAGG;IACH,wBAFU,0CAA0C,CAEsB;IAG1E;;;;;;;;;;OAUG;IACH,8GAVW,mBAAmB,2BA+E7B;IAED;;;;;;;;;;OAUG;IACH,yIAkCC;IAED;;;;;;;OAOG;IACH,0GAcC;IAGL;;;OAGG;IACH,iCAFU,OAAO,CAEoC;CANpD;2DArL0D,iDAAiD"}
@@ -152,6 +152,7 @@ export class RenderPassDescriptor {
152
152
  return encoder.constructRenderPass({
153
153
  pipeline,
154
154
  bindings: this.resources.generateBindings(bindings),
155
+ immediate: encoder.writeImmediate(this.resources, bindings),
155
156
  colorAttachments: gpu_descriptor.colorAttachments,
156
157
  depthStencilAttachment: gpu_descriptor.depthStencilAttachment,
157
158
  });
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The WGSL language extension the `immediate` address space lives behind.
3
+ *
4
+ * Written with `requires`, not `enable` — it is a *language* extension, available whenever the
5
+ * implementation supports it, and it is not a `GPUFeatureName`.
6
+ *
7
+ * @see https://www.w3.org/TR/WGSL/#language_extension-immediate_address_space
8
+ * @type {string}
9
+ */
10
+ export const IMMEDIATE_ADDRESS_SPACE_EXTENSION: string;
11
+ /**
12
+ * The `maxImmediateSize` every conformant WebGPU device reports at minimum — a `maximum`-class limit
13
+ * whose default is 64 bytes, with no separate compatibility-mode value.
14
+ *
15
+ * Declaring more than this would compile on whichever machine happened to offer more and fail
16
+ * everywhere else, so it is refused where the declaration is written rather than where it breaks.
17
+ *
18
+ * @type {number}
19
+ */
20
+ export const IMMEDIATE_SIZE_FLOOR: number;
21
+ //# sourceMappingURL=IMMEDIATE_DATA.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMMEDIATE_DATA.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/resource/IMMEDIATE_DATA.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,gDAFU,MAAM,CAE2D;AAE3E;;;;;;;;GAQG;AACH,mCAFU,MAAM,CAEuB"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The WGSL language extension the `immediate` address space lives behind.
3
+ *
4
+ * Written with `requires`, not `enable` — it is a *language* extension, available whenever the
5
+ * implementation supports it, and it is not a `GPUFeatureName`.
6
+ *
7
+ * @see https://www.w3.org/TR/WGSL/#language_extension-immediate_address_space
8
+ * @type {string}
9
+ */
10
+ export const IMMEDIATE_ADDRESS_SPACE_EXTENSION = 'immediate_address_space';
11
+
12
+ /**
13
+ * The `maxImmediateSize` every conformant WebGPU device reports at minimum — a `maximum`-class limit
14
+ * whose default is 64 bytes, with no separate compatibility-mode value.
15
+ *
16
+ * Declaring more than this would compile on whichever machine happened to offer more and fail
17
+ * everywhere else, so it is refused where the declaration is written rather than where it breaks.
18
+ *
19
+ * @type {number}
20
+ */
21
+ export const IMMEDIATE_SIZE_FLOOR = 64;