@woosh/meep-engine 3.47.0 → 3.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts +1 -2
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.js +2 -4
- package/editor/view/particles/effect/ParticleGraphEditorView.js +1 -1
- package/package.json +1 -1
- package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +27 -11
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +11 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +2 -2
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +7 -7
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts +8 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.js +11 -3
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts +26 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts.map +1 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.js +91 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +2 -2
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +8 -1
- package/src/engine/graphics3/ParticipatingMedia.d.ts +84 -1
- package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMedia.js +139 -5
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts +6 -2
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.js +29 -4
- package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.d.ts +10 -0
- package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.js +38 -0
- package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMediaSystem.js +46 -3
- package/src/engine/network/NetworkSession.d.ts +16 -5
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +104 -7
- package/src/engine/network/README.md +27 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +40 -18
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +180 -190
- package/src/engine/network/replication/Replicator.d.ts +15 -4
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +50 -16
- package/src/engine/network/state/RecordArrivalRing.d.ts +57 -0
- package/src/engine/network/state/RecordArrivalRing.d.ts.map +1 -0
- package/src/engine/network/state/RecordArrivalRing.js +144 -0
- package/src/engine/physics/cloth/MEASUREMENTS.md +354 -0
- package/src/engine/physics/cloth/PLAN.md +85 -5
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +0 -12
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +0 -13
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +2 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +7 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +4 -15
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts +2 -1
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.js +6 -1
- package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_build_rows.js +20 -10
- package/src/engine/physics/cloth/playground/collide.html +5 -3
- package/src/engine/physics/cloth/playground/collide_main.js +14 -13
- package/src/engine/physics/cloth/solver/ClothState.d.ts +30 -2
- package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/ClothState.js +62 -4
- package/src/engine/physics/cloth/solver/cloth_self_find.d.ts +11 -3
- package/src/engine/physics/cloth/solver/cloth_self_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_self_find.js +52 -11
- package/src/engine/physics/cloth/solver/cloth_self_radius.d.ts +42 -0
- package/src/engine/physics/cloth/solver/cloth_self_radius.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_self_radius.js +64 -0
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts +99 -24
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solver_constants.js +102 -25
- package/src/engine/physics/cloth/solver/cloth_step.d.ts +5 -1
- package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step.js +13 -3
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts +0 -1
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step_instance.js +12 -14
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts +23 -4
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +36 -8
- package/src/engine/physics/cloth/solver/constraint/cloth_self_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_self_row.js +4 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts +15 -0
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +21 -0
- package/src/shade/device/pipeline/ComputePipelineManager.d.ts +20 -0
- package/src/shade/device/pipeline/ComputePipelineManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/ComputePipelineManager.js +80 -6
- package/src/shade/device/pipeline/PipelineEnquiry.d.ts +52 -0
- package/src/shade/device/pipeline/PipelineEnquiry.d.ts.map +1 -0
- package/src/shade/device/pipeline/PipelineEnquiry.js +63 -0
- package/src/shade/device/pipeline/RenderPipelineManager.d.ts +21 -0
- package/src/shade/device/pipeline/RenderPipelineManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/RenderPipelineManager.js +84 -4
- package/src/shade/playground/contact_shadows/ContactShadowLab.d.ts +137 -0
- package/src/shade/playground/contact_shadows/ContactShadowLab.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/ContactShadowLab.js +654 -0
- package/src/shade/playground/contact_shadows/README.md +126 -0
- package/src/shade/playground/contact_shadows/index.html +191 -0
- package/src/shade/playground/contact_shadows/main.d.ts +2 -0
- package/src/shade/playground/contact_shadows/main.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/main.js +888 -0
- package/src/shade/playground/contact_shadows/scenes.d.ts +48 -0
- package/src/shade/playground/contact_shadows/scenes.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/scenes.js +620 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts +36 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.js +245 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts +15 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.js +120 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_stats.d.ts +55 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_stats.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_stats.js +216 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_view.d.ts +20 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_view.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_view.js +114 -0
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts +11 -0
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.js +90 -0
- package/src/shade/playground/contact_shadows/textures.d.ts +16 -0
- package/src/shade/playground/contact_shadows/textures.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/textures.js +123 -0
- package/src/shade/playground/particle_ecs/README.md +1 -1
- package/src/shade/playground/particle_ecs/effects/flame.json +1932 -1881
- package/src/shade/playground/particle_ecs/effects/smoke.json +99 -1
- package/src/shade/playground/particle_ecs/effects/soot.json +152 -145
- package/src/shade/playground/tonemap_sdr/README.md +90 -0
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.d.ts +105 -0
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.js +380 -0
- package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.d.ts +32 -0
- package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.js +104 -0
- package/src/shade/playground/tonemap_sdr/index.html +90 -0
- package/src/shade/playground/tonemap_sdr/main.d.ts +2 -0
- package/src/shade/playground/tonemap_sdr/main.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/main.js +306 -0
- package/src/shade/playground/tonemap_sdr/scenes.d.ts +26 -0
- package/src/shade/playground/tonemap_sdr/scenes.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/scenes.js +404 -0
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +85 -4
- package/src/shade/playground/water_refraction/README.md +26 -18
- package/src/shade/playground/water_refraction/index.html +1 -1
- package/src/shade/renderer/Renderer.d.ts +35 -3
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +208 -12
- package/src/shade/renderer/ShadeToneMappingMode.d.ts +14 -0
- package/src/shade/renderer/ShadeToneMappingMode.d.ts.map +1 -0
- package/src/shade/renderer/ShadeToneMappingMode.js +30 -0
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +9 -0
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +14 -0
- 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 +5 -3
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts +7 -0
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +12 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts +8 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +12 -0
- package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
- package/src/shade/renderer/camera/GPUCameraContext.js +19 -8
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.js +4 -0
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.js +4 -0
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.js +4 -0
- package/src/shade/renderer/deferred/shader_deferred_main.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_deferred_main.js +3 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts +6 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR.js +13 -3
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts +9 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.js +63 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts +10 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.js +87 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts +6 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_tonemap_LDR.js +23 -5
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts +9 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.js +68 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts +10 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.js +73 -0
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +58 -9
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +35 -25
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +97 -196
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +121 -129
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +3 -0
- 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 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.js +4 -0
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +3 -0
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +4 -0
- package/src/shade/renderer/global_illumination/probe/octahedral/graph_sample_light_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/graph_sample_light_probes.js +4 -0
- package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js +4 -0
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +131 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +7 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +45 -38
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +2 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +81 -79
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +2 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +5 -3
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.d.ts +21 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.js +42 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.d.ts +19 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.js +44 -0
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +23 -5
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +139 -23
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts +25 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.js +179 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +2 -2
- 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 +7 -16
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +3 -4
- 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 +6 -23
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts +11 -0
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js +14 -3
- package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.d.ts +10 -0
- package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.js +13 -3
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts +10 -0
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.js +14 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.d.ts +26 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.js +52 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.d.ts +32 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.js +89 -0
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +10 -0
- 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 +20 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +10 -0
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +294 -281
- package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +18 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts +8 -0
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +234 -218
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts +7 -0
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +13 -0
- package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts +7 -0
- package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_build_light_clusters.js +16 -2
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts +10 -0
- 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 +13 -0
- package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/GPULightMap.js +3 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +4 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +4 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts +16 -4
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +38 -8
- package/src/shade/renderer/particles/DESIGN.md +49 -7
- package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +453 -0
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +5 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +13 -5
- package/src/shade/renderer/particles/data/particle_emitter_record.js +2 -2
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +12 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts +60 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +156 -0
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +2 -2
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +8 -8
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +6 -4
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +7 -6
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +91 -58
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +10 -0
- 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 +5 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +6 -0
- package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts +7 -0
- package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.js +18 -0
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.js +1 -0
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.js +6 -4
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +11 -0
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +16 -0
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +10 -0
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +16 -0
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +32 -10
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +3 -0
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.js +6 -3
- package/src/shade/renderer/postprocess/taa/TAA.d.ts +12 -0
- package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/TAA.js +15 -0
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +7 -0
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +13 -0
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts +31 -3
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.js +79 -4
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +17 -0
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +35 -4
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts +7 -0
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +182 -169
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.js +20 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js +18 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.js +20 -1
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts +7 -0
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +187 -170
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.js +19 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts +13 -0
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +25 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +20 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.js +6 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.js +6 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +3 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +3 -2
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +7 -2
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +12 -4
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.js +4 -3
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.js +4 -3
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts +2 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +11 -3
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +4 -3
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +4 -3
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts +15 -0
- 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 +35 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts +14 -0
- 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 +32 -4
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +17 -0
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +34 -4
- package/src/shade/renderer/restir/di/chunk_restir_resolve.d.ts +5 -3
- package/src/shade/renderer/restir/di/chunk_restir_resolve.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/chunk_restir_resolve.js +8 -3
- package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/graph_restir_di.js +1 -0
- 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 +5 -1
- package/src/shade/renderer/restir/reservoir/shader.d.ts.map +1 -1
- package/src/shade/renderer/restir/reservoir/shader.js +7 -4
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +7 -0
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +13 -1
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +10 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +19 -0
- package/src/shade/renderer/scene/SceneManager.d.ts +9 -0
- package/src/shade/renderer/scene/SceneManager.d.ts.map +1 -1
- package/src/shade/renderer/scene/SceneManager.js +11 -0
- package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.d.ts +11 -0
- package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.js +17 -0
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts +11 -0
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js +18 -1
- package/src/shade/renderer/shader/ComputeShader.d.ts +12 -0
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +53 -0
- package/src/shade/renderer/shader/ImageShader.d.ts +27 -8
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +70 -1
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts +21 -0
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/ShaderDescriptor.js +71 -1
- package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.js +45 -0
- package/src/shade/renderer/shader/chunk/camera/chunk_screen_coordinate_to_view.js +3 -3
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts +1 -1
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js +62 -62
- package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +318 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +237 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js +22 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.d.ts +14 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.js +28 -15
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js +128 -110
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.js +33 -0
- package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.d.ts +4 -0
- package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.js +12 -1
- package/src/shade/renderer/shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.js +7 -0
- package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +108 -0
- package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.js +23 -4
- package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.js +56 -0
- package/src/shade/renderer/shader/chunk/material/chunk_re_indirect_specular_physical.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/material/chunk_re_indirect_specular_physical.js +2 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.d.ts +43 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.js +319 -0
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +33 -0
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.js +140 -0
- package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts +74 -0
- package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts.map +1 -0
- package/src/shade/renderer/shader/compiler/CodeChunkChoice.js +166 -0
- package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +680 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitch.d.ts +86 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitch.d.ts.map +1 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitch.js +178 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts +67 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts.map +1 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitchSet.js +205 -0
- package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.d.ts +14 -0
- package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.js +13 -0
- package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.d.ts +65 -0
- package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.js +252 -0
- package/src/shade/renderer/shadow/contact/FINDINGS.md +413 -0
- package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.js +105 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.js +39 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.js +92 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.js +128 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.d.ts +52 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.js +358 -0
- package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.d.ts +10 -0
- package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.js +12 -0
- package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.d.ts +13 -0
- package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.js +14 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +14 -8
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +20 -86
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.d.ts +14 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.js +79 -0
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.js +12 -12
- 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 +153 -151
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.d.ts +13 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.js +48 -0
- package/src/shade/renderer/texture/GPUTextureContext.d.ts +10 -0
- package/src/shade/renderer/texture/GPUTextureContext.d.ts.map +1 -1
- package/src/shade/renderer/texture/GPUTextureContext.js +24 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +219 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +671 -0
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +26 -2
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +108 -4
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +5 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +6 -0
- package/src/shade/renderer/volumetrics/NOTES.md +50 -0
- package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.js +30 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +51 -13
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +98 -13
- package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts +9 -0
- package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/SceneVolumetrics.js +78 -68
- package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +326 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +7 -4
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +21 -9
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.d.ts +19 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.js +53 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts +12 -3
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.js +85 -48
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +4 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +4 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +4 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +21 -1
- package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts +98 -0
- package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.js +115 -0
- package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.d.ts +9 -0
- package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.js +24 -0
- package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts +27 -0
- package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.js +91 -0
- package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts +35 -0
- package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.js +92 -0
- package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.d.ts +10 -0
- package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.js +121 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +38 -3
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +311 -290
- package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.js +28 -49
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +3 -1
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +24 -18
- package/src/shade/renderer/water/chunk_water_transport.d.ts +0 -1
- package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_transport.js +0 -17
- package/src/shade/renderer/water/shader_water.d.ts +4 -2
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +27 -16
- package/src/shade/renderer/water/shader_water_avboit.d.ts +0 -4
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water_avboit.js +0 -63
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +43 -9
- package/src/engine/network/transport/Channel.d.ts +0 -85
- package/src/engine/network/transport/Channel.d.ts.map +0 -1
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts +0 -155
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/FragmentAssembler.d.ts +0 -105
- package/src/engine/network/transport/fragments/FragmentAssembler.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/FragmentRetention.d.ts +0 -103
- package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/fragment_send.d.ts +0 -61
- package/src/engine/network/transport/fragments/fragment_send.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/packet_size.d.ts +0 -99
- package/src/engine/network/transport/fragments/packet_size.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.d.ts +0 -6
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.js +0 -16
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.js +0 -46
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.d.ts +0 -10
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.js +0 -127
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.js +0 -39
|
@@ -38,6 +38,13 @@ export class Renderer {
|
|
|
38
38
|
* @type {ShadeTransparencyMode}
|
|
39
39
|
*/
|
|
40
40
|
transparency_mode: ShadeTransparencyMode;
|
|
41
|
+
/**
|
|
42
|
+
* How the exposed scene colour becomes display colour, on every output. An SDR and an HDR display run the same
|
|
43
|
+
* mode, so a scene looks alike on both; see {@link ShadeToneMappingMode}. Read every frame, so it can be flipped
|
|
44
|
+
* at runtime. A mode not in use at {@link initialize} compiles its pass on the first frame that draws with it.
|
|
45
|
+
* @type {ShadeToneMappingMode}
|
|
46
|
+
*/
|
|
47
|
+
tone_mapping_mode: ShadeToneMappingMode;
|
|
41
48
|
/**
|
|
42
49
|
* Switches of the AVBOIT mode, read every frame while {@link transparency_mode} selects it.
|
|
43
50
|
* @type {AVBOITSettings}
|
|
@@ -83,6 +90,10 @@ export class Renderer {
|
|
|
83
90
|
* @type {boolean}
|
|
84
91
|
*/
|
|
85
92
|
feature_virtual_shadow_maps: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* @returns {ShaderSwitchSet} see {@link #shader_switches}
|
|
95
|
+
*/
|
|
96
|
+
get shader_switches(): ShaderSwitchSet;
|
|
86
97
|
set shadow_virtual_page_budget(v: number);
|
|
87
98
|
get shadow_virtual_page_budget(): number;
|
|
88
99
|
/**
|
|
@@ -434,6 +445,22 @@ export class Renderer {
|
|
|
434
445
|
device?: GPUDevice;
|
|
435
446
|
pixelRatio?: number;
|
|
436
447
|
}): Promise<void>;
|
|
448
|
+
/**
|
|
449
|
+
* Offer the pipelines a frame draws with — see {@link PipelineEnquiry}. {@link initialize}
|
|
450
|
+
* compiles the answer off the main thread, and {@link render} draws nothing until it is in.
|
|
451
|
+
*
|
|
452
|
+
* Each subsystem is asked only when the feature flag that runs it is on, so the answer follows the
|
|
453
|
+
* features as they are set at that moment. It covers the default renderer: the opaque raster,
|
|
454
|
+
* shading, IBL, ambient occlusion, TAA, sharpening, bloom, exposure and the tonemap. Everything
|
|
455
|
+
* else is made the old way, by the first frame that draws with it: the features that are off by
|
|
456
|
+
* default (ReSTIR's passes, SSR, depth of field, motion blur, NSS, path tracing), the indirect
|
|
457
|
+
* lighting modes other than IBL, a feature turned on after {@link initialize}, and whatever a
|
|
458
|
+
* scene's content brings — shadow casters, transparent and alpha-tested materials, volumes,
|
|
459
|
+
* particles.
|
|
460
|
+
*
|
|
461
|
+
* @param {PipelineEnquiry} enquiry
|
|
462
|
+
*/
|
|
463
|
+
enquirePipelines(enquiry: PipelineEnquiry): void;
|
|
437
464
|
/**
|
|
438
465
|
* Release everything {@link initialize} built, in reverse.
|
|
439
466
|
*
|
|
@@ -474,9 +501,11 @@ export class Renderer {
|
|
|
474
501
|
* simulation, the animation tick and exposure adaptation all step by it. Zero by default, which
|
|
475
502
|
* draws the current state and moves nothing; a fixed fraction of a second here instead would run
|
|
476
503
|
* the simulation at that rate no matter what the caller's clock was doing.
|
|
477
|
-
* @returns {boolean} whether a frame was encoded and submitted. False
|
|
478
|
-
*
|
|
479
|
-
*
|
|
504
|
+
* @returns {boolean} whether a frame was encoded and submitted. False when there is nothing to
|
|
505
|
+
* draw with — the device was lost, or the renderer destroyed — and while a pipeline prepared
|
|
506
|
+
* ahead of use is still compiling: the ones {@link initialize} asked for, or a template
|
|
507
|
+
* prewarmed at a level load. Frames the GPU has not finished yet neither
|
|
508
|
+
* hold this one back nor make it return false.
|
|
480
509
|
*/
|
|
481
510
|
render(camera: PerspectiveCamera, scene: Scene, time_delta_seconds?: number): boolean;
|
|
482
511
|
/**
|
|
@@ -510,7 +539,9 @@ export type Scene = import("./scene/Scene.js").Scene;
|
|
|
510
539
|
import { SceneManager } from "./scene/SceneManager.js";
|
|
511
540
|
import { ShadeIndirectLightingMode } from "./ShadeIndirectLightingMode.js";
|
|
512
541
|
import { ShadeTransparencyMode } from "./ShadeTransparencyMode.js";
|
|
542
|
+
import { ShadeToneMappingMode } from "./ShadeToneMappingMode.js";
|
|
513
543
|
import { AVBOITSettings } from "./rasterize/native/avboit/AVBOITSettings.js";
|
|
544
|
+
import { ShaderSwitchSet } from "./shader/compiler/ShaderSwitchSet.js";
|
|
514
545
|
import { MotionBlur } from "./postprocess/motion_blur/MotionBlur.js";
|
|
515
546
|
import { DepthOfField } from "./postprocess/dof/raymarch/DepthOfField.js";
|
|
516
547
|
import { DepthOfFieldU } from "./postprocess/dof/gather/DepthOfFieldU.js";
|
|
@@ -525,5 +556,6 @@ import { ReSTIRDI } from "./restir/di/ReSTIRDI.js";
|
|
|
525
556
|
import { GPUParticleSystem } from "./particles/GPUParticleSystem.js";
|
|
526
557
|
import { ShadeUpscalerType } from "./ShadeUpscalerType.js";
|
|
527
558
|
import { NSS } from "./postprocess/nss/NSS.js";
|
|
559
|
+
import { PipelineEnquiry } from "../device/pipeline/PipelineEnquiry.js";
|
|
528
560
|
import { AccumulatingPathTracer } from "./path_tracer/accumulating/AccumulatingPathTracer.js";
|
|
529
561
|
//# sourceMappingURL=Renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"AAsIA;IAOI,0BAEC;IAED;;OAEG;IACH,0BAAQ;IAER;;;;;;OAMG;IACH,kDAEC;IAED;;OAEG;IACH,kBAAO;IAYP;;;OAGG;IACH,2BAEC;IAaD,wCAGC;IAED,uCAEC;IAED;;;;OAIG;IACH,wBAFU,yBAAyB,CAEoB;IAEvD;;;;;;;OAOG;IACH,mBAFU,qBAAqB,CAEkB;IAEjD;;;;;OAKG;IACH,mBAFU,oBAAoB,CAEe;IAE7C;;;OAGG;IACH,QAFU,cAAc,CAEM;IAE9B;;;;;;;;;OASG;IACH,2BAFU,OAAO,CAEiB;IAElC,6BAA4B;IAC5B,8BAA4B;IAC5B;;;;OAIG;IACH,mCAAkC;IAClC;;;;;;;OAOG;IACH,mCAFU,OAAO,CAEyB;IAW1C,oCAIC;IAED,mCAEC;IAYD,oCAIC;IAED,mCAEC;IAED;;;;;;OAMG;IACH,6BAFU,OAAO,CAEmB;IAapC;;OAEG;IACH,uCAEC;IAmBD,0CAIC;IAED,yCAEC;IAED;;;;;OAKG;IACH,yBAFU,MAAM,CAEY;IAS5B,+CAKC;IAED,8CAEC;IAED,+BAA6B;IAC7B,4CAA0C;IAkB1C,qCAKC;IArBD;;;;;;;;;;OAUG;IACH,oCAGC;IASD;;;;;;;OAOG;IACH,0BAFU,OAAO,CAEe;IAQhC;;;;;OAKG;IACH,oCAOC;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;;;OAGG;IACH,4BAFU,OAAO,CAEiB;IAKlC;;;OAGG;IACH,yBAEC;IAOD;;;OAGG;IACH,gCAEC;IAcD;;;;;;;;;OASG;IACH,qBAA+B;IAE/B;;;;;;;;;;OAUG;IACH,qBAA+B;IAgB/B;;;OAGG;IACH,yCAeC;IAED;;;OAGG;IACH,wCAEC;IA0BD;;;OAGG;IACH,iCAEC;IAED;;;;OAIG;IACH,2BAEC;IAQD;;;OAGG;IACH,+CAIC;IAED;;;OAGG;IACH,gDAIC;IAwCD;;;OAGG;IACH,+BAcC;IA1BD;;;OAGG;IACH,0BAEC;IAsBD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAFU,iBAAiB,GAAC,IAAI,CAET;IAEvB;;OAEG;IACH;;;;;;;;;;;;;;OAcG;IACH,yBAHW,eAAe,GACb,eAAe,CAI3B;IAED;;;;;OAKG;IACH,4BAHW,eAAe,GACb,OAAO,CAInB;IAED;;;OAGG;IACH,uBAHW,UAAU,GACR,MAAM,CAIlB;IAUD;;;;;;;;;;;;;;;;;OAiBG;IACH,kCAHW,iBAAiB,GACf,iBAAiB,CAsB7B;IAED;;;;;OAKG;IACH,qCAHW,iBAAiB,GACf,OAAO,CAYnB;IAED;;OAEG;IACH,8BAFa,MAAM,CAIlB;IAgBD;;;;OAIG;IACH,yBAHW,KAAK,GACJ,gBAAgB,CAW3B;IAED;;;OAGG;IACH,6BAYC;IAED;;;;OAIG;IACH,gCAHW,KAAK,GACH,2BAA2B,CAcvC;IAGD;;;OAGG;IACH,kBAFW,KAAK,QAyBf;IA8OD,oGAAoG;IACpG,kDAA2C;IAO3C;;;;OAIG;IACH,0BAEC;IAiBD;;;;;;OAMG;IACH,qBAHW,eAAe,GACb,iBAAiB,CAW7B;IAgBD;;;;;;OAMG;IACH,cAFU,iBAAiB,CAEU;IAErC;;;;;;OAMG;IACH,eAgBC;IAiFD;;;;;;;;OAQG;IACH;QAJsC,OAAO;QACd,MAAM;QACT,UAAU,GAA3B,MAAM;sBAuMhB;IAED;;;;;;;;;;;;;;OAcG;IACH,0BAFW,eAAe,QA6DzB;IAqDD;;;;;;;;;;;;;;;;;OAiBG;IACH,WAFa,IAAI,CAuChB;IAgCD,4BAwBC;IAqID;;;;;OAKG;IACH,UAHW,MAAM,KACN,MAAM,QAgBhB;IAoFD,0CAMC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,eAZW,iBAAiB,SACjB,KAAK,uBACL,MAAM,GAIJ,OAAO,CAuCnB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,yBARW,iBAAiB,SACjB,KAAK,sBACL,MAAM,UACN,iBAAiB,GACf,OAAO,CAiBnB;;CA6iCJ;+BA9lGY,OAAO,8CAA8C,EAAE,gBAAgB;gCACvE,OAAO,+CAA+C,EAAE,iBAAiB;gCACzE,OAAO,+BAA+B,EAAE,iBAAiB;8BACzD,OAAO,gCAAgC,EAAE,eAAe;gCACxD,OAAO,gDAAgD,EAAE,iBAAiB;8BAC1E,OAAO,4BAA4B,EAAE,eAAe;oBACpD,OAAO,kBAAkB,EAAE,KAAK;6BA9BhB,yBAAyB;0CACZ,gCAAgC;sCAEpC,4BAA4B;qCAD7B,2BAA2B;+BAEjC,6CAA6C;gCAC5C,sCAAsC;2BAhC3C,yCAAyC;6BAFvC,4CAA4C;8BAD3C,2CAA2C;4BAmD7C,uBAAuB;gCA9DnB,sBAAsB;oBA3ClC,4BAA4B;kCAsGd,gCAAgC;2BA5EvC,2BAA2B;iCA0ErB,0CAA0C;4CA5D/B,+DAA+D;yBA0ClF,yBAAyB;kCAChB,kCAAkC;kCAUlC,wBAAwB;oBAnCtC,0BAA0B;gCA7Cd,uCAAuC;uCAmChC,sDAAsD"}
|
|
@@ -14,13 +14,18 @@ import { WebGPUExtensionType } from "../descriptor/WebGPUExtensionType.js";
|
|
|
14
14
|
import { SHADE_DEVICE_FLOOR } from "../device/SHADE_DEVICE_FLOOR.js";
|
|
15
15
|
import { shade_device_floor_unmet } from "../device/shade_device_floor_unmet.js";
|
|
16
16
|
import { ShadeDeviceFailure } from "../device/ShadeDeviceFailure.js";
|
|
17
|
+
import { PipelineEnquiry } from "../device/pipeline/PipelineEnquiry.js";
|
|
17
18
|
import { ShadeGPUCommandContext } from "../device/ShadeGPUCommandContext.js";
|
|
18
19
|
import { CameraManager } from "./camera/CameraManager.js";
|
|
19
20
|
import { shader_background } from "./deferred/shader_background.js";
|
|
20
21
|
import { shader_composite_volumetrics } from "./deferred/shader_composite_volumetrics.js";
|
|
21
22
|
import { shader_deferred_main, shader_deferred_main_restir } from "./deferred/shader_deferred_main.js";
|
|
22
23
|
import { shader_tonemap_HDR } from "./deferred/shader_tonemap_HDR.js";
|
|
24
|
+
import { shader_tonemap_HDR_none } from "./deferred/shader_tonemap_HDR_none.js";
|
|
25
|
+
import { shader_tonemap_HDR_pbr_neutral } from "./deferred/shader_tonemap_HDR_pbr_neutral.js";
|
|
23
26
|
import { shader_tonemap_LDR } from "./deferred/shader_tonemap_LDR.js";
|
|
27
|
+
import { shader_tonemap_LDR_none } from "./deferred/shader_tonemap_LDR_none.js";
|
|
28
|
+
import { shader_tonemap_LDR_pbr_neutral } from "./deferred/shader_tonemap_LDR_pbr_neutral.js";
|
|
24
29
|
import { FrameContext } from "./extension/FrameContext.js";
|
|
25
30
|
import { FramePhase } from "./extension/FramePhase.js";
|
|
26
31
|
import { GBufferTextures } from "./extension/GBufferTextures.js";
|
|
@@ -40,9 +45,15 @@ import { GPULightProbeVolumeRenderer } from "./global_illumination/lpv/bake/GPUL
|
|
|
40
45
|
import { shader_diffuse_LPV } from "./global_illumination/lpv/shader_diffuse_LPV.js";
|
|
41
46
|
import { shader_resolve_indirect_lighting } from "./global_illumination/shader_resolve_indirect_lighting.js";
|
|
42
47
|
import { GraphicsContext } from "./GraphicsContext.js";
|
|
43
|
-
import {
|
|
48
|
+
import {
|
|
49
|
+
enquire_build_light_clusters_pipelines,
|
|
50
|
+
graph_build_light_clusters
|
|
51
|
+
} from "./light/cluster/graph_build_light_clusters.js";
|
|
44
52
|
import { AccumulatingPathTracer } from "./path_tracer/accumulating/AccumulatingPathTracer.js";
|
|
45
|
-
import {
|
|
53
|
+
import {
|
|
54
|
+
enquire_postprocess_bloom_pipelines,
|
|
55
|
+
graph_postprocess_bloom
|
|
56
|
+
} from "./postprocess/bloom/graph_postprocess_bloom.js";
|
|
46
57
|
import { shader_ffx_rcas } from "./postprocess/cas/shader_ffx_rcas.js";
|
|
47
58
|
import { DepthOfFieldU } from "./postprocess/dof/gather/DepthOfFieldU.js";
|
|
48
59
|
import { DepthOfField } from "./postprocess/dof/raymarch/DepthOfField.js";
|
|
@@ -52,7 +63,10 @@ import { NSS } from "./postprocess/nss/NSS.js";
|
|
|
52
63
|
import { PostProcess } from "./postprocess/PostProcess.js";
|
|
53
64
|
import { shader_depth_occlusion_clip } from "./postprocess/taa/shader_depth_occlusion_clip.js";
|
|
54
65
|
import { TAA } from "./postprocess/taa/TAA.js";
|
|
55
|
-
import {
|
|
66
|
+
import {
|
|
67
|
+
enquire_per_object_velocity_pipelines,
|
|
68
|
+
graph_add_per_object_velocity
|
|
69
|
+
} from "./postprocess/velocity/graph_add_per_object_velocity.js";
|
|
56
70
|
import { shader_debug_velocity } from "./postprocess/velocity/shader_debug_velocity.js";
|
|
57
71
|
import {
|
|
58
72
|
graph_rasterize_meshes_transparent_oit
|
|
@@ -66,19 +80,24 @@ import {
|
|
|
66
80
|
import {
|
|
67
81
|
viz_rasterization_opaque_pass_descriptor
|
|
68
82
|
} from "./rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js";
|
|
83
|
+
import { CullPolicy } from "./rasterize/bucket/construct_primitive_state.js";
|
|
69
84
|
import { RasterizationJob } from "./rasterize/RasterizationJob.js";
|
|
70
|
-
import { graph_rasterize_scene } from "./rasterize/standard/graph_rasterize_scene.js";
|
|
85
|
+
import { enquire_rasterize_scene_pipelines, graph_rasterize_scene } from "./rasterize/standard/graph_rasterize_scene.js";
|
|
71
86
|
import { ReSTIRDI } from "./restir/di/ReSTIRDI.js";
|
|
72
87
|
import { GPUParticleSystem } from "./particles/GPUParticleSystem.js";
|
|
73
88
|
import { SceneManager } from "./scene/SceneManager.js";
|
|
74
89
|
import { ShadeIndirectLightingMode } from "./ShadeIndirectLightingMode.js";
|
|
90
|
+
import { ShadeToneMappingMode } from "./ShadeToneMappingMode.js";
|
|
75
91
|
import { ShadeTransparencyMode } from "./ShadeTransparencyMode.js";
|
|
76
92
|
import { AVBOITSettings } from "./rasterize/native/avboit/AVBOITSettings.js";
|
|
93
|
+
import { ShaderSwitchSet } from "./shader/compiler/ShaderSwitchSet.js";
|
|
77
94
|
import { graph_image_pass } from "./shader/graph/graph_image_pass.js";
|
|
78
95
|
import { graph_import_buffer } from "./shader/graph/graph_import_buffer.js";
|
|
79
96
|
import { graph_import_texture } from "./shader/graph/graph_import_texture.js";
|
|
80
97
|
import { ShadeUpscalerType } from "./ShadeUpscalerType.js";
|
|
81
98
|
import { DEFAULT_SHADOWMAP_UPDATE_BUDGET } from "./shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.js";
|
|
99
|
+
import { SHADOW_DIRECTIONAL_TECHNIQUE } from "./shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.js";
|
|
100
|
+
import { ShadowDirectionalTechnique } from "./shadow/map/ShadowDirectionalTechnique.js";
|
|
82
101
|
import { SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT } from "./shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.js";
|
|
83
102
|
import { DEFAULT_VSM_FIRST_TEXEL_SIZE } from "./shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.js";
|
|
84
103
|
import { DEFAULT_VSM_PAGE_BUDGET } from "./shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.js";
|
|
@@ -200,6 +219,14 @@ export class Renderer {
|
|
|
200
219
|
*/
|
|
201
220
|
transparency_mode = ShadeTransparencyMode.AVBOIT;
|
|
202
221
|
|
|
222
|
+
/**
|
|
223
|
+
* How the exposed scene colour becomes display colour, on every output. An SDR and an HDR display run the same
|
|
224
|
+
* mode, so a scene looks alike on both; see {@link ShadeToneMappingMode}. Read every frame, so it can be flipped
|
|
225
|
+
* at runtime. A mode not in use at {@link initialize} compiles its pass on the first frame that draws with it.
|
|
226
|
+
* @type {ShadeToneMappingMode}
|
|
227
|
+
*/
|
|
228
|
+
tone_mapping_mode = ShadeToneMappingMode.GT7;
|
|
229
|
+
|
|
203
230
|
/**
|
|
204
231
|
* Switches of the AVBOIT mode, read every frame while {@link transparency_mode} selects it.
|
|
205
232
|
* @type {AVBOITSettings}
|
|
@@ -284,6 +311,34 @@ export class Renderer {
|
|
|
284
311
|
*/
|
|
285
312
|
feature_virtual_shadow_maps = false;
|
|
286
313
|
|
|
314
|
+
/**
|
|
315
|
+
* The values of the shader switches, for every pass this renderer records: what its feature flags
|
|
316
|
+
* make of the switches its shaders decide ({@link SHADOW_DIRECTIONAL_TECHNIQUE} from
|
|
317
|
+
* {@link feature_virtual_shadow_maps}). A pass hands it to the shaders it draws with, which build
|
|
318
|
+
* their variant for it. Interned, so it stays the same object until a flag changes, and looking a
|
|
319
|
+
* variant up by it allocates nothing.
|
|
320
|
+
*
|
|
321
|
+
* @type {ShaderSwitchSet}
|
|
322
|
+
*/
|
|
323
|
+
#shader_switches = ShaderSwitchSet.EMPTY;
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* @returns {ShaderSwitchSet} see {@link #shader_switches}
|
|
327
|
+
*/
|
|
328
|
+
get shader_switches() {
|
|
329
|
+
return this.#shader_switches;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Bring {@link #shader_switches} up to the feature flags. Allocates nothing while they are unchanged.
|
|
334
|
+
*/
|
|
335
|
+
#update_shader_switches() {
|
|
336
|
+
this.#shader_switches = this.#shader_switches.with(
|
|
337
|
+
SHADOW_DIRECTIONAL_TECHNIQUE,
|
|
338
|
+
this.feature_virtual_shadow_maps ? ShadowDirectionalTechnique.Virtual : ShadowDirectionalTechnique.Cascades
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
|
|
287
342
|
/**
|
|
288
343
|
* Virtual shadow map pages a scene may render per frame, pushed to the scene's shadow context
|
|
289
344
|
* each frame; see {@link DEFAULT_VSM_PAGE_BUDGET} for what a page costs and what waits.
|
|
@@ -1581,6 +1636,126 @@ export class Renderer {
|
|
|
1581
1636
|
|
|
1582
1637
|
window.matchMedia("(dynamic-range: high)").addEventListener("change", this.#update_hdr_support);
|
|
1583
1638
|
|
|
1639
|
+
this.#prepare_pipelines();
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
/**
|
|
1643
|
+
* Offer the pipelines a frame draws with — see {@link PipelineEnquiry}. {@link initialize}
|
|
1644
|
+
* compiles the answer off the main thread, and {@link render} draws nothing until it is in.
|
|
1645
|
+
*
|
|
1646
|
+
* Each subsystem is asked only when the feature flag that runs it is on, so the answer follows the
|
|
1647
|
+
* features as they are set at that moment. It covers the default renderer: the opaque raster,
|
|
1648
|
+
* shading, IBL, ambient occlusion, TAA, sharpening, bloom, exposure and the tonemap. Everything
|
|
1649
|
+
* else is made the old way, by the first frame that draws with it: the features that are off by
|
|
1650
|
+
* default (ReSTIR's passes, SSR, depth of field, motion blur, NSS, path tracing), the indirect
|
|
1651
|
+
* lighting modes other than IBL, a feature turned on after {@link initialize}, and whatever a
|
|
1652
|
+
* scene's content brings — shadow casters, transparent and alpha-tested materials, volumes,
|
|
1653
|
+
* particles.
|
|
1654
|
+
*
|
|
1655
|
+
* @param {PipelineEnquiry} enquiry
|
|
1656
|
+
*/
|
|
1657
|
+
enquirePipelines(enquiry) {
|
|
1658
|
+
const graphics = this.#graphics;
|
|
1659
|
+
|
|
1660
|
+
// The longest compile goes first. With everything else compiling beside it this one is the
|
|
1661
|
+
// whole wait (~1 s of a cold simple-cube's ~1.1 s), and where there are fewer compile
|
|
1662
|
+
// workers than pipelines, the order they are asked for is roughly the order they start.
|
|
1663
|
+
this.#update_shader_switches();
|
|
1664
|
+
|
|
1665
|
+
const deferred_shader = (this.feature_restir_di_enabled ? shader_deferred_main_restir : shader_deferred_main)
|
|
1666
|
+
.variant(this.#shader_switches);
|
|
1667
|
+
|
|
1668
|
+
enquiry.render.push(deferred_shader.pipeline);
|
|
1669
|
+
|
|
1670
|
+
// the scene colour target's format: the background and the indirect-lighting resolve draw into
|
|
1671
|
+
// the target the shading pass made
|
|
1672
|
+
const color_formats = [deferred_shader.pipeline.fragment.targets[0].format];
|
|
1673
|
+
|
|
1674
|
+
graphics.materials.enquirePipelines(enquiry);
|
|
1675
|
+
this.#scenes.enquirePipelines(enquiry);
|
|
1676
|
+
|
|
1677
|
+
enquire_rasterize_scene_pipelines(enquiry, viz_rasterization_opaque_pass_descriptor, CullPolicy.Standard);
|
|
1678
|
+
|
|
1679
|
+
enquire_per_object_velocity_pipelines(enquiry);
|
|
1680
|
+
enquiry.render.push(shader_depth_occlusion_clip.pipeline);
|
|
1681
|
+
enquire_build_light_clusters_pipelines(enquiry);
|
|
1682
|
+
|
|
1683
|
+
if (this.feature_ssao_enabled) {
|
|
1684
|
+
this.#postprocess.ssao.enquirePipelines(enquiry);
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
enquiry.render.push(shader_background.pipeline_for(color_formats));
|
|
1688
|
+
|
|
1689
|
+
if (this.indirect_lighting_mode === ShadeIndirectLightingMode.IBL) {
|
|
1690
|
+
if (!this.feature_ssr_enabled) {
|
|
1691
|
+
// what SSR replaces
|
|
1692
|
+
enquiry.render.push(shader_specular_IBL.pipeline);
|
|
1693
|
+
}
|
|
1694
|
+
|
|
1695
|
+
enquiry.render.push(shader_diffuse_IBL.pipeline);
|
|
1696
|
+
enquiry.render.push(shader_resolve_indirect_lighting.pipeline_for(color_formats));
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
if (this.feature_taa_enabled && this.upscale_type === ShadeUpscalerType.TAA) {
|
|
1700
|
+
this.#taa.enquirePipelines(enquiry, this.#textures_taa_history[0].descriptor.format);
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
if (this.feature_sharpening_enabled) {
|
|
1704
|
+
enquiry.render.push(shader_ffx_rcas.pipeline);
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
if (this.feature_bloom_enabled) {
|
|
1708
|
+
enquire_postprocess_bloom_pipelines(enquiry);
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
if (this.feature_automatic_exposure_enabled) {
|
|
1712
|
+
this.#autoexposure.enquirePipelines(enquiry);
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
enquiry.render.push(this.#tonemap_shader().pipeline_for([this.#presentation_format]));
|
|
1716
|
+
}
|
|
1717
|
+
|
|
1718
|
+
/**
|
|
1719
|
+
* The pass that writes the canvas: the output's dynamic range picks the SDR or the HDR form, and
|
|
1720
|
+
* {@link tone_mapping_mode} picks the operator.
|
|
1721
|
+
*
|
|
1722
|
+
* @returns {import("./shader/ImageShader.js").ImageShader}
|
|
1723
|
+
*/
|
|
1724
|
+
#tonemap_shader() {
|
|
1725
|
+
assert.enum(this.tone_mapping_mode, ShadeToneMappingMode, 'tone_mapping_mode');
|
|
1726
|
+
|
|
1727
|
+
if (this.tone_mapping_mode === ShadeToneMappingMode.NONE) {
|
|
1728
|
+
return this.#hdr_supported ? shader_tonemap_HDR_none : shader_tonemap_LDR_none;
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
if (this.tone_mapping_mode === ShadeToneMappingMode.PBR_NEUTRAL) {
|
|
1732
|
+
return this.#hdr_supported ? shader_tonemap_HDR_pbr_neutral : shader_tonemap_LDR_pbr_neutral;
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
return this.#hdr_supported ? shader_tonemap_HDR : shader_tonemap_LDR;
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
/**
|
|
1739
|
+
* Compile what {@link enquirePipelines} offers, off the main thread — see {@link PipelineEnquiry}.
|
|
1740
|
+
*/
|
|
1741
|
+
#prepare_pipelines() {
|
|
1742
|
+
const enquiry = PipelineEnquiry.from(this.device);
|
|
1743
|
+
|
|
1744
|
+
this.enquirePipelines(enquiry);
|
|
1745
|
+
|
|
1746
|
+
const graphics = this.#graphics;
|
|
1747
|
+
|
|
1748
|
+
const render = enquiry.render;
|
|
1749
|
+
|
|
1750
|
+
for (let i = 0; i < render.length; i++) {
|
|
1751
|
+
graphics.render_pipelines.prepare(render[i]);
|
|
1752
|
+
}
|
|
1753
|
+
|
|
1754
|
+
const compute = enquiry.compute;
|
|
1755
|
+
|
|
1756
|
+
for (let i = 0; i < compute.length; i++) {
|
|
1757
|
+
graphics.compute_pipelines.prepare(compute[i]);
|
|
1758
|
+
}
|
|
1584
1759
|
}
|
|
1585
1760
|
|
|
1586
1761
|
/**
|
|
@@ -1959,9 +2134,11 @@ export class Renderer {
|
|
|
1959
2134
|
* simulation, the animation tick and exposure adaptation all step by it. Zero by default, which
|
|
1960
2135
|
* draws the current state and moves nothing; a fixed fraction of a second here instead would run
|
|
1961
2136
|
* the simulation at that rate no matter what the caller's clock was doing.
|
|
1962
|
-
* @returns {boolean} whether a frame was encoded and submitted. False
|
|
1963
|
-
*
|
|
1964
|
-
*
|
|
2137
|
+
* @returns {boolean} whether a frame was encoded and submitted. False when there is nothing to
|
|
2138
|
+
* draw with — the device was lost, or the renderer destroyed — and while a pipeline prepared
|
|
2139
|
+
* ahead of use is still compiling: the ones {@link initialize} asked for, or a template
|
|
2140
|
+
* prewarmed at a level load. Frames the GPU has not finished yet neither
|
|
2141
|
+
* hold this one back nor make it return false.
|
|
1965
2142
|
*/
|
|
1966
2143
|
render(
|
|
1967
2144
|
camera,
|
|
@@ -1974,6 +2151,18 @@ export class Renderer {
|
|
|
1974
2151
|
return false;
|
|
1975
2152
|
}
|
|
1976
2153
|
|
|
2154
|
+
const graphics = this.#graphics;
|
|
2155
|
+
|
|
2156
|
+
if (graphics.render_pipelines.pending_count > 0 || graphics.compute_pipelines.pending_count > 0) {
|
|
2157
|
+
/*
|
|
2158
|
+
Pipelines prepared ahead of use are still compiling. A frame encoded now would make
|
|
2159
|
+
each one it reaches again, synchronously — one after another on the thread that also
|
|
2160
|
+
presents the page, the very wait the asynchronous compile exists to avoid. Nothing is
|
|
2161
|
+
encoded and the canvas keeps what it had.
|
|
2162
|
+
*/
|
|
2163
|
+
return false;
|
|
2164
|
+
}
|
|
2165
|
+
|
|
1977
2166
|
this.#ensure_context_configured();
|
|
1978
2167
|
|
|
1979
2168
|
const canvas_texture = this.context.getCurrentTexture();
|
|
@@ -2147,6 +2336,8 @@ export class Renderer {
|
|
|
2147
2336
|
// Virtual shadow maps for directional lights, and what they may spend; a flip of the flag or
|
|
2148
2337
|
// of the first texel rebuilds the maps inside process_lights.
|
|
2149
2338
|
sm.use_virtual_shadow_maps = this.feature_virtual_shadow_maps;
|
|
2339
|
+
// and the shaders that sample those maps, built for the same technique, in the same frame
|
|
2340
|
+
this.#update_shader_switches();
|
|
2150
2341
|
sm.virtual_page_budget = this.#shadow_virtual_page_budget;
|
|
2151
2342
|
sm.virtual_lod_bias = this.shadow_virtual_lod_bias;
|
|
2152
2343
|
sm.virtual_first_texel_size = this.#shadow_virtual_first_texel_size;
|
|
@@ -2503,6 +2694,7 @@ export class Renderer {
|
|
|
2503
2694
|
light_cluster_parameters: light_clusters.parameters,
|
|
2504
2695
|
shadowmap_atlas: gr_shadowmap_atlas,
|
|
2505
2696
|
indirect_lighting_mode: this.indirect_lighting_mode,
|
|
2697
|
+
shader_switches: this.#shader_switches,
|
|
2506
2698
|
});
|
|
2507
2699
|
|
|
2508
2700
|
/**
|
|
@@ -2524,6 +2716,7 @@ export class Renderer {
|
|
|
2524
2716
|
gBufferNormal: gr_texture_normal,
|
|
2525
2717
|
gBufferAlbedo: gr_texture_material_albedo_ao,
|
|
2526
2718
|
gBufferEmissive: gr_texture_material_emissive,
|
|
2719
|
+
tSplitSum: STATIC_GRAPHICS_ENGINE_ASSETS.split_sum,
|
|
2527
2720
|
|
|
2528
2721
|
//
|
|
2529
2722
|
light_data: lights.buffer_data,
|
|
@@ -2565,7 +2758,7 @@ export class Renderer {
|
|
|
2565
2758
|
// Main shading pass
|
|
2566
2759
|
[current_color_out] = graph_image_pass({
|
|
2567
2760
|
graph,
|
|
2568
|
-
shader: deferred_shader,
|
|
2761
|
+
shader: deferred_shader.variant(this.#shader_switches),
|
|
2569
2762
|
input_depth: gr_texture_depth_current,
|
|
2570
2763
|
inputs: deferred_inputs,
|
|
2571
2764
|
output_resolution: view_ctx.resolution,
|
|
@@ -2764,6 +2957,7 @@ export class Renderer {
|
|
|
2764
2957
|
volumetrics_irradiance: volumetrics.irradiance,
|
|
2765
2958
|
|
|
2766
2959
|
indirect_lighting_mode: this.indirect_lighting_mode,
|
|
2960
|
+
shader_switches: this.#shader_switches,
|
|
2767
2961
|
avboit: this.avboit,
|
|
2768
2962
|
side_channels,
|
|
2769
2963
|
});
|
|
@@ -2961,15 +3155,17 @@ export class Renderer {
|
|
|
2961
3155
|
|
|
2962
3156
|
current_color_out = record_scene_color.color;
|
|
2963
3157
|
|
|
2964
|
-
|
|
3158
|
+
const tonemap = this.#tonemap_shader();
|
|
3159
|
+
|
|
3160
|
+
if (tonemap === shader_tonemap_HDR || tonemap === shader_tonemap_HDR_pbr_neutral) {
|
|
3161
|
+
// an operator on an HDR display is told the display's peak; the paper white is a constant
|
|
2965
3162
|
[current_color_out] = graph_image_pass({
|
|
2966
3163
|
graph,
|
|
2967
|
-
shader:
|
|
3164
|
+
shader: tonemap,
|
|
2968
3165
|
inputs: {
|
|
2969
3166
|
input_color: current_color_out,
|
|
2970
3167
|
settings: {
|
|
2971
3168
|
peak_nits: this.#display_peak_brightness_nits,
|
|
2972
|
-
paper_white_nits: 100, // SDR spec is 80, but 100 has been accepted as de-facto in recent years
|
|
2973
3169
|
},
|
|
2974
3170
|
exposure
|
|
2975
3171
|
},
|
|
@@ -2978,7 +3174,7 @@ export class Renderer {
|
|
|
2978
3174
|
} else {
|
|
2979
3175
|
[current_color_out] = graph_image_pass({
|
|
2980
3176
|
graph,
|
|
2981
|
-
shader:
|
|
3177
|
+
shader: tonemap,
|
|
2982
3178
|
inputs: {
|
|
2983
3179
|
input_color: current_color_out,
|
|
2984
3180
|
exposure
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the exposed scene colour becomes display colour.
|
|
3
|
+
*
|
|
4
|
+
* One choice for every display. The same mode runs on an SDR and an HDR output, so a scene looks the same on both up
|
|
5
|
+
* to the SDR display's limits. That is the reason Polyphony give for GT7's operator, and there is no per-output
|
|
6
|
+
* setting on purpose.
|
|
7
|
+
*/
|
|
8
|
+
export type ShadeToneMappingMode = number;
|
|
9
|
+
export namespace ShadeToneMappingMode {
|
|
10
|
+
let GT7: number;
|
|
11
|
+
let NONE: number;
|
|
12
|
+
let PBR_NEUTRAL: number;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ShadeToneMappingMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShadeToneMappingMode.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/ShadeToneMappingMode.js"],"names":[],"mappings":";;;;;;;mCAOU,MAAM"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the exposed scene colour becomes display colour.
|
|
3
|
+
*
|
|
4
|
+
* One choice for every display. The same mode runs on an SDR and an HDR output, so a scene looks the same on both up
|
|
5
|
+
* to the SDR display's limits. That is the reason Polyphony give for GT7's operator, and there is no per-output
|
|
6
|
+
* setting on purpose.
|
|
7
|
+
*
|
|
8
|
+
* @enum {number}
|
|
9
|
+
*/
|
|
10
|
+
export const ShadeToneMappingMode = {
|
|
11
|
+
/**
|
|
12
|
+
* GT7 tone mapping (Polyphony Digital, SIGGRAPH 2025). An exposed 1.0 shows at a 250 cd/m² paper white on both
|
|
13
|
+
* outputs. SDR clips at that paper white, the curve's SDR mode, and HDR rolls off to the display's peak.
|
|
14
|
+
*/
|
|
15
|
+
GT7: 0,
|
|
16
|
+
/**
|
|
17
|
+
* No tone mapping: the exposed colour as it is, with 1.0 at SDR white. An SDR output clips everything above 1.0,
|
|
18
|
+
* and an HDR output shows it as far as the display reaches.
|
|
19
|
+
*/
|
|
20
|
+
NONE: 1,
|
|
21
|
+
/**
|
|
22
|
+
* Khronos PBR Neutral (Lalish, 2024). Base colours under 0.8 come out as they are, less a 0.04 Fresnel offset, and
|
|
23
|
+
* hues never shift: made for showing products. SDR is the specification, which rolls highlights off to SDR white
|
|
24
|
+
* and toward white. HDR puts the display's peak in place of the specification's 1, so everything below the
|
|
25
|
+
* compression start looks the same on both outputs, and a highlight rolls off to the display's peak instead.
|
|
26
|
+
*
|
|
27
|
+
* An exposed 0.18 shows at 0.14 of SDR white, where {@link GT7} shows it at 0.179.
|
|
28
|
+
*/
|
|
29
|
+
PBR_NEUTRAL: 2,
|
|
30
|
+
};
|
|
@@ -28,6 +28,14 @@
|
|
|
28
28
|
* update path.
|
|
29
29
|
*/
|
|
30
30
|
export class GPUAnimationManager {
|
|
31
|
+
/**
|
|
32
|
+
* Offer the pipelines {@link tick} runs on every frame: the transform hierarchy, which composes
|
|
33
|
+
* world matrices whether or not anything is animated — see {@link PipelineEnquiry}. The clip,
|
|
34
|
+
* pose and skinning passes are left to the first frame that has a clip or a skin.
|
|
35
|
+
*
|
|
36
|
+
* @param {PipelineEnquiry} enquiry
|
|
37
|
+
*/
|
|
38
|
+
static enquirePipelines(enquiry: PipelineEnquiry): void;
|
|
31
39
|
/**
|
|
32
40
|
* @param {GPUDevice} device
|
|
33
41
|
* @param {string} label
|
|
@@ -518,6 +526,7 @@ export class GPUAnimationManager {
|
|
|
518
526
|
destroy(): void;
|
|
519
527
|
#private;
|
|
520
528
|
}
|
|
529
|
+
export type PipelineEnquiry = import("../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry;
|
|
521
530
|
export type AnimationCurve = import("../../../engine/animation/curve/AnimationCurve.js").AnimationCurve;
|
|
522
531
|
export type GPURecordWriter = import("../buffer/table/serde/generate_record_writer.js").GPURecordWriter;
|
|
523
532
|
export type ShadeGPUCommandContext = import("../../device/ShadeGPUCommandContext.js").ShadeGPUCommandContext;
|
|
@@ -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":"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"}
|
|
@@ -7,6 +7,7 @@ import { GPUDatabase } from "../buffer/table/GPUDatabase.js";
|
|
|
7
7
|
import { GPU_DATABASE_NULL } from "../buffer/table/GPU_DATABASE_NULL.js";
|
|
8
8
|
import { generate_record_writer } from "../buffer/table/serde/generate_record_writer.js";
|
|
9
9
|
import {
|
|
10
|
+
enquire_scene_update_transform_hierarchy_pipelines,
|
|
10
11
|
graph_scene_update_transform_hierarchy
|
|
11
12
|
} from "../scene/hierarchy/graph_scene_update_transform_hierarchy.js";
|
|
12
13
|
import { graph_import_buffer } from "../shader/graph/graph_import_buffer.js";
|
|
@@ -48,6 +49,7 @@ import {
|
|
|
48
49
|
} from "./skinning/shader_skin_matrix_prep.js";
|
|
49
50
|
|
|
50
51
|
/**
|
|
52
|
+
* @typedef {import("../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry} PipelineEnquiry
|
|
51
53
|
* @typedef {import("../../../engine/animation/curve/AnimationCurve.js").AnimationCurve} AnimationCurve
|
|
52
54
|
* @typedef {import("../buffer/table/serde/generate_record_writer.js").GPURecordWriter} GPURecordWriter
|
|
53
55
|
* @typedef {import("../../device/ShadeGPUCommandContext.js").ShadeGPUCommandContext} ShadeGPUCommandContext
|
|
@@ -351,6 +353,18 @@ function skin_content_equals(skin, joints, inverse_bind_matrices) {
|
|
|
351
353
|
*/
|
|
352
354
|
export class GPUAnimationManager {
|
|
353
355
|
|
|
356
|
+
/**
|
|
357
|
+
* Offer the pipelines {@link tick} runs on every frame: the transform hierarchy, which composes
|
|
358
|
+
* world matrices whether or not anything is animated — see {@link PipelineEnquiry}. The clip,
|
|
359
|
+
* pose and skinning passes are left to the first frame that has a clip or a skin.
|
|
360
|
+
*
|
|
361
|
+
* @param {PipelineEnquiry} enquiry
|
|
362
|
+
*/
|
|
363
|
+
static enquirePipelines(enquiry) {
|
|
364
|
+
enquire_scene_update_transform_hierarchy_pipelines(enquiry);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
|
|
354
368
|
/** @type {GPUDevice} */
|
|
355
369
|
#device;
|
|
356
370
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_meshlet_apply_skinning.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js"],"names":[],"mappings":"AAqCA;;;;GAIG;AACH,yCAA0C;
|
|
1
|
+
{"version":3,"file":"shader_meshlet_apply_skinning.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js"],"names":[],"mappings":"AAqCA;;;;GAIG;AACH,yCAA0C;AAmT1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,0DAIG;8BAxV2B,+BAA+B"}
|
|
@@ -96,9 +96,11 @@ resources.createGroup()
|
|
|
96
96
|
// skinning into a shared slot would race, so the shader skips the
|
|
97
97
|
// write for any attribute where the flag is set — the cloned slot
|
|
98
98
|
// keeps the source's value and lighting on those vertices uses an
|
|
99
|
-
// undeformed direction.
|
|
100
|
-
//
|
|
101
|
-
//
|
|
99
|
+
// undeformed direction. MeshletBatch#compress never collapses either
|
|
100
|
+
// on a meshlet that carries skin weights, so the skip engages only
|
|
101
|
+
// for a meshlet encoded before it stopped (2026-10-16): until then a
|
|
102
|
+
// flat cloth sheet, every bind normal alike, collapsed and was lit in
|
|
103
|
+
// its bind pose whatever shape it took.
|
|
102
104
|
//
|
|
103
105
|
// SkinningJoints + SkinningWeights are read-only here. They CAN be
|
|
104
106
|
// compressed — a meshlet where every vertex shares the same joint
|
|
@@ -9,6 +9,12 @@
|
|
|
9
9
|
* see "Rendering 'Assassin's Creed Shadows'" GDC 2025 by Nicolas Lopez
|
|
10
10
|
*/
|
|
11
11
|
export class GPUDatabase {
|
|
12
|
+
/**
|
|
13
|
+
* Offer the pipelines {@link update} uploads records with — see {@link PipelineEnquiry}.
|
|
14
|
+
*
|
|
15
|
+
* @param {PipelineEnquiry} enquiry
|
|
16
|
+
*/
|
|
17
|
+
static enquirePipelines(enquiry: PipelineEnquiry): void;
|
|
12
18
|
/**
|
|
13
19
|
* @param {Object} options
|
|
14
20
|
* @param {GPUDatabaseDefinition} options.definition Immutable schema
|
|
@@ -144,6 +150,7 @@ export class GPUDatabase {
|
|
|
144
150
|
destroy(): void;
|
|
145
151
|
#private;
|
|
146
152
|
}
|
|
153
|
+
export type PipelineEnquiry = import("../../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry;
|
|
147
154
|
export type ShadeGPUCommandContext = import("../../../device/ShadeGPUCommandContext.js").ShadeGPUCommandContext;
|
|
148
155
|
export type GPUDatabaseDefinition = import("./GPUDatabaseDefinition.js").GPUDatabaseDefinition;
|
|
149
156
|
import { GPUTypedTable } from "./GPUTypedTable.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUDatabase.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/buffer/table/GPUDatabase.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUDatabase.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/buffer/table/GPUDatabase.js"],"names":[],"mappings":"AA4CA;;;;;;;;;GASG;AACH;IAEI;;;;OAIG;IACH,iCAFW,eAAe,QAKzB;IA8FD;;;;;;OAMG;IACH;QAL0C,UAAU,EAAzC,qBAAqB;QACF,MAAM;QACR,KAAK,GAAtB,MAAM;QACW,uBAAuB,GAAxC,MAAM;OAkJhB;IAlPD;;;OAGG;IACH,YAFU,qBAAqB,CAEpB;IAEX;;;;OAIG;IACH,QAFU,oBAAe,CAElB;IASP;;;OAGG;IACH,kBAAO;IAmDP;;OAEG;IACH,8BAEC;IAED;;;;OAIG;IACH,oBAEC;IA2JD;;;;;OAKG;IACH,UAHW,MAAM,GACJ,qBAAc,SAAS,CAUnC;IAGD;;;;;;;;;;;OAWG;IACH,oCAcC;IAED;;;;;OAKG;IACH,gCAEC;IAoPD;;;;;;;;;;;OAWG;IACH,kCAeC;IAED;;;OAGG;IACH,gBAFW,sBAAsB,QA6FhC;IA+OD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,2BAJW,MAAM,GACJ,QAAQ,KAAG,CAAC,CA6HxB;IAED;;;;;;;OAOG;IACH,+BAJW,MAAM,iBACN,MAAM,GACJ,YAAU,CAkCtB;IAED;;;OAGG;IACH,+BAQC;IAED;;OAEG;IACH,gBASC;;CACJ;8BAppCY,OAAO,6CAA6C,EAAE,eAAe;qCACrE,OAAO,2CAA2C,EAAE,sBAAsB;oCAC1E,OAAO,4BAA4B,EAAE,qBAAqB;8BAPzC,oBAAoB;oCALd,0BAA0B"}
|