@woosh/meep-engine 3.12.0 → 3.13.1

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 (301) hide show
  1. package/package.json +1 -1
  2. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  3. package/src/core/geom/3d/shape/ConvexHullShape3D.js +41 -25
  4. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
  5. package/src/core/geom/3d/shape/PosedShape3D.js +7 -2
  6. package/src/engine/graphics3/decal/GPUDecalRenderer.js +3 -3
  7. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  8. package/src/engine/graphics3/decal/shader_decal_composite.js +4 -2
  9. package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
  10. package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +2 -3
  11. package/src/engine/graphics3/highlight/shader_highlight_outline.js +150 -150
  12. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  13. package/src/shade/RENDERER_CONTRACT.md +2 -1
  14. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +18 -0
  15. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
  16. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +73 -0
  17. package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +755 -0
  18. package/src/shade/device/ShadeGPUCommandContext.d.ts +10 -16
  19. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  20. package/src/shade/device/ShadeGPUCommandContext.js +801 -994
  21. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +107 -0
  22. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -0
  23. package/src/shade/device/pass/ShadeGPUComputePassEncoder.js +222 -0
  24. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +168 -0
  25. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -0
  26. package/src/shade/device/pass/ShadeGPURenderPassEncoder.js +317 -0
  27. package/src/shade/device/timing/GPUTimerArray.d.ts +4 -9
  28. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  29. package/src/shade/device/timing/GPUTimerArray.js +261 -289
  30. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +20 -2
  31. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts +59 -0
  32. package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts.map +1 -0
  33. package/src/shade/device/timing/ShadeGPUContextProfiler.js +182 -0
  34. package/src/shade/device/timing/profile/GPUProfileSession.d.ts +4 -4
  35. package/src/shade/device/timing/profile/GPUProfileSession.js +4 -4
  36. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
  37. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +3 -1
  38. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
  39. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +3 -1
  40. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
  41. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +3 -1
  42. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +2 -2
  43. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +2 -2
  44. package/src/shade/renderer/Renderer.d.ts +0 -6
  45. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  46. package/src/shade/renderer/Renderer.js +0 -29
  47. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  48. package/src/shade/renderer/animation/GPUAnimationManager.js +1 -3
  49. package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
  50. package/src/shade/renderer/animation/shader_animation_tick.js +128 -125
  51. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  52. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +8 -18
  53. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
  54. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +100 -98
  55. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
  56. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +215 -212
  57. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts +1 -1
  58. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
  59. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +135 -120
  60. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
  61. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +77 -75
  62. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
  63. package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +375 -371
  64. package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +3 -3
  65. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +1 -1
  66. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  67. package/src/shade/renderer/buffer/table/GPUDatabase.js +14 -19
  68. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.d.ts.map +1 -1
  69. package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.js +7 -2
  70. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  71. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +325 -319
  72. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
  73. package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +3 -1
  74. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
  75. package/src/shade/renderer/deferred/shader_tonemap_HDR.js +4 -1
  76. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts +2 -2
  77. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts.map +1 -1
  78. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +167 -167
  79. package/src/shade/renderer/fow/GPUFogOfWarRenderer.js +3 -3
  80. package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
  81. package/src/shade/renderer/fow/shader_fog_of_war.js +3 -1
  82. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -102
  83. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
  84. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +125 -121
  85. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
  86. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +766 -774
  87. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
  88. package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +72 -69
  89. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  90. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +5 -10
  91. package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +129 -129
  92. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
  93. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +5 -3
  94. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  95. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -1
  96. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.d.ts.map +1 -1
  97. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.js +3 -1
  98. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.d.ts.map +1 -1
  99. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.js +114 -112
  100. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.d.ts.map +1 -1
  101. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.js +4 -1
  102. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
  103. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +187 -184
  104. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
  105. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +4 -1
  106. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  107. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +6 -8
  108. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.d.ts.map +1 -1
  109. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.js +3 -1
  110. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.d.ts.map +1 -1
  111. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +3 -1
  112. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +3 -3
  113. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +3 -3
  114. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
  115. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
  116. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +145 -142
  117. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
  118. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +87 -82
  119. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
  120. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +143 -140
  121. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +2 -2
  122. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -1
  123. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +43 -8
  124. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
  125. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +4 -5
  126. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
  127. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +88 -84
  128. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
  129. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +194 -191
  130. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  131. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +33 -69
  132. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  133. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +6 -1
  134. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
  135. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +23 -7
  136. package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
  137. package/src/shade/renderer/light/environment/execute_filter_environment_map.js +1 -2
  138. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
  139. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +6 -1
  140. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
  141. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +234 -219
  142. package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +2 -2
  143. package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.js +191 -191
  144. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.d.ts.map +1 -1
  145. package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.js +85 -82
  146. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  147. package/src/shade/renderer/particles/graph_particles.js +5 -3
  148. package/src/shade/renderer/particles/prototypeParticleSystem.js +3 -4
  149. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  150. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +132 -117
  151. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  152. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +79 -77
  153. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  154. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +111 -99
  155. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  156. package/src/shade/renderer/particles/sort/shader_particle_sort.js +187 -158
  157. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  158. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +7 -10
  159. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  160. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +4 -1
  161. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.d.ts.map +1 -1
  162. package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.js +3 -1
  163. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.d.ts.map +1 -1
  164. package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.js +4 -2
  165. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +147 -147
  166. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.d.ts.map +1 -1
  167. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +121 -119
  168. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.d.ts.map +1 -1
  169. package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.js +1 -2
  170. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.d.ts.map +1 -1
  171. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.js +4 -1
  172. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.d.ts.map +1 -1
  173. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.js +4 -1
  174. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.d.ts.map +1 -1
  175. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.js +4 -1
  176. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.d.ts.map +1 -1
  177. package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.js +4 -1
  178. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.d.ts.map +1 -1
  179. package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +2 -4
  180. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.d.ts.map +1 -1
  181. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.js +4 -1
  182. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.d.ts.map +1 -1
  183. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.js +4 -1
  184. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.d.ts.map +1 -1
  185. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.js +4 -1
  186. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
  187. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +269 -266
  188. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
  189. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +273 -270
  190. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.d.ts.map +1 -1
  191. package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.js +4 -1
  192. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  193. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +8 -11
  194. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
  195. package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +5 -1
  196. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  197. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +11 -8
  198. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  199. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +7 -8
  200. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.d.ts.map +1 -1
  201. package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +3 -1
  202. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  203. package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
  204. package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +70 -68
  205. package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +1 -1
  206. package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +70 -68
  207. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
  208. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +3 -1
  209. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
  210. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +4 -1
  211. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +1 -1
  212. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +103 -101
  213. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
  214. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -2
  215. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.d.ts.map +1 -1
  216. package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.js +3 -1
  217. package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
  218. package/src/shade/renderer/postprocess/taa/shader_taa.js +4 -1
  219. package/src/shade/renderer/postprocess/upscale-dither/fragment_shader_upscale_dither.js +5 -5
  220. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  221. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +339 -341
  222. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
  223. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +114 -109
  224. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
  225. package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +118 -115
  226. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
  227. package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +69 -65
  228. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +722 -722
  229. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  230. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +1 -9
  231. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  232. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +1 -6
  233. package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
  234. package/src/shade/renderer/restir/di/graph_restir_di.js +2 -3
  235. package/src/shade/renderer/restir/di/graph_restir_di_denoise.d.ts.map +1 -1
  236. package/src/shade/renderer/restir/di/graph_restir_di_denoise.js +1 -2
  237. package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
  238. package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +139 -136
  239. package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
  240. package/src/shade/renderer/restir/di/shader_restir_di_resample.js +131 -129
  241. package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
  242. package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +101 -99
  243. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  244. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +379 -383
  245. package/src/shade/renderer/scene/Mesh.d.ts.map +1 -1
  246. package/src/shade/renderer/scene/Mesh.js +4 -6
  247. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
  248. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +147 -144
  249. package/src/shade/renderer/shader/ComputeShader.d.ts +2 -2
  250. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  251. package/src/shade/renderer/shader/ComputeShader.js +14 -17
  252. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +2 -2
  253. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
  254. package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +189 -189
  255. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  256. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +3 -1
  257. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +16 -7
  258. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  259. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1342 -1326
  260. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +13 -0
  261. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  262. package/src/shade/renderer/shadow/map/Shadowmap.js +14 -0
  263. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts +79 -0
  264. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts.map +1 -0
  265. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.js +196 -0
  266. package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts +91 -0
  267. package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts.map +1 -0
  268. package/src/shade/renderer/shadow/map/ShadowmapRegistry.js +156 -0
  269. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.d.ts.map +1 -1
  270. package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.js +5 -1
  271. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.d.ts.map +1 -1
  272. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +3 -1
  273. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +73 -73
  274. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
  275. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +151 -148
  276. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.d.ts.map +1 -1
  277. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +4 -2
  278. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.d.ts.map +1 -1
  279. package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.js +18 -4
  280. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
  281. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +7 -8
  282. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.d.ts.map +1 -1
  283. package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.js +6 -2
  284. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.d.ts.map +1 -1
  285. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.js +129 -127
  286. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
  287. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +5 -3
  288. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
  289. package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +2 -5
  290. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
  291. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +233 -231
  292. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  293. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
  294. package/src/shade/wgsl/validate_wgsl_source.d.ts.map +1 -1
  295. package/src/shade/wgsl/validate_wgsl_source.js +8 -3
  296. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts +0 -21
  297. package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts.map +0 -1
  298. package/src/shade/device/timing/profile/make_profiling_pass_encoder.js +0 -114
  299. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts +0 -20
  300. package/src/shade/device/timing/profile/parse_workgroup_size.d.ts.map +0 -1
  301. package/src/shade/device/timing/profile/parse_workgroup_size.js +0 -43
