@woosh/meep-engine 3.12.0 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/package.json +1 -1
  2. package/src/engine/graphics3/decal/GPUDecalRenderer.js +3 -3
  3. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  4. package/src/engine/graphics3/decal/shader_decal_composite.js +4 -2
  5. package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
  6. package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +2 -3
  7. package/src/engine/graphics3/highlight/shader_highlight_outline.js +150 -150
  8. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  9. package/src/shade/RENDERER_CONTRACT.md +2 -1
  10. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +18 -0
  11. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
  12. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +73 -0
  13. package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +750 -0
  14. package/src/shade/device/ShadeGPUCommandContext.d.ts +10 -16
  15. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  16. package/src/shade/device/ShadeGPUCommandContext.js +801 -994
  17. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +107 -0
  18. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -0
  19. package/src/shade/device/pass/ShadeGPUComputePassEncoder.js +222 -0
  20. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +168 -0
  21. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -0
  22. package/src/shade/device/pass/ShadeGPURenderPassEncoder.js +317 -0
  23. package/src/shade/device/timing/GPUTimerArray.d.ts +4 -9
  24. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  25. package/src/shade/device/timing/GPUTimerArray.js +261 -289
  26. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +20 -2
  27. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts +59 -0
  28. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts.map +1 -0
  29. package/src/shade/device/timing/ShadeGPUContextProfiler.js +182 -0
  30. package/src/shade/device/timing/profile/GPUProfileSession.d.ts +4 -4
  31. package/src/shade/device/timing/profile/GPUProfileSession.js +4 -4
  32. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
  33. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +3 -1
  34. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
  35. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +3 -1
  36. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
  37. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +3 -1
  38. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +2 -2
  39. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +2 -2
  40. package/src/shade/renderer/Renderer.d.ts +0 -6
  41. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  42. package/src/shade/renderer/Renderer.js +0 -29
  43. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  44. package/src/shade/renderer/animation/GPUAnimationManager.js +1 -3
  45. package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
  46. package/src/shade/renderer/animation/shader_animation_tick.js +128 -125
  47. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  48. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +8 -18
  49. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
  50. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +100 -98
  51. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
  52. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +215 -212
  53. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts +1 -1
  54. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
  55. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +135 -120
  56. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
  57. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +77 -75
  58. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
  59. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +375 -371
  60. package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +3 -3
  61. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +1 -1
  62. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  63. package/src/shade/renderer/buffer/table/GPUDatabase.js +14 -19
  64. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.d.ts.map +1 -1
  65. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.js +7 -2
  66. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  67. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +325 -319
  68. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
  69. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +3 -1
  70. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
  71. package/src/shade/renderer/deferred/shader_tonemap_HDR.js +4 -1
  72. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts +2 -2
  73. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts.map +1 -1
  74. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +167 -167
  75. package/src/shade/renderer/fow/GPUFogOfWarRenderer.js +3 -3
  76. package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
  77. package/src/shade/renderer/fow/shader_fog_of_war.js +3 -1
  78. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -102
  79. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
  80. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +125 -121
  81. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
  82. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +766 -774
  83. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
  84. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +72 -69
  85. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  86. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +5 -10
  87. package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +129 -129
  88. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
  89. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +5 -3
  90. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  91. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -1
  92. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.d.ts.map +1 -1
  93. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.js +3 -1
  94. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.d.ts.map +1 -1
  95. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.js +114 -112
  96. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.d.ts.map +1 -1
  97. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.js +4 -1
  98. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
  99. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +187 -184
  100. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
  101. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +4 -1
  102. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  103. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +6 -8
  104. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.d.ts.map +1 -1
  105. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.js +3 -1
  106. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.d.ts.map +1 -1
  107. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +3 -1
  108. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +3 -3
  109. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +3 -3
  110. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
  111. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
  112. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +145 -142
  113. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
  114. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +87 -82
  115. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
  116. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +143 -140
  117. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +2 -2
  118. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -1
  119. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +43 -8
  120. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
  121. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +4 -5
  122. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
  123. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +88 -84
  124. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
  125. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +194 -191
  126. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  127. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +33 -69
  128. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  129. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +6 -1
  130. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
  131. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +23 -7
  132. package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
  133. package/src/shade/renderer/light/environment/execute_filter_environment_map.js +1 -2
  134. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
  135. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +6 -1
  136. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
  137. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +234 -219
  138. package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +2 -2
  139. package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.js +191 -191
  140. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.d.ts.map +1 -1
  141. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.js +85 -82
  142. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  143. package/src/shade/renderer/particles/graph_particles.js +5 -3
  144. package/src/shade/renderer/particles/prototypeParticleSystem.js +3 -4
  145. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  146. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +132 -117
  147. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  148. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +79 -77
  149. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  150. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +111 -99
  151. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  152. package/src/shade/renderer/particles/sort/shader_particle_sort.js +187 -158
  153. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  154. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +7 -10
  155. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  156. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +4 -1
  157. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.d.ts.map +1 -1
  158. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.js +3 -1
  159. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.d.ts.map +1 -1
  160. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.js +4 -2
  161. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +147 -147
  162. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.d.ts.map +1 -1
  163. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +121 -119
  164. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.d.ts.map +1 -1
  165. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.js +1 -2
  166. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.d.ts.map +1 -1
  167. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.js +4 -1
  168. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.d.ts.map +1 -1
  169. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.js +4 -1
  170. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.d.ts.map +1 -1
  171. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.js +4 -1
  172. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.d.ts.map +1 -1
  173. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.js +4 -1
  174. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.d.ts.map +1 -1
  175. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +2 -4
  176. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.d.ts.map +1 -1
  177. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.js +4 -1
  178. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.d.ts.map +1 -1
  179. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.js +4 -1
  180. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.d.ts.map +1 -1
  181. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.js +4 -1
  182. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
  183. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +269 -266
  184. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
  185. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +273 -270
  186. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.d.ts.map +1 -1
  187. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.js +4 -1
  188. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  189. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +8 -11
  190. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
  191. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +5 -1
  192. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  193. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +11 -8
  194. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  195. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +7 -8
  196. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.d.ts.map +1 -1
  197. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +3 -1
  198. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  199. package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
  200. package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +70 -68
  201. package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +1 -1
  202. package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +70 -68
  203. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
  204. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +3 -1
  205. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
  206. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +4 -1
  207. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +1 -1
  208. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +103 -101
  209. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
  210. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -2
  211. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.d.ts.map +1 -1
  212. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.js +3 -1
  213. package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
  214. package/src/shade/renderer/postprocess/taa/shader_taa.js +4 -1
  215. package/src/shade/renderer/postprocess/upscale-dither/fragment_shader_upscale_dither.js +5 -5
  216. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  217. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +339 -341
  218. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
  219. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +114 -109
  220. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
  221. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +118 -115
  222. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
  223. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +69 -65
  224. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +722 -722
  225. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  226. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +1 -9
  227. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  228. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +1 -6
  229. package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
  230. package/src/shade/renderer/restir/di/graph_restir_di.js +2 -3
  231. package/src/shade/renderer/restir/di/graph_restir_di_denoise.d.ts.map +1 -1
  232. package/src/shade/renderer/restir/di/graph_restir_di_denoise.js +1 -2
  233. package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
  234. package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +139 -136
  235. package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
  236. package/src/shade/renderer/restir/di/shader_restir_di_resample.js +131 -129
  237. package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
  238. package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +101 -99
  239. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  240. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +379 -383
  241. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
  242. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +147 -144
  243. package/src/shade/renderer/shader/ComputeShader.d.ts +2 -2
  244. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  245. package/src/shade/renderer/shader/ComputeShader.js +14 -17
  246. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +2 -2
  247. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
  248. package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +189 -189
  249. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  250. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +3 -1
  251. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  252. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +14 -18
  253. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.d.ts.map +1 -1
  254. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.js +5 -1
  255. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.d.ts.map +1 -1
  256. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +3 -1
  257. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +73 -73
  258. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
  259. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +151 -148
  260. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.d.ts.map +1 -1
  261. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +4 -2
  262. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.d.ts.map +1 -1
  263. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.js +18 -4
  264. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
  265. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +7 -8
  266. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.d.ts.map +1 -1
  267. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.js +6 -2
  268. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.d.ts.map +1 -1
  269. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.js +129 -127
  270. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
  271. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +5 -3
  272. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
  273. package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +2 -5
  274. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
  275. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +233 -231
  276. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  277. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
  278. package/src/shade/wgsl/validate_wgsl_source.d.ts.map +1 -1
  279. package/src/shade/wgsl/validate_wgsl_source.js +8 -3
  280. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts +0 -21
  281. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts.map +0 -1
  282. package/src/shade/device/timing/profile/make_profiling_pass_encoder.js +0 -114
  283. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts +0 -20
  284. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts.map +0 -1
  285. package/src/shade/device/timing/profile/parse_workgroup_size.js +0 -43
