@aura3d/engine 4.6.2 → 4.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts +12 -0
- package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -1
- package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js +26 -1
- package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -1
- package/dist/assets/vfx/LICENSE.md +1 -0
- package/dist/assets/vfx/aura-vfx-1k.png +0 -0
- package/dist/assets/vfx/aura-vfx-2k.png +0 -0
- package/dist/aura3d-cli/admission/cubeLut.d.ts +18 -0
- package/dist/aura3d-cli/admission/cubeLut.d.ts.map +1 -0
- package/dist/aura3d-cli/admission/cubeLut.js +53 -0
- package/dist/aura3d-cli/admission/cubeLut.js.map +1 -0
- package/dist/aura3d-cli/asset-core-types.d.ts +7 -4
- package/dist/aura3d-cli/asset-core-types.d.ts.map +1 -1
- package/dist/aura3d-cli/cli-help.d.ts.map +1 -1
- package/dist/aura3d-cli/cli-help.js +7 -4
- package/dist/aura3d-cli/cli-help.js.map +1 -1
- package/dist/aura3d-cli/cli-options.d.ts +1 -1
- package/dist/aura3d-cli/cli-options.d.ts.map +1 -1
- package/dist/aura3d-cli/cli-options.js +2 -2
- package/dist/aura3d-cli/cli-options.js.map +1 -1
- package/dist/aura3d-cli/cli.js +3 -2
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/commands/assets/certifyCategories.d.ts +26 -0
- package/dist/aura3d-cli/commands/assets/certifyCategories.d.ts.map +1 -0
- package/dist/aura3d-cli/commands/assets/certifyCategories.js +31 -0
- package/dist/aura3d-cli/commands/assets/certifyCategories.js.map +1 -0
- package/dist/aura3d-cli/commands/assets/optimize.d.ts +66 -0
- package/dist/aura3d-cli/commands/assets/optimize.d.ts.map +1 -1
- package/dist/aura3d-cli/commands/assets/optimize.js +270 -1
- package/dist/aura3d-cli/commands/assets/optimize.js.map +1 -1
- package/dist/aura3d-cli/commands/assets/optimizeVerb.d.ts.map +1 -1
- package/dist/aura3d-cli/commands/assets/optimizeVerb.js +26 -1
- package/dist/aura3d-cli/commands/assets/optimizeVerb.js.map +1 -1
- package/dist/aura3d-cli/commands/evidence/judge.d.ts +50 -1
- package/dist/aura3d-cli/commands/evidence/judge.d.ts.map +1 -1
- package/dist/aura3d-cli/commands/evidence/judge.js +154 -6
- package/dist/aura3d-cli/commands/evidence/judge.js.map +1 -1
- package/dist/aura3d-cli/commands/prd05/index.js +1 -1
- package/dist/aura3d-cli/commands/prd05/index.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +25 -9
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/look/judge.d.ts +53 -5
- package/dist/aura3d-cli/look/judge.d.ts.map +1 -1
- package/dist/aura3d-cli/look/judge.js +226 -50
- package/dist/aura3d-cli/look/judge.js.map +1 -1
- package/dist/create-aura3d/index.js +1 -1
- package/dist/engine/agent-api/RootRuntimeSupport.d.ts +7 -0
- package/dist/engine/agent-api/RootRuntimeSupport.d.ts.map +1 -1
- package/dist/engine/agent-api/RootRuntimeSupport.js +7 -0
- package/dist/engine/agent-api/RootRuntimeSupport.js.map +1 -1
- package/dist/engine/agent-api/app/actorAnimationHandle.d.ts +2 -0
- package/dist/engine/agent-api/app/actorAnimationHandle.d.ts.map +1 -1
- package/dist/engine/agent-api/app/actorAnimationHandle.js +149 -2
- package/dist/engine/agent-api/app/actorAnimationHandle.js.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.js +13 -1
- package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.js +4 -2
- package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
- package/dist/engine/agent-api/camera/layers/cinematicBars.d.ts +2 -0
- package/dist/engine/agent-api/camera/layers/cinematicBars.d.ts.map +1 -1
- package/dist/engine/agent-api/camera/layers/cinematicBars.js +4 -0
- package/dist/engine/agent-api/camera/layers/cinematicBars.js.map +1 -1
- package/dist/engine/agent-api/compiler/compileScene.d.ts +11 -1
- package/dist/engine/agent-api/compiler/compileScene.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/compileScene.js +27 -1
- package/dist/engine/agent-api/compiler/compileScene.js.map +1 -1
- package/dist/engine/agent-api/compiler/customMaterial.d.ts +16 -5
- package/dist/engine/agent-api/compiler/customMaterial.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/customMaterial.js +149 -20
- package/dist/engine/agent-api/compiler/customMaterial.js.map +1 -1
- package/dist/engine/agent-api/compiler/environment.d.ts +57 -1
- package/dist/engine/agent-api/compiler/environment.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/environment.js +170 -5
- package/dist/engine/agent-api/compiler/environment.js.map +1 -1
- package/dist/engine/agent-api/compiler/fog.js +1 -1
- package/dist/engine/agent-api/compiler/fog.js.map +1 -1
- package/dist/engine/agent-api/compiler/lights.d.ts +92 -0
- package/dist/engine/agent-api/compiler/lights.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/lights.js +358 -1
- package/dist/engine/agent-api/compiler/lights.js.map +1 -1
- package/dist/engine/agent-api/compiler/observations.d.ts +34 -0
- package/dist/engine/agent-api/compiler/observations.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/observations.js +77 -5
- package/dist/engine/agent-api/compiler/observations.js.map +1 -1
- package/dist/engine/agent-api/compiler/postprocess.d.ts +10 -0
- package/dist/engine/agent-api/compiler/postprocess.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/postprocess.js +28 -7
- package/dist/engine/agent-api/compiler/postprocess.js.map +1 -1
- package/dist/engine/agent-api/compiler/renderInput.d.ts +2 -0
- package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/renderInput.js +15 -2
- package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
- package/dist/engine/agent-api/compiler/renderer.d.ts +6 -0
- package/dist/engine/agent-api/compiler/renderer.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/renderer.js +14 -3
- package/dist/engine/agent-api/compiler/renderer.js.map +1 -1
- package/dist/engine/agent-api/diagnostics.d.ts +16 -0
- package/dist/engine/agent-api/diagnostics.d.ts.map +1 -1
- package/dist/engine/agent-api/diagnostics.js +45 -2
- package/dist/engine/agent-api/diagnostics.js.map +1 -1
- package/dist/engine/agent-api/index.d.ts +2 -0
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +3 -0
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/looks/lookPresets.d.ts +2 -0
- package/dist/engine/agent-api/looks/lookPresets.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/lookPresets.js.map +1 -1
- package/dist/engine/agent-api/looks/looks.d.ts +12 -2
- package/dist/engine/agent-api/looks/looks.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/looks.js +365 -65
- package/dist/engine/agent-api/looks/looks.js.map +1 -1
- package/dist/engine/agent-api/nodes/builder.d.ts +8 -0
- package/dist/engine/agent-api/nodes/builder.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/builder.js +15 -0
- package/dist/engine/agent-api/nodes/builder.js.map +1 -1
- package/dist/engine/agent-api/nodes/effects.composite.d.ts +13 -9
- package/dist/engine/agent-api/nodes/effects.composite.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/effects.d.ts +65 -14
- package/dist/engine/agent-api/nodes/effects.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/effects.js +49 -16
- package/dist/engine/agent-api/nodes/effects.js.map +1 -1
- package/dist/engine/agent-api/nodes/effects.post.d.ts +62 -5
- package/dist/engine/agent-api/nodes/effects.post.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/effects.post.js +30 -17
- package/dist/engine/agent-api/nodes/effects.post.js.map +1 -1
- package/dist/engine/agent-api/nodes/effects.toon.d.ts +65 -1
- package/dist/engine/agent-api/nodes/effects.toon.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/effects.toon.js +186 -23
- package/dist/engine/agent-api/nodes/effects.toon.js.map +1 -1
- package/dist/engine/agent-api/nodes/groups.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/groups.js +2 -2
- package/dist/engine/agent-api/nodes/groups.js.map +1 -1
- package/dist/engine/agent-api/nodes/instances.d.ts +130 -90
- package/dist/engine/agent-api/nodes/instances.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/instances.js +192 -48
- package/dist/engine/agent-api/nodes/instances.js.map +1 -1
- package/dist/engine/agent-api/nodes/material.d.ts +8 -1
- package/dist/engine/agent-api/nodes/material.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/material.js +82 -0
- package/dist/engine/agent-api/nodes/material.js.map +1 -1
- package/dist/engine/agent-api/nodes/outlineTargets.d.ts +16 -0
- package/dist/engine/agent-api/nodes/outlineTargets.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/outlineTargets.js +46 -0
- package/dist/engine/agent-api/nodes/outlineTargets.js.map +1 -0
- package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/scene.js +2 -2
- package/dist/engine/agent-api/nodes/scene.js.map +1 -1
- package/dist/engine/agent-api/nodes/sky.d.ts +23 -6
- package/dist/engine/agent-api/nodes/sky.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/sky.js +2 -0
- package/dist/engine/agent-api/nodes/sky.js.map +1 -1
- package/dist/engine/agent-api/nodes/types/runtime.d.ts +28 -1
- package/dist/engine/agent-api/nodes/types/runtime.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/types.d.ts +71 -3
- package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
- package/dist/engine/agent-api/performanceEvidence.js +7 -2
- package/dist/engine/agent-api/performanceEvidence.js.map +1 -1
- package/dist/engine/agent-api/postBridge.d.ts +75 -3
- package/dist/engine/agent-api/postBridge.d.ts.map +1 -1
- package/dist/engine/agent-api/postBridge.js +436 -33
- package/dist/engine/agent-api/postBridge.js.map +1 -1
- package/dist/engine/agent-api/postPresets.d.ts +8 -4
- package/dist/engine/agent-api/postPresets.d.ts.map +1 -1
- package/dist/engine/agent-api/postPresets.js +12 -11
- package/dist/engine/agent-api/postPresets.js.map +1 -1
- package/dist/engine/agent-api/publishedUnion.d.ts +7 -4
- package/dist/engine/agent-api/publishedUnion.d.ts.map +1 -1
- package/dist/engine/agent-api/publishedUnion.js +1 -1
- package/dist/engine/agent-api/publishedUnion.js.map +1 -1
- package/dist/engine/agent-api/rendererDiagnostics.js +4 -6
- package/dist/engine/agent-api/rendererDiagnostics.js.map +1 -1
- package/dist/engine/agent-api/vfx/atmosphere-api.d.ts +2 -4
- package/dist/engine/agent-api/vfx/atmosphere-api.d.ts.map +1 -1
- package/dist/engine/agent-api/vfx/atmosphere-api.js +2 -1
- package/dist/engine/agent-api/vfx/atmosphere-api.js.map +1 -1
- package/dist/engine/agent-api/vfx/effects-api.d.ts +3 -0
- package/dist/engine/agent-api/vfx/effects-api.d.ts.map +1 -1
- package/dist/engine/agent-api/vfx/effects-api.js +337 -74
- package/dist/engine/agent-api/vfx/effects-api.js.map +1 -1
- package/dist/engine/agent-api/world/flags.d.ts +33 -3
- package/dist/engine/agent-api/world/flags.d.ts.map +1 -1
- package/dist/engine/agent-api/world/flags.js +44 -12
- package/dist/engine/agent-api/world/flags.js.map +1 -1
- package/dist/engine/agent-api/world/index.d.ts +10 -1
- package/dist/engine/agent-api/world/index.d.ts.map +1 -1
- package/dist/engine/agent-api/world/index.js +11 -2
- package/dist/engine/agent-api/world/index.js.map +1 -1
- package/dist/engine/agent-api/world/scatter.d.ts +50 -3
- package/dist/engine/agent-api/world/scatter.d.ts.map +1 -1
- package/dist/engine/agent-api/world/scatter.js +93 -7
- package/dist/engine/agent-api/world/scatter.js.map +1 -1
- package/dist/engine/agent-api/world/terrain.d.ts +8 -0
- package/dist/engine/agent-api/world/terrain.d.ts.map +1 -1
- package/dist/engine/agent-api/world/terrain.js +6 -1
- package/dist/engine/agent-api/world/terrain.js.map +1 -1
- package/dist/engine/contracts/animation.d.ts +30 -12
- package/dist/engine/contracts/animation.d.ts.map +1 -1
- package/dist/engine/contracts/animation.js +2 -0
- package/dist/engine/contracts/animation.js.map +1 -1
- package/dist/engine/contracts/art.d.ts +1 -1
- package/dist/engine/contracts/art.d.ts.map +1 -1
- package/dist/engine/contracts/atmosphere.d.ts +43 -9
- package/dist/engine/contracts/atmosphere.d.ts.map +1 -1
- package/dist/engine/contracts/atmosphere.js.map +1 -1
- package/dist/engine/contracts/camera.d.ts +8 -2
- package/dist/engine/contracts/camera.d.ts.map +1 -1
- package/dist/engine/contracts/camera.js +14 -3
- package/dist/engine/contracts/camera.js.map +1 -1
- package/dist/engine/contracts/effects.d.ts +83 -37
- package/dist/engine/contracts/effects.d.ts.map +1 -1
- package/dist/engine/contracts/effects.js +2 -1
- package/dist/engine/contracts/effects.js.map +1 -1
- package/dist/engine/contracts/flags.d.ts.map +1 -1
- package/dist/engine/contracts/flags.js +29 -4
- package/dist/engine/contracts/flags.js.map +1 -1
- package/dist/engine/contracts/lighting.d.ts +33 -1
- package/dist/engine/contracts/lighting.d.ts.map +1 -1
- package/dist/engine/contracts/lighting.js +13 -1
- package/dist/engine/contracts/lighting.js.map +1 -1
- package/dist/engine/contracts/looks.d.ts +57 -1
- package/dist/engine/contracts/looks.d.ts.map +1 -1
- package/dist/engine/contracts/looks.js.map +1 -1
- package/dist/engine/contracts/materials.d.ts +25 -0
- package/dist/engine/contracts/materials.d.ts.map +1 -1
- package/dist/engine/contracts/materials.js +4 -1
- package/dist/engine/contracts/materials.js.map +1 -1
- package/dist/engine/contracts/post.d.ts +14 -0
- package/dist/engine/contracts/post.d.ts.map +1 -1
- package/dist/engine/contracts/post.js +2 -0
- package/dist/engine/contracts/post.js.map +1 -1
- package/dist/engine/instances-model/CrowdKit.d.ts +231 -0
- package/dist/engine/instances-model/CrowdKit.d.ts.map +1 -0
- package/dist/engine/instances-model/CrowdKit.js +496 -0
- package/dist/engine/instances-model/CrowdKit.js.map +1 -0
- package/dist/engine/lanes/prd02.d.ts +36 -2
- package/dist/engine/lanes/prd02.d.ts.map +1 -1
- package/dist/engine/lanes/prd02.js +120 -7
- package/dist/engine/lanes/prd02.js.map +1 -1
- package/dist/engine/lanes/prd03.d.ts.map +1 -1
- package/dist/engine/lanes/prd03.js +9 -1
- package/dist/engine/lanes/prd03.js.map +1 -1
- package/dist/engine/lanes/prd07.d.ts.map +1 -1
- package/dist/engine/lanes/prd07.js +12 -7
- package/dist/engine/lanes/prd07.js.map +1 -1
- package/dist/engine/production-runtime/GlbResourceCache.d.ts +140 -0
- package/dist/engine/production-runtime/GlbResourceCache.d.ts.map +1 -0
- package/dist/engine/production-runtime/GlbResourceCache.js +237 -0
- package/dist/engine/production-runtime/GlbResourceCache.js.map +1 -0
- package/dist/engine/production-runtime/ModelMaterialOverrides.d.ts +53 -2
- package/dist/engine/production-runtime/ModelMaterialOverrides.d.ts.map +1 -1
- package/dist/engine/production-runtime/ModelMaterialOverrides.js +142 -1
- package/dist/engine/production-runtime/ModelMaterialOverrides.js.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts +55 -0
- package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.js +205 -3
- package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
- package/dist/engine/production-runtime/actor/ModelTextureShare.d.ts.map +1 -1
- package/dist/engine/production-runtime/actor/ModelTextureShare.js +5 -2
- package/dist/engine/production-runtime/actor/ModelTextureShare.js.map +1 -1
- package/dist/engine/production-runtime/actor/TypedGLBActorMaterials.d.ts.map +1 -1
- package/dist/engine/production-runtime/actor/TypedGLBActorMaterials.js +10 -1
- package/dist/engine/production-runtime/actor/TypedGLBActorMaterials.js.map +1 -1
- package/dist/engine/production-runtime/effects/EffectNodeLowering.d.ts +55 -0
- package/dist/engine/production-runtime/effects/EffectNodeLowering.d.ts.map +1 -1
- package/dist/engine/production-runtime/effects/EffectNodeLowering.js +71 -7
- package/dist/engine/production-runtime/effects/EffectNodeLowering.js.map +1 -1
- package/dist/engine/production-runtime/effects/FlipbookAtlas.d.ts +85 -0
- package/dist/engine/production-runtime/effects/FlipbookAtlas.d.ts.map +1 -1
- package/dist/engine/production-runtime/effects/FlipbookAtlas.js +164 -0
- package/dist/engine/production-runtime/effects/FlipbookAtlas.js.map +1 -1
- package/dist/engine/production-runtime/effects/LiveAtmosphere.d.ts +39 -6
- package/dist/engine/production-runtime/effects/LiveAtmosphere.d.ts.map +1 -1
- package/dist/engine/production-runtime/effects/LiveAtmosphere.js +102 -10
- package/dist/engine/production-runtime/effects/LiveAtmosphere.js.map +1 -1
- package/dist/engine/production-runtime/effects/ProductionEffectSystem.d.ts +73 -1
- package/dist/engine/production-runtime/effects/ProductionEffectSystem.d.ts.map +1 -1
- package/dist/engine/production-runtime/effects/ProductionEffectSystem.js +367 -7
- package/dist/engine/production-runtime/effects/ProductionEffectSystem.js.map +1 -1
- package/dist/engine/production-runtime/world/WaterRuntime.d.ts +9 -0
- package/dist/engine/production-runtime/world/WaterRuntime.d.ts.map +1 -1
- package/dist/engine/production-runtime/world/WaterRuntime.js +27 -11
- package/dist/engine/production-runtime/world/WaterRuntime.js.map +1 -1
- package/dist/engine/production-runtime/world/WorldFramePasses.d.ts +11 -1
- package/dist/engine/production-runtime/world/WorldFramePasses.d.ts.map +1 -1
- package/dist/engine/production-runtime/world/WorldFramePasses.js +37 -1
- package/dist/engine/production-runtime/world/WorldFramePasses.js.map +1 -1
- package/dist/engine/public/index.d.ts +22 -0
- package/dist/engine/public/index.d.ts.map +1 -1
- package/dist/engine/public/index.js +14 -0
- package/dist/engine/public/index.js.map +1 -1
- package/dist/game/art/define.d.ts +1 -1
- package/dist/game/art/define.d.ts.map +1 -1
- package/dist/game/art/define.js +1 -1
- package/dist/game/art/define.js.map +1 -1
- package/dist/game/fonts/register.d.ts +16 -1
- package/dist/game/fonts/register.d.ts.map +1 -1
- package/dist/game/fonts/register.js +18 -7
- package/dist/game/fonts/register.js.map +1 -1
- package/dist/game/hud/themes.d.ts +33 -8
- package/dist/game/hud/themes.d.ts.map +1 -1
- package/dist/game/hud/themes.js +125 -22
- package/dist/game/hud/themes.js.map +1 -1
- package/dist/game/index.d.ts +4 -2
- package/dist/game/index.d.ts.map +1 -1
- package/dist/game/index.js +2 -1
- package/dist/game/index.js.map +1 -1
- package/dist/game/juice/audioReactive.d.ts +42 -0
- package/dist/game/juice/audioReactive.d.ts.map +1 -0
- package/dist/game/juice/audioReactive.js +68 -0
- package/dist/game/juice/audioReactive.js.map +1 -0
- package/dist/game/styles/themes/arcade-neon.css +2 -1
- package/dist/game/styles/themes/fighting.css +2 -1
- package/dist/game/styles/themes/ink-scroll.css +15 -0
- package/dist/game/styles/themes/motorsport.css +2 -1
- package/dist/game/styles/themes/plain.css +2 -1
- package/dist/game/styles/themes/sci-fi-telemetry.css +2 -1
- package/dist/game/styles/themes/sky-expedition.css +15 -0
- package/dist/game/styles/themes/sports-broadcast.css +2 -1
- package/dist/game/styles/themes/storybook.css +15 -0
- package/dist/game/styles/themes/tabletop.css +2 -1
- package/dist/game/styles.css +3 -1
- package/dist/rendering/ClusteredForwardLighting.d.ts.map +1 -1
- package/dist/rendering/ClusteredForwardLighting.js +3 -1
- package/dist/rendering/ClusteredForwardLighting.js.map +1 -1
- package/dist/rendering/DepthPass.d.ts +25 -0
- package/dist/rendering/DepthPass.d.ts.map +1 -1
- package/dist/rendering/DepthPass.js +149 -1
- package/dist/rendering/DepthPass.js.map +1 -1
- package/dist/rendering/ForwardPass.d.ts +84 -0
- package/dist/rendering/ForwardPass.d.ts.map +1 -1
- package/dist/rendering/ForwardPass.js +236 -12
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/LightUniforms.d.ts +12 -0
- package/dist/rendering/LightUniforms.d.ts.map +1 -1
- package/dist/rendering/LightUniforms.js +9 -1
- package/dist/rendering/LightUniforms.js.map +1 -1
- package/dist/rendering/atmosphere/CloudLayer.d.ts +15 -0
- package/dist/rendering/atmosphere/CloudLayer.d.ts.map +1 -1
- package/dist/rendering/atmosphere/CloudLayer.js +27 -5
- package/dist/rendering/atmosphere/CloudLayer.js.map +1 -1
- package/dist/rendering/atmosphere/GradientSky.d.ts +3 -3
- package/dist/rendering/atmosphere/GradientSky.d.ts.map +1 -1
- package/dist/rendering/atmosphere/GradientSky.js +20 -9
- package/dist/rendering/atmosphere/GradientSky.js.map +1 -1
- package/dist/rendering/atmosphere/HeightFog.d.ts.map +1 -1
- package/dist/rendering/atmosphere/HeightFog.js +9 -0
- package/dist/rendering/atmosphere/HeightFog.js.map +1 -1
- package/dist/rendering/atmosphere/SkyBackgroundPass.d.ts +11 -0
- package/dist/rendering/atmosphere/SkyBackgroundPass.d.ts.map +1 -1
- package/dist/rendering/atmosphere/SkyBackgroundPass.js +40 -7
- package/dist/rendering/atmosphere/SkyBackgroundPass.js.map +1 -1
- package/dist/rendering/atmosphere/StarField.d.ts +21 -0
- package/dist/rendering/atmosphere/StarField.d.ts.map +1 -1
- package/dist/rendering/atmosphere/StarField.js +24 -1
- package/dist/rendering/atmosphere/StarField.js.map +1 -1
- package/dist/rendering/atmosphere/sky.glsl.d.ts.map +1 -1
- package/dist/rendering/atmosphere/sky.glsl.js +8 -0
- package/dist/rendering/atmosphere/sky.glsl.js.map +1 -1
- package/dist/rendering/contracts/flags.state.d.ts.map +1 -1
- package/dist/rendering/contracts/flags.state.js +19 -0
- package/dist/rendering/contracts/flags.state.js.map +1 -1
- package/dist/rendering/forward/Lighting.d.ts +7 -1
- package/dist/rendering/forward/Lighting.d.ts.map +1 -1
- package/dist/rendering/forward/Lighting.js +24 -1
- package/dist/rendering/forward/Lighting.js.map +1 -1
- package/dist/rendering/forward/Velocity.d.ts +8 -0
- package/dist/rendering/forward/Velocity.d.ts.map +1 -1
- package/dist/rendering/forward/Velocity.js +10 -0
- package/dist/rendering/forward/Velocity.js.map +1 -1
- package/dist/rendering/lanes/prd03.d.ts +1 -1
- package/dist/rendering/lanes/prd03.d.ts.map +1 -1
- package/dist/rendering/lanes/prd03.js +6 -1
- package/dist/rendering/lanes/prd03.js.map +1 -1
- package/dist/rendering/lanes/prd07.d.ts.map +1 -1
- package/dist/rendering/lanes/prd07.js +5 -2
- package/dist/rendering/lanes/prd07.js.map +1 -1
- package/dist/rendering/post/DisplayLutCache.d.ts +10 -2
- package/dist/rendering/post/DisplayLutCache.d.ts.map +1 -1
- package/dist/rendering/post/DisplayLutCache.js +15 -3
- package/dist/rendering/post/DisplayLutCache.js.map +1 -1
- package/dist/rendering/post/PostGraph.d.ts +23 -0
- package/dist/rendering/post/PostGraph.d.ts.map +1 -1
- package/dist/rendering/post/PostGraph.js.map +1 -1
- package/dist/rendering/post/PostQualityTiers.d.ts +36 -0
- package/dist/rendering/post/PostQualityTiers.d.ts.map +1 -1
- package/dist/rendering/post/PostQualityTiers.js +75 -0
- package/dist/rendering/post/PostQualityTiers.js.map +1 -1
- package/dist/rendering/post/chunks/velocity.glsl.d.ts +7 -0
- package/dist/rendering/post/chunks/velocity.glsl.d.ts.map +1 -1
- package/dist/rendering/post/chunks/velocity.glsl.js +12 -1
- package/dist/rendering/post/chunks/velocity.glsl.js.map +1 -1
- package/dist/rendering/post/shaders/displayGrade.glsl.d.ts +15 -1
- package/dist/rendering/post/shaders/displayGrade.glsl.d.ts.map +1 -1
- package/dist/rendering/post/shaders/displayGrade.glsl.js +26 -2
- package/dist/rendering/post/shaders/displayGrade.glsl.js.map +1 -1
- package/dist/rendering/post/shaders/dof.glsl.d.ts +11 -1
- package/dist/rendering/post/shaders/dof.glsl.d.ts.map +1 -1
- package/dist/rendering/post/shaders/dof.glsl.js +22 -0
- package/dist/rendering/post/shaders/dof.glsl.js.map +1 -1
- package/dist/rendering/post/shaders/finalize.glsl.d.ts +1 -1
- package/dist/rendering/post/shaders/finalize.glsl.d.ts.map +1 -1
- package/dist/rendering/post/shaders/finalize.glsl.js +3 -2
- package/dist/rendering/post/shaders/finalize.glsl.js.map +1 -1
- package/dist/rendering/post/shaders/godrays.glsl.d.ts +24 -1
- package/dist/rendering/post/shaders/godrays.glsl.d.ts.map +1 -1
- package/dist/rendering/post/shaders/godrays.glsl.js +45 -5
- package/dist/rendering/post/shaders/godrays.glsl.js.map +1 -1
- package/dist/rendering/post/shaders/hdrGrade.glsl.d.ts +66 -0
- package/dist/rendering/post/shaders/hdrGrade.glsl.d.ts.map +1 -0
- package/dist/rendering/post/shaders/hdrGrade.glsl.js +159 -0
- package/dist/rendering/post/shaders/hdrGrade.glsl.js.map +1 -0
- package/dist/rendering/post/shaders/ssr.glsl.d.ts +39 -0
- package/dist/rendering/post/shaders/ssr.glsl.d.ts.map +1 -0
- package/dist/rendering/post/shaders/ssr.glsl.js +163 -0
- package/dist/rendering/post/shaders/ssr.glsl.js.map +1 -0
- package/dist/rendering/post/v2Stages.d.ts +53 -0
- package/dist/rendering/post/v2Stages.d.ts.map +1 -1
- package/dist/rendering/post/v2Stages.js +314 -23
- package/dist/rendering/post/v2Stages.js.map +1 -1
- package/dist/rendering/postprocess/NativeBloomPyramid.d.ts +19 -0
- package/dist/rendering/postprocess/NativeBloomPyramid.d.ts.map +1 -1
- package/dist/rendering/postprocess/NativeBloomPyramid.js +37 -0
- package/dist/rendering/postprocess/NativeBloomPyramid.js.map +1 -1
- package/dist/rendering/program/ProgramGenerator.d.ts.map +1 -1
- package/dist/rendering/program/ProgramGenerator.js +12 -1
- package/dist/rendering/program/ProgramGenerator.js.map +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts +12 -0
- package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts.map +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.js +57 -0
- package/dist/rendering/program/chunks/shadow_forward.glsl.js.map +1 -1
- package/dist/rendering/renderer/Background.d.ts.map +1 -1
- package/dist/rendering/renderer/Background.js +26 -2
- package/dist/rendering/renderer/Background.js.map +1 -1
- package/dist/rendering/renderer/FrameGraph.d.ts +8 -0
- package/dist/rendering/renderer/FrameGraph.d.ts.map +1 -1
- package/dist/rendering/renderer/FrameGraph.js +46 -7
- package/dist/rendering/renderer/FrameGraph.js.map +1 -1
- package/dist/rendering/renderer/OutlineTargets.d.ts +99 -0
- package/dist/rendering/renderer/OutlineTargets.d.ts.map +1 -0
- package/dist/rendering/renderer/OutlineTargets.js +286 -0
- package/dist/rendering/renderer/OutlineTargets.js.map +1 -0
- package/dist/rendering/renderer/PostprocessExecution.d.ts +5 -0
- package/dist/rendering/renderer/PostprocessExecution.d.ts.map +1 -1
- package/dist/rendering/renderer/PostprocessExecution.js +70 -4
- package/dist/rendering/renderer/PostprocessExecution.js.map +1 -1
- package/dist/rendering/renderer/postSkipped.d.ts +6 -0
- package/dist/rendering/renderer/postSkipped.d.ts.map +1 -1
- package/dist/rendering/renderer/postSkipped.js +8 -0
- package/dist/rendering/renderer/postSkipped.js.map +1 -1
- package/dist/rendering/shaders/chunks/author/ibl.glsl.d.ts +20 -0
- package/dist/rendering/shaders/chunks/author/ibl.glsl.d.ts.map +1 -0
- package/dist/rendering/shaders/chunks/author/ibl.glsl.js +84 -0
- package/dist/rendering/shaders/chunks/author/ibl.glsl.js.map +1 -0
- package/dist/rendering/shaders/chunks/author/index.d.ts +3 -1
- package/dist/rendering/shaders/chunks/author/index.d.ts.map +1 -1
- package/dist/rendering/shaders/chunks/author/index.js +38 -3
- package/dist/rendering/shaders/chunks/author/index.js.map +1 -1
- package/dist/rendering/shaders/chunks/author/lights.glsl.d.ts +16 -0
- package/dist/rendering/shaders/chunks/author/lights.glsl.d.ts.map +1 -0
- package/dist/rendering/shaders/chunks/author/lights.glsl.js +112 -0
- package/dist/rendering/shaders/chunks/author/lights.glsl.js.map +1 -0
- package/dist/rendering/shaders/chunks/author/shadow.glsl.d.ts +16 -2
- package/dist/rendering/shaders/chunks/author/shadow.glsl.d.ts.map +1 -1
- package/dist/rendering/shaders/chunks/author/shadow.glsl.js +46 -2
- package/dist/rendering/shaders/chunks/author/shadow.glsl.js.map +1 -1
- package/dist/rendering/shaders/chunks/instance_color_target.glsl.d.ts +34 -0
- package/dist/rendering/shaders/chunks/instance_color_target.glsl.d.ts.map +1 -0
- package/dist/rendering/shaders/chunks/instance_color_target.glsl.js +101 -0
- package/dist/rendering/shaders/chunks/instance_color_target.glsl.js.map +1 -0
- package/dist/rendering/shaders/chunks/rim.glsl.d.ts +37 -0
- package/dist/rendering/shaders/chunks/rim.glsl.d.ts.map +1 -0
- package/dist/rendering/shaders/chunks/rim.glsl.js +50 -0
- package/dist/rendering/shaders/chunks/rim.glsl.js.map +1 -0
- package/dist/rendering/shadows/Prd02ShadowBridge.d.ts +26 -3
- package/dist/rendering/shadows/Prd02ShadowBridge.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.js +134 -8
- package/dist/rendering/shadows/Prd02ShadowBridge.js.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowsContributor.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowsContributor.js +4 -16
- package/dist/rendering/shadows/Prd02ShadowsContributor.js.map +1 -1
- package/dist/rendering/vfx/VfxAtlas.d.ts +10 -0
- package/dist/rendering/vfx/VfxAtlas.d.ts.map +1 -1
- package/dist/rendering/vfx/VfxAtlas.js +18 -3
- package/dist/rendering/vfx/VfxAtlas.js.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.d.ts +9 -1
- package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.js +23 -7
- package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
- package/dist/rendering/webgl2/MultiDraw.d.ts.map +1 -1
- package/dist/rendering/webgl2/MultiDraw.js +51 -1
- package/dist/rendering/webgl2/MultiDraw.js.map +1 -1
- package/dist/rendering/world/vegetation/WindField.d.ts.map +1 -1
- package/dist/rendering/world/vegetation/WindField.js +4 -1
- package/dist/rendering/world/vegetation/WindField.js.map +1 -1
- package/dist/rendering/world/water/ReflectionViewPass.d.ts.map +1 -1
- package/dist/rendering/world/water/ReflectionViewPass.js +12 -2
- package/dist/rendering/world/water/ReflectionViewPass.js.map +1 -1
- package/dist/rendering/world/water/SceneCopyFallback.d.ts.map +1 -1
- package/dist/rendering/world/water/SceneCopyFallback.js +9 -2
- package/dist/rendering/world/water/SceneCopyFallback.js.map +1 -1
- package/dist/rendering/world/water/WaterMaterial.d.ts.map +1 -1
- package/dist/rendering/world/water/WaterMaterial.js +8 -2
- package/dist/rendering/world/water/WaterMaterial.js.map +1 -1
- package/package.json +25 -25
- package/templates/cinematic-scene/package.json +2 -2
- package/templates/mini-game/package.json +2 -2
- package/templates/product-viewer/package.json +2 -2
- package/templates/production-asset-inspector/package.json +1 -1
- package/templates/production-material-studio/package.json +1 -1
- package/templates/production-product-configurator/package.json +1 -1
- package/templates/production-product-viewer/package.json +1 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { RenderDevice, RenderTarget } from "../RenderDevice.js";
|
|
2
|
+
import type { RenderItem } from "../ForwardPass.js";
|
|
3
|
+
import type { Texture } from "../Texture.js";
|
|
4
|
+
/** Shader marker of the ink program. */
|
|
5
|
+
export declare const OUTLINE_TARGET_SHADER_MARKER = "@aura3d-shader:gu47_outline_targets";
|
|
6
|
+
export declare const OUTLINE_TARGET_MASK_LABEL = "a3d.gu47.outlineTargetMask";
|
|
7
|
+
/** Widest ring the ink shader samples (the compiler clamps `width` to 1..6 px). */
|
|
8
|
+
export declare const OUTLINE_TARGET_MAX_RADIUS = 6;
|
|
9
|
+
/** Window-space depth slack for the visibility test (the mask and the forward pass rasterize the same geometry). */
|
|
10
|
+
export declare const OUTLINE_TARGET_DEPTH_BIAS = 0.0002;
|
|
11
|
+
/** Mask depth at or above this is "no target" (the mask clears to 1.0). */
|
|
12
|
+
export declare const OUTLINE_TARGET_EMPTY_DEPTH = 0.99999;
|
|
13
|
+
/** The ring offsets the shader and the CPU mirror sample, per radius step: 4 axis and 4 diagonal neighbours. */
|
|
14
|
+
export declare const OUTLINE_TARGET_DIRECTIONS: readonly (readonly [number, number])[];
|
|
15
|
+
/** The renderer's outline options with the GU47 field (`RendererPostProcessOptions.outline`). */
|
|
16
|
+
export interface OutlineTargetOptions {
|
|
17
|
+
/** Node names whose silhouettes get ink; when present the full-frame luma outline does not run. */
|
|
18
|
+
readonly targets?: readonly string[];
|
|
19
|
+
readonly color?: readonly [number, number, number, number];
|
|
20
|
+
readonly width?: number;
|
|
21
|
+
readonly opacity?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The outline's target list, or `null` when the outline is absent or has no `targets` field (today's full-frame
|
|
25
|
+
* outline). An empty list is a targeted outline with nothing to ink.
|
|
26
|
+
*/
|
|
27
|
+
export declare function outlineTargetsOf(outline: unknown): readonly string[] | null;
|
|
28
|
+
/**
|
|
29
|
+
* Whether a render item belongs to one of the target nodes. The engine labels scene items
|
|
30
|
+
* `primitive-<i>:<resource>:<node name>` and model meshes `actor-<i>:mesh-<j>:<model id>:<mesh>...` (the model id is
|
|
31
|
+
* the node's runtime id, else its asset id). Root render sources (TypedGLBActors through `attachRootRenderSource`) label
|
|
32
|
+
* items `<actor id>:<node>...`, where the actor id is the target or `<target>-<n>` (for example `ninja-hero-0:Body`);
|
|
33
|
+
* those match `<target>:` and `<target>-<digits>:` prefixes. Any other item matches only by its exact label.
|
|
34
|
+
*/
|
|
35
|
+
export declare function outlineTargetLabelMatches(label: string | undefined, targets: ReadonlySet<string>): boolean;
|
|
36
|
+
/** The items the mask pass draws: only those whose label names a target. */
|
|
37
|
+
export declare function selectOutlineTargetItems(items: Iterable<RenderItem>, targets: readonly string[]): RenderItem[];
|
|
38
|
+
/**
|
|
39
|
+
* CPU mirror of the ink shader. `covered` is the visible-target mask (row-major, non-zero = a visible target pixel);
|
|
40
|
+
* returns 1 where the shader writes ink: pixels outside the mask with a covered pixel at one of the
|
|
41
|
+
* {@link OUTLINE_TARGET_DIRECTIONS} offsets times 1..`radius`. Out-of-frame samples are not covered.
|
|
42
|
+
*/
|
|
43
|
+
export declare function outlineTargetInkMask(covered: ArrayLike<number>, width: number, height: number, radius: number): Uint8Array;
|
|
44
|
+
/**
|
|
45
|
+
* CPU mirror of the shader's visibility test: a pixel is a covered target pixel when the mask depth is below
|
|
46
|
+
* {@link OUTLINE_TARGET_EMPTY_DEPTH} and (with scene depth) not behind the scene surface by more than the bias.
|
|
47
|
+
*/
|
|
48
|
+
export declare function outlineTargetCoverage(maskDepth: ArrayLike<number>, sceneDepth?: ArrayLike<number> | null): Uint8Array;
|
|
49
|
+
/** @internal Ink program sources (GLSL validation in unit tests). */
|
|
50
|
+
export declare const OUTLINE_TARGET_SHADER_SOURCES: {
|
|
51
|
+
readonly vertex: "#version 300 es\n// @aura3d-shader:gu47_outline_targets\nin vec2 a_position;\nout vec2 v_uv;\nvoid main() { v_uv = a_position * 0.5 + 0.5; gl_Position = vec4(a_position, 0.0, 1.0); }\n";
|
|
52
|
+
readonly fragment: string;
|
|
53
|
+
};
|
|
54
|
+
export interface OutlineTargetPassInput {
|
|
55
|
+
/** This frame's render items (the renderer's `postFrameContext.items`). */
|
|
56
|
+
readonly items: readonly RenderItem[];
|
|
57
|
+
readonly targets: readonly string[];
|
|
58
|
+
/** The matrix the forward pass rasterized with. */
|
|
59
|
+
readonly viewProjectionMatrix: Float32Array | readonly number[];
|
|
60
|
+
readonly width: number;
|
|
61
|
+
readonly height: number;
|
|
62
|
+
/** RGBA 0..255 (the compiler's outline colour). Default the compiler default #ff9822. */
|
|
63
|
+
readonly color?: readonly [number, number, number, number];
|
|
64
|
+
/** Ring width in px, 1..6. Default 3. */
|
|
65
|
+
readonly radius?: number;
|
|
66
|
+
/** 0..1. Default 0.9. */
|
|
67
|
+
readonly opacity?: number;
|
|
68
|
+
/** Resolved scene depth of the forward target; enables the visible-silhouette test. */
|
|
69
|
+
readonly sceneDepth?: Texture | null;
|
|
70
|
+
/** Where the ink blends; `null` = the canvas. */
|
|
71
|
+
readonly output: RenderTarget | null;
|
|
72
|
+
}
|
|
73
|
+
/** What the last targeted outline did (diagnostics and tests). */
|
|
74
|
+
export interface OutlineTargetRecord {
|
|
75
|
+
readonly targets: readonly string[];
|
|
76
|
+
/** Labels of the items the mask pass drew, in draw order. */
|
|
77
|
+
readonly maskItems: readonly string[];
|
|
78
|
+
/** True when the ink draw ran (there was at least one target item). */
|
|
79
|
+
readonly inked: boolean;
|
|
80
|
+
readonly occlusion: "scene-depth" | "none";
|
|
81
|
+
readonly radius: number;
|
|
82
|
+
}
|
|
83
|
+
/** The last targeted outline this process ran, or `null`. */
|
|
84
|
+
export declare function lastOutlineTargetRecord(): OutlineTargetRecord | null;
|
|
85
|
+
/** Test hook. */
|
|
86
|
+
export declare function resetOutlineTargetRecord(): void;
|
|
87
|
+
/** The mask target, the ink program and the fullscreen triangle, kept per device across frames. */
|
|
88
|
+
export declare class OutlineTargetPass {
|
|
89
|
+
private readonly device;
|
|
90
|
+
private mask;
|
|
91
|
+
private program;
|
|
92
|
+
private triangle;
|
|
93
|
+
constructor(device: RenderDevice);
|
|
94
|
+
execute(input: OutlineTargetPassInput): OutlineTargetRecord;
|
|
95
|
+
dispose(): void;
|
|
96
|
+
}
|
|
97
|
+
/** The per-device pass (one mask target and program per device). */
|
|
98
|
+
export declare function outlineTargetPassFor(device: RenderDevice): OutlineTargetPass;
|
|
99
|
+
//# sourceMappingURL=OutlineTargets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutlineTargets.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/renderer/OutlineTargets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
// GU47 E-E (WP-5): `effects.outline({ targets })` — only the named nodes' silhouettes get ink.
|
|
2
|
+
//
|
|
3
|
+
// Design (no ForwardPass edit): after the post chain has written the final image, a cheap mask pass draws ONLY the
|
|
4
|
+
// target items through the PRD-02 camera depth program (`DepthPass` with the caster-variant resolver, so skinned,
|
|
5
|
+
// instanced and `castShadow` custom-vertex targets keep their real silhouette) into a private depth texture: the target
|
|
6
|
+
// mask (1.0 = no target). A fullscreen ink draw then blends the outline colour onto the output on the pixels just
|
|
7
|
+
// outside the mask (a ring `width` px wide). With the scene depth bound, a target pixel hidden behind other geometry
|
|
8
|
+
// does not count as covered, so only the visible silhouette is inked; without it the ring is drawn x-ray style.
|
|
9
|
+
// Scenes whose outline has no `targets` never reach this file: their full-frame luma outline is unchanged.
|
|
10
|
+
import { TextureBinding } from "../TextureBinding.js";
|
|
11
|
+
import { Sampler } from "../Sampler.js";
|
|
12
|
+
import { VertexFormat } from "../VertexFormat.js";
|
|
13
|
+
import { DepthPass } from "../DepthPass.js";
|
|
14
|
+
import { createLeanCoreShaderLibrary } from "../ShaderLibraryCore.js";
|
|
15
|
+
import { prd02DepthFeatures, registerPrd02DepthShader, resolvePrd02ShadowCasterVariant } from "../shadows/Prd02DepthShaderLibrary.js";
|
|
16
|
+
import { QUALITY_TIERS } from "../contracts/quality.js";
|
|
17
|
+
import { rendererQrFlags } from "./FrameGraph.js";
|
|
18
|
+
/** Shader marker of the ink program. */
|
|
19
|
+
export const OUTLINE_TARGET_SHADER_MARKER = "@aura3d-shader:gu47_outline_targets";
|
|
20
|
+
export const OUTLINE_TARGET_MASK_LABEL = "a3d.gu47.outlineTargetMask";
|
|
21
|
+
/** Widest ring the ink shader samples (the compiler clamps `width` to 1..6 px). */
|
|
22
|
+
export const OUTLINE_TARGET_MAX_RADIUS = 6;
|
|
23
|
+
/** Window-space depth slack for the visibility test (the mask and the forward pass rasterize the same geometry). */
|
|
24
|
+
export const OUTLINE_TARGET_DEPTH_BIAS = 2e-4;
|
|
25
|
+
/** Mask depth at or above this is "no target" (the mask clears to 1.0). */
|
|
26
|
+
export const OUTLINE_TARGET_EMPTY_DEPTH = 0.99999;
|
|
27
|
+
/** The ring offsets the shader and the CPU mirror sample, per radius step: 4 axis and 4 diagonal neighbours. */
|
|
28
|
+
export const OUTLINE_TARGET_DIRECTIONS = [
|
|
29
|
+
[1, 0], [-1, 0], [0, 1], [0, -1], [1, 1], [-1, 1], [1, -1], [-1, -1]
|
|
30
|
+
];
|
|
31
|
+
/**
|
|
32
|
+
* The outline's target list, or `null` when the outline is absent or has no `targets` field (today's full-frame
|
|
33
|
+
* outline). An empty list is a targeted outline with nothing to ink.
|
|
34
|
+
*/
|
|
35
|
+
export function outlineTargetsOf(outline) {
|
|
36
|
+
if (outline === null || typeof outline !== "object")
|
|
37
|
+
return null;
|
|
38
|
+
const targets = outline.targets;
|
|
39
|
+
if (!Array.isArray(targets))
|
|
40
|
+
return null;
|
|
41
|
+
return targets.filter((name) => typeof name === "string" && name.length > 0);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Whether a render item belongs to one of the target nodes. The engine labels scene items
|
|
45
|
+
* `primitive-<i>:<resource>:<node name>` and model meshes `actor-<i>:mesh-<j>:<model id>:<mesh>...` (the model id is
|
|
46
|
+
* the node's runtime id, else its asset id). Root render sources (TypedGLBActors through `attachRootRenderSource`) label
|
|
47
|
+
* items `<actor id>:<node>...`, where the actor id is the target or `<target>-<n>` (for example `ninja-hero-0:Body`);
|
|
48
|
+
* those match `<target>:` and `<target>-<digits>:` prefixes. Any other item matches only by its exact label.
|
|
49
|
+
*/
|
|
50
|
+
export function outlineTargetLabelMatches(label, targets) {
|
|
51
|
+
if (!label || targets.size === 0)
|
|
52
|
+
return false;
|
|
53
|
+
if (targets.has(label))
|
|
54
|
+
return true;
|
|
55
|
+
const actor = /^actor-\d+:mesh-\d+:(.*)$/.exec(label);
|
|
56
|
+
if (actor) {
|
|
57
|
+
const rest = actor[1];
|
|
58
|
+
for (const target of targets)
|
|
59
|
+
if (rest === target || rest.startsWith(`${target}:`))
|
|
60
|
+
return true;
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
if (/^primitive-\d+:/.test(label)) {
|
|
64
|
+
for (const target of targets)
|
|
65
|
+
if (label.endsWith(`:${target}`))
|
|
66
|
+
return true;
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
for (const target of targets) {
|
|
70
|
+
if (label.startsWith(`${target}:`))
|
|
71
|
+
return true;
|
|
72
|
+
if (label.startsWith(`${target}-`) && /^\d+:/.test(label.slice(target.length + 1)))
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
/** The items the mask pass draws: only those whose label names a target. */
|
|
78
|
+
export function selectOutlineTargetItems(items, targets) {
|
|
79
|
+
const set = new Set(targets);
|
|
80
|
+
const out = [];
|
|
81
|
+
if (set.size === 0)
|
|
82
|
+
return out;
|
|
83
|
+
for (const item of items)
|
|
84
|
+
if (outlineTargetLabelMatches(item.label, set))
|
|
85
|
+
out.push(item);
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* CPU mirror of the ink shader. `covered` is the visible-target mask (row-major, non-zero = a visible target pixel);
|
|
90
|
+
* returns 1 where the shader writes ink: pixels outside the mask with a covered pixel at one of the
|
|
91
|
+
* {@link OUTLINE_TARGET_DIRECTIONS} offsets times 1..`radius`. Out-of-frame samples are not covered.
|
|
92
|
+
*/
|
|
93
|
+
export function outlineTargetInkMask(covered, width, height, radius) {
|
|
94
|
+
const r = Math.max(1, Math.min(OUTLINE_TARGET_MAX_RADIUS, Math.round(radius)));
|
|
95
|
+
const ink = new Uint8Array(width * height);
|
|
96
|
+
const at = (x, y) => x >= 0 && y >= 0 && x < width && y < height && (covered[y * width + x] ?? 0) !== 0;
|
|
97
|
+
for (let y = 0; y < height; y += 1) {
|
|
98
|
+
for (let x = 0; x < width; x += 1) {
|
|
99
|
+
if (at(x, y))
|
|
100
|
+
continue;
|
|
101
|
+
search: for (let step = 1; step <= r; step += 1) {
|
|
102
|
+
for (const [dx, dy] of OUTLINE_TARGET_DIRECTIONS) {
|
|
103
|
+
if (at(x + dx * step, y + dy * step)) {
|
|
104
|
+
ink[y * width + x] = 1;
|
|
105
|
+
break search;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return ink;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* CPU mirror of the shader's visibility test: a pixel is a covered target pixel when the mask depth is below
|
|
115
|
+
* {@link OUTLINE_TARGET_EMPTY_DEPTH} and (with scene depth) not behind the scene surface by more than the bias.
|
|
116
|
+
*/
|
|
117
|
+
export function outlineTargetCoverage(maskDepth, sceneDepth) {
|
|
118
|
+
const out = new Uint8Array(maskDepth.length);
|
|
119
|
+
for (let i = 0; i < maskDepth.length; i += 1) {
|
|
120
|
+
const d = maskDepth[i] ?? 1;
|
|
121
|
+
if (d >= OUTLINE_TARGET_EMPTY_DEPTH)
|
|
122
|
+
continue;
|
|
123
|
+
if (sceneDepth && d > (sceneDepth[i] ?? 1) + OUTLINE_TARGET_DEPTH_BIAS)
|
|
124
|
+
continue;
|
|
125
|
+
out[i] = 1;
|
|
126
|
+
}
|
|
127
|
+
return out;
|
|
128
|
+
}
|
|
129
|
+
const FULLSCREEN_VERT = /* glsl */ `#version 300 es
|
|
130
|
+
// ${OUTLINE_TARGET_SHADER_MARKER}
|
|
131
|
+
in vec2 a_position;
|
|
132
|
+
out vec2 v_uv;
|
|
133
|
+
void main() { v_uv = a_position * 0.5 + 0.5; gl_Position = vec4(a_position, 0.0, 1.0); }
|
|
134
|
+
`;
|
|
135
|
+
const DIRECTIONS_GLSL = OUTLINE_TARGET_DIRECTIONS.map(([x, y]) => `vec2(${x.toFixed(1)}, ${y.toFixed(1)})`).join(", ");
|
|
136
|
+
const INK_FRAGMENT = /* glsl */ `#version 300 es
|
|
137
|
+
// ${OUTLINE_TARGET_SHADER_MARKER}
|
|
138
|
+
precision highp float;
|
|
139
|
+
in vec2 v_uv;
|
|
140
|
+
uniform sampler2D u_outlineMask;
|
|
141
|
+
uniform sampler2D u_outlineScene;
|
|
142
|
+
uniform vec4 u_outlineColor;
|
|
143
|
+
uniform vec4 u_outlineParams;
|
|
144
|
+
uniform vec2 u_outlineTexel;
|
|
145
|
+
layout(location = 0) out vec4 o_color;
|
|
146
|
+
const vec2 OUTLINE_DIRS[8] = vec2[8](${DIRECTIONS_GLSL});
|
|
147
|
+
bool coveredAt(vec2 uv) {
|
|
148
|
+
if (uv.x < 0.0 || uv.y < 0.0 || uv.x > 1.0 || uv.y > 1.0) return false;
|
|
149
|
+
float d = texture(u_outlineMask, uv).r;
|
|
150
|
+
if (d >= ${OUTLINE_TARGET_EMPTY_DEPTH.toFixed(5)}) return false;
|
|
151
|
+
return u_outlineParams.z < 0.5 || d <= texture(u_outlineScene, uv).r + u_outlineParams.y;
|
|
152
|
+
}
|
|
153
|
+
void main() {
|
|
154
|
+
if (coveredAt(v_uv)) discard;
|
|
155
|
+
for (int step = 1; step <= ${OUTLINE_TARGET_MAX_RADIUS}; step++) {
|
|
156
|
+
if (float(step) > u_outlineParams.x) break;
|
|
157
|
+
for (int k = 0; k < 8; k++) {
|
|
158
|
+
if (coveredAt(v_uv + OUTLINE_DIRS[k] * float(step) * u_outlineTexel)) {
|
|
159
|
+
o_color = u_outlineColor;
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
discard;
|
|
165
|
+
}
|
|
166
|
+
`;
|
|
167
|
+
/** @internal Ink program sources (GLSL validation in unit tests). */
|
|
168
|
+
export const OUTLINE_TARGET_SHADER_SOURCES = { vertex: FULLSCREEN_VERT, fragment: INK_FRAGMENT };
|
|
169
|
+
let lastRecord = null;
|
|
170
|
+
/** The last targeted outline this process ran, or `null`. */
|
|
171
|
+
export function lastOutlineTargetRecord() {
|
|
172
|
+
return lastRecord;
|
|
173
|
+
}
|
|
174
|
+
/** Test hook. */
|
|
175
|
+
export function resetOutlineTargetRecord() {
|
|
176
|
+
lastRecord = null;
|
|
177
|
+
}
|
|
178
|
+
const depthLibraries = new WeakMap();
|
|
179
|
+
function depthLibraryFor(device) {
|
|
180
|
+
let library = depthLibraries.get(device);
|
|
181
|
+
if (!library) {
|
|
182
|
+
library = createLeanCoreShaderLibrary();
|
|
183
|
+
registerPrd02DepthShader(library);
|
|
184
|
+
depthLibraries.set(device, library);
|
|
185
|
+
}
|
|
186
|
+
return library;
|
|
187
|
+
}
|
|
188
|
+
const NEAREST = () => new Sampler({ minFilter: "nearest", magFilter: "nearest", addressU: "clamp-to-edge", addressV: "clamp-to-edge" });
|
|
189
|
+
/** The mask target, the ink program and the fullscreen triangle, kept per device across frames. */
|
|
190
|
+
export class OutlineTargetPass {
|
|
191
|
+
device;
|
|
192
|
+
mask = null;
|
|
193
|
+
program = null;
|
|
194
|
+
triangle = null;
|
|
195
|
+
constructor(device) {
|
|
196
|
+
this.device = device;
|
|
197
|
+
}
|
|
198
|
+
execute(input) {
|
|
199
|
+
const device = this.device;
|
|
200
|
+
const radius = Math.max(1, Math.min(OUTLINE_TARGET_MAX_RADIUS, Math.round(input.radius ?? 3)));
|
|
201
|
+
const targetItems = selectOutlineTargetItems(input.items, input.targets);
|
|
202
|
+
const sceneDepth = input.sceneDepth ?? null;
|
|
203
|
+
const record = {
|
|
204
|
+
targets: [...input.targets],
|
|
205
|
+
maskItems: targetItems.map((item) => item.label ?? "item"),
|
|
206
|
+
inked: targetItems.length > 0,
|
|
207
|
+
occlusion: sceneDepth ? "scene-depth" : "none",
|
|
208
|
+
radius
|
|
209
|
+
};
|
|
210
|
+
lastRecord = record;
|
|
211
|
+
if (targetItems.length === 0)
|
|
212
|
+
return record;
|
|
213
|
+
const previous = device.getRenderTarget?.() ?? null;
|
|
214
|
+
const width = Math.max(1, Math.floor(input.width));
|
|
215
|
+
const height = Math.max(1, Math.floor(input.height));
|
|
216
|
+
if (!this.mask || this.mask.disposed || this.mask.width !== width || this.mask.height !== height) {
|
|
217
|
+
this.mask?.dispose();
|
|
218
|
+
this.mask = device.createRenderTarget({ width, height, format: "rgba8", depth: "texture", label: OUTLINE_TARGET_MASK_LABEL });
|
|
219
|
+
}
|
|
220
|
+
const context = { device, width, height };
|
|
221
|
+
try {
|
|
222
|
+
device.setRenderTarget(this.mask);
|
|
223
|
+
device.clear([0, 0, 0, 0]);
|
|
224
|
+
const features = prd02DepthFeatures();
|
|
225
|
+
const flags = rendererQrFlags();
|
|
226
|
+
new DepthPass({
|
|
227
|
+
casters: targetItems,
|
|
228
|
+
viewProjectionMatrix: input.viewProjectionMatrix,
|
|
229
|
+
shaderLibrary: depthLibraryFor(device),
|
|
230
|
+
variantResolver: (item) => resolvePrd02ShadowCasterVariant(item, flags, QUALITY_TIERS.high, features),
|
|
231
|
+
depthVariantFeatures: features
|
|
232
|
+
}).execute(context);
|
|
233
|
+
const maskDepth = this.mask.depthTexture;
|
|
234
|
+
if (!maskDepth)
|
|
235
|
+
return { ...record, inked: false };
|
|
236
|
+
this.program ??= device.createShaderProgram({
|
|
237
|
+
label: "a3d_gu47_outline_targets",
|
|
238
|
+
marker: OUTLINE_TARGET_SHADER_MARKER,
|
|
239
|
+
vertex: FULLSCREEN_VERT,
|
|
240
|
+
fragment: INK_FRAGMENT
|
|
241
|
+
});
|
|
242
|
+
this.triangle ??= device.createBuffer("vertex", 24, new Float32Array([-1, -1, 3, -1, -1, 3]));
|
|
243
|
+
const color = input.color ?? [255, 152, 34, 255];
|
|
244
|
+
const opacity = Math.max(0, Math.min(1, input.opacity ?? 0.9)) * ((color[3] ?? 255) / 255);
|
|
245
|
+
device.setRenderTarget(input.output);
|
|
246
|
+
device.draw({
|
|
247
|
+
label: "gu47-outline-targets-ink",
|
|
248
|
+
topology: "triangles",
|
|
249
|
+
vertexBuffer: this.triangle,
|
|
250
|
+
vertexFormat: new VertexFormat([{ semantic: "position", components: 2, offset: 0 }], 8),
|
|
251
|
+
vertexCount: 3,
|
|
252
|
+
renderState: { depthTest: false, depthWrite: false, cullMode: "none", blend: true, depthCompare: "always" },
|
|
253
|
+
shader: this.program,
|
|
254
|
+
uniforms: new Map([
|
|
255
|
+
["u_outlineMask", new TextureBinding({ name: "u_outlineMask", texture: maskDepth, sampler: NEAREST() })],
|
|
256
|
+
["u_outlineScene", new TextureBinding({ name: "u_outlineScene", texture: sceneDepth ?? maskDepth, sampler: NEAREST() })],
|
|
257
|
+
["u_outlineColor", [color[0] / 255, color[1] / 255, color[2] / 255, opacity]],
|
|
258
|
+
["u_outlineParams", [radius, OUTLINE_TARGET_DEPTH_BIAS, sceneDepth ? 1 : 0, 0]],
|
|
259
|
+
["u_outlineTexel", [1 / width, 1 / height]]
|
|
260
|
+
])
|
|
261
|
+
});
|
|
262
|
+
return record;
|
|
263
|
+
}
|
|
264
|
+
finally {
|
|
265
|
+
device.setRenderTarget(previous);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
dispose() {
|
|
269
|
+
this.mask?.dispose();
|
|
270
|
+
this.mask = null;
|
|
271
|
+
this.triangle?.dispose();
|
|
272
|
+
this.triangle = null;
|
|
273
|
+
this.program = null;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const passes = new WeakMap();
|
|
277
|
+
/** The per-device pass (one mask target and program per device). */
|
|
278
|
+
export function outlineTargetPassFor(device) {
|
|
279
|
+
let pass = passes.get(device);
|
|
280
|
+
if (!pass) {
|
|
281
|
+
pass = new OutlineTargetPass(device);
|
|
282
|
+
passes.set(device, pass);
|
|
283
|
+
}
|
|
284
|
+
return pass;
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=OutlineTargets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutlineTargets.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/renderer/OutlineTargets.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,6 +69,11 @@ export declare class RendererPostprocessPipeline {
|
|
|
69
69
|
*/
|
|
70
70
|
private tryExecutePostGraphV2;
|
|
71
71
|
executePostprocess(postprocess: RendererPostProcessOptions, ownedTargets: RenderTarget[], outputTarget?: RenderTarget): void;
|
|
72
|
+
/**
|
|
73
|
+
* GU47 E-E: the targeted outline pass (`OutlineTargets.ts`): a mask of only the target items, then a ring of the
|
|
74
|
+
* outline colour `width` px wide around the mask's visible silhouette, blended onto the final output.
|
|
75
|
+
*/
|
|
76
|
+
private executeOutlineTargets;
|
|
72
77
|
private executePostprocessChain;
|
|
73
78
|
private executeFusedLdrPostprocess;
|
|
74
79
|
executePostprocessAsync(postprocess: RendererPostProcessOptions, ownedTargets: RenderTarget[], outputTarget?: RenderTarget): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostprocessExecution.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/renderer/PostprocessExecution.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAqC,KAAK,YAAY,EAAqB,KAAK,YAAY,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC1J,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAoC,KAAK,2BAA2B,EAAE,KAAK,+BAA+B,EAA6E,MAAM,4BAA4B,CAAC;AACjO,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"PostprocessExecution.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/renderer/PostprocessExecution.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,9 @@ import { isIterable } from "./RenderShared.js";
|
|
|
7
7
|
import { rendererQrFlags } from "./FrameGraph.js";
|
|
8
8
|
import { qrCoreOutputOn } from "./qrSubFlags.js";
|
|
9
9
|
import { Scene } from "../../scene/index.js";
|
|
10
|
+
import { registeredPostPasses } from "../contracts/post.js";
|
|
10
11
|
import { webgl2DeviceHost } from "../webgl2/Counters.js";
|
|
12
|
+
import { outlineTargetPassFor, outlineTargetsOf } from "./OutlineTargets.js";
|
|
11
13
|
import { executePostGraphWebGL2 } from "../webgl2/LegacyPost.js";
|
|
12
14
|
import { recordPostSkipped } from "./postSkipped.js";
|
|
13
15
|
import { guardPostprocessPlan } from "../quality/PostprocessGuard.js";
|
|
@@ -178,8 +180,16 @@ function withRendererDepth(options, depth) {
|
|
|
178
180
|
function isHdrRenderTarget(target) {
|
|
179
181
|
return target.colorTexture.format === "rgba16f" || target.colorTexture.format === "rgba32f";
|
|
180
182
|
}
|
|
183
|
+
/** GU47 E-E: the chain's options without the outline (a targeted outline runs after the chain instead). */
|
|
184
|
+
function withoutOutline(postprocess) {
|
|
185
|
+
const { outline: _outline, ...rest } = postprocess;
|
|
186
|
+
return rest;
|
|
187
|
+
}
|
|
181
188
|
export function postprocessRequiresDepthTexture(postprocess) {
|
|
182
|
-
return Boolean(
|
|
189
|
+
return Boolean(
|
|
190
|
+
// GU47 E-E: a targeted outline tests its mask against scene depth so hidden target pixels get no ink.
|
|
191
|
+
outlineTargetsOf(postprocess.outline) !== null ||
|
|
192
|
+
(postprocess.volumetricLight && !postprocess.volumetricLight.depth) ||
|
|
183
193
|
(postprocess.depthOfField && !postprocess.depthOfField.depth) ||
|
|
184
194
|
(postprocess.contactShadow && !postprocess.contactShadow.depth) ||
|
|
185
195
|
(postprocess.ssao && !postprocess.ssao.depth) ||
|
|
@@ -187,7 +197,7 @@ export function postprocessRequiresDepthTexture(postprocess) {
|
|
|
187
197
|
// PRD-03 §6.9: on the v2 route the legacy fields are not populated — the
|
|
188
198
|
// depth-needing stages (S1 depth-prep feeding S2 GTAO / S4 god rays /
|
|
189
199
|
// Phase-4 DOF+motion blur+SSR) live on the pipeline bag instead.
|
|
190
|
-
(postprocess.v2 === true && v2PipelineNeedsDepth(postprocess.pipeline)));
|
|
200
|
+
(postprocess.v2 === true && (v2PipelineNeedsDepth(postprocess.pipeline) || v2CustomPassesNeedDepth(postprocess.pipeline))));
|
|
191
201
|
}
|
|
192
202
|
function v2PipelineNeedsDepth(pipeline) {
|
|
193
203
|
if (pipeline === null || typeof pipeline !== "object")
|
|
@@ -197,6 +207,19 @@ function v2PipelineNeedsDepth(pipeline) {
|
|
|
197
207
|
// camera velocity — the depth attachment is required on the forward target.
|
|
198
208
|
return Boolean(bag.ao ?? bag.godRays ?? bag.dof ?? bag.motionBlur ?? bag.ssr ?? bag.taa) || bag.antiAliasing === "taa";
|
|
199
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* GU47 phase 2: a C-13 custom pass that declares a `depth` input (`effects.toon({ inkSource: "depth" })`,
|
|
212
|
+
* `effects.shaderPass({ inputs: ["color", "depth"] })`) reads the scene depth: the HDR anchors bind the S1 linear depth,
|
|
213
|
+
* the after-tonemap tail linearises `sceneDepth`. Both come from the forward target's depth texture, which only the
|
|
214
|
+
* effects above used to request, so in a scene whose only depth reader was the custom pass the HDR driver skipped every
|
|
215
|
+
* stage (`WEBGL_LDR_POSTPROCESS_DEPTH_REQUIRED`) and the tail bound no depth. Same pass set as the v2 driver reads
|
|
216
|
+
* (`mergedCustomPasses`: the pipeline bag, then the page registry `app.post.addPostPass` fills).
|
|
217
|
+
*/
|
|
218
|
+
function v2CustomPassesNeedDepth(pipeline) {
|
|
219
|
+
const bag = pipeline !== null && typeof pipeline === "object" ? pipeline.customPasses : undefined;
|
|
220
|
+
const wantsDepth = (pass) => pass.inputs.includes("depth");
|
|
221
|
+
return Boolean(bag?.some(wantsDepth)) || registeredPostPasses().some(wantsDepth);
|
|
222
|
+
}
|
|
200
223
|
export function defaultPostprocessTargetFormat(device, postprocess) {
|
|
201
224
|
if (postprocess.toneMapping === false)
|
|
202
225
|
return "rgba8";
|
|
@@ -330,13 +353,52 @@ export class RendererPostprocessPipeline {
|
|
|
330
353
|
}
|
|
331
354
|
executePostprocess(postprocess, ownedTargets, outputTarget) {
|
|
332
355
|
const pooled = qrTiersOn() ? [] : null;
|
|
356
|
+
// GU47 E-E: an outline with `targets` inks only those nodes' silhouettes, so the chain runs without the
|
|
357
|
+
// full-frame luma outline and the target ink blends onto the chain's output afterwards. No `targets`: unchanged.
|
|
358
|
+
const outlineTargets = outlineTargetsOf(postprocess.outline);
|
|
333
359
|
try {
|
|
334
|
-
this.executePostprocessChain(postprocess, ownedTargets, outputTarget, pooled);
|
|
360
|
+
this.executePostprocessChain(outlineTargets ? withoutOutline(postprocess) : postprocess, ownedTargets, outputTarget, pooled);
|
|
361
|
+
if (outlineTargets)
|
|
362
|
+
this.executeOutlineTargets(postprocess, outlineTargets, ownedTargets[0], outputTarget);
|
|
335
363
|
}
|
|
336
364
|
finally {
|
|
337
365
|
this.releaseChainTargets(pooled);
|
|
338
366
|
}
|
|
339
367
|
}
|
|
368
|
+
/**
|
|
369
|
+
* GU47 E-E: the targeted outline pass (`OutlineTargets.ts`): a mask of only the target items, then a ring of the
|
|
370
|
+
* outline colour `width` px wide around the mask's visible silhouette, blended onto the final output.
|
|
371
|
+
*/
|
|
372
|
+
executeOutlineTargets(postprocess, targets, forwardTarget, outputTarget) {
|
|
373
|
+
const device = this.host.device;
|
|
374
|
+
if (device.kind === "webgpu") {
|
|
375
|
+
recordPostSkipped("OUTLINE_TARGETS_WEBGL2_ONLY");
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
const frame = postprocess.postFrameContext;
|
|
379
|
+
const viewProjection = postprocess.cameraFrame?.viewProjectionMatrix;
|
|
380
|
+
if (!frame || !viewProjection) {
|
|
381
|
+
recordPostSkipped("OUTLINE_TARGETS_FRAME_CONTEXT_MISSING");
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
const sceneDepth = frame.sceneDepth.available ? frame.sceneDepth.texture : null;
|
|
385
|
+
// The forward target may be multisampled; its depth texture holds resolved depth only after the blit.
|
|
386
|
+
if (sceneDepth && forwardTarget)
|
|
387
|
+
webgl2DeviceHost(device)?.resolveMultisampleTarget(forwardTarget);
|
|
388
|
+
const outline = (typeof postprocess.outline === "object" ? postprocess.outline : {});
|
|
389
|
+
outlineTargetPassFor(device).execute({
|
|
390
|
+
items: frame.items,
|
|
391
|
+
targets,
|
|
392
|
+
viewProjectionMatrix: viewProjection,
|
|
393
|
+
width: this.host.width,
|
|
394
|
+
height: this.host.height,
|
|
395
|
+
...(outline.color ? { color: outline.color } : {}),
|
|
396
|
+
...(outline.width !== undefined ? { radius: outline.width } : {}),
|
|
397
|
+
...(outline.opacity !== undefined ? { opacity: outline.opacity } : {}),
|
|
398
|
+
sceneDepth,
|
|
399
|
+
output: outputTarget ?? null
|
|
400
|
+
});
|
|
401
|
+
}
|
|
340
402
|
executePostprocessChain(postprocess, ownedTargets, outputTarget, pooled) {
|
|
341
403
|
const forwardTarget = ownedTargets[0];
|
|
342
404
|
let current = forwardTarget;
|
|
@@ -469,8 +531,12 @@ export class RendererPostprocessPipeline {
|
|
|
469
531
|
}
|
|
470
532
|
async executePostprocessAsync(postprocess, ownedTargets, outputTarget) {
|
|
471
533
|
const pooled = qrTiersOn() ? [] : null;
|
|
534
|
+
// GU47 E-E: same targeted-outline split as `executePostprocess`.
|
|
535
|
+
const outlineTargets = outlineTargetsOf(postprocess.outline);
|
|
472
536
|
try {
|
|
473
|
-
await this.executePostprocessChainAsync(postprocess, ownedTargets, outputTarget, pooled);
|
|
537
|
+
await this.executePostprocessChainAsync(outlineTargets ? withoutOutline(postprocess) : postprocess, ownedTargets, outputTarget, pooled);
|
|
538
|
+
if (outlineTargets && !this.host.device.disposed)
|
|
539
|
+
this.executeOutlineTargets(postprocess, outlineTargets, ownedTargets[0], outputTarget);
|
|
474
540
|
}
|
|
475
541
|
finally {
|
|
476
542
|
this.releaseChainTargets(pooled);
|