@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,182 @@
|
|
|
1
|
+
import { assert } from "../../../core/assert.js";
|
|
2
|
+
import { ShadeGPUComputePassEncoder } from "../pass/ShadeGPUComputePassEncoder.js";
|
|
3
|
+
import { ShadeGPURenderPassEncoder } from "../pass/ShadeGPURenderPassEncoder.js";
|
|
4
|
+
import { GPUTimerArray } from "./GPUTimerArray.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Everything one {@link ShadeGPUCommandContext} needs in order to be profiled: its timer array, the
|
|
8
|
+
* recorder its timings go to, and which query set it is within the frame.
|
|
9
|
+
*
|
|
10
|
+
* **It opens the passes itself.** Two values are needed at two different instants — the
|
|
11
|
+
* `timestampWrites` before the encoder exists, the {@link GPUProfileWork} after — and any shape that
|
|
12
|
+
* hands both back to the caller has to carry them across that gap. The predecessor carried them in a
|
|
13
|
+
* private field on the command context, consumed by whatever ran next, which is the kind of coupling
|
|
14
|
+
* that breaks the moment a line is inserted between the two halves. Handing the profiler the encoder
|
|
15
|
+
* collapses the gap: both values are produced and consumed inside one method and there is nothing to
|
|
16
|
+
* carry.
|
|
17
|
+
*
|
|
18
|
+
* Off by default and constructed only by `enable_profiling`, so a context that is not being profiled
|
|
19
|
+
* holds one null field and allocates no query set.
|
|
20
|
+
*
|
|
21
|
+
* @author Alex Goldring
|
|
22
|
+
* @copyright Company Named Limited (c) 2026
|
|
23
|
+
*/
|
|
24
|
+
export class ShadeGPUContextProfiler {
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @type {GPUTimerArray}
|
|
28
|
+
*/
|
|
29
|
+
#timers;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @type {GPUFrameRecorder}
|
|
33
|
+
*/
|
|
34
|
+
#recorder;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Which query set this context is, within its frame. Carried into every span it records —
|
|
38
|
+
* timestamps from two query sets are not specified to share a clock domain, and a frame has one
|
|
39
|
+
* set per context.
|
|
40
|
+
*
|
|
41
|
+
* @type {number}
|
|
42
|
+
*/
|
|
43
|
+
#query_set_id;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @type {Promise<void>}
|
|
47
|
+
*/
|
|
48
|
+
#absorbed;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @type {function}
|
|
52
|
+
*/
|
|
53
|
+
#absorbed_resolve;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @param {GPUDevice} device
|
|
57
|
+
* @param {GPUFrameRecorder} recorder
|
|
58
|
+
* @param {number} query_set_id this context's index within the frame
|
|
59
|
+
*/
|
|
60
|
+
constructor(device, recorder, query_set_id) {
|
|
61
|
+
assert.defined(device, 'device');
|
|
62
|
+
assert.defined(recorder, 'recorder');
|
|
63
|
+
assert.isNonNegativeInteger(query_set_id, 'query_set_id');
|
|
64
|
+
|
|
65
|
+
this.#timers = new GPUTimerArray(device);
|
|
66
|
+
this.#recorder = recorder;
|
|
67
|
+
this.#query_set_id = query_set_id;
|
|
68
|
+
|
|
69
|
+
this.#absorbed = new Promise(resolve => {
|
|
70
|
+
this.#absorbed_resolve = resolve;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Resolves after this context's timings have been read back and handed to the recorder.
|
|
76
|
+
*
|
|
77
|
+
* @returns {Promise<void>}
|
|
78
|
+
*/
|
|
79
|
+
get absorbed() {
|
|
80
|
+
return this.#absorbed;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @param {GPUCommandEncoder} encoder
|
|
85
|
+
* @param {GPUComputePassDescriptor} [descriptor]
|
|
86
|
+
* @returns {ShadeGPUComputePassEncoder}
|
|
87
|
+
*/
|
|
88
|
+
begin_compute_pass(encoder, descriptor) {
|
|
89
|
+
const writes = this.#timers.getComputeWrites(descriptor?.label);
|
|
90
|
+
|
|
91
|
+
if (writes === undefined) {
|
|
92
|
+
return new ShadeGPUComputePassEncoder(encoder.beginComputePass(descriptor), null);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const gpu_pass = encoder.beginComputePass(this.#timed(descriptor, writes));
|
|
96
|
+
|
|
97
|
+
return new ShadeGPUComputePassEncoder(gpu_pass, this.#note_slot(writes));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @param {GPUCommandEncoder} encoder
|
|
102
|
+
* @param {GPURenderPassDescriptor} descriptor
|
|
103
|
+
* @returns {ShadeGPURenderPassEncoder}
|
|
104
|
+
*/
|
|
105
|
+
begin_render_pass(encoder, descriptor) {
|
|
106
|
+
const writes = this.#timers.getRenderWrites(descriptor?.label);
|
|
107
|
+
|
|
108
|
+
if (writes === undefined) {
|
|
109
|
+
return new ShadeGPURenderPassEncoder(encoder.beginRenderPass(descriptor), null);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const gpu_pass = encoder.beginRenderPass(this.#timed(descriptor, writes));
|
|
113
|
+
|
|
114
|
+
return new ShadeGPURenderPassEncoder(gpu_pass, this.#note_slot(writes));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* The descriptor a timed pass should be begun with.
|
|
119
|
+
*
|
|
120
|
+
* A copy, never a write-through. Several call sites reuse one descriptor across passes, and
|
|
121
|
+
* stamping `timestampWrites` onto it left the next pass carrying the previous pass's query
|
|
122
|
+
* indices. `{...undefined}` is `{}`, which is also how the no-descriptor form of
|
|
123
|
+
* `beginComputePass` stays legal.
|
|
124
|
+
*
|
|
125
|
+
* @param {GPUComputePassDescriptor|GPURenderPassDescriptor} [descriptor]
|
|
126
|
+
* @param {GPUComputePassTimestampWrites|GPURenderPassTimestampWrites} writes
|
|
127
|
+
* @returns {GPUComputePassDescriptor|GPURenderPassDescriptor}
|
|
128
|
+
*/
|
|
129
|
+
#timed(descriptor, writes) {
|
|
130
|
+
return { ...descriptor, timestampWrites: writes };
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Tell the recorder which graph pass owns the slot just claimed.
|
|
135
|
+
*
|
|
136
|
+
* The one moment the join can be made. The recorder knows which frame graph pass is executing
|
|
137
|
+
* right now; the slot is what the timings will come back keyed by. Neither fact is recoverable
|
|
138
|
+
* later — see {@link GPUFrameRecorder}.
|
|
139
|
+
*
|
|
140
|
+
* @param {GPUComputePassTimestampWrites|GPURenderPassTimestampWrites} writes
|
|
141
|
+
* @returns {GPUProfileWork|null} null below {@link GPUProfileLevel.WORKLOAD}
|
|
142
|
+
*/
|
|
143
|
+
#note_slot(writes) {
|
|
144
|
+
return this.#recorder.note_pass_slot(
|
|
145
|
+
this.#query_set_id,
|
|
146
|
+
writes.beginningOfPassWriteIndex / 2
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* @param {GPUCommandEncoder} encoder
|
|
152
|
+
* @returns {void}
|
|
153
|
+
*/
|
|
154
|
+
resolve(encoder) {
|
|
155
|
+
this.#timers.resolve(encoder);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Read the timings back and hand them to the recorder. Resolves {@link absorbed} either way.
|
|
160
|
+
*
|
|
161
|
+
* @returns {void}
|
|
162
|
+
*/
|
|
163
|
+
absorb() {
|
|
164
|
+
const timers = this.#timers;
|
|
165
|
+
|
|
166
|
+
timers
|
|
167
|
+
.download_results()
|
|
168
|
+
.then(() => {
|
|
169
|
+
this.#recorder.absorb(timers, this.#query_set_id);
|
|
170
|
+
})
|
|
171
|
+
.finally(() => {
|
|
172
|
+
timers.destroy();
|
|
173
|
+
|
|
174
|
+
/*
|
|
175
|
+
In `finally` so a failed readback still releases whoever is waiting on the frame. A
|
|
176
|
+
profile session that hangs because one download rejected is worse than one missing a
|
|
177
|
+
frame.
|
|
178
|
+
*/
|
|
179
|
+
this.#absorbed_resolve();
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
* application that never mentions the profiler does not carry any of it. The feature ships without
|
|
21
21
|
* a build flag, a strip-plugin interaction, or a dead branch anyone has to keep honest.
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
* {@link
|
|
25
|
-
*
|
|
26
|
-
* is. What remains in the engine
|
|
23
|
+
* Nothing under this directory is linked unconditionally. The pass encoders count dispatches into a
|
|
24
|
+
* {@link GPUProfileWork} when handed one, but they hold it as a bag of counters and never name the
|
|
25
|
+
* type; the workgroup size they record comes off {@link ComputePipelineDescriptor}, which reads it
|
|
26
|
+
* as its code is set. What remains in the engine is a nullable field and the null checks around it.
|
|
27
27
|
*
|
|
28
28
|
* Recording is an **open-ended forward stream**: `frame_limit` defaults to `Infinity` and
|
|
29
29
|
* everything captured is kept. There is no ring buffer. Uncapped means a per-frame cost is also a
|
|
@@ -43,10 +43,10 @@ const DEFAULT_BYTE_BUDGET = 512 * 1024 * 1024;
|
|
|
43
43
|
* application that never mentions the profiler does not carry any of it. The feature ships without
|
|
44
44
|
* a build flag, a strip-plugin interaction, or a dead branch anyone has to keep honest.
|
|
45
45
|
*
|
|
46
|
-
*
|
|
47
|
-
* {@link
|
|
48
|
-
*
|
|
49
|
-
* is. What remains in the engine
|
|
46
|
+
* Nothing under this directory is linked unconditionally. The pass encoders count dispatches into a
|
|
47
|
+
* {@link GPUProfileWork} when handed one, but they hold it as a bag of counters and never name the
|
|
48
|
+
* type; the workgroup size they record comes off {@link ComputePipelineDescriptor}, which reads it
|
|
49
|
+
* as its code is set. What remains in the engine is a nullable field and the null checks around it.
|
|
50
50
|
*
|
|
51
51
|
* Recording is an **open-ended forward stream**: `frame_limit` defaults to `Infinity` and
|
|
52
52
|
* everything captured is kept. There is no ring buffer. Uncapped means a per-frame cost is also a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_blas_audit_leaf_triangles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js"],"names":[],"mappings":"AAqBA,2CAA4C;
|
|
1
|
+
{"version":3,"file":"shader_blas_audit_leaf_triangles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js"],"names":[],"mappings":"AAqBA,2CAA4C;AA8D5C;;;;;;;;;;;;;;;;GAgBG;AACH,+CAFU,aAAa,CAMpB;8BArG2B,wCAAwC"}
|
|
@@ -22,8 +22,10 @@ import {
|
|
|
22
22
|
export const BLAS_AUDIT_WORKGROUP_SIZE = 64;
|
|
23
23
|
|
|
24
24
|
const resources = new ShaderResourceSetDescriptor();
|
|
25
|
+
|
|
26
|
+
// per-dispatch, 16 bytes, read-only: immediate data rather than a uniform buffer
|
|
27
|
+
resources.setImmediate("settings", BLAS_LEAF_BOUNDS_SETTINGS_STRUCT);
|
|
25
28
|
resources.createGroup()
|
|
26
|
-
.addUniform("settings", BLAS_LEAF_BOUNDS_SETTINGS_STRUCT)
|
|
27
29
|
.addStorageBuffer("leaf_nodes", WebGPUArray.from(u32), false)
|
|
28
30
|
.addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT), false)
|
|
29
31
|
.addStorageBuffer("meshlet_metadata", WebGPUArray.from(MESHLET_METADATA_STRUCT), false)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_blas_audit_points.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js"],"names":[],"mappings":"AAkBA,4CAA6C;AAE7C;;GAEG;AACH,0CAFU,YAAY,CAOG;
|
|
1
|
+
{"version":3,"file":"shader_blas_audit_points.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js"],"names":[],"mappings":"AAkBA,4CAA6C;AAE7C;;GAEG;AACH,0CAFU,YAAY,CAOG;AAgDzB;;;;;;;;;;;;;GAaG;AACH,uCAFU,aAAa,CAMpB;6BA5F0B,4CAA4C;8BAE3C,wCAAwC"}
|
|
@@ -29,8 +29,10 @@ export const BLAS_POINTS_SETTINGS_STRUCT = WebGPUStruct.from({
|
|
|
29
29
|
}, "BlasPointsSettings");
|
|
30
30
|
|
|
31
31
|
const resources = new ShaderResourceSetDescriptor();
|
|
32
|
+
|
|
33
|
+
// per-dispatch, 32 bytes, read-only: immediate data rather than a uniform buffer
|
|
34
|
+
resources.setImmediate("settings", BLAS_POINTS_SETTINGS_STRUCT);
|
|
32
35
|
resources.createGroup()
|
|
33
|
-
.addUniform("settings", BLAS_POINTS_SETTINGS_STRUCT)
|
|
34
36
|
// three f32 per point, in the geometry's own space
|
|
35
37
|
.addStorageBuffer("targets", WebGPUArray.from(f32), false)
|
|
36
38
|
.addStorageBuffer("blas_lookup", WebGPUArray.from(u32), false)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_blas_audit_visibility.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js"],"names":[],"mappings":"AAyBA,gDAAiD;AAEjD;;GAEG;AACH,8CAFU,YAAY,CASO;
|
|
1
|
+
{"version":3,"file":"shader_blas_audit_visibility.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js"],"names":[],"mappings":"AAyBA,gDAAiD;AAEjD;;GAEG;AACH,8CAFU,YAAY,CASO;AA4E7B;;;;;;;;;;;;;;;;GAgBG;AACH,2CAFU,aAAa,CAMpB;6BApI0B,4CAA4C;8BAE3C,wCAAwC"}
|
|
@@ -38,8 +38,10 @@ export const BLAS_VISIBILITY_SETTINGS_STRUCT = WebGPUStruct.from({
|
|
|
38
38
|
}, "BlasVisibilitySettings");
|
|
39
39
|
|
|
40
40
|
const resources = new ShaderResourceSetDescriptor();
|
|
41
|
+
|
|
42
|
+
// per-dispatch, 32 bytes, read-only: immediate data rather than a uniform buffer
|
|
43
|
+
resources.setImmediate("settings", BLAS_VISIBILITY_SETTINGS_STRUCT);
|
|
41
44
|
resources.createGroup()
|
|
42
|
-
.addUniform("settings", BLAS_VISIBILITY_SETTINGS_STRUCT)
|
|
43
45
|
.addStorageBuffer("leaf_nodes", WebGPUArray.from(u32), false)
|
|
44
46
|
.addStorageBuffer("blas_lookup", WebGPUArray.from(u32), false)
|
|
45
47
|
.addStorageBuffer("blas_data", WebGPUArray.from(BVH2_NODE_STRUCT), false)
|
|
@@ -106,12 +106,12 @@ export async function verify_leaf_triangles({
|
|
|
106
106
|
encoder: cmd,
|
|
107
107
|
thread_count_x: leaf_count,
|
|
108
108
|
bindings: {
|
|
109
|
-
settings:
|
|
109
|
+
settings: {
|
|
110
110
|
leaf_count,
|
|
111
111
|
node_word_offset,
|
|
112
112
|
leaf_nodes_offset,
|
|
113
113
|
geometry_index,
|
|
114
|
-
}
|
|
114
|
+
},
|
|
115
115
|
leaf_nodes: blas.buffer_leaf_nodes,
|
|
116
116
|
geometries: geometries.buffer_metadata,
|
|
117
117
|
meshlet_metadata: meshlets.buffer_metadata,
|
|
@@ -170,14 +170,14 @@ export async function verify_traversal_reachability({
|
|
|
170
170
|
encoder: cmd,
|
|
171
171
|
thread_count_x: leaf_count,
|
|
172
172
|
bindings: {
|
|
173
|
-
settings:
|
|
173
|
+
settings: {
|
|
174
174
|
origin,
|
|
175
175
|
leaf_count,
|
|
176
176
|
node_word_offset,
|
|
177
177
|
leaf_nodes_offset,
|
|
178
178
|
geometry_index,
|
|
179
179
|
tmax: 1e12,
|
|
180
|
-
}
|
|
180
|
+
},
|
|
181
181
|
leaf_nodes: blas.buffer_leaf_nodes,
|
|
182
182
|
blas_lookup: blas.buffer_metadata,
|
|
183
183
|
blas_data: blas.buffer_data,
|
|
@@ -198,11 +198,6 @@ export class Renderer {
|
|
|
198
198
|
*/
|
|
199
199
|
onDeviceFailure: any;
|
|
200
200
|
onFrameFinished: Signal;
|
|
201
|
-
/**
|
|
202
|
-
* First argument is frame index, second is table of debug data
|
|
203
|
-
* @type {Signal<number, Object[]>}
|
|
204
|
-
*/
|
|
205
|
-
onFrameDebug: any;
|
|
206
201
|
/**
|
|
207
202
|
*
|
|
208
203
|
* @param {number} v
|
|
@@ -296,7 +291,6 @@ export class Renderer {
|
|
|
296
291
|
* @returns {number} how many extensions are registered on `phase`
|
|
297
292
|
*/
|
|
298
293
|
extension_count(phase: FramePhase): number;
|
|
299
|
-
add_debug_frame(count?: number): void;
|
|
300
294
|
/**
|
|
301
295
|
*
|
|
302
296
|
* @param {Scene} scene
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"AA4FA;IAOI,0BAEC;IAED;;OAEG;IACH,0BAAQ;IAER;;;;;;OAMG;IACH,kDAEC;IAED;;OAEG;IACH,kBAAO;IAYP;;;OAGG;IACH,2BAEC;IAaD,0CAGC;IAED,uCAEC;IAED;;;;OAIG;IACH,wBAFU,yBAAyB,CAEoB;IAEvD,6BAA4B;IAC5B,8BAA4B;IAC5B;;;;OAIG;IACH,mCAAkC;IAClC;;;;;;;OAOG;IACH,mCAFU,OAAO,CAEyB;IAC1C,+BAA6B;IAC7B,4CAA0C;IAkB1C,uCAKC;IArBD;;;;;;;;;;OAUG;IACH,oCAGC;IASD;;;;;;;OAOG;IACH,0BAFU,OAAO,CAEe;IAQhC;;;;;OAKG;IACH,sCAOC;IAjBD,mCAEC;IAiBD;;;;;;;;;OASG;IACH,6BAFU,OAAO,CAEmB;IAWpC;;;;;OAKG;IACH,8BAA+C;IAE/C;;;;;;;;OAQG;IACH,6BAFU,OAAO,CAEmB;IAEpC;;;;;;;;;;;;;;OAcG;IACH,8BAFU,OAAO,CAEoB;IAErC;;;;;;;;;;OAUG;IACH,qBAFU,OAAO,CAEW;IAU5B;;;;;OAKG;IACH,wBAA0C;IAE1C;;;;;;;;OAQG;IACH,eAFU,UAAU,GAAC,QAAQ,CAEF;IAU3B;;;;OAIG;IACH,gCAAwD;IAExD;;;;;;;;;;;;OAYG;IACH,gBAFU,OAAO,CAEK;IAEtB;;;OAGG;IACH,4BAFU,OAAO,CAEiB;IAKlC;;;OAGG;IACH,yBAEC;IAOD;;;OAGG;IACH,gCAEC;IAcD;;;;;;;;;OASG;IACH,qBAA+B;IAE/B,wBAA+B;
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"AA4FA;IAOI,0BAEC;IAED;;OAEG;IACH,0BAAQ;IAER;;;;;;OAMG;IACH,kDAEC;IAED;;OAEG;IACH,kBAAO;IAYP;;;OAGG;IACH,2BAEC;IAaD,0CAGC;IAED,uCAEC;IAED;;;;OAIG;IACH,wBAFU,yBAAyB,CAEoB;IAEvD,6BAA4B;IAC5B,8BAA4B;IAC5B;;;;OAIG;IACH,mCAAkC;IAClC;;;;;;;OAOG;IACH,mCAFU,OAAO,CAEyB;IAC1C,+BAA6B;IAC7B,4CAA0C;IAkB1C,uCAKC;IArBD;;;;;;;;;;OAUG;IACH,oCAGC;IASD;;;;;;;OAOG;IACH,0BAFU,OAAO,CAEe;IAQhC;;;;;OAKG;IACH,sCAOC;IAjBD,mCAEC;IAiBD;;;;;;;;;OASG;IACH,6BAFU,OAAO,CAEmB;IAWpC;;;;;OAKG;IACH,8BAA+C;IAE/C;;;;;;;;OAQG;IACH,6BAFU,OAAO,CAEmB;IAEpC;;;;;;;;;;;;;;OAcG;IACH,8BAFU,OAAO,CAEoB;IAErC;;;;;;;;;;OAUG;IACH,qBAFU,OAAO,CAEW;IAU5B;;;;;OAKG;IACH,wBAA0C;IAE1C;;;;;;;;OAQG;IACH,eAFU,UAAU,GAAC,QAAQ,CAEF;IAU3B;;;;OAIG;IACH,gCAAwD;IAExD;;;;;;;;;;;;OAYG;IACH,gBAFU,OAAO,CAEK;IAEtB;;;OAGG;IACH,4BAFU,OAAO,CAEiB;IAKlC;;;OAGG;IACH,yBAEC;IAOD;;;OAGG;IACH,gCAEC;IAcD;;;;;;;;;OASG;IACH,qBAA+B;IAE/B,wBAA+B;IAgB/B;;;OAGG;IACH,2CAeC;IAED;;;OAGG;IACH,wCAEC;IA0BD;;;OAGG;IACH,iCAEC;IAED;;;;OAIG;IACH,2BAEC;IAQD;;;OAGG;IACH,+CAIC;IAED;;;OAGG;IACH,gDAIC;IAwCD;;;OAGG;IACH,6BAcC;IA1BD;;;OAGG;IACH,0BAEC;IAsBD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAFU,oBAAkB,IAAI,CAET;IAEvB;;OAEG;IACH;;;;;;;;;;;;;;OAcG;IACH,2DAEC;IAED;;;;;OAKG;IACH,8CAFa,OAAO,CAInB;IAED;;;OAGG;IACH,uBAHW,UAAU,GACR,MAAM,CAIlB;IAgBD;;;;OAIG;IACH,iCAFY,gBAAgB,CAW3B;IAED;;;OAGG;IACH,6BAYC;IAED;;;;OAIG;IACH,wCAFa,2BAA2B,CAcvC;IAGD;;;OAGG;IACH,+BAuBC;IAmMD;;;;OAIG;IACH,0BAEC;IAgBD;;;;;;OAMG;IACH,cAFU,iBAAiB,CAEU;IAErC;;;;;;OAMG;IACH,eAgBC;IAiFD;;;;;OAKG;IACH,+EA0NC;IAED;;OAEG;IACH,gBAGC;IAQD,4BAwBC;IAqID;;;;;OAKG;IACH,UAHW,MAAM,KACN,MAAM,QAgBhB;IAoFD,0CAMC;IAED;;;;;;;;;;OAUG;IACH,qEAHW,MAAM,GACJ,OAAO,CAsBnB;IAED;;;;;;;;;;;;;;;OAeG;IACH,8EAJW,MAAM,UACN,iBAAiB,GACf,OAAO,CAu2BnB;;CACJ;6BA74E4B,yBAAyB;0CACZ,gCAAgC;2BApB/C,yCAAyC;6BAFvC,4CAA4C;8BAD3C,2CAA2C;4BAiC7C,uBAAuB;gCAtCnB,sBAAsB;mBArCnC,oCAAoC;oBACnC,4BAA4B;kCAuEd,gCAAgC;2BApDvC,2BAA2B;iCAkDrB,0CAA0C;4CApC/B,+DAA+D;yBA6BlF,yBAAyB;kCAMhB,wBAAwB;oBAvBtC,0BAA0B;uCAPP,sDAAsD"}
|
|
@@ -424,13 +424,6 @@ export class Renderer {
|
|
|
424
424
|
|
|
425
425
|
onFrameFinished = new Signal();
|
|
426
426
|
|
|
427
|
-
/**
|
|
428
|
-
* First argument is frame index, second is table of debug data
|
|
429
|
-
* @type {Signal<number, Object[]>}
|
|
430
|
-
*/
|
|
431
|
-
onFrameDebug = new Signal();
|
|
432
|
-
|
|
433
|
-
|
|
434
427
|
/**
|
|
435
428
|
* Fraction of the output resolution.
|
|
436
429
|
* Controls {@link #internal_resolution}.
|
|
@@ -599,12 +592,6 @@ export class Renderer {
|
|
|
599
592
|
this.#update_resolution();
|
|
600
593
|
}
|
|
601
594
|
|
|
602
|
-
/**
|
|
603
|
-
* How many future frames should be debugged
|
|
604
|
-
* @type {number}
|
|
605
|
-
*/
|
|
606
|
-
#debug_frame_count = 0;
|
|
607
|
-
|
|
608
595
|
/**
|
|
609
596
|
* The profile recording to feed, or null.
|
|
610
597
|
*
|
|
@@ -668,12 +655,6 @@ export class Renderer {
|
|
|
668
655
|
}
|
|
669
656
|
|
|
670
657
|
|
|
671
|
-
add_debug_frame(count = 1) {
|
|
672
|
-
assert.isNonNegativeInteger(count, 'count');
|
|
673
|
-
|
|
674
|
-
this.#debug_frame_count += count;
|
|
675
|
-
}
|
|
676
|
-
|
|
677
658
|
/**
|
|
678
659
|
*
|
|
679
660
|
* @type {Map<Scene, GPULightProbeVolumeRenderer>}
|
|
@@ -1733,16 +1714,6 @@ export class Renderer {
|
|
|
1733
1714
|
"Renderer/main-0"
|
|
1734
1715
|
);
|
|
1735
1716
|
|
|
1736
|
-
if (this.#debug_frame_count > 0) {
|
|
1737
|
-
this.#debug_frame_count--;
|
|
1738
|
-
|
|
1739
|
-
const current_frame = this.#frame_count;
|
|
1740
|
-
|
|
1741
|
-
command_ctx.enable_debug_timers((table) => {
|
|
1742
|
-
this.onFrameDebug.send2(current_frame, table);
|
|
1743
|
-
});
|
|
1744
|
-
}
|
|
1745
|
-
|
|
1746
1717
|
/**
|
|
1747
1718
|
* The frame recorder for this frame, or null when nothing is profiling.
|
|
1748
1719
|
* @type {GPUFrameRecorder|null}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUAnimationManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/GPUAnimationManager.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUAnimationManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/GPUAnimationManager.js"],"names":[],"mappings":"AA4HA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;IAyMI;;;;OAIG;IACH,sCAHW,MAAM,kCAgBhB;IAED;;OAEG;IACH,4BAEC;IAED;;;;;;;;;;;;OAYG;IACH,gCAEC;IAED;;;;;;;;;;OAUG;IACH,qCAEC;IAED;;;;;;OAMG;IACH,gCAEC;IAED;;;;;;;;;;OAUG;IACH,mCAEC;IAED;;;;;;;;;;;;OAYG;IACH,4CAFW,MAAM,QA6BhB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAK3D;IAED;;;;;;;;;;;;OAYG;IACH,gCAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;;;;;;;;;;OAWG;IACH,kCAFa,MAAM,CA+BlB;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAJW;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAEhD,MAAM,CA2BlB;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH;eAPc,MAAM;qBACA,MAAM;mBACR,MAAM;kBACP,MAAM;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAEhE,MAAM,CAkElB;IAgCD;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAHW,MAAM,QACN,MAAM,QAKhB;IAED;;;;;;;;OAQG;IACH,2BAHW,MAAM,QACN,MAAM,QAKhB;IAED;;;;;;;;;;;;;;OAcG;IACH,6BAHW,MAAM,UACN,MAAM,QAKhB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mBAHW,MAAM,SACN,MAAM,QAShB;IAED;;;;;;;OAOG;IACH,qBAHW,MAAM,SACN,MAAM,QAShB;IAED;;;;;;;;;;;OAWG;IACH,eAFW,MAAM,QAShB;IAED;;;;;;;;;OASG;IACH,cAFW,MAAM,QAShB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH;gBAJe,MAAM;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAAA;SAAE,CAAC;QAEhE,MAAM,CAoElB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,2BAFa,MAAM,CA4ElB;IA8ED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,yCAFa,MAAM,CAyDlB;IAwDD;;;;;;;;;;;;;;;OAeG;IACH,yBAFW,MAAM,QAkChB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,yBAFW,MAAM,QA2ChB;IA0FD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,8CAIC;IAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,iEA2CC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,kDAFW,MAAM,QAgChB;IA8FD,gBAYC;;CACJ;4BArtD2B,gCAAgC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
2
|
import { FrameGraph } from "../../../engine/graphics/render/frame_graph/FrameGraph.js";
|
|
3
|
-
import { f32 } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
4
3
|
import { GPUDatabase } from "../buffer/table/GPUDatabase.js";
|
|
5
4
|
import {
|
|
6
5
|
graph_scene_update_transform_hierarchy
|
|
@@ -1663,12 +1662,11 @@ export class GPUAnimationManager {
|
|
|
1663
1662
|
.get('animation_clips')
|
|
1664
1663
|
.dispatch_group_count(ANIMATION_TICK_WORKGROUP_SIZE);
|
|
1665
1664
|
if (tick_groups > 0) {
|
|
1666
|
-
const dt_buffer = cmd_ctx.allocateTransientValueBuffer(f32, dt);
|
|
1667
1665
|
shader_animation_tick.dispatch({
|
|
1668
1666
|
encoder: cmd_ctx,
|
|
1669
1667
|
group_count_x: tick_groups,
|
|
1670
1668
|
bindings: {
|
|
1671
|
-
dt
|
|
1669
|
+
dt,
|
|
1672
1670
|
animation_database: this.#database.buffer,
|
|
1673
1671
|
},
|
|
1674
1672
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_animation_tick.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/shader_animation_tick.js"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,gCAAiC;
|
|
1
|
+
{"version":3,"file":"shader_animation_tick.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/shader_animation_tick.js"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,gCAAiC;AA0FjC;;;;;;;;;;;;;;;;GAgBG;AACH,kDAIG;8BA5H2B,4BAA4B"}
|