@@ -1,190 +1,190 @@
1
- import { assert } from "../../../../core/assert.js";
2
- import { rp_rewrite_for_primitive_state } from "../../../device/pipeline/rp_rewrite_for_primitive_state.js";
3
- import { RenderPassDepthStencilAttachmentDescriptor } from "./RenderPassDepthStencilAttachmentDescriptor.js";
4
-
5
- /**
6
- * {@link GPURenderPassDescriptor}
7
- */
8
- export class RenderPassDescriptor {
9
- /**
10
- * @type {RenderPipelineDescriptor}
11
- */
12
- pipeline
13
-
14
- /**
15
- * @type {ShaderResourceSetDescriptor}
16
- */
17
- resources
18
-
19
- /**
20
- *
21
- * @type {RenderPassColorAttachmentDescriptor[]}
22
- */
23
- colorAttachments = [];
24
-
25
- /**
26
- *
27
- * @type {RenderPassDepthStencilAttachmentDescriptor}
28
- */
29
- depthStencilAttachment = new RenderPassDepthStencilAttachmentDescriptor();
30
-
31
-
32
- /**
33
- * @param {GPUTextureContext[]} [colorTargets]
34
- * @param {GPUTextureContext} [depthTarget]
35
- * @param {GPULoadOp} [loadOp="clear"] Used for both color targets and depth target
36
- * @param {GPUStoreOp} [storeOp="store"] Used for both color targets and depth target
37
- * @param {GPULoadOp} [colorLoadOp] defaults to `loadOp`
38
- * @param {GPUStoreOp} [colorStoreOp] defaults to `storeOp`
39
- * @param {GPULoadOp} [depthLoadOp] defaults to `loadOp`
40
- * @param {GPUStoreOp} [depthStoreOp] defaults to `storeOp`
41
- * @returns {GPURenderPassDescriptor}
42
- */
43
- toGPU({
44
- colorTargets = [],
45
- depthTarget,
46
- loadOp = "clear",
47
- storeOp = "store",
48
- colorLoadOp = loadOp,
49
- colorStoreOp = storeOp,
50
- depthLoadOp = loadOp,
51
- depthStoreOp = storeOp,
52
- }) {
53
-
54
- assert.defined(colorTargets, 'colorAttachments');
55
- assert.isArray(colorTargets, 'colorAttachments');
56
-
57
- assert.isOneOf(loadOp, ['clear', 'load'], 'loadOp');
58
- assert.isOneOf(storeOp, ['store', 'discard'], 'storeOp');
59
-
60
-
61
- assert.isOneOf(colorLoadOp, ['clear', 'load'], 'colorLoadOp');
62
- assert.isOneOf(colorStoreOp, ['store', 'discard'], 'colorStoreOp');
63
-
64
- assert.isOneOf(depthLoadOp, ['clear', 'load'], 'depthLoadOp');
65
- assert.isOneOf(depthStoreOp, ['store', 'discard'], 'depthStoreOp');
66
-
67
- const _colorAttachments = [];
68
-
69
- const color_target_count = colorTargets.length;
70
- for (let i = 0; i < color_target_count; i++) {
71
- const texture = colorTargets[i];
72
-
73
- assert.defined(texture, 'texture');
74
- assert.isObject(texture, 'texture');
75
- assert.equal(texture.isGPUTextureContext, true, 'texture.isGPUTextureContext !== true');
76
-
77
- const descriptor = this.colorAttachments[i];
78
- _colorAttachments[i] = {
79
- view: texture.obtainView(descriptor.view),
80
- clearValue: descriptor.clearValue,
81
- loadOp: colorLoadOp,
82
- storeOp: colorStoreOp,
83
- };
84
- }
85
-
86
- const depthDescriptor = this.depthStencilAttachment;
87
-
88
-
89
- let _depthStencilAttachment;
90
-
91
- if (depthTarget !== undefined) {
92
- assert.equal(depthTarget.isGPUTextureContext, true, 'depthTarget.isGPUTextureContext !== true')
93
-
94
- _depthStencilAttachment = {
95
- view: depthTarget.obtainView(depthDescriptor.view),
96
- depthClearValue: depthDescriptor.depthClearValue,
97
- depthLoadOp: depthLoadOp,
98
- depthStoreOp: depthStoreOp,
99
- };
100
-
101
- } else {
102
-
103
- // no depth
104
-
105
- }
106
-
107
- return {
108
- label: this.pipeline.label,
109
- colorAttachments: _colorAttachments,
110
- depthStencilAttachment: _depthStencilAttachment,
111
- };
112
- }
113
-
114
- /**
115
- *
116
- * @param {ShadeGPUCommandContext} encoder
117
- * @param {GPUTextureContext[]} [colorTargets]
118
- * @param {GPUTextureContext} [depthTarget]
119
- * @param {Object} [bindings]
120
- * @param {PrimitiveState} [primitive_state]
121
- * @param {GPULoadOp} [loadOp="clear"] Used for both color targets and depth target
122
- * @param {GPUStoreOp} [storeOp="store"] Used for both color targets and depth target
123
- * @returns {GPURenderPassEncoder}
124
- */
125
- begin({
126
- encoder,
127
- colorTargets = [],
128
- depthTarget,
129
- bindings = {},
130
- primitive_state,
131
- loadOp = "clear",
132
- storeOp = "store",
133
- }) {
134
- assert.defined(encoder, 'encoder');
135
-
136
- assert.defined(bindings, 'bindings');
137
- assert.isObject(bindings, 'bindings');
138
-
139
- const gpu_descriptor = this.toGPU({
140
- colorTargets,
141
- depthTarget,
142
- loadOp,
143
- storeOp,
144
- });
145
-
146
- let pipeline = this.pipeline;
147
-
148
- if(primitive_state !== undefined){
149
- pipeline = rp_rewrite_for_primitive_state(pipeline,primitive_state);
150
- }
151
-
152
- return encoder.constructRenderPass({
153
- pipeline,
154
- bindings: this.resources.generateBindings(bindings),
155
- immediate: encoder.writeImmediate(this.resources, bindings),
156
- colorAttachments: gpu_descriptor.colorAttachments,
157
- depthStencilAttachment: gpu_descriptor.depthStencilAttachment,
158
- });
159
- }
160
-
161
- /**
162
- *
163
- * @param {ShadeGPUCommandContext} encoder
164
- * @param {GPUBuffer} command See {@link STRUCT_UNINDEXED_DRAW_COMMAND}
165
- * @param {number} [command_offset]
166
- * @param {Object} [bindings]
167
- * @param {RenderTarget} render_target
168
- */
169
- drawIndirect({
170
- encoder,
171
- command,
172
- command_offset = 0,
173
- bindings = {},
174
- render_target
175
- }) {
176
-
177
- const pass = this.begin({ encoder: encoder, render_target: render_target, bindings: bindings });
178
-
179
- pass.drawIndirect(command, command_offset);
180
-
181
- pass.end();
182
-
183
- }
184
- }
185
-
186
- /**
187
- * @readonly
188
- * @type {boolean}
189
- */
1
+ import { assert } from "../../../../core/assert.js";
2
+ import { rp_rewrite_for_primitive_state } from "../../../device/pipeline/rp_rewrite_for_primitive_state.js";
3
+ import { RenderPassDepthStencilAttachmentDescriptor } from "./RenderPassDepthStencilAttachmentDescriptor.js";
4
+
5
+ /**
6
+ * {@link GPURenderPassDescriptor}
7
+ */
8
+ export class RenderPassDescriptor {
9
+ /**
10
+ * @type {RenderPipelineDescriptor}
11
+ */
12
+ pipeline
13
+
14
+ /**
15
+ * @type {ShaderResourceSetDescriptor}
16
+ */
17
+ resources
18
+
19
+ /**
20
+ *
21
+ * @type {RenderPassColorAttachmentDescriptor[]}
22
+ */
23
+ colorAttachments = [];
24
+
25
+ /**
26
+ *
27
+ * @type {RenderPassDepthStencilAttachmentDescriptor}
28
+ */
29
+ depthStencilAttachment = new RenderPassDepthStencilAttachmentDescriptor();
30
+
31
+
32
+ /**
33
+ * @param {GPUTextureContext[]} [colorTargets]
34
+ * @param {GPUTextureContext} [depthTarget]
35
+ * @param {GPULoadOp} [loadOp="clear"] Used for both color targets and depth target
36
+ * @param {GPUStoreOp} [storeOp="store"] Used for both color targets and depth target
37
+ * @param {GPULoadOp} [colorLoadOp] defaults to `loadOp`
38
+ * @param {GPUStoreOp} [colorStoreOp] defaults to `storeOp`
39
+ * @param {GPULoadOp} [depthLoadOp] defaults to `loadOp`
40
+ * @param {GPUStoreOp} [depthStoreOp] defaults to `storeOp`
41
+ * @returns {GPURenderPassDescriptor}
42
+ */
43
+ toGPU({
44
+ colorTargets = [],
45
+ depthTarget,
46
+ loadOp = "clear",
47
+ storeOp = "store",
48
+ colorLoadOp = loadOp,
49
+ colorStoreOp = storeOp,
50
+ depthLoadOp = loadOp,
51
+ depthStoreOp = storeOp,
52
+ }) {
53
+
54
+ assert.defined(colorTargets, 'colorAttachments');
55
+ assert.isArray(colorTargets, 'colorAttachments');
56
+
57
+ assert.isOneOf(loadOp, ['clear', 'load'], 'loadOp');
58
+ assert.isOneOf(storeOp, ['store', 'discard'], 'storeOp');
59
+
60
+
61
+ assert.isOneOf(colorLoadOp, ['clear', 'load'], 'colorLoadOp');
62
+ assert.isOneOf(colorStoreOp, ['store', 'discard'], 'colorStoreOp');
63
+
64
+ assert.isOneOf(depthLoadOp, ['clear', 'load'], 'depthLoadOp');
65
+ assert.isOneOf(depthStoreOp, ['store', 'discard'], 'depthStoreOp');
66
+
67
+ const _colorAttachments = [];
68
+
69
+ const color_target_count = colorTargets.length;
70
+ for (let i = 0; i < color_target_count; i++) {
71
+ const texture = colorTargets[i];
72
+
73
+ assert.defined(texture, 'texture');
74
+ assert.isObject(texture, 'texture');
75
+ assert.equal(texture.isGPUTextureContext, true, 'texture.isGPUTextureContext !== true');
76
+
77
+ const descriptor = this.colorAttachments[i];
78
+ _colorAttachments[i] = {
79
+ view: texture.obtainView(descriptor.view),
80
+ clearValue: descriptor.clearValue,
81
+ loadOp: colorLoadOp,
82
+ storeOp: colorStoreOp,
83
+ };
84
+ }
85
+
86
+ const depthDescriptor = this.depthStencilAttachment;
87
+
88
+
89
+ let _depthStencilAttachment;
90
+
91
+ if (depthTarget !== undefined) {
92
+ assert.equal(depthTarget.isGPUTextureContext, true, 'depthTarget.isGPUTextureContext !== true')
93
+
94
+ _depthStencilAttachment = {
95
+ view: depthTarget.obtainView(depthDescriptor.view),
96
+ depthClearValue: depthDescriptor.depthClearValue,
97
+ depthLoadOp: depthLoadOp,
98
+ depthStoreOp: depthStoreOp,
99
+ };
100
+
101
+ } else {
102
+
103
+ // no depth
104
+
105
+ }
106
+
107
+ return {
108
+ label: this.pipeline.label,
109
+ colorAttachments: _colorAttachments,
110
+ depthStencilAttachment: _depthStencilAttachment,
111
+ };
112
+ }
113
+
114
+ /**
115
+ *
116
+ * @param {ShadeGPUCommandContext} encoder
117
+ * @param {GPUTextureContext[]} [colorTargets]
118
+ * @param {GPUTextureContext} [depthTarget]
119
+ * @param {Object} [bindings]
120
+ * @param {PrimitiveState} [primitive_state]
121
+ * @param {GPULoadOp} [loadOp="clear"] Used for both color targets and depth target
122
+ * @param {GPUStoreOp} [storeOp="store"] Used for both color targets and depth target
123
+ * @returns {ShadeGPURenderPassEncoder}
124
+ */
125
+ begin({
126
+ encoder,
127
+ colorTargets = [],
128
+ depthTarget,
129
+ bindings = {},
130
+ primitive_state,
131
+ loadOp = "clear",
132
+ storeOp = "store",
133
+ }) {
134
+ assert.defined(encoder, 'encoder');
135
+
136
+ assert.defined(bindings, 'bindings');
137
+ assert.isObject(bindings, 'bindings');
138
+
139
+ const gpu_descriptor = this.toGPU({
140
+ colorTargets,
141
+ depthTarget,
142
+ loadOp,
143
+ storeOp,
144
+ });
145
+
146
+ let pipeline = this.pipeline;
147
+
148
+ if(primitive_state !== undefined){
149
+ pipeline = rp_rewrite_for_primitive_state(pipeline,primitive_state);
150
+ }
151
+
152
+ return encoder.constructRenderPass({
153
+ pipeline,
154
+ bindings: this.resources.generateBindings(bindings),
155
+ immediate: encoder.writeImmediate(this.resources, bindings),
156
+ colorAttachments: gpu_descriptor.colorAttachments,
157
+ depthStencilAttachment: gpu_descriptor.depthStencilAttachment,
158
+ });
159
+ }
160
+
161
+ /**
162
+ *
163
+ * @param {ShadeGPUCommandContext} encoder
164
+ * @param {GPUBuffer} command See {@link STRUCT_UNINDEXED_DRAW_COMMAND}
165
+ * @param {number} [command_offset]
166
+ * @param {Object} [bindings]
167
+ * @param {RenderTarget} render_target
168
+ */
169
+ drawIndirect({
170
+ encoder,
171
+ command,
172
+ command_offset = 0,
173
+ bindings = {},
174
+ render_target
175
+ }) {
176
+
177
+ const pass = this.begin({ encoder: encoder, render_target: render_target, bindings: bindings });
178
+
179
+ pass.drawIndirect(command, command_offset);
180
+
181
+ pass.end();
182
+
183
+ }
184
+ }
185
+
186
+ /**
187
+ * @readonly
188
+ * @type {boolean}
189
+ */
190
190
  RenderPassDescriptor.prototype.isRenderPassDescriptor = true;
