@woosh/meep-engine 3.58.0 → 3.59.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/editor/particles/effect/ParticleEffectDocument.d.ts +162 -43
- package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
- package/editor/particles/effect/ParticleEffectDocument.js +450 -43
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts +12 -3
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.js +78 -23
- package/editor/particles/effect/make_starter_particle_effect.js +17 -17
- package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts +3 -3
- package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleEmitterInspectorView.js +224 -67
- package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleGraphEditorView.js +44 -11
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts +2 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.js +46 -16
- package/editor/view/particles/effect/ParticlePreviewView.js +2 -2
- package/editor/view/particles/effect/particle-editor.css +77 -68
- package/package.json +1 -1
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +2 -2
- package/src/engine/ecs/EntityManager.d.ts +29 -5
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +37 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +4 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +74 -17
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +156 -25
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts +13 -3
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.js +59 -13
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts +3 -3
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.js +9 -9
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_2_3.d.ts +15 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_2_3.d.ts.map +1 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_2_3.js +78 -0
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +2 -0
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.js +2 -0
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.js +1 -1
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.js +1 -1
- package/src/engine/graphics/trail/tube/TubeX.d.ts +5 -3
- package/src/engine/graphics/trail/tube/TubeX.d.ts.map +1 -1
- package/src/engine/graphics/trail/tube/TubeX.js +5 -3
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts +3 -2
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts.map +1 -1
- package/src/engine/graphics/trail/tube/tube_attributes_spec.js +9 -8
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +65 -4
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +1351 -904
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts +1 -1
- package/src/engine/graphics3/trail/trail_tube_write_geometry.js +13 -13
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/generation/foliage/FOLIAGE_DESIGN.md +26 -5
- package/src/generation/foliage/LOD_REWORK_BRIEF_2026_10_27.md +35 -0
- package/src/generation/foliage/SELF_ORGANIZING_FRAMEWORK_BRIEF_2026_10_26.md +2 -1
- package/src/generation/foliage/TWO_FRONT_ENDS_BRIEF_2026_10_28.md +552 -0
- package/src/generation/foliage/analysis/tree_crown_opacity.d.ts.map +1 -1
- package/src/generation/foliage/analysis/tree_crown_opacity.js +2 -1
- package/src/generation/foliage/analysis/tree_render_cost.d.ts +5 -3
- package/src/generation/foliage/analysis/tree_render_cost.d.ts.map +1 -1
- package/src/generation/foliage/analysis/tree_render_cost.js +8 -7
- package/src/generation/foliage/asset/TreeAsset.d.ts +17 -0
- package/src/generation/foliage/asset/TreeAsset.d.ts.map +1 -1
- package/src/generation/foliage/asset/TreeAsset.js +20 -0
- package/src/generation/foliage/asset/TreeSpeciesCache.d.ts +69 -0
- package/src/generation/foliage/asset/TreeSpeciesCache.d.ts.map +1 -0
- package/src/generation/foliage/asset/TreeSpeciesCache.js +147 -0
- package/src/generation/foliage/asset/generate_tree.d.ts +10 -0
- package/src/generation/foliage/asset/generate_tree.d.ts.map +1 -1
- package/src/generation/foliage/asset/generate_tree.js +57 -29
- package/src/generation/foliage/asset/place_tree.d.ts +2 -1
- package/src/generation/foliage/asset/place_tree.d.ts.map +1 -1
- package/src/generation/foliage/asset/place_tree.js +2 -1
- package/src/generation/foliage/asset/tree_lod_plan.d.ts +4 -2
- package/src/generation/foliage/asset/tree_lod_plan.d.ts.map +1 -1
- package/src/generation/foliage/asset/tree_lod_plan.js +12 -14
- package/src/generation/foliage/asset/tree_shoot_instances.d.ts +119 -0
- package/src/generation/foliage/asset/tree_shoot_instances.d.ts.map +1 -0
- package/src/generation/foliage/asset/tree_shoot_instances.js +410 -0
- package/src/generation/foliage/asset/tree_shoot_prototypes.d.ts +155 -0
- package/src/generation/foliage/asset/tree_shoot_prototypes.d.ts.map +1 -0
- package/src/generation/foliage/asset/tree_shoot_prototypes.js +251 -0
- package/src/generation/foliage/config/TreeGrowth.d.ts +10 -0
- package/src/generation/foliage/config/TreeGrowth.d.ts.map +1 -0
- package/src/generation/foliage/config/TreeGrowth.js +18 -0
- package/src/generation/foliage/config/TreeLODConfig.d.ts +6 -0
- package/src/generation/foliage/config/TreeLODConfig.d.ts.map +1 -1
- package/src/generation/foliage/config/TreeLODConfig.js +7 -0
- package/src/generation/foliage/index.d.ts +3 -0
- package/src/generation/foliage/index.js +3 -0
- package/src/generation/foliage/material/foliage_tile.d.ts +6 -6
- package/src/generation/foliage/material/foliage_tile.js +3 -3
- package/src/generation/foliage/material/tree_cluster_atlas.d.ts +44 -0
- package/src/generation/foliage/material/tree_cluster_atlas.d.ts.map +1 -0
- package/src/generation/foliage/material/tree_cluster_atlas.js +37 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.js +2 -2
- package/src/generation/foliage/mesh/foliage_scale_spread.d.ts +14 -0
- package/src/generation/foliage/mesh/foliage_scale_spread.d.ts.map +1 -0
- package/src/generation/foliage/mesh/foliage_scale_spread.js +15 -0
- package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts +8 -7
- package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_cluster_representatives.js +85 -40
- package/src/generation/foliage/mesh/tree_clusters.d.ts +26 -5
- package/src/generation/foliage/mesh/tree_clusters.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_clusters.js +52 -39
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_mesh_build_bark.js +32 -54
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts +6 -1
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -1
- package/src/generation/foliage/presets/make_tree_species_preset.js +157 -3
- package/src/generation/foliage/skeleton/TreeSkeleton.d.ts +19 -0
- package/src/generation/foliage/skeleton/TreeSkeleton.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/TreeSkeleton.js +41 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_joint_mechanics.d.ts +5 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_joint_mechanics.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_compute_joint_mechanics.js +8 -1
- package/src/generation/foliage/skeleton/tree_skeleton_copy_branches.d.ts +70 -0
- package/src/generation/foliage/skeleton/tree_skeleton_copy_branches.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_copy_branches.js +171 -0
- package/src/generation/foliage/skeleton/tree_skeleton_extend_branch.d.ts +17 -0
- package/src/generation/foliage/skeleton/tree_skeleton_extend_branch.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_extend_branch.js +79 -0
- package/src/generation/foliage/skeleton/tree_skeleton_fit_crown_frame.d.ts +12 -0
- package/src/generation/foliage/skeleton/tree_skeleton_fit_crown_frame.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_fit_crown_frame.js +56 -0
- package/src/generation/foliage/skeleton/tree_skeleton_floor_girth.d.ts +11 -0
- package/src/generation/foliage/skeleton/tree_skeleton_floor_girth.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_floor_girth.js +38 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts +4 -11
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_grow.js +8 -2034
- package/src/generation/foliage/skeleton/tree_skeleton_grow_framework.d.ts +22 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow_framework.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow_framework.js +2050 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow_shoots.d.ts +10 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow_shoots.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_grow_shoots.js +27 -56
- package/src/shade/descriptor/pipeline/render/DepthStencilState.d.ts +4 -0
- package/src/shade/descriptor/pipeline/render/DepthStencilState.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/DepthStencilState.js +170 -144
- package/src/shade/descriptor/pipeline/render/MultisampleState.d.ts +4 -0
- package/src/shade/descriptor/pipeline/render/MultisampleState.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/MultisampleState.js +78 -65
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +176 -172
- package/src/shade/descriptor/pipeline/render/StencilFaceState.d.ts +4 -0
- package/src/shade/descriptor/pipeline/render/StencilFaceState.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/StencilFaceState.js +107 -88
- package/src/shade/playground/particle_ecs/README.md +9 -8
- package/src/shade/playground/particle_ecs/bonfire_editor.js +3 -3
- package/src/shade/playground/particle_ecs/bonfire_effects.d.ts +6 -6
- package/src/shade/playground/particle_ecs/bonfire_effects.js +6 -6
- package/src/shade/playground/particle_editor/README.md +14 -11
- package/src/shade/playground/particle_system/particle_prototype.js +18 -18
- package/src/shade/playground/particle_system/particle_scene.js +13 -13
- package/src/shade/playground/probe_clipmap/README.md +42 -0
- package/src/shade/playground/probe_clipmap/index.html +178 -0
- package/src/shade/playground/probe_clipmap/main.d.ts +8 -0
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -0
- package/src/shade/playground/probe_clipmap/main.js +360 -0
- package/src/shade/renderer/Renderer.d.ts +3 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +94 -38
- package/src/shade/renderer/extension/ViewTextures.d.ts +2 -1
- package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/ViewTextures.js +2 -1
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +34 -12
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +56 -15
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +2 -2
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +13 -26
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts +25 -2
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.js +54 -32
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_VERDICT.d.ts +14 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_VERDICT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_VERDICT.js +37 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_arena.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_arena.js +16 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.js +2 -6
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_descent.d.ts +131 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_descent.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_descent.js +467 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts +24 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.js +111 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_rule.d.ts +42 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_rule.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_rule.js +404 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_stat.d.ts +16 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_stat.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_stat.js +23 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_want.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_want.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_want.js +65 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +14 -70
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +13 -773
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_cut_descent.d.ts +55 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_cut_descent.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_cut_descent.js +248 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +15 -174
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_probe_meta_pick2.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_probe_meta_pick2.js +8 -24
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_forward_indirect.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_forward_indirect.js +1 -25
- package/src/shade/renderer/global_illumination/lpv/deprecated/chunk_lpv_get_visibility_mask.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/deprecated/chunk_lpv_get_visibility_mask.js +5 -23
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +25 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +126 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_CLIPMAP_PROPOSAL_2026_10_27.md +832 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +7 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +8 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +16 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +9 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/{mesh/chunk_mesh_brick_object.d.ts → chunk_brick_object.d.ts} +8 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_object.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_object.js +42 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_provider.d.ts +45 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_provider.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_provider.js +93 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK_INSTANCE_STRUCT.d.ts +0 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK_INSTANCE_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK_INSTANCE_STRUCT.js +0 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.d.ts +2 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.js +5 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_provider.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_provider.js +13 -22
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGEO_BRICK.d.ts +99 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGEO_BRICK.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGEO_BRICK.js +139 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGeoBrickProvider.d.ts +65 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGeoBrickProvider.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/VGeoBrickProvider.js +393 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_box.d.ts +17 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_box.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_box.js +36 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_pair.d.ts +29 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_pair.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_pair.js +108 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_texel.d.ts +31 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_texel.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_texel.js +113 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_triangle.d.ts +36 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_triangle.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/chunk_vgeo_brick_triangle.js +85 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_distance.d.ts +23 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_distance.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_distance.js +273 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_gather.d.ts +13 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_gather.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_gather.js +151 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_traverse.d.ts +13 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_traverse.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_traverse.js +133 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_wait.d.ts +22 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_wait.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/vgeo/shader_vgeo_brick_wait.js +135 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +20 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +152 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +7 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +8 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +14 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +50 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts +19 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.js +40 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +72 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +343 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts +29 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +188 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +26 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +132 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +4 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +26 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts +3 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +8 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.d.ts +12 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +101 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +15 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +175 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +26 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +210 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_retire.d.ts +3 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_retire.js +3 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +2 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +5 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +3 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts +5 -9
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +9 -110
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +27 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +110 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts +13 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.js +40 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +11 -6
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +15 -8
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts +9 -2
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +25 -11
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/particles/DESIGN.md +151 -42
- package/src/shade/renderer/particles/EMITTER_GLOBAL_STATE_PLAN_2026_10_29.md +283 -0
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +10 -2
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +46 -8
- package/src/shade/renderer/particles/ParticleConstants.d.ts +23 -6
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +25 -6
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.js +5 -5
- package/src/shade/renderer/particles/bounds/shader_particle_bounds.js +187 -187
- package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts +20 -9
- package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.js +36 -10
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +8 -7
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +25 -16
- package/src/shade/renderer/particles/data/PARTICLE_FIELD_BINDING.d.ts +51 -0
- package/src/shade/renderer/particles/data/PARTICLE_FIELD_BINDING.d.ts.map +1 -0
- package/src/shade/renderer/particles/data/PARTICLE_FIELD_BINDING.js +56 -0
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/particle_emitter_record.js +2 -0
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +1 -1
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +22 -11
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +14 -11
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +4 -4
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +59 -24
- package/src/shade/renderer/particles/graph/ParticleValueType.d.ts +3 -3
- package/src/shade/renderer/particles/graph/ParticleValueType.js +287 -287
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts +13 -6
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/compile_particle_graph.js +46 -27
- package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts +8 -2
- package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/infer_particle_graph_types.js +240 -234
- package/src/shade/renderer/particles/graph/make_particle_group.d.ts +1 -1
- package/src/shade/renderer/particles/graph/make_particle_group.js +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts +3 -2
- package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_authoring.js +3 -2
- package/src/shade/renderer/particles/graph/particle_graph_distributions.js +170 -170
- package/src/shade/renderer/particles/graph/particle_graph_json.d.ts +25 -16
- package/src/shade/renderer/particles/graph/particle_graph_json.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_json.js +16 -2
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +29 -15
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_parameters.js +54 -22
- package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_presentation.js +18 -8
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts +9 -2
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/validate_particle_graph.js +70 -32
- package/src/shade/renderer/particles/graph_particles.d.ts +9 -4
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +27 -4
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts +7 -6
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/InstructionStream.js +17 -16
- package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts +17 -0
- package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleAssembler.js +35 -0
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts +26 -6
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleProgram.js +61 -9
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +55 -4
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleVMISA.js +79 -10
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts +20 -6
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/particle_assembly.js +136 -25
- package/src/shade/renderer/particles/isa/particle_link_global_fields.d.ts +20 -0
- package/src/shade/renderer/particles/isa/particle_link_global_fields.d.ts.map +1 -0
- package/src/shade/renderer/particles/isa/particle_link_global_fields.js +46 -0
- package/src/shade/renderer/particles/isa/validate_particle_program.js +8 -8
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts +62 -28
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
- package/src/shade/renderer/particles/layout/ParticleLayout.js +102 -62
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.js +2 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.js +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +4 -3
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.js +2 -2
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts +3 -3
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +11 -11
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +4 -4
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.js +5 -4
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts +1 -1
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.js +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +4 -4
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +13 -11
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +7 -7
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +3 -2
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +5 -4
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.js +51 -51
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +5 -5
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_schedule.js +2 -2
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.js +5 -4
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +93 -22
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +336 -29
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +43 -3
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +43 -3
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +56 -26
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +89 -33
- package/src/shade/renderer/particles/runtime/ParticleGlobalFields.d.ts +85 -0
- package/src/shade/renderer/particles/runtime/ParticleGlobalFields.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/ParticleGlobalFields.js +221 -0
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts +143 -18
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ProgramHeap.js +378 -28
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +19 -7
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/create_particle_effect.js +22 -9
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +8 -8
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts +3 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.js +4 -0
- package/src/shade/renderer/particles/shaders/shader_particle_field_bind.d.ts +30 -0
- package/src/shade/renderer/particles/shaders/shader_particle_field_bind.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_field_bind.js +121 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.js +3 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +12 -4
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.js +48 -11
- package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +36 -14
- package/src/shade/renderer/postprocess/PostProcess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/PostProcess.js +2 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +31 -19
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +44 -30
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +16 -2
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.js +4 -3
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts +7 -1
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.js +16 -0
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts +20 -2
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +53 -3
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.d.ts +10 -2
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.js +31 -3
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +17 -11
- package/src/shade/renderer/postprocess/taa/TAA.d.ts +4 -2
- package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/TAA.js +6 -1
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.js +10 -5
- package/src/shade/renderer/postprocess/taa/shader_taa.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/shader_taa.js +15 -12
- 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 +26 -17
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.d.ts +4 -3
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js +6 -4
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts +12 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js +57 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +4 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +4 -2
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +8 -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 +28 -15
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.d.ts +2 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.js +19 -3
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +4 -2
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts +3 -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 +27 -14
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.d.ts +2 -1
- 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 +19 -3
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts +2 -8
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.js +25 -52
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_positions.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_positions.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_positions.js +52 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/TRIANGLE_POSITIONS_STRUCT.d.ts +7 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/TRIANGLE_POSITIONS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/TRIANGLE_POSITIONS_STRUCT.js +12 -0
- package/src/shade/renderer/shader/chunk/grid/chunk_index_to_grid2d_reciprocal.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/grid/chunk_index_to_grid2d_reciprocal.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/grid/chunk_index_to_grid2d_reciprocal.js +37 -0
- package/src/shade/renderer/shader/chunk/light/lpv/depth/chunk_lpv_mask_weights_by_visibility.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/lpv/depth/chunk_lpv_mask_weights_by_visibility.js +26 -60
- package/src/shade/renderer/shader/chunk/light/probe/chunk_probe_visibility_weight.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/light/probe/chunk_probe_visibility_weight.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/light/probe/chunk_probe_visibility_weight.js +54 -0
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/chunk_f16_round_stochastic.js +43 -0
- package/src/shade/renderer/shader/chunk/random/chunk_jitter_from_vectors.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/random/chunk_jitter_from_vectors.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/chunk_jitter_from_vectors.js +37 -0
- package/src/shade/renderer/shader/chunk/random/reservoir/chunk_pick2_wrs_mat2x4.d.ts +27 -0
- package/src/shade/renderer/shader/chunk/random/reservoir/chunk_pick2_wrs_mat2x4.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/reservoir/chunk_pick2_wrs_mat2x4.js +61 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_specular.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_specular.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_specular.js +41 -0
- package/src/shade/renderer/texture/util/texture_fill_rectangle.d.ts.map +1 -1
- package/src/shade/renderer/texture/util/texture_fill_rectangle.js +282 -267
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +8 -4
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +36 -36
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +6 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +498 -484
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +15 -2
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +57 -3
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.js +197 -191
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +4 -4
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +2 -1
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +5 -1
- package/src/shade/renderer/water/chunk_water_gi.d.ts +13 -3
- package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_gi.js +47 -5
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/water/shader_water.d.ts +3 -2
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +9 -3
- package/src/shade/renderer/geometry/sdf/SDF_BUILD_SETTINGS_STRUCT.d.ts +0 -3
- package/src/shade/renderer/geometry/sdf/SDF_BUILD_SETTINGS_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/SFD_BUILD_WORKGROUP_SIZE.d.ts +0 -2
- package/src/shade/renderer/geometry/sdf/SFD_BUILD_WORKGROUP_SIZE.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_sdf.d.ts +0 -8
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_sdf.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_volume_sign.d.ts +0 -3
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_volume_sign.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.d.ts +0 -3
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.d.ts.map +0 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_object.d.ts.map +0 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_object.js +0 -42
- package/src/shade/renderer/particles/shaders/shader_particle_init_free_list.d.ts +0 -31
- package/src/shade/renderer/particles/shaders/shader_particle_init_free_list.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts +0 -42
- package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts +0 -54
- package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts +0 -14
- package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts +0 -30
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts.map +0 -1
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts +0 -23
- package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TAA.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/taa/TAA.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TAA.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/taa/TAA.js"],"names":[],"mappings":"AAQA;;GAEG;AAEH;IAEI;;;;OAIG;IACH,eAFU,OAAO,CAEK;IAatB;;;OAGG;IACH,uBAEC;IAED;;;OAGG;IACH,4BAEC;IAED;;OAEG;IACH,uCAEC;IAED;;OAEG;IACH,mCAEC;IAED;;OAEG;IACH,2BAEC;IAED;;;;;;OAMG;IACH,0BAHW,eAAe,0CAKzB;IAED;;;;;;;;;;;OAWG;IACH;QAT+B,KAAK;QACT,gBAAgB,EAAhC,MAAM;QACU,qBAAqB,EAArC,MAAM;QACU,qBAAqB,EAArC,MAAM;QACU,cAAc,EAA9B,MAAM;QACU,iBAAiB,EAAjC,MAAM;QACqB,iBAAiB,EAA5C,UAAU,MAAM,CAAC;eAqC3B;;CACJ;8BAtHY,OAAO,6CAA6C,EAAE,eAAe"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
//
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
import { assert } from "../../../../core/assert.js";
|
|
4
5
|
import { TemporalJitterSequence } from "../TemporalJitterSequence.js";
|
|
5
6
|
import { graph_image_pass } from "../../shader/graph/graph_image_pass.js";
|
|
6
7
|
import { shader_taa } from "./shader_taa.js";
|
|
@@ -86,7 +87,8 @@ export class TAA {
|
|
|
86
87
|
* @param {number} options.texture_color_history
|
|
87
88
|
* @param {number} options.texture_output
|
|
88
89
|
* @param {number} options.texture_occlusion depth-clip pass output: confidence in r, nearest-depth offset in g
|
|
89
|
-
* @param
|
|
90
|
+
* @param {ArrayLike<number>} options.output_resolution size of `texture_output`; the history keeps
|
|
91
|
+
* the size it was resolved at across a resize
|
|
90
92
|
*/
|
|
91
93
|
graph_pass({
|
|
92
94
|
graph,
|
|
@@ -95,7 +97,9 @@ export class TAA {
|
|
|
95
97
|
texture_color_history = -1,
|
|
96
98
|
texture_output,
|
|
97
99
|
texture_occlusion = -1,
|
|
100
|
+
output_resolution,
|
|
98
101
|
}) {
|
|
102
|
+
assert.isArrayLike(output_resolution, 'output_resolution');
|
|
99
103
|
|
|
100
104
|
const history_validity = this.reset_history ? 0.0 : 1.0;
|
|
101
105
|
|
|
@@ -112,6 +116,7 @@ export class TAA {
|
|
|
112
116
|
tOcclusion: texture_occlusion,
|
|
113
117
|
settings: {
|
|
114
118
|
jitter: this.Jitter,
|
|
119
|
+
output_resolution,
|
|
115
120
|
history_validity,
|
|
116
121
|
}
|
|
117
122
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_fsr2_compute_depth_clip.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,4CAFU,SAAS,
|
|
1
|
+
{"version":3,"file":"chunk_fsr2_compute_depth_clip.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/taa/chunk_fsr2_compute_depth_clip.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,4CAFU,SAAS,CAkGjB;0BA9HwB,oCAAoC"}
|
|
@@ -42,11 +42,16 @@ fn fsr2_compute_depth_clip(
|
|
|
42
42
|
render_size: vec2<i32>
|
|
43
43
|
) -> f32 {
|
|
44
44
|
let fCurrentDepthViewSpace = get_view_space_depth(current_depth_sample, camera_current);
|
|
45
|
-
|
|
45
|
+
|
|
46
|
+
// previous_coord is in this frame's pixels, and the previous depth keeps the size it was drawn
|
|
47
|
+
// at across a resolution change, so carry the position into its grid. Equal sizes scale by 1.
|
|
48
|
+
let previous_size = vec2<i32>(textureDimensions(PrevDepthBuffer));
|
|
49
|
+
let previous_st = previous_coord * vec2<f32>(previous_size) / vec2<f32>(render_size);
|
|
50
|
+
|
|
46
51
|
// matches FSR2's GetBilinearSamplingData: iBasePos = floor(prev_coord - 0.5).
|
|
47
52
|
// floor (not truncate) so the bilinear footprint stays correct for negative coords.
|
|
48
|
-
let sample_coord_fract = fract(
|
|
49
|
-
let sample_coord_i = vec2<i32>(floor(
|
|
53
|
+
let sample_coord_fract = fract(previous_st + 0.5);
|
|
54
|
+
let sample_coord_i = vec2<i32>(floor(previous_st - 0.5));
|
|
50
55
|
let bilinear_weights = get_bilinear_weights(sample_coord_fract);
|
|
51
56
|
|
|
52
57
|
var fDilatedSum = 0.0f;
|
|
@@ -68,14 +73,14 @@ fn fsr2_compute_depth_clip(
|
|
|
68
73
|
let iOffset = offsets[iSampleIndex];
|
|
69
74
|
let iSamplePos = sample_coord_i + iOffset;
|
|
70
75
|
|
|
71
|
-
if (is_on_screen_i32(iSamplePos,
|
|
76
|
+
if (is_on_screen_i32(iSamplePos, previous_size)) {
|
|
72
77
|
let fWeight = bilinear_weights[iSampleIndex];
|
|
73
78
|
|
|
74
79
|
if (fWeight > fReconstructedDepthBilinearWeightThreshold) {
|
|
75
80
|
|
|
76
81
|
// 2x2 min-gather of raw prev depth picks the FARTHEST in inverted
|
|
77
82
|
// depth — see the file docstring for why this is intentional.
|
|
78
|
-
let fPrevDepthSample = texture_sample_red_min_st(PrevDepthBuffer,
|
|
83
|
+
let fPrevDepthSample = texture_sample_red_min_st(PrevDepthBuffer, previous_st + vec2<f32>(iOffset) - 0.5, 0);
|
|
79
84
|
let fPrevNearestDepthViewSpace = get_view_space_depth(fPrevDepthSample, camera_previous);
|
|
80
85
|
|
|
81
86
|
let fDepthDiff = fCurrentDepthViewSpace - fPrevNearestDepthViewSpace;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_taa.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/taa/shader_taa.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_taa.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/taa/shader_taa.js"],"names":[],"mappings":"AA6CA,+CAAgD;AAGhD;;;GAGG;AACH,4CAFU,SAAS,CASjB;AAEF;;;;GAIG;AACH,gDAFU,SAAS,CAgBjB;AA6LF,qCAaG;0BAnRuB,oCAAoC;4BAClC,6BAA6B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { f32, vec2f } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
2
|
import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
|
|
3
|
-
import { chunk_aabb3_normalized_dist } from "../../shader/chunk/geometry/aabb3/chunk_line_aabb3_clipping_distance.js";
|
|
3
|
+
import { chunk_aabb3_normalized_dist } from "../../shader/chunk/geometry/aabb3/chunk_line_aabb3_clipping_distance.js";
|
|
4
4
|
import { F16_MAX_DEFINITION } from "../../shader/chunk/math/F16_MAX_DEFINITION.js";
|
|
5
5
|
import {
|
|
6
6
|
chunk_texture_sample_catmullrom_hardware_5tap_uv
|
|
@@ -18,6 +18,11 @@ import { chunk_taa_history_color_bounding_box_YCoCg } from "./chunk_taa_history_
|
|
|
18
18
|
|
|
19
19
|
const TAA_SETTINGS_STRUCT = WebGPUStruct.from({
|
|
20
20
|
jitter: vec2f,
|
|
21
|
+
/**
|
|
22
|
+
* Size of the target this pass resolves into, in pixels. Not the history's: across a resize the
|
|
23
|
+
* history keeps the size it was resolved at, and is read by uv.
|
|
24
|
+
*/
|
|
25
|
+
output_resolution: vec2f,
|
|
21
26
|
/**
|
|
22
27
|
* Used to reset history, should be 1.0 except when reset is required
|
|
23
28
|
*/
|
|
@@ -26,12 +31,12 @@ const TAA_SETTINGS_STRUCT = WebGPUStruct.from({
|
|
|
26
31
|
|
|
27
32
|
const resources = new ShaderResourceSetDescriptor();
|
|
28
33
|
|
|
29
|
-
// per-pass,
|
|
34
|
+
// per-pass, 24 bytes, read-only: immediate data rather than a uniform buffer.
|
|
30
35
|
resources.setImmediate("settings", TAA_SETTINGS_STRUCT);
|
|
31
36
|
resources.createGroup()
|
|
32
37
|
.addSampler("sLinear", "filtering", SAMPLER_LINEAR_UPSCALE)
|
|
33
38
|
.addTexture("VelocityBuffer", "float") // raw velocity, in internal pixels
|
|
34
|
-
.addTexture("HistoryTexture", "float") // previous resolved frame, at output resolution.
|
|
39
|
+
.addTexture("HistoryTexture", "float") // previous resolved frame, at the output resolution it was resolved at.
|
|
35
40
|
.addTexture("ColourTexture", "float") // incoming frame, drawn at internal resolution. Typically lower than output.
|
|
36
41
|
.addTexture("tOcclusion", "float") // depth-clip pass output at internal resolution: r confidence, g nearest-depth offset
|
|
37
42
|
;
|
|
@@ -87,9 +92,7 @@ const body = CodeChunk.from(
|
|
|
87
92
|
//language=WGSL
|
|
88
93
|
`
|
|
89
94
|
fn uv_within_screen( pixel:vec2<f32> ) -> f32{
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if( all( pixel >= vec2( 0.f, 0.f ) ) && all( pixel < vec2f( render_size ) ) ){
|
|
95
|
+
if( all( pixel >= vec2( 0.f, 0.f ) ) && all( pixel < settings.output_resolution ) ){
|
|
93
96
|
return 1.0f;
|
|
94
97
|
} else{
|
|
95
98
|
return 0.f;
|
|
@@ -102,10 +105,10 @@ fn main(
|
|
|
102
105
|
@location(0) uv: vec2<f32>,
|
|
103
106
|
) -> @location(0) vec4<f32> {
|
|
104
107
|
let resolution_internal = textureDimensions(ColourTexture).xy;
|
|
105
|
-
let resolution_output =
|
|
108
|
+
let resolution_output = settings.output_resolution;
|
|
106
109
|
|
|
107
|
-
let resolution_ratio = vec2<f32>(resolution_internal.xy) /
|
|
108
|
-
let upscale_ratio =
|
|
110
|
+
let resolution_ratio = vec2<f32>(resolution_internal.xy) / resolution_output;
|
|
111
|
+
let upscale_ratio = resolution_output.x / f32(resolution_internal.x);
|
|
109
112
|
|
|
110
113
|
// positive jitter shifts rendered content right/down by settings.jitter internal pixels (see
|
|
111
114
|
// GPUCameraContext), so the un-jittered content of this output pixel sits at uv + jitter / resolution
|
|
@@ -145,14 +148,14 @@ fn main(
|
|
|
145
148
|
ColourTexture,
|
|
146
149
|
sLinear,
|
|
147
150
|
jittered_uv,
|
|
148
|
-
).rgb;
|
|
151
|
+
).rgb;
|
|
149
152
|
let color_current_raw = select(vec3(0.0), clamp(color_current_sample, vec3(0.0), vec3(F16_MAX)), color_current_sample == color_current_sample);
|
|
150
153
|
|
|
151
154
|
var final_colour:vec4<f32>;
|
|
152
155
|
|
|
153
156
|
if ( true == hasValidHistory ) {
|
|
154
157
|
|
|
155
|
-
let prev_uv =
|
|
158
|
+
let prev_uv = prevFrameScreenST / resolution_output;
|
|
156
159
|
|
|
157
160
|
// sample history
|
|
158
161
|
var color_history_raw = texture_sample_catmullrom_hardware_5tap_uv( HistoryTexture, sLinear, prev_uv );
|
|
@@ -251,7 +254,7 @@ fn main(
|
|
|
251
254
|
return final_colour.rgba;
|
|
252
255
|
}
|
|
253
256
|
`, [
|
|
254
|
-
F16_MAX_DEFINITION,
|
|
257
|
+
F16_MAX_DEFINITION,
|
|
255
258
|
chunk_taa_decode_color,
|
|
256
259
|
chunk_taa_encode_color,
|
|
257
260
|
chunk_taa_history_color_bounding_box_YCoCg,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_add_per_object_velocity.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_add_per_object_velocity.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js"],"names":[],"mappings":"AAmRA;;;;GAIG;AACH,+DAFW,eAAe,QAIzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH;IAjB4B,KAAK;IACT,aAAa,EAA1B,MAAM;IACO,gBAAgB,EAA7B,MAAM;IACO,oBAAoB,EAAjC,MAAM;IACO,qBAAqB,EAAlC,MAAM;IACO,uBAAuB,EAApC,MAAM;IACO,mBAAmB,EAAhC,MAAM;IACO,4BAA4B,EAAzC,MAAM;IACO,qBAAqB,EAAlC,MAAM;IACQ,eAAe,EAA7B,OAAO;IAGQ,UAAU,EAAzB,MAAM,EAAE;IACa,IAAI;IACV,aAAa,GAA5B,OAAO;IACL,MAAM,CAgFlB;8BArXY,OAAO,6CAA6C,EAAE,eAAe"}
|
|
@@ -96,19 +96,24 @@ fn main(
|
|
|
96
96
|
) -> @location(0) vec2<f32> {
|
|
97
97
|
|
|
98
98
|
let cur_px = coord.xy;
|
|
99
|
-
let
|
|
100
|
-
let mesh_id = textureLoad(tVizMesh,
|
|
99
|
+
let texel = vec2<u32>(cur_px);
|
|
100
|
+
let mesh_id = textureLoad(tVizMesh, texel, 0).r;
|
|
101
101
|
|
|
102
102
|
// ── Background: rotation-only reprojection ──────────────────
|
|
103
|
+
//
|
|
104
|
+
// Visibility-buffer clears leave mesh_id == VIZ_INVALID on sky
|
|
105
|
+
// pixels, where reverse-Z depth is always 0.0. Passing 0.0
|
|
106
|
+
// directly avoids a tDepth textureLoad on every background pixel.
|
|
103
107
|
if mesh_id == VIZ_INVALID {
|
|
104
108
|
let position_previous = v3_matrix4_project(
|
|
105
|
-
vec3<f32>(cur_px,
|
|
109
|
+
vec3<f32>(cur_px, 0.0),
|
|
106
110
|
mReprojectionRotation
|
|
107
111
|
);
|
|
108
112
|
return cur_px - position_previous.xy;
|
|
109
113
|
}
|
|
110
114
|
|
|
111
115
|
// ── Reconstruct world-space position for this pixel ─────────
|
|
116
|
+
let cur_depth = textureLoad(tDepth, texel, 0).r;
|
|
112
117
|
let res = vec2<f32>(textureDimensions(tDepth));
|
|
113
118
|
let cur_ndc = vec3<f32>(
|
|
114
119
|
cur_px.x / res.x * 2.0 - 1.0,
|
|
@@ -128,21 +133,24 @@ fn main(
|
|
|
128
133
|
// triangle-within-meshlet. Look up the per-meshlet
|
|
129
134
|
// prev-position offset; sentinel means "not a skinned clone,
|
|
130
135
|
// use rigid per-object math".
|
|
131
|
-
|
|
132
|
-
let meshlet_id = (triangle_packed >> 8u) & 0x00FFFFFFu;
|
|
133
|
-
let tri_local = triangle_packed & 0xFFu;
|
|
134
|
-
|
|
136
|
+
//
|
|
135
137
|
// The per-vertex skinning path reads prev_position_offsets /
|
|
136
138
|
// prev_positions, which only hold valid data when a skinned mesh is
|
|
137
139
|
// registered. When skinning is inactive those are placeholder
|
|
138
140
|
// bindings (the scene_database buffer) and reading them would feed
|
|
139
141
|
// garbage offsets into the skinned branch — a non-sentinel word
|
|
140
142
|
// there sends a static triangle down the per-vertex path and
|
|
141
|
-
// fabricates a constant phantom velocity. Gate the
|
|
142
|
-
//
|
|
143
|
-
//
|
|
143
|
+
// fabricates a constant phantom velocity. Gate both the tVizTriangle
|
|
144
|
+
// textureLoad and the offset buffer read on skinning_active so
|
|
145
|
+
// non-skinned scenes skip the full-screen tVizTriangle fetch and
|
|
146
|
+
// every pixel takes the rigid per-object path.
|
|
147
|
+
var meshlet_id = 0u;
|
|
148
|
+
var tri_local = 0u;
|
|
144
149
|
var prev_pos_base = PREV_POS_OFFSET_INVALID;
|
|
145
150
|
if skinning_active.value != 0u {
|
|
151
|
+
let triangle_packed = textureLoad(tVizTriangle, texel, 0).r;
|
|
152
|
+
meshlet_id = (triangle_packed >> 8u) & 0x00FFFFFFu;
|
|
153
|
+
tri_local = triangle_packed & 0xFFu;
|
|
146
154
|
prev_pos_base = prev_position_offsets[meshlet_id];
|
|
147
155
|
}
|
|
148
156
|
|
|
@@ -151,13 +159,14 @@ fn main(
|
|
|
151
159
|
if prev_pos_base == PREV_POS_OFFSET_INVALID {
|
|
152
160
|
// ── Rigid fallback (static or non-skinned animated) ─────
|
|
153
161
|
//
|
|
154
|
-
// Per-object motion only:
|
|
155
|
-
//
|
|
156
|
-
//
|
|
157
|
-
// world.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
let
|
|
162
|
+
// Per-object motion only: inverse(global) maps the current
|
|
163
|
+
// world point back to mesh-local space, and prev_global
|
|
164
|
+
// transforms it to where that point sat in the previous
|
|
165
|
+
// frame's world. Associating right-to-left (two mat4 × vec4
|
|
166
|
+
// products instead of a mat4 × mat4 plus a mat4 × vec4)
|
|
167
|
+
// saves 48 FMAs per pixel.
|
|
168
|
+
let cur_local_h = mat4_inverse(node.global) * vec4<f32>(cur_world, 1.0);
|
|
169
|
+
let prev_world_h = node.prev_global * cur_local_h;
|
|
161
170
|
prev_world = prev_world_h.xyz / prev_world_h.w;
|
|
162
171
|
} else {
|
|
163
172
|
// ── Skinned per-vertex interpolation ────────────────────
|
|
@@ -14,10 +14,11 @@
|
|
|
14
14
|
* - Brick4: the light map's probes ({@link chunk_forward_sample_indirect_brick4});
|
|
15
15
|
* - LPV: the environment map. The probe volume has no forward sampling; transparent surfaces under
|
|
16
16
|
* LPV are lit as under IBL.
|
|
17
|
-
* - ProbeClipmap:
|
|
17
|
+
* - ProbeClipmap: both from one pick of the probes, the environment map where none weighs anything
|
|
18
|
+
* ({@link chunk_forward_sample_indirect_probe_clipmap}).
|
|
18
19
|
*
|
|
19
|
-
* A pipeline that links this binds what every mode reads, `tEnvironment`, `brick4
|
|
20
|
-
* reads only its own mode's.
|
|
20
|
+
* A pipeline that links this binds what every mode reads, `tEnvironment`, `brick4`, the probes' group
|
|
21
|
+
* (`PROBE_CLIPMAP_SAMPLING_GROUP`) and `view`, and reads only its own mode's.
|
|
21
22
|
*
|
|
22
23
|
* @type {CodeChunkChoice}
|
|
23
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_forward_sample_indirect.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_forward_sample_indirect.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,4CAFU,eAAe,CAE4D;gCA7BrD,0CAA0C"}
|
|
@@ -3,6 +3,7 @@ import { ShadeIndirectLightingMode } from "../../ShadeIndirectLightingMode.js";
|
|
|
3
3
|
import { CodeChunkChoice } from "../../shader/compiler/CodeChunkChoice.js";
|
|
4
4
|
import { chunk_forward_sample_indirect_brick4 } from "./chunk_forward_sample_indirect_brick4.js";
|
|
5
5
|
import { chunk_forward_sample_indirect_environment } from "./chunk_forward_sample_indirect_environment.js";
|
|
6
|
+
import { chunk_forward_sample_indirect_probe_clipmap } from "./chunk_forward_sample_indirect_probe_clipmap.js";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* The indirect light arriving at a forward-shaded fragment, by the renderer's mode
|
|
@@ -20,10 +21,11 @@ import { chunk_forward_sample_indirect_environment } from "./chunk_forward_sampl
|
|
|
20
21
|
* - Brick4: the light map's probes ({@link chunk_forward_sample_indirect_brick4});
|
|
21
22
|
* - LPV: the environment map. The probe volume has no forward sampling; transparent surfaces under
|
|
22
23
|
* LPV are lit as under IBL.
|
|
23
|
-
* - ProbeClipmap:
|
|
24
|
+
* - ProbeClipmap: both from one pick of the probes, the environment map where none weighs anything
|
|
25
|
+
* ({@link chunk_forward_sample_indirect_probe_clipmap}).
|
|
24
26
|
*
|
|
25
|
-
* A pipeline that links this binds what every mode reads, `tEnvironment`, `brick4
|
|
26
|
-
* reads only its own mode's.
|
|
27
|
+
* A pipeline that links this binds what every mode reads, `tEnvironment`, `brick4`, the probes' group
|
|
28
|
+
* (`PROBE_CLIPMAP_SAMPLING_GROUP`) and `view`, and reads only its own mode's.
|
|
27
29
|
*
|
|
28
30
|
* @type {CodeChunkChoice}
|
|
29
31
|
*/
|
|
@@ -32,4 +34,4 @@ export const chunk_forward_sample_indirect = CodeChunkChoice.from(INDIRECT_LIGHT
|
|
|
32
34
|
chunk_forward_sample_indirect.add(ShadeIndirectLightingMode.IBL, chunk_forward_sample_indirect_environment);
|
|
33
35
|
chunk_forward_sample_indirect.add(ShadeIndirectLightingMode.Brick4, chunk_forward_sample_indirect_brick4);
|
|
34
36
|
chunk_forward_sample_indirect.add(ShadeIndirectLightingMode.LPV, chunk_forward_sample_indirect_environment);
|
|
35
|
-
chunk_forward_sample_indirect.add(ShadeIndirectLightingMode.ProbeClipmap,
|
|
37
|
+
chunk_forward_sample_indirect.add(ShadeIndirectLightingMode.ProbeClipmap, chunk_forward_sample_indirect_probe_clipmap);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* {@link chunk_forward_sample_indirect} from the probe clipmap (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §9.5): one
|
|
3
|
+
* pick at the fragment by its shading normal and view, jittered by a hash of its position and normal that
|
|
4
|
+
* changes every frame, as Brick4's is, for both lobes. The irradiance is π × the picked SH resolved at the normal,
|
|
5
|
+
* the specular the pick's radiance at the fragment's roughness (§9.3); where no probe weighs anything, both are
|
|
6
|
+
* the environment's. Reads the probes' group, `view` and `tEnvironment`.
|
|
7
|
+
*
|
|
8
|
+
* @type {CodeChunk}
|
|
9
|
+
*/
|
|
10
|
+
export const chunk_forward_sample_indirect_probe_clipmap: CodeChunk;
|
|
11
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
12
|
+
//# sourceMappingURL=chunk_forward_sample_indirect_probe_clipmap.d.ts.map
|
package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_forward_sample_indirect_probe_clipmap.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH,0DAFU,SAAS,CAoCjB;0BA7CwB,oCAAoC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { chunk_get_ibl_irradiance } from "../../deferred/indirect/chunk_get_ibl_irradiance.js";
|
|
2
|
+
import { chunk_get_ibl_radiance } from "../../deferred/indirect/chunk_get_ibl_radiance.js";
|
|
3
|
+
import { chunk_probe_clipmap_pick } from "../../global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js";
|
|
4
|
+
import {
|
|
5
|
+
chunk_probe_clipmap_sample_radiance
|
|
6
|
+
} from "../../global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js";
|
|
7
|
+
import { PI_DECLARATION } from "../../shader/chunk/math/PI_DECLARATION.js";
|
|
8
|
+
import { chunk_jitter_from_vectors } from "../../shader/chunk/random/chunk_jitter_from_vectors.js";
|
|
9
|
+
import {
|
|
10
|
+
chunk_resolve_irradiance_sh_to_diffuse
|
|
11
|
+
} from "../../shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_diffuse.js";
|
|
12
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* {@link chunk_forward_sample_indirect} from the probe clipmap (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §9.5): one
|
|
16
|
+
* pick at the fragment by its shading normal and view, jittered by a hash of its position and normal that
|
|
17
|
+
* changes every frame, as Brick4's is, for both lobes. The irradiance is π × the picked SH resolved at the normal,
|
|
18
|
+
* the specular the pick's radiance at the fragment's roughness (§9.3); where no probe weighs anything, both are
|
|
19
|
+
* the environment's. Reads the probes' group, `view` and `tEnvironment`.
|
|
20
|
+
*
|
|
21
|
+
* @type {CodeChunk}
|
|
22
|
+
*/
|
|
23
|
+
export const chunk_forward_sample_indirect_probe_clipmap = CodeChunk.from(
|
|
24
|
+
//language=WGSL
|
|
25
|
+
`
|
|
26
|
+
fn forward_sample_indirect(
|
|
27
|
+
position_ws: vec3f,
|
|
28
|
+
view_direction: vec3f,
|
|
29
|
+
normal: vec3f,
|
|
30
|
+
roughness: f32,
|
|
31
|
+
|
|
32
|
+
radiance: ptr<function, vec3f>,
|
|
33
|
+
irradiance: ptr<function, vec3f>,
|
|
34
|
+
) {
|
|
35
|
+
// one pick for both lobes
|
|
36
|
+
let pick = probe_clipmap_pick(position_ws, normal, view_direction, jitter_from_vectors(position_ws, normal));
|
|
37
|
+
let probes = probe_clipmap_sh_of(pick);
|
|
38
|
+
|
|
39
|
+
if (probes.found) {
|
|
40
|
+
// the resolve gives E/π
|
|
41
|
+
*irradiance = PI * resolve_irradiance_sh_to_diffuse(probes.sh.Y, probes.sh.CoCg, normal);
|
|
42
|
+
*radiance = probe_clipmap_radiance_of(pick, position_ws, normal, view_direction, roughness).radiance;
|
|
43
|
+
} else {
|
|
44
|
+
*irradiance = get_ibl_irradiance(normal);
|
|
45
|
+
*radiance = get_ibl_radiance(view_direction, normal, roughness);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
`, [
|
|
49
|
+
chunk_get_ibl_radiance,
|
|
50
|
+
chunk_get_ibl_irradiance,
|
|
51
|
+
chunk_probe_clipmap_pick,
|
|
52
|
+
chunk_probe_clipmap_sample_radiance,
|
|
53
|
+
chunk_resolve_irradiance_sh_to_diffuse,
|
|
54
|
+
chunk_jitter_from_vectors,
|
|
55
|
+
PI_DECLARATION,
|
|
56
|
+
]
|
|
57
|
+
);
|
|
@@ -36,8 +36,9 @@
|
|
|
36
36
|
export type AVBOITSideChannel = {
|
|
37
37
|
/**
|
|
38
38
|
* Optional optics preparation before occupancy; at most one producer per view. Inputs are
|
|
39
|
-
* immutable opaque resources; the light clusters, the shadow atlas
|
|
40
|
-
* indirect lighting mode among them)
|
|
39
|
+
* immutable opaque resources; the light clusters, the shadow atlas, the shader switches (the
|
|
40
|
+
* indirect lighting mode among them) and the probe clipmap GI, whose probes a pass that can take its
|
|
41
|
+
* alternative binds in every mode, are the ones the transparent meshes are lit by. The returned background is read by the one shared resolve.
|
|
41
42
|
* Keep prepared state per graph/camera, not on an entity or in a global current-view slot.
|
|
42
43
|
*/
|
|
43
44
|
avboit_prepare?: (args: {
|
|
@@ -54,6 +55,7 @@ export type AVBOITSideChannel = {
|
|
|
54
55
|
light_cluster_data: number;
|
|
55
56
|
shadowmap_atlas: number;
|
|
56
57
|
shader_switches: import("../../../shader/compiler/ShaderSwitchSet.js").ShaderSwitchSet;
|
|
58
|
+
probes: import("../../../global_illumination/probe_clipmap/GPUProbeClipmapGI.js").GPUProbeClipmapGI;
|
|
57
59
|
}) => {
|
|
58
60
|
background_color?: number;
|
|
59
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AVBOITSideChannel.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AVBOITSideChannel.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAoCc,CAAC,IAAI,EAAE;QAAC,KAAK,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QACjH,QAAc,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QACzF,aAAmB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAC3E,WAAiB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QACvD,wBAA8B,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QACjG,eAAqB,EAAE,MAAM,CAAC;QAC9B,eAAqB,EAAE,OAAO,6CAA6C,EAAE,eAAe,CAAC;QAC7F,MAAY,EAAE,OAAO,iEAAiE,EAAE,iBAAiB,CAAC;KACvG,KAAK;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAC;;;;;sBAMtB,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,MAAY,EAAE,MAAM,CAAC;QACrB,kBAAwB,EAAE,UAAU,MAAM,CAAC,CAAC;QAC5C,SAAe,EAAE,MAAM,CAAC;KACrB,KAAK,MAAM;;;;;;;;kBAED,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,MAAY,EAAE,MAAM,CAAC;QACrB,IAAU,EAAE,MAAM,CAAC;QACnB,aAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAsB,EAAE,MAAM,EAAE,CAAC;QACjC,MAAY,EAAE;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,CAAC;KACjE,KAAK;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC;;;;;;;;;;;;;;iBAKhD,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,QAAc,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QACzE,MAAY,EAAE,MAAM,CAAC;QACrB,aAAmB,EAAE,MAAM,CAAC;QAC5B,IAAU,EAAE,MAAM,CAAC;QACnB,QAAc,EAAE,MAAM,CAAC;QACvB,eAAqB,EAAE,MAAM,CAAC;QAC9B,oBAA0B,EAAE,MAAM,CAAC;QACnC,sBAA4B,EAAE;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC;QACxD,YAAkB,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC,CAAC;KACrF,KAAK;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC;;;;;;sBAW9D,CAAC,IAAI,EAAE,OAAO,iCAAiC,EAAE,cAAc,KAAK,OAAO"}
|
|
@@ -41,10 +41,12 @@
|
|
|
41
41
|
* light_cluster_parameters: number, light_cluster_lookup: number, light_cluster_data: number,
|
|
42
42
|
* shadowmap_atlas: number,
|
|
43
43
|
* shader_switches: import("../../../shader/compiler/ShaderSwitchSet.js").ShaderSwitchSet,
|
|
44
|
+
* probes: import("../../../global_illumination/probe_clipmap/GPUProbeClipmapGI.js").GPUProbeClipmapGI,
|
|
44
45
|
* }) => {background_color?: number}} [avboit_prepare]
|
|
45
46
|
* Optional optics preparation before occupancy; at most one producer per view. Inputs are
|
|
46
|
-
* immutable opaque resources; the light clusters, the shadow atlas
|
|
47
|
-
* indirect lighting mode among them)
|
|
47
|
+
* immutable opaque resources; the light clusters, the shadow atlas, the shader switches (the
|
|
48
|
+
* indirect lighting mode among them) and the probe clipmap GI, whose probes a pass that can take its
|
|
49
|
+
* alternative binds in every mode, are the ones the transparent meshes are lit by. The returned background is read by the one shared resolve.
|
|
48
50
|
* Keep prepared state per graph/camera, not on an entity or in a global current-view slot.
|
|
49
51
|
* @property {(args: {
|
|
50
52
|
* graph: import("../../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph,
|
package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts
CHANGED
|
@@ -105,9 +105,11 @@ export function graph_avboit_integrate({ graph, warp, extinction, overflow, voxe
|
|
|
105
105
|
* @param {number} volumetrics_metadata
|
|
106
106
|
* @param {{color: number, norm: number, extinction: number}} [accumulators] existing targets to add to
|
|
107
107
|
* @param {ShaderSwitchSet} shader_switches the renderer's; the draw's pipelines are built for them
|
|
108
|
+
* @param {import("../../../global_illumination/probe_clipmap/GPUProbeClipmapGI.js").GPUProbeClipmapGI} probes
|
|
109
|
+
* the renderer's probe clipmap GI, whose probes the draw binds in every mode
|
|
108
110
|
* @returns {{color: number, norm: number, extinction: number}}
|
|
109
111
|
*/
|
|
110
|
-
export function graph_avboit_draw({ graph, view_ctx, material_count, materials, draw_commands, meshlets, depth_texture, warp, integral, primitive, light_cluster_parameters, light_cluster_lookup, light_cluster_data, shadowmap_atlas, volumetrics_lut, volumetrics_metadata, accumulators, shader_switches, }: FrameGraph): {
|
|
112
|
+
export function graph_avboit_draw({ graph, view_ctx, material_count, materials, draw_commands, meshlets, depth_texture, warp, integral, primitive, light_cluster_parameters, light_cluster_lookup, light_cluster_data, shadowmap_atlas, volumetrics_lut, volumetrics_metadata, accumulators, shader_switches, probes, }: FrameGraph): {
|
|
111
113
|
color: number;
|
|
112
114
|
norm: number;
|
|
113
115
|
extinction: number;
|
|
@@ -161,12 +163,15 @@ export function avboit_create_accumulators(pass: FramePassBuilder, resolution: A
|
|
|
161
163
|
* @param {ShaderSwitchSet} [options.shader_switches] the renderer's; every pipeline that lights a fragment is
|
|
162
164
|
* built for them, the side channels' included, and the set is all a pass needs to know of the
|
|
163
165
|
* indirect lighting mode
|
|
166
|
+
* @param {import("../../../global_illumination/probe_clipmap/GPUProbeClipmapGI.js").GPUProbeClipmapGI} options.probes
|
|
167
|
+
* the renderer's probe clipmap GI: every pass that lights a fragment binds its probes in every mode, the side
|
|
168
|
+
* channels' included
|
|
164
169
|
* @param {AVBOITSettings} [options.avboit] `Renderer.avboit`; the MBOIT orchestrator ignores it
|
|
165
170
|
* @param {import("./AVBOITSideChannel.js").AVBOITSideChannel[]} [options.side_channels] non-meshlet
|
|
166
171
|
* sources of transparent fragments; the MBOIT orchestrator ignores them
|
|
167
172
|
* @returns {number} resource ID of the composited color texture
|
|
168
173
|
*/
|
|
169
|
-
export function graph_rasterize_meshes_transparent_avboit({ graph, buckets, view_ctx, viewport, depth_texture, color_texture, normal_texture, hzb_texture, environment_texture, limits, light_cluster_parameters, light_cluster_lookup, light_cluster_data, shadowmap_atlas, volumetrics_lut, volumetrics_metadata, volumetrics_irradiance, shader_switches, avboit, side_channels, }: {
|
|
174
|
+
export function graph_rasterize_meshes_transparent_avboit({ graph, buckets, view_ctx, viewport, depth_texture, color_texture, normal_texture, hzb_texture, environment_texture, limits, light_cluster_parameters, light_cluster_lookup, light_cluster_data, shadowmap_atlas, volumetrics_lut, volumetrics_metadata, volumetrics_irradiance, shader_switches, probes, avboit, side_channels, }: {
|
|
170
175
|
graph: FrameGraph;
|
|
171
176
|
buckets: number;
|
|
172
177
|
view_ctx: GPUViewContext;
|
|
@@ -185,6 +190,7 @@ export function graph_rasterize_meshes_transparent_avboit({ graph, buckets, view
|
|
|
185
190
|
CoCg: number;
|
|
186
191
|
};
|
|
187
192
|
shader_switches?: ShaderSwitchSet;
|
|
193
|
+
probes: import("../../../global_illumination/probe_clipmap/GPUProbeClipmapGI.js").GPUProbeClipmapGI;
|
|
188
194
|
avboit?: AVBOITSettings;
|
|
189
195
|
side_channels?: import("./AVBOITSideChannel.js").AVBOITSideChannel[];
|
|
190
196
|
}): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_rasterize_meshes_transparent_avboit.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js"],"names":[],"mappings":"AA4DA;;;;;GAKG;AACH,oDAHW,UAAU,MAAM,CAAC,GACf,MAAM,EAAE,CAOpB;AAED;;;;;;;;;;;;GAYG;AACH;IAT+B,KAAK;IACA,KAAK;IACd,MAAM,EAAtB,MAAM;IACqB,kBAAkB,EAA7C,UAAU,MAAM,CAAC;IACD,kBAAkB,EAAlC,MAAM;IACU,wBAAwB,EAAxC,MAAM;IACW,SAAS,GAA1B,MAAM;IACJ,MAAM,CA4DlB;AAED;;;;;;;;;;GAUG;AACH;IAP+B,KAAK;IACT,SAAS,EAAzB,MAAM;IACY,gBAAgB,EAAlC,MAAM,EAAE;IACmB,kBAAkB,EAA7C,UAAU,MAAM,CAAC;IACQ,MAAM,GAA/B,cAAc;IACZ,MAAM,CAuDlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,6KAFa;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAiJjE;AAED;;;;;;;;;;GAUG;AACH;IAP+B,KAAK;IACT,IAAI,EAApB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,QAAQ,EAAxB,MAAM;IACY,gBAAgB,EAAlC,MAAM,EAAE;IACN,MAAM,CAoClB;AAED
|
|
1
|
+
{"version":3,"file":"graph_rasterize_meshes_transparent_avboit.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js"],"names":[],"mappings":"AA4DA;;;;;GAKG;AACH,oDAHW,UAAU,MAAM,CAAC,GACf,MAAM,EAAE,CAOpB;AAED;;;;;;;;;;;;GAYG;AACH;IAT+B,KAAK;IACA,KAAK;IACd,MAAM,EAAtB,MAAM;IACqB,kBAAkB,EAA7C,UAAU,MAAM,CAAC;IACD,kBAAkB,EAAlC,MAAM;IACU,wBAAwB,EAAxC,MAAM;IACW,SAAS,GAA1B,MAAM;IACJ,MAAM,CA4DlB;AAED;;;;;;;;;;GAUG;AACH;IAP+B,KAAK;IACT,SAAS,EAAzB,MAAM;IACY,gBAAgB,EAAlC,MAAM,EAAE;IACmB,kBAAkB,EAA7C,UAAU,MAAM,CAAC;IACQ,MAAM,GAA/B,cAAc;IACZ,MAAM,CAuDlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,6KAFa;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAiJjE;AAED;;;;;;;;;;GAUG;AACH;IAP+B,KAAK;IACT,IAAI,EAApB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,QAAQ,EAAxB,MAAM;IACY,gBAAgB,EAAlC,MAAM,EAAE;IACN,MAAM,CAoClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,sUAFa;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CA4M7D;AAED;;;;;;;;GAQG;AACH,+EAHW,UAAU,MAAM,CAAC,GACf;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAe/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH;IA3B+B,KAAK;IACT,OAAO,EAAvB,MAAM;IACkB,QAAQ;IACd,QAAQ,EAA1B,MAAM,EAAE;IACQ,aAAa,EAA7B,MAAM;IACU,aAAa,EAA7B,MAAM;IACuB,MAAM;IACnB,wBAAwB,EAAxC,MAAM;IACU,oBAAoB,EAApC,MAAM;IACU,kBAAkB,EAAlC,MAAM;IACU,eAAe,EAA/B,MAAM;IACU,eAAe,EAA/B,MAAM;IACU,oBAAoB,EAApC,MAAM;IAC6B,sBAAsB,EAAzD;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;IAGC,eAAe,GAAzC,eAAe;IAGsF,MAAM,EAA3G,OAAO,iEAAiE,EAAE,iBAAiB;IAGlE,MAAM,GAA/B,cAAc;IACiD,aAAa,GAA5E,OAAO,wBAAwB,EAAE,iBAAiB,EAAE;IAElD,MAAM,CAqTlB;+BAx9B8B,qBAAqB;gCAIpB,6CAA6C"}
|
package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js
CHANGED
|
@@ -439,6 +439,8 @@ export function graph_avboit_integrate({
|
|
|
439
439
|
* @param {number} volumetrics_metadata
|
|
440
440
|
* @param {{color: number, norm: number, extinction: number}} [accumulators] existing targets to add to
|
|
441
441
|
* @param {ShaderSwitchSet} shader_switches the renderer's; the draw's pipelines are built for them
|
|
442
|
+
* @param {import("../../../global_illumination/probe_clipmap/GPUProbeClipmapGI.js").GPUProbeClipmapGI} probes
|
|
443
|
+
* the renderer's probe clipmap GI, whose probes the draw binds in every mode
|
|
442
444
|
* @returns {{color: number, norm: number, extinction: number}}
|
|
443
445
|
*/
|
|
444
446
|
export function graph_avboit_draw({
|
|
@@ -460,8 +462,10 @@ export function graph_avboit_draw({
|
|
|
460
462
|
volumetrics_metadata,
|
|
461
463
|
accumulators,
|
|
462
464
|
shader_switches = ShaderSwitchSet.EMPTY,
|
|
465
|
+
probes,
|
|
463
466
|
}) {
|
|
464
467
|
|
|
468
|
+
assert.defined(probes, 'probes');
|
|
465
469
|
assert.isNonNegativeInteger(material_count, 'material_count');
|
|
466
470
|
assert.isNonNegativeInteger(draw_commands, 'draw_commands');
|
|
467
471
|
assert.isNonNegativeInteger(meshlets, 'meshlets');
|
|
@@ -559,22 +563,24 @@ export function graph_avboit_draw({
|
|
|
559
563
|
const t_split_sum_lut = graphics.textures.obtain(STATIC_GRAPHICS_ENGINE_ASSETS.split_sum);
|
|
560
564
|
const stbn_vec3 = graphics.textures.obtain(STATIC_GRAPHICS_ENGINE_ASSETS.stbn_vec3);
|
|
561
565
|
|
|
562
|
-
// by name: every indirect lighting mode's resources, whichever the pipeline's variant reads
|
|
566
|
+
// by name: every indirect lighting mode's resources, whichever the pipeline's variant reads; the
|
|
567
|
+
// probes, a clipmap of no cascade while the probe clipmap has none
|
|
568
|
+
const view_inputs = data.probes.write_sampling_bindings({
|
|
569
|
+
camera: view_ctx.camera.buffer.buffer,
|
|
570
|
+
view: view_ctx.uniform_buffer.buffer,
|
|
571
|
+
warp: warp_buffer,
|
|
572
|
+
tIntegral: t_integral,
|
|
573
|
+
brick4: view_ctx.scene.volumetric_light_map.buffer,
|
|
574
|
+
tSplitSum: t_split_sum_lut,
|
|
575
|
+
sLinear: sampler_linear,
|
|
576
|
+
// volumetrics
|
|
577
|
+
volumetrics_metadata,
|
|
578
|
+
tVolumetrics: t_volumetrics_lut,
|
|
579
|
+
tSTBN_vec3: stbn_vec3,
|
|
580
|
+
});
|
|
563
581
|
const view_bindings = bind_manager.obtain(BindGroupDescriptor.from(
|
|
564
582
|
render_pass_descriptor.pipeline_layout.bindGroupLayouts[RASTERIZATION_SHADER_BIND_GROUP_VIEW],
|
|
565
|
-
AVBOIT_DRAW_VIEW_GROUP.generateBindings(
|
|
566
|
-
camera: view_ctx.camera.buffer.buffer,
|
|
567
|
-
view: view_ctx.uniform_buffer.buffer,
|
|
568
|
-
warp: warp_buffer,
|
|
569
|
-
tIntegral: t_integral,
|
|
570
|
-
brick4: view_ctx.scene.volumetric_light_map.buffer,
|
|
571
|
-
tSplitSum: t_split_sum_lut,
|
|
572
|
-
sLinear: sampler_linear,
|
|
573
|
-
// volumetrics
|
|
574
|
-
volumetrics_metadata,
|
|
575
|
-
tVolumetrics: t_volumetrics_lut,
|
|
576
|
-
tSTBN_vec3: stbn_vec3,
|
|
577
|
-
}, encoder)
|
|
583
|
+
AVBOIT_DRAW_VIEW_GROUP.generateBindings(view_inputs, encoder)
|
|
578
584
|
));
|
|
579
585
|
|
|
580
586
|
pass_encoder.setBindGroup(RASTERIZATION_SHADER_BIND_GROUP_VIEW, view_bindings);
|
|
@@ -595,6 +601,7 @@ export function graph_avboit_draw({
|
|
|
595
601
|
|
|
596
602
|
const pass_data = {
|
|
597
603
|
shader_switches,
|
|
604
|
+
probes,
|
|
598
605
|
clear_targets: accumulators === undefined,
|
|
599
606
|
};
|
|
600
607
|
const pass = graph.add("AVBOIT/draw", pass_data, execute);
|
|
@@ -698,6 +705,9 @@ export function avboit_create_accumulators(pass, resolution) {
|
|
|
698
705
|
* @param {ShaderSwitchSet} [options.shader_switches] the renderer's; every pipeline that lights a fragment is
|
|
699
706
|
* built for them, the side channels' included, and the set is all a pass needs to know of the
|
|
700
707
|
* indirect lighting mode
|
|
708
|
+
* @param {import("../../../global_illumination/probe_clipmap/GPUProbeClipmapGI.js").GPUProbeClipmapGI} options.probes
|
|
709
|
+
* the renderer's probe clipmap GI: every pass that lights a fragment binds its probes in every mode, the side
|
|
710
|
+
* channels' included
|
|
701
711
|
* @param {AVBOITSettings} [options.avboit] `Renderer.avboit`; the MBOIT orchestrator ignores it
|
|
702
712
|
* @param {import("./AVBOITSideChannel.js").AVBOITSideChannel[]} [options.side_channels] non-meshlet
|
|
703
713
|
* sources of transparent fragments; the MBOIT orchestrator ignores them
|
|
@@ -725,12 +735,14 @@ export function graph_rasterize_meshes_transparent_avboit({
|
|
|
725
735
|
volumetrics_irradiance,
|
|
726
736
|
|
|
727
737
|
shader_switches = ShaderSwitchSet.EMPTY,
|
|
738
|
+
probes,
|
|
728
739
|
avboit = DEFAULT_SETTINGS,
|
|
729
740
|
side_channels = [],
|
|
730
741
|
}) {
|
|
731
742
|
|
|
732
743
|
assert.isNonNegativeInteger(buckets, 'buckets');
|
|
733
744
|
assert.isArray(side_channels, 'side_channels');
|
|
745
|
+
assert.defined(probes, 'probes');
|
|
734
746
|
assert.isNonNegativeInteger(color_texture, 'color_texture');
|
|
735
747
|
assert.isNonNegativeInteger(depth_texture, 'depth_texture');
|
|
736
748
|
|
|
@@ -818,7 +830,7 @@ export function graph_rasterize_meshes_transparent_avboit({
|
|
|
818
830
|
for (const channel of preparers) {
|
|
819
831
|
const prepared = channel.avboit_prepare({ graph, view_ctx, camera: gr_camera, color_texture,
|
|
820
832
|
depth_texture, normal_texture, hzb_texture: gr_hzb, environment_texture, light_cluster_parameters,
|
|
821
|
-
light_cluster_lookup, light_cluster_data, shadowmap_atlas, shader_switches });
|
|
833
|
+
light_cluster_lookup, light_cluster_data, shadowmap_atlas, shader_switches, probes });
|
|
822
834
|
if (prepared?.background_color !== undefined) {
|
|
823
835
|
assert.isNonNegativeInteger(prepared.background_color, 'prepared.background_color');
|
|
824
836
|
background_color = prepared.background_color;
|
|
@@ -944,6 +956,7 @@ export function graph_rasterize_meshes_transparent_avboit({
|
|
|
944
956
|
volumetrics_lut,
|
|
945
957
|
volumetrics_metadata,
|
|
946
958
|
shader_switches,
|
|
959
|
+
probes,
|
|
947
960
|
};
|
|
948
961
|
|
|
949
962
|
let accumulators = graph_avboit_draw({
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The draw's own group, group 2: the view, the AVBOIT volume, and what every indirect lighting mode
|
|
3
|
-
* reads (`brick4
|
|
3
|
+
* reads (`brick4`, the probe clipmap's probes; `tEnvironment` is the lights'). The orchestrator binds it
|
|
4
|
+
* by name.
|
|
4
5
|
*
|
|
5
6
|
* @type {ShaderResourceGroupDescriptor}
|
|
6
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_avboit_draw.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_avboit_draw.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.js"],"names":[],"mappings":"AAgCA;;;;;;GAMG;AACH,qCAFU,6BAA6B,CAEmC;AA8C1E;;;;;;GAMG;AACH,iCAFU,sBAAsB,CAmC7B;8CAnH2C,2DAA2D;uCAalE,iCAAiC"}
|