@@ -1 +1 @@
1
- {"version":3,"file":"shader_bvh_extract_instance_leaves.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js"],"names":[],"mappings":"AAUA,4CAA6C;AA+G7C;;;;;;;;;;;;;;;;;GAiBG;AACH,iDAFU,aAAa,CAMpB;8BA1I2B,4BAA4B"}
1
+ {"version":3,"file":"shader_bvh_extract_instance_leaves.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js"],"names":[],"mappings":"AAUA,4CAA6C;AAkH7C;;;;;;;;;;;;;;;;;GAiBG;AACH,iDAFU,aAAa,CAMpB;8BA7I2B,4BAA4B"}
@@ -1,144 +1,147 @@
1
- import { WebGPUExtensionType } from "../../descriptor/WebGPUExtensionType.js";
2
- import { atomic_u32, f32, u32 } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
3
- import { WebGPUArray } from "../shader/type/WebGPUArray.js";
4
- import { chunk_aabb_atomic_f32 } from "../animation/skinning/bounds_refresh/chunk_aabb_atomic_f32.js";
5
- import { CodeChunk } from "../shader/compiler/CodeChunk.js";
6
- import { ComputeShader } from "../shader/ComputeShader.js";
7
- import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
8
- import { BVH_BUILD_SETTINGS_STRUCT } from "../gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js";
9
- import { chunk_scene_database_access } from "./chunk_scene_database_access.js";
10
-
11
- export const BVH_EXTRACT_WORKGROUP_SIZE = 64;
12
-
13
- /**
14
- * Subgroup size is a runtime value of at least 4, so a workgroup splits into at most this many
15
- * subgroups. The array of per-subgroup partials is sized for the worst case.
16
- *
17
- * @type {number}
18
- */
19
- const MAX_SUBGROUPS = BVH_EXTRACT_WORKGROUP_SIZE / 4;
20
-
21
- const resources = new ShaderResourceSetDescriptor();
22
- resources.createGroup()
23
- .addUniform("settings", BVH_BUILD_SETTINGS_STRUCT)
24
- // occupied rows of the scene database's `meshes` table, compacted — dead and reused rows never
25
- // reach the build
26
- .addStorageBuffer("rows", WebGPUArray.from(u32), false)
27
- .addStorageBuffer("scene_database", WebGPUArray.from(u32), false)
28
- .addStorageBuffer("leaf_bounds", WebGPUArray.from(f32), true)
29
- .addStorageBuffer("leaf_payload", WebGPUArray.from(u32), true)
30
- // six words holding plain f32 bit patterns, seeded to +/-inf before this pass runs
31
- .addStorageBuffer("scene_bounds", WebGPUArray.from(atomic_u32), true);
32
-
33
- const body = CodeChunk.from(
34
- //language=WGSL
35
- `
36
- const WORKGROUP_SIZE = ${BVH_EXTRACT_WORKGROUP_SIZE}u;
37
-
38
- // The scatter sentinels in scene_bounds are true +/-inf, written host-side as u32 bit patterns.
39
- // Here they cannot be: WGSL will not const-fold bitcast<f32>(0x7F800000u), because the result is
40
- // not representable as a literal. The largest finite f32 is the identity element in practice —
41
- // no world-space bound comes within many orders of magnitude of it.
42
- const FLOAT_MAX = 3.4028234e38;
43
-
44
- var<workgroup> wg_low: array<vec3<f32>, ${MAX_SUBGROUPS}>;
45
- var<workgroup> wg_high: array<vec3<f32>, ${MAX_SUBGROUPS}>;
46
-
47
- @compute @workgroup_size(WORKGROUP_SIZE, 1, 1)
48
- fn main(
49
- @builtin(global_invocation_id) gid: vec3<u32>,
50
- @builtin(local_invocation_index) thread_id: u32,
51
- @builtin(subgroup_invocation_id) lane_id: u32,
52
- @builtin(subgroup_size) lane_count: u32,
53
- ) {
54
- let i = gid.x;
55
-
56
- // Threads past the end contribute the identity element rather than returning: the reduction
57
- // below is workgroup-wide and every lane has to reach it.
58
- var low = vec3<f32>(FLOAT_MAX);
59
- var high = vec3<f32>(-FLOAT_MAX);
60
-
61
- if (i < settings.element_count) {
62
- let row = rows[i];
63
-
64
- let mesh = scene_read_mesh(&scene_database, row);
65
-
66
- low = vec3<f32>(mesh.bounding_box[0], mesh.bounding_box[1], mesh.bounding_box[2]);
67
- high = vec3<f32>(mesh.bounding_box[3], mesh.bounding_box[4], mesh.bounding_box[5]);
68
-
69
- let destination = i * 6u;
70
-
71
- leaf_bounds[destination] = low.x;
72
- leaf_bounds[destination + 1u] = low.y;
73
- leaf_bounds[destination + 2u] = low.z;
74
- leaf_bounds[destination + 3u] = high.x;
75
- leaf_bounds[destination + 4u] = high.y;
76
- leaf_bounds[destination + 5u] = high.z;
77
-
78
- // The leaf's payload IS the mesh row — what the traversal hands to scene_read_mesh on a hit.
79
- leaf_payload[i] = row;
80
- }
81
-
82
- // Subgroups first, workgroup memory only across subgroup boundaries.
83
- let subgroup_low = subgroupMin(low);
84
- let subgroup_high = subgroupMax(high);
85
-
86
- let subgroup_id = thread_id / lane_count;
87
- let subgroup_count = WORKGROUP_SIZE / lane_count;
88
-
89
- if (lane_id == 0u) {
90
- wg_low[subgroup_id] = subgroup_low;
91
- wg_high[subgroup_id] = subgroup_high;
92
- }
93
-
94
- workgroupBarrier();
95
-
96
- // At most MAX_SUBGROUPS entries left; one thread walks them, so nothing here depends on the
97
- // subgroup width and no barrier sits under a bound derived from it.
98
- if (thread_id == 0u) {
99
- var group_low = wg_low[0];
100
- var group_high = wg_high[0];
101
-
102
- for (var s = 1u; s < subgroup_count; s += 1u) {
103
- group_low = min(group_low, wg_low[s]);
104
- group_high = max(group_high, wg_high[s]);
105
- }
106
-
107
- aabb_atomic_min_f32(&scene_bounds[0], group_low.x);
108
- aabb_atomic_min_f32(&scene_bounds[1], group_low.y);
109
- aabb_atomic_min_f32(&scene_bounds[2], group_low.z);
110
- aabb_atomic_max_f32(&scene_bounds[3], group_high.x);
111
- aabb_atomic_max_f32(&scene_bounds[4], group_high.y);
112
- aabb_atomic_max_f32(&scene_bounds[5], group_high.z);
113
- }
114
- }
115
- `, [
116
- chunk_scene_database_access,
117
- chunk_aabb_atomic_f32,
118
- ]);
119
-
120
- body.addExtension(WebGPUExtensionType.Subgroups);
121
-
122
- /**
123
- * Turn the TLAS's live instance rows into the flat leaf set {@link graph_bvh_build_lbvh} consumes,
124
- * and reduce their union into the scene-bounds cell the Morton pass quantises against.
125
- *
126
- * World AABBs come from the scene database's `meshes` table rather than from the CPU tree's leaves:
127
- * it is the single source of truth, it is refreshed GPU-side for GPU-authority rows (which the CPU
128
- * never learns about at all), and reading it removes the build's dependency on CPU-side bounds
129
- * bookkeeping.
130
- *
131
- * This is the only scene-aware pass in the build, which is why it lives here with the scene code
132
- * rather than in `gpu_primitive/bvh/` — everything downstream of it takes flat boxes and payloads
133
- * and serves geometry just as well as instances.
134
- *
135
- * `scene_bounds` must be seeded with +/-inf before this runs; a pool-cleared buffer is zeroed, and
136
- * zero is a perfectly good coordinate.
137
- *
138
- * @type {ComputeShader}
139
- */
140
- export const shader_bvh_extract_instance_leaves = ComputeShader.from({
141
- label: "BVHBuild/ExtractInstanceLeaves",
142
- resources,
143
- body,
144
- });
1
+ import { WebGPUExtensionType } from "../../descriptor/WebGPUExtensionType.js";
2
+ import { atomic_u32, f32, u32 } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
3
+ import { WebGPUArray } from "../shader/type/WebGPUArray.js";
4
+ import { chunk_aabb_atomic_f32 } from "../animation/skinning/bounds_refresh/chunk_aabb_atomic_f32.js";
5
+ import { CodeChunk } from "../shader/compiler/CodeChunk.js";
6
+ import { ComputeShader } from "../shader/ComputeShader.js";
7
+ import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
8
+ import { BVH_BUILD_SETTINGS_STRUCT } from "../gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js";
9
+ import { chunk_scene_database_access } from "./chunk_scene_database_access.js";
10
+
11
+ export const BVH_EXTRACT_WORKGROUP_SIZE = 64;
12
+
13
+ /**
14
+ * Subgroup size is a runtime value of at least 4, so a workgroup splits into at most this many
15
+ * subgroups. The array of per-subgroup partials is sized for the worst case.
16
+ *
17
+ * @type {number}
18
+ */
19
+ const MAX_SUBGROUPS = BVH_EXTRACT_WORKGROUP_SIZE / 4;
20
+
21
+ const resources = new ShaderResourceSetDescriptor();
22
+
23
+ // per-dispatch, 20 bytes, read-only: immediate data rather than a uniform buffer
24
+ resources.setImmediate("settings", BVH_BUILD_SETTINGS_STRUCT);
25
+
26
+ resources.createGroup()
27
+ // occupied rows of the scene database's `meshes` table, compacted — dead and reused rows never
28
+ // reach the build
29
+ .addStorageBuffer("rows", WebGPUArray.from(u32), false)
30
+ .addStorageBuffer("scene_database", WebGPUArray.from(u32), false)
31
+ .addStorageBuffer("leaf_bounds", WebGPUArray.from(f32), true)
32
+ .addStorageBuffer("leaf_payload", WebGPUArray.from(u32), true)
33
+ // six words holding plain f32 bit patterns, seeded to +/-inf before this pass runs
34
+ .addStorageBuffer("scene_bounds", WebGPUArray.from(atomic_u32), true);
35
+
36
+ const body = CodeChunk.from(
37
+ //language=WGSL
38
+ `
39
+ const WORKGROUP_SIZE = ${BVH_EXTRACT_WORKGROUP_SIZE}u;
40
+
41
+ // The scatter sentinels in scene_bounds are true +/-inf, written host-side as u32 bit patterns.
42
+ // Here they cannot be: WGSL will not const-fold bitcast<f32>(0x7F800000u), because the result is
43
+ // not representable as a literal. The largest finite f32 is the identity element in practice —
44
+ // no world-space bound comes within many orders of magnitude of it.
45
+ const FLOAT_MAX = 3.4028234e38;
46
+
47
+ var<workgroup> wg_low: array<vec3<f32>, ${MAX_SUBGROUPS}>;
48
+ var<workgroup> wg_high: array<vec3<f32>, ${MAX_SUBGROUPS}>;
49
+
50
+ @compute @workgroup_size(WORKGROUP_SIZE, 1, 1)
51
+ fn main(
52
+ @builtin(global_invocation_id) gid: vec3<u32>,
53
+ @builtin(local_invocation_index) thread_id: u32,
54
+ @builtin(subgroup_invocation_id) lane_id: u32,
55
+ @builtin(subgroup_size) lane_count: u32,
56
+ ) {
57
+ let i = gid.x;
58
+
59
+ // Threads past the end contribute the identity element rather than returning: the reduction
60
+ // below is workgroup-wide and every lane has to reach it.
61
+ var low = vec3<f32>(FLOAT_MAX);
62
+ var high = vec3<f32>(-FLOAT_MAX);
63
+
64
+ if (i < settings.element_count) {
65
+ let row = rows[i];
66
+
67
+ let mesh = scene_read_mesh(&scene_database, row);
68
+
69
+ low = vec3<f32>(mesh.bounding_box[0], mesh.bounding_box[1], mesh.bounding_box[2]);
70
+ high = vec3<f32>(mesh.bounding_box[3], mesh.bounding_box[4], mesh.bounding_box[5]);
71
+
72
+ let destination = i * 6u;
73
+
74
+ leaf_bounds[destination] = low.x;
75
+ leaf_bounds[destination + 1u] = low.y;
76
+ leaf_bounds[destination + 2u] = low.z;
77
+ leaf_bounds[destination + 3u] = high.x;
78
+ leaf_bounds[destination + 4u] = high.y;
79
+ leaf_bounds[destination + 5u] = high.z;
80
+
81
+ // The leaf's payload IS the mesh row — what the traversal hands to scene_read_mesh on a hit.
82
+ leaf_payload[i] = row;
83
+ }
84
+
85
+ // Subgroups first, workgroup memory only across subgroup boundaries.
86
+ let subgroup_low = subgroupMin(low);
87
+ let subgroup_high = subgroupMax(high);
88
+
89
+ let subgroup_id = thread_id / lane_count;
90
+ let subgroup_count = WORKGROUP_SIZE / lane_count;
91
+
92
+ if (lane_id == 0u) {
93
+ wg_low[subgroup_id] = subgroup_low;
94
+ wg_high[subgroup_id] = subgroup_high;
95
+ }
96
+
97
+ workgroupBarrier();
98
+
99
+ // At most MAX_SUBGROUPS entries left; one thread walks them, so nothing here depends on the
100
+ // subgroup width and no barrier sits under a bound derived from it.
101
+ if (thread_id == 0u) {
102
+ var group_low = wg_low[0];
103
+ var group_high = wg_high[0];
104
+
105
+ for (var s = 1u; s < subgroup_count; s += 1u) {
106
+ group_low = min(group_low, wg_low[s]);
107
+ group_high = max(group_high, wg_high[s]);
108
+ }
109
+
110
+ aabb_atomic_min_f32(&scene_bounds[0], group_low.x);
111
+ aabb_atomic_min_f32(&scene_bounds[1], group_low.y);
112
+ aabb_atomic_min_f32(&scene_bounds[2], group_low.z);
113
+ aabb_atomic_max_f32(&scene_bounds[3], group_high.x);
114
+ aabb_atomic_max_f32(&scene_bounds[4], group_high.y);
115
+ aabb_atomic_max_f32(&scene_bounds[5], group_high.z);
116
+ }
117
+ }
118
+ `, [
119
+ chunk_scene_database_access,
120
+ chunk_aabb_atomic_f32,
121
+ ]);
122
+
123
+ body.addExtension(WebGPUExtensionType.Subgroups);
124
+
125
+ /**
126
+ * Turn the TLAS's live instance rows into the flat leaf set {@link graph_bvh_build_lbvh} consumes,
127
+ * and reduce their union into the scene-bounds cell the Morton pass quantises against.
128
+ *
129
+ * World AABBs come from the scene database's `meshes` table rather than from the CPU tree's leaves:
130
+ * it is the single source of truth, it is refreshed GPU-side for GPU-authority rows (which the CPU
131
+ * never learns about at all), and reading it removes the build's dependency on CPU-side bounds
132
+ * bookkeeping.
133
+ *
134
+ * This is the only scene-aware pass in the build, which is why it lives here with the scene code
135
+ * rather than in `gpu_primitive/bvh/` everything downstream of it takes flat boxes and payloads
136
+ * and serves geometry just as well as instances.
137
+ *
138
+ * `scene_bounds` must be seeded with +/-inf before this runs; a pool-cleared buffer is zeroed, and
139
+ * zero is a perfectly good coordinate.
140
+ *
141
+ * @type {ComputeShader}
142
+ */
143
+ export const shader_bvh_extract_instance_leaves = ComputeShader.from({
144
+ label: "BVHBuild/ExtractInstanceLeaves",
145
+ resources,
146
+ body,
147
+ });
@@ -44,9 +44,9 @@ export class ComputeShader {
44
44
  *
45
45
  * @param {ShadeGPUCommandContext} encoder
46
46
  * @param {Object} bindings
47
- * @return {GPUComputePassEncoder}
47
+ * @return {ShadeGPUComputePassEncoder}
48
48
  */
49
- constructPass({ encoder, bindings }: ShadeGPUCommandContext): GPUComputePassEncoder;
49
+ constructPass({ encoder, bindings }: ShadeGPUCommandContext): ShadeGPUComputePassEncoder;
50
50
  /**
51
51
  * Shortcut to {@link dispatch}, expressed in threads instead of workgroups.
52
52
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ComputeShader.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ComputeShader.js"],"names":[],"mappings":"AASA;IA8FI;;;;;;;;;OASG;IACH,sDARW,MAAM,GAMJ,aAAa,CAuBzB;IA9DD;;;OAGG;IACH,wBAFW,gBAAgB,EA2B1B;IAhFD;;;OAGG;IACH,0CAEC;IAaD;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,mCAEC;IAkED;;;;;OAKG;IACH,oFAuBC;IAED;;;;;;;;;;;;;;;OAeG;IACH,sHA6BC;IAED;;;;;;;;;;;OAWG;IACH,mFAmBC;IAED;;;;;;;OAOG;IACH,4GAyCC;IAED;;;;;;OAMG;IACH,+FAsCC;IAGL;;;OAGG;IACH,0BAFU,OAAO,CAEsB;;CANtC;0CAvVyC,gEAAgE;iCACzE,uBAAuB"}
1
+ {"version":3,"file":"ComputeShader.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ComputeShader.js"],"names":[],"mappings":"AAMA;IA8FI;;;;;;;;;OASG;IACH,sDARW,MAAM,GAMJ,aAAa,CAuBzB;IA3DD;;;OAGG;IACH,wBAFW,gBAAgB,EAwB1B;IAhFD;;;OAGG;IACH,0CAEC;IAgBD;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,mCAEC;IA+DD;;;;;OAKG;IACH,yFAuBC;IAED;;;;;;;;;;;;;;;OAeG;IACH,sHA6BC;IAED;;;;;;;;;;;OAWG;IACH,mFAmBC;IAED;;;;;;;OAOG;IACH,4GAyCC;IAED;;;;;;OAMG;IACH,+FAsCC;IAGL;;;OAGG;IACH,0BAFU,OAAO,CAEsB;;CANtC;0CApVyC,gEAAgE;iCACzE,uBAAuB"}
@@ -1,9 +1,6 @@
1
1
  import { assert } from "../../../core/assert.js";
2
2
  import { ComputePipelineDescriptor } from "../../descriptor/pipeline/compute/ComputePipelineDescriptor.js";
3
3
  import { ShaderDescriptor } from "./ShaderDescriptor.js";
4
- import {
5
- compute_infer_workgroup_size_from_source
6
- } from "./util/compute_infer_workgroup_size_from_source.js";
7
4
 
8
5
  const VALIDATION_ENABLED = true;
9
6
 
@@ -34,7 +31,10 @@ export class ComputeShader {
34
31
  * the two to drift. A shader that divides a thread count by a stale copy of this number
35
32
  * dispatches the wrong number of workgroups and says nothing about it.
36
33
  *
37
- * @type {[number, number, number]}
34
+ * Held by {@link ComputePipelineDescriptor}, which reads it as the code is set, so the profiler
35
+ * and the dispatch helpers below are looking at the same array rather than at two parses.
36
+ *
37
+ * @type {readonly number[]}
38
38
  */
39
39
  #group_size;
40
40
 
@@ -78,20 +78,15 @@ export class ComputeShader {
78
78
  this.#descriptor = descriptor;
79
79
 
80
80
  // compiled once here rather than read twice off the descriptor, so that a failure to
81
- // compile stays its own error instead of arriving wrapped in the one below
81
+ // compile stays its own error instead of arriving wrapped in the one from the pipeline
82
82
  const source = descriptor.source;
83
83
 
84
- try {
85
- this.#group_size = compute_infer_workgroup_size_from_source(source);
86
- } catch (e) {
87
- // the source alone says nothing about which shader it belongs to
88
- const error = new Error(`ComputeShader '${descriptor.label}' has no readable workgroup size: ${e.message}`);
89
-
90
- error.cause = e;
91
-
92
- throw error;
93
- }
94
-
84
+ /*
85
+ Throws here, at construction, when the source does not state a readable `@workgroup_size` —
86
+ the pipeline descriptor reads it as the code is set and names this shader in the message.
87
+ Read from there rather than parsed again: it is the same WGSL, the answer cannot differ,
88
+ and a second parse is a second thing that can disagree.
89
+ */
95
90
  this.#pipeline = ComputePipelineDescriptor.simplified({
96
91
  label: descriptor.label,
97
92
  code: source,
@@ -99,6 +94,8 @@ export class ComputeShader {
99
94
  immediate_size: descriptor.resources.immediateSize
100
95
  });
101
96
 
97
+ this.#group_size = this.#pipeline.workgroup_size;
98
+
102
99
  }