@@ -1 +1 @@
1
- {"version":3,"file":"ShaderResourceSetDescriptor.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js"],"names":[],"mappings":"AA8HA;IAoBI;;OAEG;IACH;cAFoB,MAAM;;MAIzB;IAED;;;;;OAKG;IACH,4BAMC;IAED;;;;;;;;;;;;OAYG;IACH,mBALW,MAAM,SACN,aAAW,MAAM,GAEf,IAAI,CA6ChB;IAED;;;OAGG;IACH,8CAEC;IAGD;;;OAGG;IACH,6CAEC;IAaD;;;;OAIG;IACH;;;;;;;;;;;OAWG;IACH,sBAHW,MAAM,GACJ,OAAO,CAInB;IAED,+FAYC;IAED;;;;;OAKG;IACH,gCAJW,MAAM,GAEJ,6BAA6B,CAsBzC;IAED;;;;OAIG;IACH,gBAHW,6BAA6B,GAC3B,OAAO,CAQnB;IAED;;;OAGG;IACH,qBAFW,iBAAe,MAAM,QAW/B;IAED;;OAEG;IACH,oCAFa,wBAAwB,CAiBpC;IAED;;;OAGG;IACH,yBAFY,EAAE,EAAE,CAcf;IAED;;;;OAIG;IACH,8BAHW,iBAAe,MAAM,GACnB,wBAAwB,CAMpC;IAED;;;;;OAKG;IACH,8DAFa,oBAAoB,EAAE,CAgBlC;IAED;;;OAGG;IACH,qBAFY,SAAS,CAwGpB;IAED;;;;;;;;;;;;;;;OAeG;IACH,gDAFa,OAAO,CA0CnB;;CACJ;;eAKS,SAAS,2BAA2B,CAAC;;8CAzjBD,oCAAoC;yCAXzC,0DAA0D;0BAIzE,0BAA0B"}
1
+ {"version":3,"file":"ShaderResourceSetDescriptor.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js"],"names":[],"mappings":"AAgIA;IAoBI;;OAEG;IACH;cAFoB,MAAM;;MAIzB;IAED;;;;;OAKG;IACH,4BAMC;IAED;;;;;;;;;;;;OAYG;IACH,mBALW,MAAM,SACN,aAAW,MAAM,GAEf,IAAI,CA6ChB;IAED;;;OAGG;IACH,8CAEC;IAGD;;;OAGG;IACH,6CAEC;IAaD;;;;OAIG;IACH;;;;;;;;;;;OAWG;IACH,sBAHW,MAAM,GACJ,OAAO,CAInB;IAED,+FAYC;IAED;;;;;OAKG;IACH,gCAJW,MAAM,GAEJ,6BAA6B,CAsBzC;IAED;;;;OAIG;IACH,gBAHW,6BAA6B,GAC3B,OAAO,CAQnB;IAED;;;OAGG;IACH,qBAFW,iBAAe,MAAM,QAW/B;IAED;;OAEG;IACH,oCAFa,wBAAwB,CAiBpC;IAED;;;OAGG;IACH,yBAFY,EAAE,EAAE,CAcf;IAED;;;;OAIG;IACH,8BAHW,iBAAe,MAAM,GACnB,wBAAwB,CAMpC;IAED;;;;;OAKG;IACH,8DAFa,oBAAoB,EAAE,CAgBlC;IAED;;;OAGG;IACH,qBAFY,SAAS,CAwGpB;IAED;;;;;;;;;;;;;;;OAeG;IACH,gDAFa,OAAO,CA0CnB;;CACJ;;eAKS,SAAS,2BAA2B,CAAC;;8CA3jBD,oCAAoC;yCAXzC,0DAA0D;0BAIzE,0BAA0B"}
@@ -114,7 +114,9 @@ function gen_type_storage_texture(member) {
114
114
  function gen_type_sampler(member) {
115
115
  // see https://www.w3.org/TR/WGSL/#sampler-type
116
116
 
117
- if (member.type === "filtering") {
117
+ // WGSL has no "non-filtering" sampler type; filtering is a bind-group-layout property, so
118
+ // both "filtering" and "non-filtering" declare a plain `sampler`
119
+ if (member.type === "filtering" || member.type === "non-filtering") {
118
120
  return "sampler";
119
121
  } else if (member.type === "comparison") {
120
122
  return "sampler_comparison";
@@ -81,7 +81,8 @@ export class GPUSceneShadowmapContext {
81
81
  * Runs at the top of every frame, before {@link draw}. Responsibilities:
82
82
  *
83
83
  * 1. **Reset per-frame signals.** `should_draw` is cleared on every map so a stale "yes"
84
- * from a prior frame can never cause a spurious extra raster.
84
+ * from a prior frame can never cause a spurious extra raster. Folded into the selector's
85
+ * scoring pass, which walks every map anyway.
85
86
  * 2. **Measure on-screen presence.** `projected_area_px` is computed once per map and stored
86
87
  * on the map itself — consumed by the resolution policy, the scorer, and the selector,
87
88
  * and exposed for debug tooling.
@@ -90,7 +91,8 @@ export class GPUSceneShadowmapContext {
90
91
  * resize. The committed `layout` is left untouched so sampling remains valid; the
91
92
  * pending is consumed later by {@link draw} when the scheduler naturally picks this map
92
93
  * up (no forced redraw).
93
- * 4. **Score + select.** For each map:
94
+ * 4. **Score + select.** Delegated to {@link ShadowmapDrawSelector}, which sets `should_draw`
95
+ * on the winners and reports the view spend and whether any candidate went unmet:
94
96
  * - **Directional** → always selected (infinite score); view cost still charged.
95
97
  * - **Local, off-screen** (`projected_area_px <= 0`) → skipped entirely.
96
98
  * - **Local, in-view, invalid** → MUST draw. `is_invalid` means the committed layout
@@ -99,15 +101,16 @@ export class GPUSceneShadowmapContext {
99
101
  * layout model — this flag fires only on first-draw.
100
102
  * - **Local, in-view, valid** → compete for the remaining budget by score. Ordering
101
103
  * is descending score so the most important (largest-on-screen, stalest) maps win.
102
- * 5. **Commit selection.** On each winner we set `should_draw = true` and call
103
- * `map.update()` so its projection matrices reflect the current frame. The
104
- * `last_updated_frame_index` stamp is deferred to {@link draw} — it records when the
105
- * atlas contents become current, not when the projection is fitted.
104
+ * 5. **Fit the winners.** `map.update()` on each selected map, so its projection matrices
105
+ * reflect the current frame. The `last_updated_frame_index` stamp is deferred to
106
+ * {@link draw} — it records when the atlas contents become current, not when the
107
+ * projection is fitted.
106
108
  *
107
109
  * Shadow records are NOT written here; they're written at the end of {@link draw} so the
108
110
  * shader reads slots that reflect any just-committed pending swaps within the same frame.
109
111
  *
110
- * See {@link compute_shadowmap_update_score} for the scoring formula and rationale.
112
+ * See {@link compute_shadowmap_update_score} for the scoring formula and rationale, and
113
+ * {@link ShadowmapDrawSelector} for why the ordering is a heap drain rather than a sort.
111
114
  *
112
115
  * @param {Camera} main_camera used both for rendering the final frame and for projected-area
113
116
  * computation and directional CSM fit; must be callable for `.update()`
@@ -160,6 +163,12 @@ export class GPUSceneShadowmapContext {
160
163
  * {@link LightCollection.version} hasn't moved — `light.casts_shadow` flips are not
161
164
  * tracked by version and are detected here.
162
165
  *
166
+ * Runs as three linear passes — mark, reclaim, allocate — over {@link #registry}, which owns
167
+ * the light -> map index and the marks. It used to scan the map array once per light to find
168
+ * out whether that light already had one, which made the pass quadratic: 148us per frame at
169
+ * 512 lights against 19us now, and 554us against 45us at 1024. See
170
+ * benchmark/reconcile.spec.js.
171
+ *
163
172
  * @returns {boolean} true when at least one map was added/evicted or at least one light's
164
173
  * per-type shadow_id moved. The caller uses this to decide whether the light
165
174
  * records need to be re-published (their `shadow_id` and CASTS_SHADOW_BIT may
@@ -1 +1 @@
1
- {"version":3,"file":"GPUSceneShadowmapContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js"],"names":[],"mappings":"AAuFA;;GAEG;AACH;IA8JI;;;;;;;;OAQG;IACH,8FA0DC;IAhOD,2BAAwG;IAExG;;;OAGG;IACH,SAFU,iBAAiB,CAEnB;IAQR;;;;;;;;OAQG;IACH,qBAFU,WAAW,CAED;IAsBpB;;;;;;;;OAQG;IACH,SAFU,OAAO,CAEF;IAEf;;;;;;;;;;OAUG;IACH,+BAFU,OAAO,CAEqB;IAqCtC;;OAEG;IACH,iCAEC;IAED;;;;;;OAMG;IACH,oCAEC;IAED;;;;;OAKG;IACH,oCAEC;IAgGD;;;;OAIG;IACH,uBAFa,YAAU,SAAS,CAI/B;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACH,0EAJW,MAAM,mBACN,UAAU,MAAM,CAAC,QA6G3B;IAyED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,gDAiFC;IAgbD;;;;;;;;;;;;;;OAcG;IACH,kBALa,OAAO,CAkMnB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,KAAK,CAWjB;IAED,gBAWC;;CACJ;oCA3yCmC,+DAA+D;kCAkBjE,oCAAoC;4BAG1C,2BAA2B;kBAtBrC,wCAAwC"}
1
+ {"version":3,"file":"GPUSceneShadowmapContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js"],"names":[],"mappings":"AAwFA;;GAEG;AACH;IA8KI;;;;;;;;OAQG;IACH,8FA0DC;IAhPD,2BAAwG;IAExG;;;OAGG;IACH,SAFU,iBAAiB,CAEnB;IAQR;;;;;;;;OAQG;IACH,qBAFU,WAAW,CAED;IAsCpB;;;;;;;;OAQG;IACH,SAFU,OAAO,CAEF;IAEf;;;;;;;;;;OAUG;IACH,+BAFU,OAAO,CAEqB;IAqCtC;;OAEG;IACH,iCAEC;IAED;;;;;;OAMG;IACH,oCAEC;IAED;;;;;OAKG;IACH,oCAEC;IAgGD;;;;OAIG;IACH,uBAFa,YAAU,SAAS,CAI/B;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH,0EAJW,MAAM,mBACN,UAAU,MAAM,CAAC,QAgE3B;IAyED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,gDAiFC;IA6aD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,kBALa,OAAO,CAuOnB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,KAAK,CAWjB;IAED,gBAYC;;CACJ;oCA3zCmC,+DAA+D;kCAkBjE,oCAAoC;4BAG1C,2BAA2B;kBAtBrC,wCAAwC"}