@woosh/meep-engine 3.52.0 → 3.54.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/package.json +1 -1
- package/src/core/math/noise/worley_noise_2d.d.ts +14 -0
- package/src/core/math/noise/worley_noise_2d.d.ts.map +1 -0
- package/src/core/math/noise/worley_noise_2d.js +74 -0
- package/src/engine/ecs/animation/Animation.d.ts +4 -25
- package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
- package/src/engine/ecs/animation/Animation.js +9 -41
- package/src/engine/ecs/ik/IKGoalSystem.d.ts +4 -5
- package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -1
- package/src/engine/ecs/ik/IKGoalSystem.js +4 -6
- package/src/engine/graphics/ecs/mesh/assetTypeByPath.js +1 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts +6 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +363 -325
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts +93 -14
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +322 -183
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts +9 -0
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.js +110 -83
- package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts +42 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts.map +1 -0
- package/src/engine/{graphics3/decal/DecalAtlas.js → graphics/texture/atlas/SpriteAtlas.js} +202 -194
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts +12 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts.map +1 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.js +30 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts +7 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/TextureAtlas.js +11 -1
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts +52 -0
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -0
- package/src/engine/{graphics3/decal/decal_atlas_border.js → graphics/texture/atlas/sprite_atlas_border.js} +69 -69
- package/src/engine/graphics3/AnimationGraphSystem.d.ts +9 -22
- package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.js +58 -203
- package/src/engine/graphics3/AnimationSystem.d.ts +7 -18
- package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationSystem.js +62 -243
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem.js +447 -450
- package/src/engine/graphics3/FoliageWindSystem.d.ts +67 -0
- package/src/engine/graphics3/FoliageWindSystem.d.ts.map +1 -0
- package/src/engine/graphics3/FoliageWindSystem.js +257 -0
- package/src/engine/graphics3/GPUFluidSystem.d.ts +7 -0
- package/src/engine/graphics3/GPUFluidSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUFluidSystem.js +39 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +9 -23
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +904 -949
- package/src/engine/graphics3/animation/AnimationClips.d.ts +107 -13
- package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
- package/src/engine/graphics3/animation/AnimationClips.js +207 -10
- package/src/engine/graphics3/animation/AnimationClipsSink.d.ts +89 -0
- package/src/engine/graphics3/animation/AnimationClipsSink.d.ts.map +1 -0
- package/src/engine/graphics3/animation/AnimationClipsSink.js +205 -0
- package/src/engine/graphics3/animation/FoliageWindRigs.d.ts +43 -0
- package/src/engine/graphics3/animation/FoliageWindRigs.d.ts.map +1 -0
- package/src/engine/graphics3/animation/FoliageWindRigs.js +69 -0
- package/src/engine/graphics3/animation/write_clip_playback.d.ts +17 -11
- package/src/engine/graphics3/animation/write_clip_playback.d.ts.map +1 -1
- package/src/engine/graphics3/animation/write_clip_playback.js +36 -27
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +8 -6
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +11 -5
- package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts +7 -7
- package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts.map +1 -1
- package/src/engine/graphics3/pose/collect_entity_playbacks.js +14 -15
- package/src/engine/graphics3/prefab/Prefab.d.ts +6 -0
- package/src/engine/graphics3/prefab/Prefab.d.ts.map +1 -1
- package/src/engine/graphics3/prefab/Prefab.js +169 -162
- package/src/engine/graphics3/prefab/prefab_compile.d.ts.map +1 -1
- package/src/engine/graphics3/prefab/prefab_compile.js +369 -334
- package/src/engine/graphics3/prefab/prefab_instantiate.d.ts.map +1 -1
- package/src/engine/graphics3/prefab/prefab_instantiate.js +43 -2
- package/src/engine/graphics3/terrain/chunk_terrain_material_surface.js +2 -2
- package/src/engine/physics/ecs/ContactProbeSystem.d.ts +2 -3
- package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/ContactProbeSystem.js +2 -4
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/simulation/PROBE_PLACEMENT.md +4 -4
- package/src/engine/sound/simulation/README.md +1 -1
- package/src/engine/sound/simulation/probe/bakeProbeField.d.ts +22 -8
- package/src/engine/sound/simulation/probe/bakeProbeField.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeProbeField.js +60 -15
- package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeProbeReflectors.js +19 -23
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +63 -17
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_sdf_grid.js +67 -17
- package/src/generation/foliage/FOLIAGE_DESIGN.md +319 -0
- package/src/generation/foliage/FOLIAGE_PLAN.md +198 -0
- package/src/generation/foliage/animation/build_tree_wind_rig.d.ts +20 -0
- package/src/generation/foliage/animation/build_tree_wind_rig.d.ts.map +1 -0
- package/src/generation/foliage/animation/build_tree_wind_rig.js +108 -0
- package/src/generation/foliage/asset/TreeAsset.d.ts +86 -0
- package/src/generation/foliage/asset/TreeAsset.d.ts.map +1 -0
- package/src/generation/foliage/asset/TreeAsset.js +111 -0
- package/src/generation/foliage/asset/TreeLODAsset.d.ts +115 -0
- package/src/generation/foliage/asset/TreeLODAsset.d.ts.map +1 -0
- package/src/generation/foliage/asset/TreeLODAsset.js +346 -0
- package/src/generation/foliage/asset/generate_tree.d.ts +15 -0
- package/src/generation/foliage/asset/generate_tree.d.ts.map +1 -0
- package/src/generation/foliage/asset/generate_tree.js +93 -0
- package/src/generation/foliage/asset/place_tree.d.ts +82 -0
- package/src/generation/foliage/asset/place_tree.d.ts.map +1 -0
- package/src/generation/foliage/asset/place_tree.js +194 -0
- package/src/generation/foliage/config/BarkMaterialConfig.d.ts +121 -0
- package/src/generation/foliage/config/BarkMaterialConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/BarkMaterialConfig.js +250 -0
- package/src/generation/foliage/config/BranchLevelConfig.d.ts +288 -0
- package/src/generation/foliage/config/BranchLevelConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/BranchLevelConfig.js +536 -0
- package/src/generation/foliage/config/CrownConfig.d.ts +100 -0
- package/src/generation/foliage/config/CrownConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/CrownConfig.js +186 -0
- package/src/generation/foliage/config/CrownEnvelopeType.d.ts +16 -0
- package/src/generation/foliage/config/CrownEnvelopeType.d.ts.map +1 -0
- package/src/generation/foliage/config/CrownEnvelopeType.js +17 -0
- package/src/generation/foliage/config/FoliageBarkType.d.ts +11 -0
- package/src/generation/foliage/config/FoliageBarkType.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageBarkType.js +16 -0
- package/src/generation/foliage/config/FoliageCardType.d.ts +12 -0
- package/src/generation/foliage/config/FoliageCardType.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageCardType.js +18 -0
- package/src/generation/foliage/config/FoliageConfig.d.ts +151 -0
- package/src/generation/foliage/config/FoliageConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageConfig.js +283 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.d.ts +143 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.js +279 -0
- package/src/generation/foliage/config/PhyllotaxisMode.d.ts +13 -0
- package/src/generation/foliage/config/PhyllotaxisMode.d.ts.map +1 -0
- package/src/generation/foliage/config/PhyllotaxisMode.js +20 -0
- package/src/generation/foliage/config/TreeLODConfig.d.ts +87 -0
- package/src/generation/foliage/config/TreeLODConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/TreeLODConfig.js +211 -0
- package/src/generation/foliage/config/TreePreset.d.ts +16 -0
- package/src/generation/foliage/config/TreePreset.d.ts.map +1 -0
- package/src/generation/foliage/config/TreePreset.js +17 -0
- package/src/generation/foliage/config/TreeSpeciesConfig.d.ts +109 -0
- package/src/generation/foliage/config/TreeSpeciesConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/TreeSpeciesConfig.js +400 -0
- package/src/generation/foliage/config/TreeWindConfig.d.ts +84 -0
- package/src/generation/foliage/config/TreeWindConfig.d.ts.map +1 -0
- package/src/generation/foliage/config/TreeWindConfig.js +157 -0
- package/src/generation/foliage/index.d.ts +39 -0
- package/src/generation/foliage/index.d.ts.map +1 -0
- package/src/generation/foliage/index.js +44 -0
- package/src/generation/foliage/material/make_bark_material.d.ts +37 -0
- package/src/generation/foliage/material/make_bark_material.d.ts.map +1 -0
- package/src/generation/foliage/material/make_bark_material.js +730 -0
- package/src/generation/foliage/material/make_foliage_material.d.ts +40 -0
- package/src/generation/foliage/material/make_foliage_material.d.ts.map +1 -0
- package/src/generation/foliage/material/make_foliage_material.js +605 -0
- package/src/generation/foliage/mesh/branch_collar_project.d.ts +42 -0
- package/src/generation/foliage/mesh/branch_collar_project.d.ts.map +1 -0
- package/src/generation/foliage/mesh/branch_collar_project.js +205 -0
- package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts +35 -0
- package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts.map +1 -0
- package/src/generation/foliage/mesh/branch_ring_triangulate.js +72 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts +95 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts.map +1 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.js +569 -0
- package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.d.ts +19 -0
- package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.d.ts.map +1 -0
- package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.js +150 -0
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts +55 -0
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -0
- package/src/generation/foliage/mesh/tree_mesh_build_bark.js +1049 -0
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts +22 -0
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts.map +1 -0
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.js +454 -0
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts +13 -0
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -0
- package/src/generation/foliage/presets/make_tree_species_preset.js +870 -0
- package/src/generation/foliage/skeleton/TreeSkeleton.d.ts +443 -0
- package/src/generation/foliage/skeleton/TreeSkeleton.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/TreeSkeleton.js +1100 -0
- package/src/generation/foliage/skeleton/crown_envelope_evaluate.d.ts +27 -0
- package/src/generation/foliage/skeleton/crown_envelope_evaluate.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/crown_envelope_evaluate.js +121 -0
- package/src/generation/foliage/skeleton/spine_frame_double_reflection.d.ts +32 -0
- package/src/generation/foliage/skeleton/spine_frame_double_reflection.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/spine_frame_double_reflection.js +87 -0
- package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.d.ts +33 -0
- package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.js +205 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts +17 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.js +206 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts +18 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -0
- package/src/generation/foliage/skeleton/tree_skeleton_grow.js +1871 -0
- package/src/shade/playground/additive_blending/index.html +197 -0
- package/src/shade/playground/additive_blending/main.d.ts +2 -0
- package/src/shade/playground/additive_blending/main.d.ts.map +1 -0
- package/src/shade/playground/additive_blending/main.js +529 -0
- package/src/shade/playground/foliage_wind/README.md +18 -0
- package/src/shade/playground/foliage_wind/foliage_world.d.ts +133 -0
- package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -0
- package/src/shade/playground/foliage_wind/foliage_world.js +602 -0
- package/src/shade/playground/foliage_wind/index.html +260 -0
- package/src/shade/playground/foliage_wind/main.d.ts +2 -0
- package/src/shade/playground/foliage_wind/main.d.ts.map +1 -0
- package/src/shade/playground/foliage_wind/main.js +275 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +45 -16
- package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +145 -0
- package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.d.ts +9 -1
- package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.js +53 -1
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.d.ts +8 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.js +71 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.d.ts +11 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.js +32 -0
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +30 -3
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +532 -79
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts +19 -12
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts.map +1 -1
- package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.js +20 -13
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts +35 -8
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts.map +1 -1
- package/src/shade/renderer/animation/ShadeAnimationClip.js +433 -2
- package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
- package/src/shade/renderer/animation/chunk_pose_accumulator.js +40 -32
- package/src/shade/renderer/animation/foliage/FoliageWindJoint.d.ts +97 -0
- package/src/shade/renderer/animation/foliage/FoliageWindJoint.d.ts.map +1 -0
- package/src/shade/renderer/animation/foliage/FoliageWindJoint.js +161 -0
- package/src/shade/renderer/animation/foliage/FoliageWindRig.d.ts +65 -0
- package/src/shade/renderer/animation/foliage/FoliageWindRig.d.ts.map +1 -0
- package/src/shade/renderer/animation/foliage/FoliageWindRig.js +89 -0
- package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.d.ts +19 -0
- package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.d.ts.map +1 -0
- package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.js +143 -0
- package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.d.ts +14 -0
- package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.d.ts.map +1 -0
- package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.js +116 -0
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/pose_evaluate_local.js +39 -29
- package/src/shade/renderer/animation/shader_animation_pose_resolve.js +37 -37
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +2 -2
- package/src/shade/renderer/extension/RenderExtension.d.ts +7 -0
- package/src/shade/renderer/extension/RenderExtension.d.ts.map +1 -1
- package/src/shade/renderer/extension/RenderExtension.js +9 -0
- package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts +6 -0
- package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts.map +1 -1
- package/src/shade/renderer/extension/RenderExtensionRegistry.js +15 -0
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +10 -3
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts.map +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascade.js +15 -0
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +8 -1
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts.map +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.js +11 -0
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.js +51 -48
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts +6 -0
- package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/FluidMacPasses.js +16 -0
- package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.js +15 -3
- package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.js +102 -96
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +12 -12
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_predict.js +12 -12
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +8 -1
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts.map +1 -1
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.js +16 -0
- package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts +7 -0
- package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts.map +1 -1
- package/src/shade/renderer/fluid/publish/FluidWindPublish.js +10 -0
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +2 -2
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +3 -3
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +350 -294
- package/src/shade/renderer/hiz/generate_downsampler_code.d.ts +0 -2
- package/src/shade/renderer/hiz/generate_downsampler_code.d.ts.map +1 -1
- package/src/shade/renderer/hiz/generate_downsampler_code.js +99 -100
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts +15 -0
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_pick_alignment.js +148 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts +28 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.js +58 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +5 -5
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +57 -67
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +3 -3
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +111 -112
- package/src/shade/renderer/hiz/shader_hzb_spd.d.ts +5 -0
- package/src/shade/renderer/hiz/shader_hzb_spd.d.ts.map +1 -0
- package/src/shade/renderer/hiz/shader_hzb_spd.js +160 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +67 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts +7 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.js +13 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts +10 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.js +72 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +39 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +90 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts +12 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.js +56 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +31 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +196 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts +10 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +163 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts +4 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.js +137 -0
- package/src/shade/renderer/loader/SceneBundle.d.ts +7 -0
- package/src/shade/renderer/loader/SceneBundle.d.ts.map +1 -1
- package/src/shade/renderer/loader/SceneBundle.js +119 -111
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts +4 -0
- package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts.map +1 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer.js +6 -5
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts +8 -7
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts.map +1 -1
- package/src/shade/renderer/object_property/chunk_write_object_property_node3d.js +9 -8
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +4 -1
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts +4 -3
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +28 -11
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +9 -13
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +25 -20
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +22 -34
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- 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 +9 -7
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.js +15 -7
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +6 -4
- package/src/shade/renderer/rasterize/native/oit/oit_resolve_fragment_body.js +3 -3
- package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +8 -5
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +4 -3
- package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js +62 -62
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.js +19 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.js +16 -10
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js +118 -117
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1 -1
- package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.d.ts +9 -0
- package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.d.ts.map +1 -0
- package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.js +17 -0
- package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.d.ts +8 -0
- package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.d.ts.map +1 -1
- package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.js +28 -20
- package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.d.ts +8 -0
- package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.d.ts.map +1 -0
- package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.js +15 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +41 -7
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -1
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +162 -58
- package/src/shade/renderer/view/chunk_view_mip_bias.d.ts +21 -0
- package/src/shade/renderer/view/chunk_view_mip_bias.d.ts.map +1 -0
- package/src/shade/renderer/view/chunk_view_mip_bias.js +44 -0
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +10 -12
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +583 -606
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts +24 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +640 -640
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +113 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +484 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +50 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +60 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +25 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +47 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts +74 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.js +173 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +26 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +83 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts +31 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js +113 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts +121 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +356 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts +16 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.js +191 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts +16 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts +23 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts.map +1 -0
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.js +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +105 -26
- package/src/engine/graphics/composit/CompositingStages.d.ts +0 -6
- package/src/engine/graphics/composit/CompositingStages.d.ts.map +0 -1
- package/src/engine/graphics/composit/CompositingStages.js +0 -8
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts +0 -7
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.js +0 -24
- package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.d.ts +0 -8
- package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.js +0 -17
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts +0 -8
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.js +0 -60
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts +0 -7
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.js +0 -26
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts +0 -7
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts.map +0 -1
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.js +0 -23
- package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts +0 -7
- package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts.map +0 -1
- package/src/engine/graphics/geometry/instancing/geometry_copy.js +0 -15
- package/src/engine/graphics/geometry/instancing/rewriteMaterial.d.ts +0 -2
- package/src/engine/graphics/geometry/instancing/rewriteMaterial.d.ts.map +0 -1
- package/src/engine/graphics/geometry/instancing/rewriteMaterial.js +0 -57
- package/src/engine/graphics/geometry/ribbon/Quad.d.ts +0 -96
- package/src/engine/graphics/geometry/ribbon/Quad.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/Quad.js +0 -213
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts +0 -9
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.js +0 -12
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts +0 -10
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.js +0 -17
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts +0 -10
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.js +0 -13
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts +0 -11
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.js +0 -24
- package/src/engine/graphics/geometry/ribbon/rotateRibbon.d.ts +0 -6
- package/src/engine/graphics/geometry/ribbon/rotateRibbon.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/rotateRibbon.js +0 -37
- package/src/engine/graphics/geometry/ribbon/updateTipPosition.d.ts +0 -9
- package/src/engine/graphics/geometry/ribbon/updateTipPosition.d.ts.map +0 -1
- package/src/engine/graphics/geometry/ribbon/updateTipPosition.js +0 -52
- package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.d.ts +0 -8
- package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.d.ts.map +0 -1
- package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.js +0 -54
- package/src/engine/graphics/render/RenderPassType.d.ts +0 -6
- package/src/engine/graphics/render/RenderPassType.d.ts.map +0 -1
- package/src/engine/graphics/render/RenderPassType.js +0 -8
- package/src/engine/graphics/render/layers/RenderLayer.d.ts +0 -78
- package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayer.js +0 -95
- package/src/engine/graphics/render/layers/RenderLayerManager.d.ts +0 -72
- package/src/engine/graphics/render/layers/RenderLayerManager.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayerManager.js +0 -160
- package/src/engine/graphics/render/layers/RenderLayerManagerState.d.ts +0 -18
- package/src/engine/graphics/render/layers/RenderLayerManagerState.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayerManagerState.js +0 -48
- package/src/engine/graphics/render/layers/RenderLayerState.d.ts +0 -18
- package/src/engine/graphics/render/layers/RenderLayerState.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayerState.js +0 -27
- package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts +0 -8
- package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts.map +0 -1
- package/src/engine/graphics/render/layers/RenderLayerUtils.js +0 -103
- package/src/engine/graphics/render/make_bvh_visibility_builder.d.ts +0 -10
- package/src/engine/graphics/render/make_bvh_visibility_builder.d.ts.map +0 -1
- package/src/engine/graphics/render/make_bvh_visibility_builder.js +0 -64
- package/src/engine/graphics/render/view/CameraViewFlags.d.ts +0 -7
- package/src/engine/graphics/render/view/CameraViewFlags.d.ts.map +0 -1
- package/src/engine/graphics/render/view/CameraViewFlags.js +0 -9
- package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts +0 -143
- package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts.map +0 -1
- package/src/engine/graphics/render/visibility/IncrementalDeltaSet.js +0 -328
- package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +0 -39
- package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts.map +0 -1
- package/src/engine/graphics/render/visibility/VisibilityComputer.js +0 -80
- package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts +0 -29
- package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts.map +0 -1
- package/src/engine/graphics/render/visibility/VisibilityFilter.js +0 -37
- package/src/engine/graphics3/animation/write_graph_playback.d.ts +0 -24
- package/src/engine/graphics3/animation/write_graph_playback.d.ts.map +0 -1
- package/src/engine/graphics3/animation/write_graph_playback.js +0 -48
- package/src/engine/graphics3/decal/DecalAtlasFill.js +0 -32
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +0 -49
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +0 -50
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.js +0 -105
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +0 -80
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.js +0 -51
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +0 -39
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +0 -121
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +0 -237
|
@@ -31,13 +31,14 @@
|
|
|
31
31
|
* only to tell a missing `w` curve from an authored zero.
|
|
32
32
|
*
|
|
33
33
|
* `weight` is the clip weight `value` has already been multiplied by.
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* `rest_rotation`
|
|
39
|
-
*
|
|
40
|
-
*
|
|
34
|
+
* All three properties use it to subtract `rest * weight` (`value - rest * weight`),
|
|
35
|
+
* and Rotation also uses it because the identity it substitutes for a missing
|
|
36
|
+
* `w` channel must carry the same weight as the authored channels.
|
|
37
|
+
*
|
|
38
|
+
* `rest_rotation` carries the target's rest value for the bound property
|
|
39
|
+
* (`rest.translation` in `.xyz` for Translation, `rest.rotation` in `.xyzw`
|
|
40
|
+
* for Rotation, `rest.scale` in `.xyz` for Scale). It rides into the slot
|
|
41
|
+
* with the contribution so the resolve pass can reconstruct `rest + delta`.
|
|
41
42
|
*
|
|
42
43
|
* @type {CodeChunk}
|
|
43
44
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_write_object_property_node3d.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/chunk_write_object_property_node3d.js"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"chunk_write_object_property_node3d.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/object_property/chunk_write_object_property_node3d.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,iDAFU,SAAS,CA8Bb;0BA3EoB,iCAAiC"}
|
|
@@ -35,13 +35,14 @@ import { Node3DProperty } from "./Node3DProperty.js";
|
|
|
35
35
|
* only to tell a missing `w` curve from an authored zero.
|
|
36
36
|
*
|
|
37
37
|
* `weight` is the clip weight `value` has already been multiplied by.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
38
|
+
* All three properties use it to subtract `rest * weight` (`value - rest * weight`),
|
|
39
|
+
* and Rotation also uses it because the identity it substitutes for a missing
|
|
40
|
+
* `w` channel must carry the same weight as the authored channels.
|
|
41
41
|
*
|
|
42
|
-
* `rest_rotation`
|
|
43
|
-
*
|
|
44
|
-
*
|
|
42
|
+
* `rest_rotation` carries the target's rest value for the bound property
|
|
43
|
+
* (`rest.translation` in `.xyz` for Translation, `rest.rotation` in `.xyzw`
|
|
44
|
+
* for Rotation, `rest.scale` in `.xyz` for Scale). It rides into the slot
|
|
45
|
+
* with the contribution so the resolve pass can reconstruct `rest + delta`.
|
|
45
46
|
*
|
|
46
47
|
* @type {CodeChunk}
|
|
47
48
|
*/
|
|
@@ -60,13 +61,13 @@ fn write_object_property_node3d(
|
|
|
60
61
|
|
|
61
62
|
switch(property){
|
|
62
63
|
case ${Node3DProperty.Translation}u: {
|
|
63
|
-
pose_accumulator_add_translation(node_index, value.xyz, mask);
|
|
64
|
+
pose_accumulator_add_translation(node_index, value.xyz, mask, weight, rest_rotation.xyz);
|
|
64
65
|
}
|
|
65
66
|
case ${Node3DProperty.Rotation}u: {
|
|
66
67
|
pose_accumulator_add_rotation(node_index, value, mask, weight, rest_rotation);
|
|
67
68
|
}
|
|
68
69
|
case ${Node3DProperty.Scale}u: {
|
|
69
|
-
pose_accumulator_add_scale(node_index, value.xyz, mask);
|
|
70
|
+
pose_accumulator_add_scale(node_index, value.xyz, mask, weight, rest_rotation.xyz);
|
|
70
71
|
}
|
|
71
72
|
default: {}
|
|
72
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"AA4DA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH;IAmLI;;;;;;OAMG;IACH,sBANW,MAAM,iBACN,OAAO,6BAA6B,EAAE,eAAe;QAEpC,QAAQ,GAAzB,MAAM;QACW,sBAAsB,GAAvC,MAAM;OAoBhB;IA1MD;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;;;OAIG;IACH,eAFU,OAAO,6BAA6B,EAAE,eAAe,CAEjD;IAEd;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;OAEG;IACH,UAFU,eAAe,CAEhB;IAET;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;;OAIG;IACH,sBAAM;IAEN,yBAAyB;IACzB,0BAAc;IAEd;;;;;;;;;;;OAWG;IACH,SAFU,MAAM,CAEH;IA4Ib;;;OAGG;IACH,kCAEC;IAED;;;OAGG;IACH,yEAEC;IAED;;;;;;;;;;;;OAYG;IACH,eAFa,MAAM,CAIlB;IAED;;;;;;;OAOG;IACH,eAHW,OAAO,8BAA8B,EAAE,eAAe,SACtD,MAAM,QAwBhB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH;QAPkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;QAC/D,MAAM,EAArB,MAAM;QACS,cAAc,EAA7B,MAAM;QAES,EAAE,EAAjB,MAAM;QACJ,OAAO,sBAAsB,EAAE,yBAAyB,CAgEpE;IAiBD;;;;;;;;;OASG;IACH;QANgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACkB,kBAAkB,EAA1C,UAAU,MAAM,CAAC;QACJ,SAAS,EAAtB,MAAM;QACJ,MAAM,CAalB;IAED;;;;;;;;;;OAUG;IACH;QAPgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,aAAa,EAA1B,MAAM;QACsD,MAAM,EAAlE;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC;QACnD;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAkBjE;IAED;;;;;;;;;;;;;;;;OAgBG;IACH;QAbgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACrB,QAAQ,EAAjE,OAAO,2BAA2B,EAAE,cAAc;QACrC,MAAM,EAAnB,MAAM;QACO,aAAa,EAA1B,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,QAAQ,EAArB,MAAM;QACO,eAAe,EAA5B,MAAM;QACO,oBAAoB,EAAjC,MAAM;QAC0B,sBAAsB,EAAtD;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC;QAEiD,YAAY,EAAtF;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC;QACjE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,
|
|
1
|
+
{"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"AA4DA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH;IAmLI;;;;;;OAMG;IACH,sBANW,MAAM,iBACN,OAAO,6BAA6B,EAAE,eAAe;QAEpC,QAAQ,GAAzB,MAAM;QACW,sBAAsB,GAAvC,MAAM;OAoBhB;IA1MD;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;;;OAIG;IACH,eAFU,OAAO,6BAA6B,EAAE,eAAe,CAEjD;IAEd;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;OAEG;IACH,UAFU,eAAe,CAEhB;IAET;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;;OAIG;IACH,sBAAM;IAEN,yBAAyB;IACzB,0BAAc;IAEd;;;;;;;;;;;OAWG;IACH,SAFU,MAAM,CAEH;IA4Ib;;;OAGG;IACH,kCAEC;IAED;;;OAGG;IACH,yEAEC;IAED;;;;;;;;;;;;OAYG;IACH,eAFa,MAAM,CAIlB;IAED;;;;;;;OAOG;IACH,eAHW,OAAO,8BAA8B,EAAE,eAAe,SACtD,MAAM,QAwBhB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH;QAPkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;QAC/D,MAAM,EAArB,MAAM;QACS,cAAc,EAA7B,MAAM;QAES,EAAE,EAAjB,MAAM;QACJ,OAAO,sBAAsB,EAAE,yBAAyB,CAgEpE;IAiBD;;;;;;;;;OASG;IACH;QANgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACkB,kBAAkB,EAA1C,UAAU,MAAM,CAAC;QACJ,SAAS,EAAtB,MAAM;QACJ,MAAM,CAalB;IAED;;;;;;;;;;OAUG;IACH;QAPgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,aAAa,EAA1B,MAAM;QACsD,MAAM,EAAlE;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC;QACnD;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAkBjE;IAED;;;;;;;;;;;;;;;;OAgBG;IACH;QAbgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACrB,QAAQ,EAAjE,OAAO,2BAA2B,EAAE,cAAc;QACrC,MAAM,EAAnB,MAAM;QACO,aAAa,EAA1B,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,QAAQ,EAArB,MAAM;QACO,eAAe,EAA5B,MAAM;QACO,oBAAoB,EAAjC,MAAM;QAC0B,sBAAsB,EAAtD;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC;QAEiD,YAAY,EAAtF;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC;QACjE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAwB/E;IAED;;;;;;;;;OASG;IACH,qBAHW,OAAO,8BAA8B,EAAE,eAAe,iBACtD,MAAM,QAehB;IAED;;;;OAIG;IACH,wBAFW,OAAO,8BAA8B,EAAE,eAAe,QAMhE;IAED;;;;;OAKG;IACH,2BAHW,OAAO,8BAA8B,EAAE,eAAe,iBACtD,MAAM,QAMhB;IA6bD;;;;;;;OAOG;IACH;YAFoB,MAAM,GAAE,MAAM;MAgBjC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,cAFa,QAAQ,mBAAmB,CAAC,CA8BxC;IAED,gBA2BC;;CACJ;;;;;;;;WA/oCa,MAAM;;;;UACN,MAAM;;;;kBACN,MAAM;;;;;cACN,MAAM;;;;;gBAEN,MAAM;;;;;oBAEN,MAAM;;gCAxCY,8BAA8B"}
|
|
@@ -56,7 +56,7 @@ const STORAGE_GROWABLE = GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUB
|
|
|
56
56
|
*/
|
|
57
57
|
const INDIRECT = GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT | GPUBufferUsage.COPY_SRC;
|
|
58
58
|
|
|
59
|
-
const DEFAULT_CAPACITY =
|
|
59
|
+
const DEFAULT_CAPACITY = 65536;
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
62
|
* What {@link GPUParticleSystem#read_stats} decodes: the counts the GPU keeps between frames, named.
|
|
@@ -618,6 +618,7 @@ export class GPUParticleSystem {
|
|
|
618
618
|
const { handles } = this.#simulated_for(graph);
|
|
619
619
|
|
|
620
620
|
return graph_particle_avboit_draw({
|
|
621
|
+
scene_context: this.scene_context,
|
|
621
622
|
graph,
|
|
622
623
|
view_ctx,
|
|
623
624
|
camera,
|
|
@@ -1121,6 +1122,8 @@ export class GPUParticleSystem {
|
|
|
1121
1122
|
label: "particles/atlas_sampler",
|
|
1122
1123
|
magFilter: "linear",
|
|
1123
1124
|
minFilter: "linear",
|
|
1125
|
+
mipmapFilter: "linear",
|
|
1126
|
+
maxAnisotropy: 16,
|
|
1124
1127
|
addressModeU: "clamp-to-edge",
|
|
1125
1128
|
addressModeV: "clamp-to-edge",
|
|
1126
1129
|
});
|
|
@@ -70,8 +70,8 @@ export function graph_particle_avboit_splat({ graph, camera, warp, depth_texture
|
|
|
70
70
|
* @param {number} params.integral graph handle of the integral texture
|
|
71
71
|
* @param {number} params.volumetrics_lut graph handle
|
|
72
72
|
* @param {number} params.volumetrics_metadata graph handle
|
|
73
|
-
* @param {{Y: number, CoCg: number}} params.volumetrics_irradiance graph handles of
|
|
74
|
-
* irradiance
|
|
73
|
+
* @param {{Y: number, CoCg: number, uniform?: number}} params.volumetrics_irradiance graph handles of
|
|
74
|
+
* the world-space irradiance clipmap a lit emitter's particles are lit by
|
|
75
75
|
* @param {{color: number, norm: number, extinction: number, emission: number}} params.accumulators to add to
|
|
76
76
|
* @param {GPUTextureView} params.atlas
|
|
77
77
|
* @param {GPUSampler} params.atlas_sampler
|
|
@@ -81,7 +81,7 @@ export function graph_particle_avboit_splat({ graph, camera, warp, depth_texture
|
|
|
81
81
|
* @param {number} params.draw_args graph handle of the indirect draw args
|
|
82
82
|
* @returns {{color: number, norm: number, extinction: number, emission: number}} the accumulators after the draw
|
|
83
83
|
*/
|
|
84
|
-
export function graph_particle_avboit_draw({ graph, view_ctx, camera, depth_texture, warp, integral, volumetrics_lut, volumetrics_metadata, volumetrics_irradiance, accumulators, atlas, atlas_sampler, pool, alive, emitter_database, draw_args, }: {
|
|
84
|
+
export function graph_particle_avboit_draw({ graph, view_ctx, scene_context, camera, depth_texture, warp, integral, volumetrics_lut, volumetrics_metadata, volumetrics_irradiance, accumulators, atlas, atlas_sampler, pool, alive, emitter_database, draw_args, }: {
|
|
85
85
|
graph: import("../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
|
|
86
86
|
view_ctx: import("../view/GPUViewContext.js").GPUViewContext;
|
|
87
87
|
camera: number;
|
|
@@ -93,6 +93,7 @@ export function graph_particle_avboit_draw({ graph, view_ctx, camera, depth_text
|
|
|
93
93
|
volumetrics_irradiance: {
|
|
94
94
|
Y: number;
|
|
95
95
|
CoCg: number;
|
|
96
|
+
uniform?: number;
|
|
96
97
|
};
|
|
97
98
|
accumulators: {
|
|
98
99
|
color: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_particles_avboit.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles_avboit.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_particles_avboit.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles_avboit.js"],"names":[],"mappings":"AA2CA;;;;;;;;;;;;;;;GAeG;AACH;IARkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IAC/D,MAAM,EAArB,MAAM;IACoB,kBAAkB,EAA5C,UAAU,MAAM,CAAC;IACF,SAAS,EAAxB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,mBAAmB,EAAlC,MAAM;IACJ,MAAM,CA8ClB;AAED;;;;;;;;;;;;;;;GAeG;AACH;IAZkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IAC/D,MAAM,EAArB,MAAM;IACS,IAAI,EAAnB,MAAM;IACwD,MAAM,EAApE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC;IAC9B,KAAK;IACT,aAAa;IACjB,IAAI,EAAnB,MAAM;IACS,KAAK,EAApB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,SAAS,EAAxB,MAAM;IACJ;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CA0EjE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IAnBkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IACnB,QAAQ,EAAnE,OAAO,2BAA2B,EAAE,cAAc;IACnC,MAAM,EAArB,MAAM;IACS,aAAa,EAA5B,MAAM;IACS,IAAI,EAAnB,MAAM;IACS,QAAQ,EAAvB,MAAM;IACS,eAAe,EAA9B,MAAM;IACS,oBAAoB,EAAnC,MAAM;IAC8C,sBAAsB,EAA1E;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC;IAEiC,YAAY,EAAxF;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC;IAC5C,KAAK;IACT,aAAa;IACjB,IAAI,EAAnB,MAAM;IACS,KAAK,EAApB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,SAAS,EAAxB,MAAM;IACJ;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAmI/E"}
|
|
@@ -3,14 +3,18 @@ import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js
|
|
|
3
3
|
import { TextureViewDescriptor } from "../../descriptor/texture/TextureViewDescriptor.js";
|
|
4
4
|
import { DEFAULT_DEPTH_TEXTURE_VIEW } from "../depth/DEFAULT_DEPTH_TEXTURE_VIEW.js";
|
|
5
5
|
import { AVBOIT_OCCUPANCY_SETTINGS_STRUCT } from "../rasterize/native/avboit/shader_avboit_occupancy.js";
|
|
6
|
+
import {
|
|
7
|
+
METRO_L1_IRRADIANCE_STRUCT
|
|
8
|
+
} from "../shader/chunk/spherical_harmonics/l1i/chunk_convert_to_irradiance_sh.js";
|
|
6
9
|
import { STATIC_GRAPHICS_ENGINE_ASSETS } from "../STATIC_GRAPHICS_ENGINE_ASSETS.js";
|
|
7
|
-
import {
|
|
10
|
+
import { IRRADIANCE_CLIPMAP_STRUCT } from "../volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js";
|
|
8
11
|
import {
|
|
9
|
-
PARTICLE_AVBOIT_DRAW_ALPHA_PIPELINE,
|
|
10
12
|
PARTICLE_AVBOIT_DRAW_ADDITIVE_PIPELINE,
|
|
13
|
+
PARTICLE_AVBOIT_DRAW_ALPHA_PIPELINE,
|
|
11
14
|
PARTICLE_AVBOIT_DRAW_GENERAL_PIPELINE,
|
|
12
15
|
PARTICLE_AVBOIT_DRAW_RESOURCES,
|
|
13
16
|
} from "./shaders/shader_particle_avboit_draw.js";
|
|
17
|
+
import { shader_particle_avboit_occupancy } from "./shaders/shader_particle_avboit_occupancy.js";
|
|
14
18
|
import {
|
|
15
19
|
PARTICLE_AVBOIT_SPLAT_PIPELINE,
|
|
16
20
|
PARTICLE_AVBOIT_SPLAT_RESOURCES,
|
|
@@ -135,10 +139,6 @@ export function graph_particle_avboit_splat({
|
|
|
135
139
|
function execute(data, resources, context) {
|
|
136
140
|
const encoder = context.encoder;
|
|
137
141
|
|
|
138
|
-
// By name, never by position: the order a shader declares its bindings in is the shader's
|
|
139
|
-
// business, and a list built here to match it binds a sampler where a texture goes the
|
|
140
|
-
// moment a binding is inserted anywhere but the end. The device rejects that, and only when
|
|
141
|
-
// the pass is first encoded on real hardware. See the layout-kind check in the spec.
|
|
142
142
|
const bindings = PARTICLE_AVBOIT_SPLAT_RESOURCES.generateBindings({
|
|
143
143
|
camera: resources.get(data.camera),
|
|
144
144
|
warp: resources.get(data.warp),
|
|
@@ -205,8 +205,8 @@ export function graph_particle_avboit_splat({
|
|
|
205
205
|
* @param {number} params.integral graph handle of the integral texture
|
|
206
206
|
* @param {number} params.volumetrics_lut graph handle
|
|
207
207
|
* @param {number} params.volumetrics_metadata graph handle
|
|
208
|
-
* @param {{Y: number, CoCg: number}} params.volumetrics_irradiance graph handles of
|
|
209
|
-
* irradiance
|
|
208
|
+
* @param {{Y: number, CoCg: number, uniform?: number}} params.volumetrics_irradiance graph handles of
|
|
209
|
+
* the world-space irradiance clipmap a lit emitter's particles are lit by
|
|
210
210
|
* @param {{color: number, norm: number, extinction: number, emission: number}} params.accumulators to add to
|
|
211
211
|
* @param {GPUTextureView} params.atlas
|
|
212
212
|
* @param {GPUSampler} params.atlas_sampler
|
|
@@ -219,6 +219,7 @@ export function graph_particle_avboit_splat({
|
|
|
219
219
|
export function graph_particle_avboit_draw({
|
|
220
220
|
graph,
|
|
221
221
|
view_ctx,
|
|
222
|
+
scene_context,
|
|
222
223
|
camera,
|
|
223
224
|
depth_texture,
|
|
224
225
|
warp,
|
|
@@ -246,6 +247,16 @@ export function graph_particle_avboit_draw({
|
|
|
246
247
|
|
|
247
248
|
const t_depth = resources.get(data.depth);
|
|
248
249
|
const depth_view = t_depth.obtainView(DEFAULT_DEPTH_TEXTURE_VIEW);
|
|
250
|
+
const linear_sampler = graphics.samplers.obtain(SAMPLER_LINEAR);
|
|
251
|
+
|
|
252
|
+
const irradiance_clipmap_buffer = data.irradiance_uniform !== undefined
|
|
253
|
+
? resources.get(data.irradiance_uniform)
|
|
254
|
+
: (view_ctx.volumetrics?.irradiance_clipmap?.uniform
|
|
255
|
+
?? encoder.allocateTransientBuffer(GPUBufferUsage.UNIFORM, IRRADIANCE_CLIPMAP_STRUCT.size));
|
|
256
|
+
|
|
257
|
+
const far_field_sh_buffer = scene_context?.lights?.far_field_irradiance_sh
|
|
258
|
+
?? view_ctx.scene?.lights?.far_field_irradiance_sh
|
|
259
|
+
?? encoder.allocateTransientBuffer(GPUBufferUsage.UNIFORM, METRO_L1_IRRADIANCE_STRUCT.aligned_size);
|
|
249
260
|
|
|
250
261
|
// by name rather than by position, for the reason the splat gives
|
|
251
262
|
const bindings = PARTICLE_AVBOIT_DRAW_RESOURCES.generateBindings({
|
|
@@ -259,12 +270,15 @@ export function graph_particle_avboit_draw({
|
|
|
259
270
|
atlas_sampler,
|
|
260
271
|
scene_depth: depth_view,
|
|
261
272
|
tIntegral: resources.get(data.integral).obtainView(),
|
|
262
|
-
sLinear:
|
|
273
|
+
sLinear: linear_sampler,
|
|
263
274
|
volumetrics_metadata: resources.get(data.volumetrics_metadata),
|
|
264
275
|
tVolumetrics: resources.get(data.volumetrics_lut).obtainView(),
|
|
265
276
|
tSTBN_vec3: graphics.textures.obtain(STATIC_GRAPHICS_ENGINE_ASSETS.stbn_vec3).obtainView(),
|
|
266
|
-
|
|
267
|
-
|
|
277
|
+
irradiance_clipmap: irradiance_clipmap_buffer,
|
|
278
|
+
irradiance_clipmap_atlas_y: resources.get(data.irradiance_Y).obtainView(),
|
|
279
|
+
irradiance_clipmap_atlas_cocg: resources.get(data.irradiance_CoCg).obtainView(),
|
|
280
|
+
irradiance_clipmap_sampler: linear_sampler,
|
|
281
|
+
far_field_irradiance_sh: far_field_sh_buffer,
|
|
268
282
|
}, encoder);
|
|
269
283
|
|
|
270
284
|
const attachment = (handle) => ({
|
|
@@ -312,6 +326,9 @@ export function graph_particle_avboit_draw({
|
|
|
312
326
|
pass_data.volumetrics_metadata = pass.read(volumetrics_metadata);
|
|
313
327
|
pass_data.irradiance_Y = pass.read(volumetrics_irradiance.Y);
|
|
314
328
|
pass_data.irradiance_CoCg = pass.read(volumetrics_irradiance.CoCg);
|
|
329
|
+
if (volumetrics_irradiance.uniform !== undefined) {
|
|
330
|
+
pass_data.irradiance_uniform = pass.read(volumetrics_irradiance.uniform);
|
|
331
|
+
}
|
|
315
332
|
pass_data.pool = pass.read(pool);
|
|
316
333
|
pass_data.alive = pass.read(alive);
|
|
317
334
|
pass_data.emitter_database = pass.read(emitter_database);
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How an emitter flagged `EMITTER_FLAG.LIGHTING` is lit, per fragment:
|
|
3
|
-
* `particle_apply_lighting(color,
|
|
4
|
-
* returns what it reflects and transmits (`chunk_particle_lighting_model`), from
|
|
5
|
-
* irradiance
|
|
6
|
-
* lighting, whichever mode it runs (the froxel GI stage, `volumetrics/gi/`), plus every directional,
|
|
7
|
-
* point and spot light, shadowed, as the surfaces around the particle receive them. One trilinear read of each
|
|
8
|
-
* of its two textures, so the cost grows with neither the lights nor the GI; the price is resolution —
|
|
9
|
-
* a froxel is 16 pixels across and a slice deep, and light and shadow edges inside a particle are that
|
|
10
|
-
* soft.
|
|
3
|
+
* `particle_apply_lighting(color, world_position, normal)` treats the particle's colour as a diffuse
|
|
4
|
+
* albedo and returns what it reflects and transmits (`chunk_particle_lighting_model`), sampled from
|
|
5
|
+
* the world-space irradiance clipmap (`chunk_irradiance_clipmap_sample_with_far_field`):
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
7
|
+
* - Inside the clipmap cascades, performs a single-cascade stochastic tap using a non-linear
|
|
8
|
+
* `smoothstep` transition across each cascade's blend-skirt (`irradiance_clipmap.blend_skirt`,
|
|
9
|
+
* default `IRRADIANCE_CLIPMAP_DEFAULT_BLEND_SKIRT = 2` voxels), with `random_u` generated via
|
|
10
|
+
* `hash_lowbias32_vec2u` and `hash_to_float01`.
|
|
11
|
+
* - Across the coarsest cascade's blend-skirt and outside all cascades (`CLIPMAP_LEVEL_NONE`),
|
|
12
|
+
* smoothly falls back to `far_field_irradiance_sh` (cached on `GPULightCollection`).
|
|
17
13
|
*
|
|
18
14
|
* @type {CodeChunk}
|
|
19
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_particle_lighting.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/chunk_particle_lighting.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_particle_lighting.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/chunk_particle_lighting.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;GAcG;AACH,sCAFU,SAAS,CAmBZ;0BAvCmB,oCAAoC"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
+
import { chunk_hash_to_float01 } from "../../shader/chunk/random/chunk_hash_to_float01.js";
|
|
2
|
+
import { chunk_hash_lowbias32_vec2u } from "../../shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.js";
|
|
3
|
+
import { chunk_hash_lowbias32_vec3u } from "../../shader/chunk/random/lowbias/chunk_hash_lowbias32_vec3u.js";
|
|
1
4
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
5
|
+
import { VIEW_RESOURCE } from "../../view/VIEW_RESOURCE.js";
|
|
2
6
|
import {
|
|
3
|
-
|
|
4
|
-
} from "../../volumetrics/
|
|
7
|
+
chunk_irradiance_clipmap_sample_with_far_field
|
|
8
|
+
} from "../../volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js";
|
|
5
9
|
import { chunk_particle_lighting_model } from "./chunk_particle_lighting_model.js";
|
|
6
10
|
|
|
7
11
|
/**
|
|
8
12
|
* How an emitter flagged `EMITTER_FLAG.LIGHTING` is lit, per fragment:
|
|
9
|
-
* `particle_apply_lighting(color,
|
|
10
|
-
* returns what it reflects and transmits (`chunk_particle_lighting_model`), from
|
|
11
|
-
* irradiance
|
|
12
|
-
* lighting, whichever mode it runs (the froxel GI stage, `volumetrics/gi/`), plus every directional,
|
|
13
|
-
* point and spot light, shadowed, as the surfaces around the particle receive them. One trilinear read of each
|
|
14
|
-
* of its two textures, so the cost grows with neither the lights nor the GI; the price is resolution —
|
|
15
|
-
* a froxel is 16 pixels across and a slice deep, and light and shadow edges inside a particle are that
|
|
16
|
-
* soft.
|
|
13
|
+
* `particle_apply_lighting(color, world_position, normal)` treats the particle's colour as a diffuse
|
|
14
|
+
* albedo and returns what it reflects and transmits (`chunk_particle_lighting_model`), sampled from
|
|
15
|
+
* the world-space irradiance clipmap (`chunk_irradiance_clipmap_sample_with_far_field`):
|
|
17
16
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
17
|
+
* - Inside the clipmap cascades, performs a single-cascade stochastic tap using a non-linear
|
|
18
|
+
* `smoothstep` transition across each cascade's blend-skirt (`irradiance_clipmap.blend_skirt`,
|
|
19
|
+
* default `IRRADIANCE_CLIPMAP_DEFAULT_BLEND_SKIRT = 2` voxels), with `random_u` generated via
|
|
20
|
+
* `hash_lowbias32_vec2u` and `hash_to_float01`.
|
|
21
|
+
* - Across the coarsest cascade's blend-skirt and outside all cascades (`CLIPMAP_LEVEL_NONE`),
|
|
22
|
+
* smoothly falls back to `far_field_irradiance_sh` (cached on `GPULightCollection`).
|
|
23
23
|
*
|
|
24
24
|
* @type {CodeChunk}
|
|
25
25
|
*/
|
|
@@ -27,14 +27,19 @@ export const chunk_particle_lighting = CodeChunk.from(
|
|
|
27
27
|
/* language=wgsl */
|
|
28
28
|
`
|
|
29
29
|
fn particle_apply_lighting(color : vec4<f32>, world_position : vec3<f32>, normal : vec3<f32>) -> vec4<f32> {
|
|
30
|
-
let
|
|
30
|
+
let pos_hash = hash_lowbias32_vec3u(bitcast<vec3<u32>>(world_position));
|
|
31
|
+
let random_u = hash_to_float01(hash_lowbias32_vec2u(vec2<u32>(pos_hash, view.frame_index)));
|
|
31
32
|
|
|
32
|
-
let
|
|
33
|
-
let sh_CoCg = textureSampleLevel(tIrradianceCoCg, sLinear, uvw, 0.0).xy;
|
|
33
|
+
let sh = irradiance_clipmap_sample_with_far_field(world_position, random_u);
|
|
34
34
|
|
|
35
|
-
return particle_lit(color,
|
|
35
|
+
return particle_lit(color, sh.Y, sh.CoCg, normal);
|
|
36
36
|
}
|
|
37
37
|
`, [
|
|
38
|
-
|
|
38
|
+
chunk_hash_lowbias32_vec3u,
|
|
39
|
+
chunk_hash_lowbias32_vec2u,
|
|
40
|
+
chunk_hash_to_float01,
|
|
41
|
+
chunk_irradiance_clipmap_sample_with_far_field,
|
|
39
42
|
chunk_particle_lighting_model,
|
|
40
43
|
]);
|
|
44
|
+
|
|
45
|
+
chunk_particle_lighting.requireResource(VIEW_RESOURCE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_particle_avboit_draw.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_particle_avboit_draw.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js"],"names":[],"mappings":"AAwLA,2EAAsI;AACtI,8EAA2I;AAC3I,6EAA8I;AAE9I,mEAAmE;AACnE,yEAAwD;AAExD,mDAAmD;AACnD,2DAAsD;yCA/Lb,iEAAiE;4CAU9D,sDAAsD;iCACjE,kCAAkC"}
|
|
@@ -1,26 +1,30 @@
|
|
|
1
|
-
import { RenderPipelineDescriptor } from "../../../descriptor/pipeline/render/RenderPipelineDescriptor.js";
|
|
2
1
|
import { DepthStencilState } from "../../../descriptor/pipeline/render/DepthStencilState.js";
|
|
3
|
-
import {
|
|
2
|
+
import { RenderPipelineDescriptor } from "../../../descriptor/pipeline/render/RenderPipelineDescriptor.js";
|
|
4
3
|
import { CAMERA_UNIFORM_STRUCT } from "../../camera/CAMERA_UNIFORM_STRUCT.js";
|
|
5
4
|
import { chunk_sample_volumetrics } from "../../deferred/chunk_sample_volumetrics.js";
|
|
6
5
|
import { AVBOIT_EXTINCT_TRANSMITTANCE } from "../../rasterize/native/avboit/AVBOIT_CONSTANTS.js";
|
|
7
|
-
import { AVBOIT_WARP_STRUCT } from "../../rasterize/native/avboit/AVBOIT_WARP_STRUCT.js";
|
|
8
6
|
import { AVBOIT_DRAW_TARGETS } from "../../rasterize/native/avboit/avboit_draw_fragment_body.js";
|
|
9
|
-
import {
|
|
7
|
+
import { AVBOIT_WARP_STRUCT } from "../../rasterize/native/avboit/AVBOIT_WARP_STRUCT.js";
|
|
10
8
|
import { chunk_avboit_footprint_bias } from "../../rasterize/native/avboit/chunk_avboit_footprint_bias.js";
|
|
11
9
|
import { chunk_avboit_sample_transmittance } from "../../rasterize/native/avboit/chunk_avboit_sample_transmittance.js";
|
|
12
|
-
import {
|
|
10
|
+
import { chunk_avboit_view_depth_to_virtual } from "../../rasterize/native/avboit/chunk_avboit_view_depth_to_virtual.js";
|
|
13
11
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
14
12
|
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
13
|
+
import { ShaderDescriptor } from "../../shader/ShaderDescriptor.js";
|
|
14
|
+
import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
|
|
15
15
|
import { SAMPLER_LINEAR_UPSCALE } from "../../texture/SAMPLER_LINEAR_UPSCALE.js";
|
|
16
|
+
import { chunk_view_mip_bias } from "../../view/chunk_view_mip_bias.js";
|
|
16
17
|
import { VIEW_UNIFORM_STRUCT } from "../../view/VIEW_UNIFORM_STRUCT.js";
|
|
18
|
+
import {
|
|
19
|
+
irradiance_clipmap_add_resources
|
|
20
|
+
} from "../../volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js";
|
|
17
21
|
import { VOLUMETRICS_METADATA_STRUCT } from "../../volumetrics/VOLUMETRICS_METADATA_STRUCT.js";
|
|
18
22
|
import { EMITTER_FLAG } from "../data/PARTICLE_EMITTER_STRUCT.js";
|
|
19
23
|
import { PARTICLE_SOFT_FADE_RANGE } from "../ParticleConstants.js";
|
|
20
24
|
import { chunk_particle_avboit_contribution } from "./chunk_particle_avboit_contribution.js";
|
|
21
|
-
import { chunk_particle_scene_view_depth } from "./chunk_particle_scene_view_depth.js";
|
|
22
25
|
import { chunk_particle_billboard_vertex } from "./chunk_particle_billboard_vertex.js";
|
|
23
26
|
import { chunk_particle_lighting } from "./chunk_particle_lighting.js";
|
|
27
|
+
import { chunk_particle_scene_view_depth } from "./chunk_particle_scene_view_depth.js";
|
|
24
28
|
|
|
25
29
|
/**
|
|
26
30
|
* The particles' AVBOIT draw: the billboard quads at internal resolution, depth-tested against the
|
|
@@ -29,28 +33,13 @@ import { chunk_particle_lighting } from "./chunk_particle_lighting.js";
|
|
|
29
33
|
*
|
|
30
34
|
* Per fragment: the atlas sample times the particle colour, the soft-depth fade against the scene
|
|
31
35
|
* depth, lighting for an emitter flagged `EMITTER_FLAG.LIGHTING` (`chunk_particle_lighting`: the
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* and a fragment the volume already calls extinct is discarded unshaded. An emitter without the
|
|
35
|
-
* flag is its own colour, which is what an additive one wants.
|
|
36
|
-
*
|
|
37
|
-
* What is written depends on how the particle blends:
|
|
38
|
-
*
|
|
39
|
-
* - **alpha / premultiplied** — a surface: `color += premultiplied × T`, `norm += coverage × T`,
|
|
40
|
-
* `extinction += -log(1 - coverage)`, the same three the meshes write, with an untinted
|
|
41
|
-
* `T_self = 1 - coverage`; the splat recorded exactly that.
|
|
42
|
-
* - **additive** — light: `emission += premultiplied × T`, nothing else. It joins the resolve
|
|
43
|
-
* attenuated by what is in front of it and outside the coverage normalization, which is what an
|
|
44
|
-
* additive fragment means.
|
|
45
|
-
*
|
|
46
|
-
* The scene depth is bound twice: as the read-only depth attachment the pipeline tests against, and
|
|
47
|
-
* as the texture the soft fade reads. Both are reads, which WebGPU allows within one pass; the pass
|
|
48
|
-
* is recorded with the attachment read-only for that reason.
|
|
36
|
+
* world-space irradiance clipmap and cached far-field SH), the volumetric fog composite, then the
|
|
37
|
+
* transmittance of everything in front from the integral texture.
|
|
49
38
|
*/
|
|
50
39
|
|
|
51
40
|
const resources = new ShaderResourceSetDescriptor();
|
|
52
41
|
|
|
53
|
-
resources.createGroup()
|
|
42
|
+
const group = resources.createGroup()
|
|
54
43
|
.addUniform("camera", CAMERA_UNIFORM_STRUCT)
|
|
55
44
|
.addUniform("view", VIEW_UNIFORM_STRUCT)
|
|
56
45
|
.addStorageBuffer("warp", AVBOIT_WARP_STRUCT)
|
|
@@ -66,10 +55,10 @@ resources.createGroup()
|
|
|
66
55
|
// volumetrics (composited inline)
|
|
67
56
|
.addUniform("volumetrics_metadata", VOLUMETRICS_METADATA_STRUCT)
|
|
68
57
|
.addTexture("tVolumetrics", "float", "3d")
|
|
69
|
-
.addTexture("tSTBN_vec3", "float", "3d")
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
58
|
+
.addTexture("tSTBN_vec3", "float", "3d");
|
|
59
|
+
|
|
60
|
+
// lighting (chunk_particle_lighting): world-space irradiance clipmap + cached far-field SH fallback
|
|
61
|
+
irradiance_clipmap_add_resources(group, { include_far_field: true });
|
|
73
62
|
|
|
74
63
|
const body = CodeChunk.from(
|
|
75
64
|
/* language=wgsl */ `
|
|
@@ -111,12 +100,10 @@ fn vs_general(@builtin(vertex_index) vi : u32, @builtin(instance_index) ii : u32
|
|
|
111
100
|
@fragment
|
|
112
101
|
fn fs_main(in : ParticleVertexOut) -> ParticleAVBOITDrawOutput {
|
|
113
102
|
let screen_uv = in.clip.xy / vec2<f32>(f32(view.width), f32(view.height));
|
|
103
|
+
let uv_bias = view_uv_derivative_bias(view.upscale_ratio);
|
|
104
|
+
let uv_ddx = dpdx(in.uv) * uv_bias.x;
|
|
105
|
+
let uv_ddy = dpdy(in.uv) * uv_bias.y;
|
|
114
106
|
|
|
115
|
-
// a billboard, stretched or not, is built from the camera's right and up and lies in the view plane,
|
|
116
|
-
// so its footprint is zero; a horizontal, vertical or world-facing quad seen at an angle runs
|
|
117
|
-
// through depth across a voxel (avboit_footprint_bias). An additive particle writes nothing into
|
|
118
|
-
// the volume, so nothing of its own is there to occlude it, and takes none. The derivative is
|
|
119
|
-
// taken here, in uniform control flow, whatever the blend
|
|
120
107
|
let footprint = select(
|
|
121
108
|
avboit_footprint_bias(&warp, fwidth(avboit_view_depth_to_virtual(&warp, in.view_depth))),
|
|
122
109
|
0.0,
|
|
@@ -130,7 +117,7 @@ fn fs_main(in : ParticleVertexOut) -> ParticleAVBOITDrawOutput {
|
|
|
130
117
|
discard;
|
|
131
118
|
}
|
|
132
119
|
|
|
133
|
-
var color =
|
|
120
|
+
var color = textureSampleGrad(atlas, atlas_sampler, in.uv, uv_ddx, uv_ddy) * in.color;
|
|
134
121
|
|
|
135
122
|
if ((in.flags & PARTICLE_FLAG_SOFT_DEPTH) != 0u) {
|
|
136
123
|
let scene_vd = particle_scene_view_depth(textureLoad(scene_depth, vec2<i32>(in.clip.xy), 0).r, camera);
|
|
@@ -167,6 +154,7 @@ fn fs_main(in : ParticleVertexOut) -> ParticleAVBOITDrawOutput {
|
|
|
167
154
|
chunk_avboit_view_depth_to_virtual,
|
|
168
155
|
chunk_avboit_footprint_bias,
|
|
169
156
|
chunk_avboit_sample_transmittance,
|
|
157
|
+
chunk_view_mip_bias,
|
|
170
158
|
]);
|
|
171
159
|
|
|
172
160
|
const descriptor = ShaderDescriptor.from({ label: "Particle AVBOIT Draw", body, resources });
|
|
@@ -53,7 +53,7 @@ export class NSS {
|
|
|
53
53
|
* @returns {number}
|
|
54
54
|
*/
|
|
55
55
|
static recommended_jitter_sequence_size(upscale_ratio: number): number;
|
|
56
|
-
static "__#
|
|
56
|
+
static "__#203@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
|
|
57
57
|
/**
|
|
58
58
|
* @param {GraphicsContext} graphics
|
|
59
59
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr_resolve_shader.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssr_resolve_shader.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js"],"names":[],"mappings":"AAmWA;;;;;;;GAOG;AACH,iCAFU,WAAW,CAgBlB;4BAtWyB,gCAAgC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { chunk_ssr_metadata } from "../chunk_ssr_metadata.js";
|
|
2
2
|
import { chunk_is_on_screen_i32 } from "../../../shader/chunk/texture/chunk_is_on_screen_i32.js";
|
|
3
|
-
import {
|
|
3
|
+
import { SAMPLER_TRILINEAR_CLAMP } from "../../../texture/SAMPLER_TRILINEAR_CLAMP.js";
|
|
4
4
|
import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
5
5
|
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
6
6
|
import { CAMERA_UNIFORM_STRUCT } from "../../../camera/CAMERA_UNIFORM_STRUCT.js";
|
|
@@ -62,12 +62,14 @@ resources.createGroup()
|
|
|
62
62
|
.addTexture("tNormal", "uint")
|
|
63
63
|
.addTexture("tColor", "float")
|
|
64
64
|
.addTexture("tAlbedoAO", "unfilterable-float")
|
|
65
|
-
.addSampler("sLinear", "filtering",
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
.addSampler("sLinear", "filtering", SAMPLER_TRILINEAR_CLAMP)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
71
73
|
.addUniform("camera", CAMERA_UNIFORM_STRUCT)
|
|
72
74
|
;
|
|
73
75
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_forward_shade_standard_fragment.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_forward_shade_standard_fragment.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.js"],"names":[],"mappings":"AAyCA;;;;;;GAMG;AACH,8DAsKC;0BA/LyB,oCAAoC"}
|
|
@@ -24,7 +24,9 @@ import { MATERIAL_SHADING_INFO_STRUCT } from "../../shader/chunk/material/MATERI
|
|
|
24
24
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
25
25
|
import { chunk_forward_sample_indirect } from "./chunk_forward_sample_indirect.js";
|
|
26
26
|
import { FORWARD_VERTEX_SHADER_STRUCT } from "./FORWARD_VERTEX_SHADER_STRUCT.js";
|
|
27
|
-
import { CAMERA_RESOURCE } from "../../camera/CAMERA_RESOURCE.js";
|
|
27
|
+
import { CAMERA_RESOURCE } from "../../camera/CAMERA_RESOURCE.js";
|
|
28
|
+
import { VIEW_RESOURCE } from "../../view/VIEW_RESOURCE.js";
|
|
29
|
+
import { chunk_view_mip_bias } from "../../view/chunk_view_mip_bias.js";
|
|
28
30
|
import {
|
|
29
31
|
MATERIAL_DIFFUSE_SAMPLER_RESOURCE,
|
|
30
32
|
MATERIAL_DIFFUSE_TEXTURE_RESOURCE,
|
|
@@ -55,7 +57,11 @@ fn forward_shade_standard_fragment(
|
|
|
55
57
|
) -> vec4f {
|
|
56
58
|
let world_tangent_frame = build_orthonormal_matrix_nt(vert.normal, vert.tangent);
|
|
57
59
|
|
|
58
|
-
let
|
|
60
|
+
let uv_bias = view_uv_derivative_bias(view.upscale_ratio);
|
|
61
|
+
let uv_ddx = dpdx(vert.uv) * uv_bias.x;
|
|
62
|
+
let uv_ddy = dpdy(vert.uv) * uv_bias.y;
|
|
63
|
+
|
|
64
|
+
let t_normal = decode_tangent_normal(textureSampleGrad(texture_normal, texture_normal_sampler, vert.uv, uv_ddx, uv_ddy));
|
|
59
65
|
var world_shading_normal:vec3<f32> = normalize( world_tangent_frame * t_normal );
|
|
60
66
|
|
|
61
67
|
// flip the normal when looking at the surface's back. The raw front_facing cannot say:
|
|
@@ -77,9 +83,9 @@ fn forward_shade_standard_fragment(
|
|
|
77
83
|
view_direction: 'view_direction',
|
|
78
84
|
})};
|
|
79
85
|
|
|
80
|
-
let t_pbr =
|
|
81
|
-
let t_diffuse =
|
|
82
|
-
let t_emissive =
|
|
86
|
+
let t_pbr = textureSampleGrad(texture_orm, texture_orm_sampler, vert.uv, uv_ddx, uv_ddy);
|
|
87
|
+
let t_diffuse = textureSampleGrad(texture_diffuse, texture_diffuse_sampler, vert.uv, uv_ddx, uv_ddy);
|
|
88
|
+
let t_emissive = textureSampleGrad(texture_emissive, texture_emissive_sampler, vert.uv, uv_ddx, uv_ddy);
|
|
83
89
|
|
|
84
90
|
// the vertex stage hands on the vertex's own colour; the material's is applied here
|
|
85
91
|
var diffuse = t_diffuse.rgb * vert.color * material_info.albedo_color.rgb;
|
|
@@ -203,11 +209,13 @@ fn forward_shade_standard_fragment(
|
|
|
203
209
|
chunk_compute_indirect_specular,
|
|
204
210
|
chunk_forward_sample_indirect,
|
|
205
211
|
chunk_compute_specular_occlusion,
|
|
206
|
-
chunk_material_draw_side,
|
|
212
|
+
chunk_material_draw_side,
|
|
213
|
+
chunk_view_mip_bias,
|
|
207
214
|
]
|
|
208
215
|
)
|
|
209
216
|
|
|
210
|
-
chunk_forward_shade_standard_fragment.requireResource(CAMERA_RESOURCE);
|
|
217
|
+
chunk_forward_shade_standard_fragment.requireResource(CAMERA_RESOURCE);
|
|
218
|
+
chunk_forward_shade_standard_fragment.requireResource(VIEW_RESOURCE);
|
|
211
219
|
chunk_forward_shade_standard_fragment.requireResource(MATERIAL_INFO_RESOURCE);
|
|
212
220
|
chunk_forward_shade_standard_fragment.requireResource(MATERIAL_DIFFUSE_TEXTURE_RESOURCE);
|
|
213
221
|
chunk_forward_shade_standard_fragment.requireResource(MATERIAL_DIFFUSE_SAMPLER_RESOURCE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avboit_draw_fragment_body.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,uCAFU,MAAM,CAE2B;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wCAFU,MAAM,
|
|
1
|
+
{"version":3,"file":"avboit_draw_fragment_body.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,uCAFU,MAAM,CAE2B;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wCAFU,MAAM,CAsEV;AAEN;;;GAGG;AACH,gDAFU,WAAW,CAWnB;AAEF;;;GAGG;AACH,kCAFU,qBAAqB,CAiB3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { chunk_sample_volumetrics } from "../../../deferred/chunk_sample_volumetrics.js";
|
|
2
2
|
import { chunk_get_view_space_depth } from "../../../shader/chunk/depth/chunk_get_view_space_depth.js";
|
|
3
|
-
import {
|
|
3
|
+
import { chunk_view_mip_bias } from "../../../view/chunk_view_mip_bias.js";
|
|
4
4
|
import { FORWARD_VERTEX_SHADER_STRUCT } from "../../forward/FORWARD_VERTEX_SHADER_STRUCT.js";
|
|
5
5
|
import { OIT_COVERAGE_MAX } from "../oit/OIT_CONSTANTS.js";
|
|
6
6
|
import { AVBOIT_EXTINCT_TRANSMITTANCE } from "./AVBOIT_CONSTANTS.js";
|
|
@@ -66,7 +66,9 @@ fn main(
|
|
|
66
66
|
|
|
67
67
|
// need to unjitter UV to account for TAA
|
|
68
68
|
var vert_adjusted = vert;
|
|
69
|
-
|
|
69
|
+
let uv_bias = view_uv_derivative_bias(view.upscale_ratio);
|
|
70
|
+
let uv_ddx = dpdx(vert.uv) * uv_bias.x;
|
|
71
|
+
let uv_ddy = dpdy(vert.uv) * uv_bias.y;
|
|
70
72
|
|
|
71
73
|
// linear view depth (vert.position is @builtin(position); .z is device depth) and screen uv,
|
|
72
74
|
// for the volume lookup and the fog composite alike
|
|
@@ -98,7 +100,7 @@ fn main(
|
|
|
98
100
|
var tint = vec3<f32>(1.0);
|
|
99
101
|
let f_transmission = material_info.transmission_factor;
|
|
100
102
|
if (f_transmission > 0.0) {
|
|
101
|
-
let t_diffuse =
|
|
103
|
+
let t_diffuse = textureSampleGrad(texture_diffuse, texture_diffuse_sampler, vert_adjusted.uv, uv_ddx, uv_ddy);
|
|
102
104
|
let base_color = (t_diffuse.rgb / max(t_diffuse.a, 1e-7)) * vert.color * material_info.albedo_color.rgb;
|
|
103
105
|
tint = avboit_transmission_tint(base_color, f_transmission * f32(warp.tint_from_base_color));
|
|
104
106
|
}
|
|
@@ -122,7 +124,7 @@ fn main(
|
|
|
122
124
|
*/
|
|
123
125
|
export const AVBOIT_DRAW_FRAGMENT_DEPENDENCIES = [
|
|
124
126
|
FORWARD_VERTEX_SHADER_STRUCT.declaration_chunk,
|
|
125
|
-
|
|
127
|
+
chunk_view_mip_bias,
|
|
126
128
|
chunk_get_view_space_depth,
|
|
127
129
|
chunk_sample_volumetrics,
|
|
128
130
|
chunk_avboit_view_depth_to_virtual,
|