103
100
 
104
101
  /**
@@ -138,7 +135,7 @@ export class ComputeShader {
138
135
  *
139
136
  * @param {ShadeGPUCommandContext} encoder
140
137
  * @param {Object} bindings
141
- * @return {GPUComputePassEncoder}
138
+ * @return {ShadeGPUComputePassEncoder}
142
139
  */
143
140
  constructPass({
144
141
  encoder,
@@ -41,9 +41,9 @@ export class RenderPassDescriptor {
41
41
  * @param {PrimitiveState} [primitive_state]
42
42
  * @param {GPULoadOp} [loadOp="clear"] Used for both color targets and depth target
43
43
  * @param {GPUStoreOp} [storeOp="store"] Used for both color targets and depth target
44
- * @returns {GPURenderPassEncoder}
44
+ * @returns {ShadeGPURenderPassEncoder}
45
45
  */
46
- begin({ encoder, colorTargets, depthTarget, bindings, primitive_state, loadOp, storeOp, }: ShadeGPUCommandContext): GPURenderPassEncoder;
46
+ begin({ encoder, colorTargets, depthTarget, bindings, primitive_state, loadOp, storeOp, }: ShadeGPUCommandContext): ShadeGPURenderPassEncoder;
47
47
  /**
48
48
  *
49
49
  * @param {ShadeGPUCommandContext} encoder
@@ -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,yIAkCC;IAED;;;;;;;OAOG;IACH,0GAcC;IAGL;;;OAGG;IACH,iCAFU,OAAO,CAEoC;CANpD;2DArL0D,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,8IAkCC;IAED;;;;;;;OAOG;IACH,0GAcC;IAGL;;;OAGG;IACH,iCAFU,OAAO,CAEoC;CANpD;2DArL0D,iDAAiD"}