@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.
- package/package.json +1 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.js +41 -25
- package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/PosedShape3D.js +7 -2
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +3 -3
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +4 -2
- package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +2 -3
- package/src/engine/graphics3/highlight/shader_highlight_outline.js +150 -150
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/RENDERER_CONTRACT.md +2 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +18 -0
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +73 -0
- package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +755 -0
- package/src/shade/device/ShadeGPUCommandContext.d.ts +10 -16
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/ShadeGPUCommandContext.js +801 -994
- package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +107 -0
- package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -0
- package/src/shade/device/pass/ShadeGPUComputePassEncoder.js +222 -0
- package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +168 -0
- package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -0
- package/src/shade/device/pass/ShadeGPURenderPassEncoder.js +317 -0
- package/src/shade/device/timing/GPUTimerArray.d.ts +4 -9
- package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
- package/src/shade/device/timing/GPUTimerArray.js +261 -289
- package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +20 -2
- package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts +59 -0
- package/src/shade/device/timing/ShadeGPUContextProfiler.d.ts.map +1 -0
- package/src/shade/device/timing/ShadeGPUContextProfiler.js +182 -0
- package/src/shade/device/timing/profile/GPUProfileSession.d.ts +4 -4
- package/src/shade/device/timing/profile/GPUProfileSession.js +4 -4
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +3 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +3 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +3 -1
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +2 -2
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +2 -2
- package/src/shade/renderer/Renderer.d.ts +0 -6
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +0 -29
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +1 -3
- package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_tick.js +128 -125
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +8 -18
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +100 -98
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +215 -212
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +135 -120
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +77 -75
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +375 -371
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +3 -3
- package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +14 -19
- package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/gpu_table_element_upload_shader.js +7 -2
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +325 -319
- package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
- package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +3 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR.js +4 -1
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts +2 -2
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +167 -167
- package/src/shade/renderer/fow/GPUFogOfWarRenderer.js +3 -3
- package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
- package/src/shade/renderer/fow/shader_fog_of_war.js +3 -1
- package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -102
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +125 -121
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +766 -774
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +72 -69
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +5 -10
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +129 -129
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +5 -3
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_resolve_probes.js +3 -1
- package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.js +114 -112
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.js +4 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +187 -184
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +4 -1
- package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +6 -8
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.js +3 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +3 -1
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +3 -3
- package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +3 -3
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +145 -142
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +87 -82
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +143 -140
- package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +43 -8
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +4 -5
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +88 -84
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +194 -191
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +33 -69
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +6 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +23 -7
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/execute_filter_environment_map.js +1 -2
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +6 -1
- package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +234 -219
- package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +2 -2
- package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.js +191 -191
- package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_accummulate_tile.js +85 -82
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +5 -3
- package/src/shade/renderer/particles/prototypeParticleSystem.js +3 -4
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +132 -117
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +79 -77
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +111 -99
- package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
- package/src/shade/renderer/particles/sort/shader_particle_sort.js +187 -158
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +7 -10
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +4 -1
- package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/bloom/shader_bloom_mix.js +3 -1
- package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/cas/shader_ffx_rcas.js +4 -2
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +147 -147
- package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +121 -119
- package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/graph_postprocess_dof2.js +1 -2
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_far.js +4 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_gather_near.js +4 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_recombine.js +4 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/gather/shader_dof2_setup.js +4 -1
- package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +2 -4
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_composite.js +4 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_prefilter.js +4 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch.js +4 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +269 -266
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +273 -270
- package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/shader_dof_autofocus.js +4 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +8 -11
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/shader_autoexposure_adapt.js +5 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +11 -8
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +7 -8
- package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/motion_blur/shader_motion_blur_reconstruct.js +3 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +70 -68
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +70 -68
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +3 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +4 -1
- package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +103 -101
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -2
- package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_trace_shader.js +3 -1
- package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/shader_taa.js +4 -1
- package/src/shade/renderer/postprocess/upscale-dither/fragment_shader_upscale_dither.js +5 -5
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +339 -341
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +114 -109
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +118 -115
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +69 -65
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +722 -722
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +1 -9
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +1 -6
- package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/graph_restir_di.js +2 -3
- package/src/shade/renderer/restir/di/graph_restir_di_denoise.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/graph_restir_di_denoise.js +1 -2
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +139 -136
- package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resample.js +131 -129
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +101 -99
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +379 -383
- package/src/shade/renderer/scene/Mesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/Mesh.js +4 -6
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +147 -144
- package/src/shade/renderer/shader/ComputeShader.d.ts +2 -2
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +14 -17
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +2 -2
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +189 -189
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +3 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +16 -7
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1342 -1326
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts +13 -0
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/Shadowmap.js +14 -0
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts +79 -0
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.js +196 -0
- package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts +91 -0
- package/src/shade/renderer/shadow/map/ShadowmapRegistry.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/ShadowmapRegistry.js +156 -0
- package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/shader_shadowmap_remap_cube_to_octahedral.js +5 -1
- package/src/shade/renderer/shadow/ray/shader_shadow_upscale.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +3 -1
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +73 -73
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +151 -148
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +4 -2
- package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/trace/shader_trace_rays.js +18 -4
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +7 -8
- package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/shader_build_scene_sdf_f32.js +6 -2
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_debug_viz.js +129 -127
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +5 -3
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +2 -5
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +233 -231
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
- package/src/shade/wgsl/validate_wgsl_source.d.ts.map +1 -1
- package/src/shade/wgsl/validate_wgsl_source.js +8 -3
- package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts +0 -21
- package/src/shade/device/timing/profile/make_profiling_pass_encoder.d.ts.map +0 -1
- package/src/shade/device/timing/profile/make_profiling_pass_encoder.js +0 -114
- package/src/shade/device/timing/profile/parse_workgroup_size.d.ts +0 -20
- package/src/shade/device/timing/profile/parse_workgroup_size.d.ts.map +0 -1
- package/src/shade/device/timing/profile/parse_workgroup_size.js +0 -43
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decorates {@link GPUComputePassEncoder}.
|
|
3
|
+
*
|
|
4
|
+
* **Every compute pass Shade opens is one of these.** There is no unwrapped path and no conditional
|
|
5
|
+
* wrapping, and that is what makes hand-written forwarding safe: a method missing here is
|
|
6
|
+
* `pass.setPipeline is not a function` on the first frame of every build, rather than a call
|
|
7
|
+
* silently dropped in the one configuration nobody runs. The `Proxy` this replaces forwarded
|
|
8
|
+
* everything by reflection precisely because it was conditional, and a conditional wrapper's
|
|
9
|
+
* defects only appear while profiling.
|
|
10
|
+
*
|
|
11
|
+
* The method names follow WebGPU's to remove friction for anyone who already knows the API. They
|
|
12
|
+
* are **not** a promise of substitutability — see {@link setBindGroupRange}, which is Shade's own
|
|
13
|
+
* name for a form WebGPU resolves by counting arguments.
|
|
14
|
+
*
|
|
15
|
+
* When a capture is running the pass is handed a {@link GPUProfileWork} to tally into. This class
|
|
16
|
+
* imports nothing from the profiler and does not know what a capture is; `work` is a record of
|
|
17
|
+
* counters, and `null` is the ordinary case.
|
|
18
|
+
*
|
|
19
|
+
* @author Alex Goldring
|
|
20
|
+
* @copyright Company Named Limited (c) 2026
|
|
21
|
+
*/
|
|
22
|
+
export class ShadeGPUComputePassEncoder {
|
|
23
|
+
/**
|
|
24
|
+
* @param {GPUComputePassEncoder} pass
|
|
25
|
+
* @param {GPUProfileWork|null} work
|
|
26
|
+
*/
|
|
27
|
+
constructor(pass: GPUComputePassEncoder, work: GPUProfileWork | null);
|
|
28
|
+
/**
|
|
29
|
+
* @param {string} value
|
|
30
|
+
*/
|
|
31
|
+
set label(arg: string);
|
|
32
|
+
/**
|
|
33
|
+
* @returns {string}
|
|
34
|
+
*/
|
|
35
|
+
get label(): string;
|
|
36
|
+
/**
|
|
37
|
+
* @param {GPUComputePipeline} pipeline
|
|
38
|
+
*/
|
|
39
|
+
setPipeline(pipeline: GPUComputePipeline): void;
|
|
40
|
+
/**
|
|
41
|
+
* @param {number} x
|
|
42
|
+
* @param {number} [y=1]
|
|
43
|
+
* @param {number} [z=1]
|
|
44
|
+
*/
|
|
45
|
+
dispatchWorkgroups(x: number, y?: number, z?: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* @param {GPUBuffer} indirect_buffer
|
|
48
|
+
* @param {number} indirect_offset
|
|
49
|
+
*/
|
|
50
|
+
dispatchWorkgroupsIndirect(indirect_buffer: GPUBuffer, indirect_offset: number): void;
|
|
51
|
+
end(): void;
|
|
52
|
+
/**
|
|
53
|
+
* @param {number} index
|
|
54
|
+
* @param {GPUBindGroup} bind_group
|
|
55
|
+
* @param {number[]} [dynamic_offsets]
|
|
56
|
+
*/
|
|
57
|
+
setBindGroup(index: number, bind_group: GPUBindGroup, dynamic_offsets?: number[]): void;
|
|
58
|
+
/**
|
|
59
|
+
* The `Uint32Array`-slice form of {@link setBindGroup}.
|
|
60
|
+
*
|
|
61
|
+
* Named apart rather than overloaded on arity. Both forms then pass every argument they
|
|
62
|
+
* declare, so neither can select the other's overload by accident, and the name says at the
|
|
63
|
+
* call site which one is meant.
|
|
64
|
+
*
|
|
65
|
+
* @param {number} index
|
|
66
|
+
* @param {GPUBindGroup} bind_group
|
|
67
|
+
* @param {Uint32Array} dynamic_offsets_data
|
|
68
|
+
* @param {number} data_start
|
|
69
|
+
* @param {number} data_length
|
|
70
|
+
*/
|
|
71
|
+
setBindGroupRange(index: number, bind_group: GPUBindGroup, dynamic_offsets_data: Uint32Array, data_start: number, data_length: number): void;
|
|
72
|
+
/**
|
|
73
|
+
* Rest arguments, so the arity that arrives is the arity that leaves — `data_size` has no
|
|
74
|
+
* default to stand in for, and a trailing `undefined` is not the same as an absent argument.
|
|
75
|
+
* @see setBindGroup
|
|
76
|
+
*
|
|
77
|
+
* @param {number} range_offset
|
|
78
|
+
* @param {ArrayBufferView|ArrayBuffer} data
|
|
79
|
+
* @param {number} [data_offset]
|
|
80
|
+
* @param {number} [data_size]
|
|
81
|
+
*/
|
|
82
|
+
setImmediates(...args: any[]): void;
|
|
83
|
+
/**
|
|
84
|
+
* @param {string} label
|
|
85
|
+
*/
|
|
86
|
+
pushDebugGroup(label: string): void;
|
|
87
|
+
popDebugGroup(): void;
|
|
88
|
+
/**
|
|
89
|
+
* @param {string} label
|
|
90
|
+
*/
|
|
91
|
+
insertDebugMarker(label: string): void;
|
|
92
|
+
/**
|
|
93
|
+
* Record which pipeline descriptor this pass ran.
|
|
94
|
+
*
|
|
95
|
+
* Separate from {@link setPipeline} because that receives the compiled
|
|
96
|
+
* {@link GPUComputePipeline}, and neither the label the descriptor was given nor its workgroup
|
|
97
|
+
* size is on it. Only `constructComputePass` holds the descriptor, so a pass begun the long way
|
|
98
|
+
* records its counts but not what ran them — which the model represents as an unknown rather
|
|
99
|
+
* than a zero.
|
|
100
|
+
*
|
|
101
|
+
* @param {ComputePipelineDescriptor} descriptor
|
|
102
|
+
* @returns {void}
|
|
103
|
+
*/
|
|
104
|
+
record_pipeline(descriptor: ComputePipelineDescriptor): void;
|
|
105
|
+
#private;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=ShadeGPUComputePassEncoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShadeGPUComputePassEncoder.d.ts","sourceRoot":"","sources":["../../../../../src/shade/device/pass/ShadeGPUComputePassEncoder.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAmBI;;;OAGG;IACH,+CAFW,iBAAe,IAAI,EAO7B;IASD;;OAEG;IACH,uBAEC;IAZD;;OAEG;IACH,oBAEC;IAWD;;OAEG;IACH,gDAEC;IAED;;;;OAIG;IACH,sBAJW,MAAM,MACN,MAAM,MACN,MAAM,QAahB;IAED;;;OAGG;IACH,wEAFW,MAAM,QAYhB;IAED,YAMC;IAID;;;;OAIG;IACH,oBAJW,MAAM,8CAEN,MAAM,EAAE,QAqBlB;IAED;;;;;;;;;;;;OAYG;IACH,yBANW,MAAM,kDAEN,WAAW,cACX,MAAM,eACN,MAAM,QAIhB;IAED;;;;;;;;;OASG;IACH,oCAEC;IAID;;OAEG;IACH,sBAFW,MAAM,QAIhB;IAED,sBAEC;IAED;;OAEG;IACH,yBAFW,MAAM,QAIhB;IAID;;;;;;;;;;;OAWG;IACH,wDAFa,IAAI,CAWhB;;CACJ"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { assert } from "../../../core/assert.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Decorates {@link GPUComputePassEncoder}.
|
|
5
|
+
*
|
|
6
|
+
* **Every compute pass Shade opens is one of these.** There is no unwrapped path and no conditional
|
|
7
|
+
* wrapping, and that is what makes hand-written forwarding safe: a method missing here is
|
|
8
|
+
* `pass.setPipeline is not a function` on the first frame of every build, rather than a call
|
|
9
|
+
* silently dropped in the one configuration nobody runs. The `Proxy` this replaces forwarded
|
|
10
|
+
* everything by reflection precisely because it was conditional, and a conditional wrapper's
|
|
11
|
+
* defects only appear while profiling.
|
|
12
|
+
*
|
|
13
|
+
* The method names follow WebGPU's to remove friction for anyone who already knows the API. They
|
|
14
|
+
* are **not** a promise of substitutability — see {@link setBindGroupRange}, which is Shade's own
|
|
15
|
+
* name for a form WebGPU resolves by counting arguments.
|
|
16
|
+
*
|
|
17
|
+
* When a capture is running the pass is handed a {@link GPUProfileWork} to tally into. This class
|
|
18
|
+
* imports nothing from the profiler and does not know what a capture is; `work` is a record of
|
|
19
|
+
* counters, and `null` is the ordinary case.
|
|
20
|
+
*
|
|
21
|
+
* @author Alex Goldring
|
|
22
|
+
* @copyright Company Named Limited (c) 2026
|
|
23
|
+
*/
|
|
24
|
+
export class ShadeGPUComputePassEncoder {
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @type {GPUComputePassEncoder}
|
|
28
|
+
*/
|
|
29
|
+
#pass;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Where this pass's encoded work is tallied, or null when nothing is profiling.
|
|
33
|
+
*
|
|
34
|
+
* @type {GPUProfileWork|null}
|
|
35
|
+
*/
|
|
36
|
+
#work;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @type {boolean}
|
|
40
|
+
*/
|
|
41
|
+
#ended = false;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @param {GPUComputePassEncoder} pass
|
|
45
|
+
* @param {GPUProfileWork|null} work
|
|
46
|
+
*/
|
|
47
|
+
constructor(pass, work) {
|
|
48
|
+
assert.defined(pass, 'pass');
|
|
49
|
+
|
|
50
|
+
this.#pass = pass;
|
|
51
|
+
this.#work = work;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @returns {string}
|
|
56
|
+
*/
|
|
57
|
+
get label() {
|
|
58
|
+
return this.#pass.label;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @param {string} value
|
|
63
|
+
*/
|
|
64
|
+
set label(value) {
|
|
65
|
+
this.#pass.label = value;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// --- GPUComputePassEncoder ----------------------------------------------
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @param {GPUComputePipeline} pipeline
|
|
72
|
+
*/
|
|
73
|
+
setPipeline(pipeline) {
|
|
74
|
+
this.#pass.setPipeline(pipeline);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @param {number} x
|
|
79
|
+
* @param {number} [y=1]
|
|
80
|
+
* @param {number} [z=1]
|
|
81
|
+
*/
|
|
82
|
+
dispatchWorkgroups(x, y = 1, z = 1) {
|
|
83
|
+
const work = this.#work;
|
|
84
|
+
|
|
85
|
+
if (work !== null) {
|
|
86
|
+
work.dispatch_count++;
|
|
87
|
+
work.workgroups[0] += x;
|
|
88
|
+
work.workgroups[1] += y;
|
|
89
|
+
work.workgroups[2] += z;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
this.#pass.dispatchWorkgroups(x, y, z);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @param {GPUBuffer} indirect_buffer
|
|
97
|
+
* @param {number} indirect_offset
|
|
98
|
+
*/
|
|
99
|
+
dispatchWorkgroupsIndirect(indirect_buffer, indirect_offset) {
|
|
100
|
+
const work = this.#work;
|
|
101
|
+
|
|
102
|
+
if (work !== null) {
|
|
103
|
+
// Size lives in a GPU buffer, so there is nothing to add to `workgroups`. Counted apart
|
|
104
|
+
// so the totals are not read as covering this.
|
|
105
|
+
work.indirect_dispatch_count++;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
this.#pass.dispatchWorkgroupsIndirect(indirect_buffer, indirect_offset);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
end() {
|
|
112
|
+
assert.notOk(this.#ended, 'pass already ended');
|
|
113
|
+
|
|
114
|
+
this.#ended = true;
|
|
115
|
+
|
|
116
|
+
this.#pass.end();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// --- GPUBindingCommandsMixin --------------------------------------------
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @param {number} index
|
|
123
|
+
* @param {GPUBindGroup} bind_group
|
|
124
|
+
* @param {number[]} [dynamic_offsets]
|
|
125
|
+
*/
|
|
126
|
+
setBindGroup(index, bind_group, dynamic_offsets) {
|
|
127
|
+
/*
|
|
128
|
+
Omitted, not forwarded as `undefined`.
|
|
129
|
+
|
|
130
|
+
`dynamicOffsets` is declared optional with a default of `[]`, which reads as though an
|
|
131
|
+
explicit `undefined` would take that default. Some Chrome builds accept it; others convert
|
|
132
|
+
what they were handed and raise "the provided value cannot be converted to a sequence",
|
|
133
|
+
which takes out every ordinary two-argument call in the renderer. This shipped broken for
|
|
134
|
+
exactly that reason.
|
|
135
|
+
|
|
136
|
+
So the rule this file follows, having learnt it the hard way: forward exactly the arity
|
|
137
|
+
that arrived, and never reason about what a binding layer will do with a trailing
|
|
138
|
+
`undefined`. It costs one branch and it is true on every build.
|
|
139
|
+
*/
|
|
140
|
+
if (dynamic_offsets === undefined) {
|
|
141
|
+
this.#pass.setBindGroup(index, bind_group);
|
|
142
|
+
} else {
|
|
143
|
+
this.#pass.setBindGroup(index, bind_group, dynamic_offsets);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* The `Uint32Array`-slice form of {@link setBindGroup}.
|
|
149
|
+
*
|
|
150
|
+
* Named apart rather than overloaded on arity. Both forms then pass every argument they
|
|
151
|
+
* declare, so neither can select the other's overload by accident, and the name says at the
|
|
152
|
+
* call site which one is meant.
|
|
153
|
+
*
|
|
154
|
+
* @param {number} index
|
|
155
|
+
* @param {GPUBindGroup} bind_group
|
|
156
|
+
* @param {Uint32Array} dynamic_offsets_data
|
|
157
|
+
* @param {number} data_start
|
|
158
|
+
* @param {number} data_length
|
|
159
|
+
*/
|
|
160
|
+
setBindGroupRange(index, bind_group, dynamic_offsets_data, data_start, data_length) {
|
|
161
|
+
this.#pass.setBindGroup(index, bind_group, dynamic_offsets_data, data_start, data_length);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Rest arguments, so the arity that arrives is the arity that leaves — `data_size` has no
|
|
166
|
+
* default to stand in for, and a trailing `undefined` is not the same as an absent argument.
|
|
167
|
+
* @see setBindGroup
|
|
168
|
+
*
|
|
169
|
+
* @param {number} range_offset
|
|
170
|
+
* @param {ArrayBufferView|ArrayBuffer} data
|
|
171
|
+
* @param {number} [data_offset]
|
|
172
|
+
* @param {number} [data_size]
|
|
173
|
+
*/
|
|
174
|
+
setImmediates(...args) {
|
|
175
|
+
this.#pass.setImmediates(...args);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// --- GPUDebugCommandsMixin ----------------------------------------------
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @param {string} label
|
|
182
|
+
*/
|
|
183
|
+
pushDebugGroup(label) {
|
|
184
|
+
this.#pass.pushDebugGroup(label);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
popDebugGroup() {
|
|
188
|
+
this.#pass.popDebugGroup();
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* @param {string} label
|
|
193
|
+
*/
|
|
194
|
+
insertDebugMarker(label) {
|
|
195
|
+
this.#pass.insertDebugMarker(label);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// --- Shade --------------------------------------------------------------
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Record which pipeline descriptor this pass ran.
|
|
202
|
+
*
|
|
203
|
+
* Separate from {@link setPipeline} because that receives the compiled
|
|
204
|
+
* {@link GPUComputePipeline}, and neither the label the descriptor was given nor its workgroup
|
|
205
|
+
* size is on it. Only `constructComputePass` holds the descriptor, so a pass begun the long way
|
|
206
|
+
* records its counts but not what ran them — which the model represents as an unknown rather
|
|
207
|
+
* than a zero.
|
|
208
|
+
*
|
|
209
|
+
* @param {ComputePipelineDescriptor} descriptor
|
|
210
|
+
* @returns {void}
|
|
211
|
+
*/
|
|
212
|
+
record_pipeline(descriptor) {
|
|
213
|
+
const work = this.#work;
|
|
214
|
+
|
|
215
|
+
if (work === null) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
work.pipeline = descriptor.label ?? "";
|
|
220
|
+
work.workgroup_size = descriptor.workgroup_size;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decorates {@link GPURenderPassEncoder}.
|
|
3
|
+
*
|
|
4
|
+
* The render half of {@link ShadeGPUComputePassEncoder} — see there for why the forwarding is
|
|
5
|
+
* hand-written, why every pass is wrapped rather than only the profiled ones, and what `work` is.
|
|
6
|
+
*
|
|
7
|
+
* **Known blind spot:** draws inside a {@link GPURenderBundle} handed to {@link executeBundles} are
|
|
8
|
+
* not counted, because the bundle was encoded somewhere this pass never saw. The `Proxy` this
|
|
9
|
+
* replaces had the same gap and nothing in Shade uses bundles.
|
|
10
|
+
*
|
|
11
|
+
* @author Alex Goldring
|
|
12
|
+
* @copyright Company Named Limited (c) 2026
|
|
13
|
+
*/
|
|
14
|
+
export class ShadeGPURenderPassEncoder {
|
|
15
|
+
/**
|
|
16
|
+
* @param {GPURenderPassEncoder} pass
|
|
17
|
+
* @param {GPUProfileWork|null} work
|
|
18
|
+
*/
|
|
19
|
+
constructor(pass: GPURenderPassEncoder, work: GPUProfileWork | null);
|
|
20
|
+
/**
|
|
21
|
+
* @param {string} value
|
|
22
|
+
*/
|
|
23
|
+
set label(arg: string);
|
|
24
|
+
/**
|
|
25
|
+
* @returns {string}
|
|
26
|
+
*/
|
|
27
|
+
get label(): string;
|
|
28
|
+
/**
|
|
29
|
+
* @param {number} x
|
|
30
|
+
* @param {number} y
|
|
31
|
+
* @param {number} width
|
|
32
|
+
* @param {number} height
|
|
33
|
+
* @param {number} min_depth
|
|
34
|
+
* @param {number} max_depth
|
|
35
|
+
*/
|
|
36
|
+
setViewport(x: number, y: number, width: number, height: number, min_depth: number, max_depth: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* @param {number} x
|
|
39
|
+
* @param {number} y
|
|
40
|
+
* @param {number} width
|
|
41
|
+
* @param {number} height
|
|
42
|
+
*/
|
|
43
|
+
setScissorRect(x: number, y: number, width: number, height: number): void;
|
|
44
|
+
/**
|
|
45
|
+
* @param {GPUColor} color
|
|
46
|
+
*/
|
|
47
|
+
setBlendConstant(color: GPUColor): void;
|
|
48
|
+
/**
|
|
49
|
+
* @param {number} reference
|
|
50
|
+
*/
|
|
51
|
+
setStencilReference(reference: number): void;
|
|
52
|
+
/**
|
|
53
|
+
* @param {number} query_index
|
|
54
|
+
*/
|
|
55
|
+
beginOcclusionQuery(query_index: number): void;
|
|
56
|
+
endOcclusionQuery(): void;
|
|
57
|
+
/**
|
|
58
|
+
* @param {Iterable<GPURenderBundle>} bundles
|
|
59
|
+
*/
|
|
60
|
+
executeBundles(bundles: Iterable<GPURenderBundle>): void;
|
|
61
|
+
end(): void;
|
|
62
|
+
/**
|
|
63
|
+
* @param {GPURenderPipeline} pipeline
|
|
64
|
+
*/
|
|
65
|
+
setPipeline(pipeline: GPURenderPipeline): void;
|
|
66
|
+
/**
|
|
67
|
+
* Rest arguments, so the arity that arrives is the arity that leaves — `size` has no default to
|
|
68
|
+
* stand in for, it means "the rest of the buffer", and a trailing `undefined` is not the same
|
|
69
|
+
* as an absent argument.
|
|
70
|
+
* @see ShadeGPUComputePassEncoder#setBindGroup
|
|
71
|
+
*
|
|
72
|
+
* @param {GPUBuffer} buffer
|
|
73
|
+
* @param {GPUIndexFormat} index_format
|
|
74
|
+
* @param {number} [offset]
|
|
75
|
+
* @param {number} [size]
|
|
76
|
+
*/
|
|
77
|
+
setIndexBuffer(...args: any[]): void;
|
|
78
|
+
/**
|
|
79
|
+
* Rest arguments, for the reason given on {@link setIndexBuffer}.
|
|
80
|
+
*
|
|
81
|
+
* @param {number} slot
|
|
82
|
+
* @param {GPUBuffer} buffer
|
|
83
|
+
* @param {number} [offset]
|
|
84
|
+
* @param {number} [size]
|
|
85
|
+
*/
|
|
86
|
+
setVertexBuffer(...args: any[]): void;
|
|
87
|
+
/**
|
|
88
|
+
* Named parameters rather than rest arguments, because the counts have to be read — and the
|
|
89
|
+
* defaults are WebGPU's own, so materialising them here passes four defined values instead of
|
|
90
|
+
* a trailing `undefined`. @see ShadeGPUComputePassEncoder#setBindGroup
|
|
91
|
+
*
|
|
92
|
+
* @param {number} vertex_count
|
|
93
|
+
* @param {number} [instance_count=1]
|
|
94
|
+
* @param {number} [first_vertex=0]
|
|
95
|
+
* @param {number} [first_instance=0]
|
|
96
|
+
*/
|
|
97
|
+
draw(vertex_count: number, instance_count?: number, first_vertex?: number, first_instance?: number): void;
|
|
98
|
+
/**
|
|
99
|
+
* Named parameters with WebGPU's own defaults, for the reason given on {@link draw}.
|
|
100
|
+
*
|
|
101
|
+
* @param {number} index_count
|
|
102
|
+
* @param {number} [instance_count=1]
|
|
103
|
+
* @param {number} [first_index=0]
|
|
104
|
+
* @param {number} [base_vertex=0]
|
|
105
|
+
* @param {number} [first_instance=0]
|
|
106
|
+
*/
|
|
107
|
+
drawIndexed(index_count: number, instance_count?: number, first_index?: number, base_vertex?: number, first_instance?: number): void;
|
|
108
|
+
/**
|
|
109
|
+
* @param {GPUBuffer} indirect_buffer
|
|
110
|
+
* @param {number} indirect_offset
|
|
111
|
+
*/
|
|
112
|
+
drawIndirect(indirect_buffer: GPUBuffer, indirect_offset: number): void;
|
|
113
|
+
/**
|
|
114
|
+
* @param {GPUBuffer} indirect_buffer
|
|
115
|
+
* @param {number} indirect_offset
|
|
116
|
+
*/
|
|
117
|
+
drawIndexedIndirect(indirect_buffer: GPUBuffer, indirect_offset: number): void;
|
|
118
|
+
/**
|
|
119
|
+
* @see ShadeGPUComputePassEncoder#setBindGroup for why the third argument is omitted rather
|
|
120
|
+
* than forwarded as `undefined`
|
|
121
|
+
*
|
|
122
|
+
* @param {number} index
|
|
123
|
+
* @param {GPUBindGroup} bind_group
|
|
124
|
+
* @param {number[]} [dynamic_offsets]
|
|
125
|
+
*/
|
|
126
|
+
setBindGroup(index: number, bind_group: GPUBindGroup, dynamic_offsets?: number[]): void;
|
|
127
|
+
/**
|
|
128
|
+
* The `Uint32Array`-slice form of {@link setBindGroup}.
|
|
129
|
+
*
|
|
130
|
+
* @see ShadeGPUComputePassEncoder#setBindGroupRange for why this is named rather than overloaded
|
|
131
|
+
*
|
|
132
|
+
* @param {number} index
|
|
133
|
+
* @param {GPUBindGroup} bind_group
|
|
134
|
+
* @param {Uint32Array} dynamic_offsets_data
|
|
135
|
+
* @param {number} data_start
|
|
136
|
+
* @param {number} data_length
|
|
137
|
+
*/
|
|
138
|
+
setBindGroupRange(index: number, bind_group: GPUBindGroup, dynamic_offsets_data: Uint32Array, data_start: number, data_length: number): void;
|
|
139
|
+
/**
|
|
140
|
+
* Rest arguments, for the reason given on {@link setIndexBuffer}.
|
|
141
|
+
*
|
|
142
|
+
* @param {number} range_offset
|
|
143
|
+
* @param {ArrayBufferView|ArrayBuffer} data
|
|
144
|
+
* @param {number} [data_offset]
|
|
145
|
+
* @param {number} [data_size]
|
|
146
|
+
*/
|
|
147
|
+
setImmediates(...args: any[]): void;
|
|
148
|
+
/**
|
|
149
|
+
* @param {string} label
|
|
150
|
+
*/
|
|
151
|
+
pushDebugGroup(label: string): void;
|
|
152
|
+
popDebugGroup(): void;
|
|
153
|
+
/**
|
|
154
|
+
* @param {string} label
|
|
155
|
+
*/
|
|
156
|
+
insertDebugMarker(label: string): void;
|
|
157
|
+
/**
|
|
158
|
+
* Record which pipeline descriptor this pass ran.
|
|
159
|
+
*
|
|
160
|
+
* @see ShadeGPUComputePassEncoder#record_pipeline
|
|
161
|
+
*
|
|
162
|
+
* @param {RenderPipelineDescriptor} descriptor
|
|
163
|
+
* @returns {void}
|
|
164
|
+
*/
|
|
165
|
+
record_pipeline(descriptor: RenderPipelineDescriptor): void;
|
|
166
|
+
#private;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=ShadeGPURenderPassEncoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShadeGPURenderPassEncoder.d.ts","sourceRoot":"","sources":["../../../../../src/shade/device/pass/ShadeGPURenderPassEncoder.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH;IAmBI;;;OAGG;IACH,8CAFW,iBAAe,IAAI,EAO7B;IASD;;OAEG;IACH,uBAEC;IAZD;;OAEG;IACH,oBAEC;IAWD;;;;;;;OAOG;IACH,eAPW,MAAM,KACN,MAAM,SACN,MAAM,UACN,MAAM,aACN,MAAM,aACN,MAAM,QAIhB;IAED;;;;;OAKG;IACH,kBALW,MAAM,KACN,MAAM,SACN,MAAM,UACN,MAAM,QAIhB;IAED;;OAEG;IACH,wCAEC;IAED;;OAEG;IACH,+BAFW,MAAM,QAIhB;IAED;;OAEG;IACH,iCAFW,MAAM,QAIhB;IAED,0BAEC;IAED;;OAEG;IACH,wBAFW,yBAAyB,QAInC;IAED,YAMC;IAID;;OAEG;IACH,+CAEC;IAED;;;;;;;;;;OAUG;IACH,qCAEC;IAED;;;;;;;OAOG;IACH,sCAEC;IAED;;;;;;;;;OASG;IACH,mBALW,MAAM,mBACN,MAAM,iBACN,MAAM,mBACN,MAAM,QAYhB;IAED;;;;;;;;OAQG;IACH,yBANW,MAAM,mBACN,MAAM,gBACN,MAAM,gBACN,MAAM,mBACN,MAAM,QAYhB;IAED;;;OAGG;IACH,0DAFW,MAAM,QAYhB;IAED;;;OAGG;IACH,iEAFW,MAAM,QAUhB;IAID;;;;;;;OAOG;IACH,oBAJW,MAAM,8CAEN,MAAM,EAAE,QAQlB;IAED;;;;;;;;;;OAUG;IACH,yBANW,MAAM,kDAEN,WAAW,cACX,MAAM,eACN,MAAM,QAIhB;IAED;;;;;;;OAOG;IACH,oCAEC;IAID;;OAEG;IACH,sBAFW,MAAM,QAIhB;IAED,sBAEC;IAED;;OAEG;IACH,yBAFW,MAAM,QAIhB;IAID;;;;;;;OAOG;IACH,uDAFa,IAAI,CAUhB;;CACJ"}
|