@aura3d/engine 4.6.1 → 4.7.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/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 +37 -6
- package/dist/engine/production-runtime/effects/LiveAtmosphere.d.ts.map +1 -1
- package/dist/engine/production-runtime/effects/LiveAtmosphere.js +93 -10
- package/dist/engine/production-runtime/effects/LiveAtmosphere.js.map +1 -1
- package/dist/engine/production-runtime/effects/ProductionEffectSystem.d.ts +71 -1
- package/dist/engine/production-runtime/effects/ProductionEffectSystem.d.ts.map +1 -1
- package/dist/engine/production-runtime/effects/ProductionEffectSystem.js +356 -6
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postBridge.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/postBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAKL,KAAK,mBAAmB,EAExB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,OAAO,EACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAqB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAA4B,KAAK,OAAO,EAA6B,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"postBridge.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/postBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
import { createRendererPostprocessPlanDiagnostics, postGraphV2LastOutcome, postSkippedReasons, postStagesRan, postV2ModulesReady, postVelocityCoverage, volumetricLightDirection } from "../../rendering/index.js";
|
|
16
16
|
import { registerPostPass, registeredPostPasses } from "../../rendering/contracts/index.js";
|
|
17
17
|
import { AuraRuntimeError, groups } from "./index.js";
|
|
18
|
-
import { expandPostPreset
|
|
18
|
+
import { expandPostPreset } from "./postPresets.js";
|
|
19
19
|
import { mergeLookColorGrade } from "./looks/lookGrade.js";
|
|
20
|
+
import { lookOutputPreset } from "./looks/looks.js";
|
|
21
|
+
import { colorToRgba } from "./colorUtils.js";
|
|
20
22
|
/** Mirrors `postProductionBuild` in the renderer (§6.9 prod-skip rule). */
|
|
21
23
|
function postProductionBuildBridge() {
|
|
22
24
|
const meta = import.meta;
|
|
@@ -298,22 +300,43 @@ export class Prd03PostSurface {
|
|
|
298
300
|
canvas;
|
|
299
301
|
app;
|
|
300
302
|
requestedTier = null;
|
|
303
|
+
/** GU47 E-C (EC-5): this app's runtime effect overrides (`setEffect` / `setEffectEnabled`). */
|
|
304
|
+
runtimeOverrides;
|
|
305
|
+
/** Releases of the passes this surface registered and that are still live. */
|
|
306
|
+
releases = new Set();
|
|
301
307
|
constructor(flags, canvas, app) {
|
|
302
308
|
this.flags = flags;
|
|
303
309
|
this.canvas = canvas;
|
|
304
310
|
this.app = app;
|
|
311
|
+
this.runtimeOverrides = adoptRuntimePostOverrides(canvas);
|
|
305
312
|
}
|
|
306
313
|
addPostPass(pass) {
|
|
307
314
|
if (!this.flags.on("A3D_QR_POST"))
|
|
308
315
|
return () => { };
|
|
309
316
|
const descriptor = customPassToDescriptor(pass);
|
|
310
|
-
const
|
|
311
|
-
|
|
317
|
+
const unregister = registerPostPass(descriptor);
|
|
318
|
+
const release = () => {
|
|
319
|
+
if (!this.releases.delete(release))
|
|
320
|
+
return;
|
|
312
321
|
// SH-03: removing a pass leaves no residue — registry entry AND staged
|
|
313
322
|
// setPassUniform overrides both go away.
|
|
314
323
|
passUniformOverrides.delete(descriptor.id);
|
|
315
|
-
|
|
324
|
+
unregister();
|
|
316
325
|
};
|
|
326
|
+
this.releases.add(release);
|
|
327
|
+
return release;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* GU47 phase 2: `app.dispose()` releases every pass this app added. The C-13
|
|
331
|
+
* registry is page-global, so a pass the app never released used to outlive
|
|
332
|
+
* it: the next app on the page that added a pass with the same name threw
|
|
333
|
+
* `REGISTRY_DUPLICATE:prd03.custom.<name>`, and any other app kept running
|
|
334
|
+
* the dead app's pass. Releasing is idempotent (the returned release and
|
|
335
|
+
* dispose may both run).
|
|
336
|
+
*/
|
|
337
|
+
dispose() {
|
|
338
|
+
for (const release of [...this.releases])
|
|
339
|
+
release();
|
|
317
340
|
}
|
|
318
341
|
/**
|
|
319
342
|
* SH-03: mutate one numeric uniform of a registered custom pass
|
|
@@ -342,6 +365,22 @@ export class Prd03PostSurface {
|
|
|
342
365
|
}
|
|
343
366
|
overrides.set(key, value);
|
|
344
367
|
}
|
|
368
|
+
/**
|
|
369
|
+
* GU47 E-C (EC-5): `app.post.setEffect("bloom", { intensity: 1.4 })`. The
|
|
370
|
+
* patch is validated now and merged into this app's override store; the
|
|
371
|
+
* next frame's post derivation (`createRootPostPipeline`) applies it to the
|
|
372
|
+
* effect node — no scene rebuild, no shader rebuild.
|
|
373
|
+
*/
|
|
374
|
+
setEffect(name, patch) {
|
|
375
|
+
writeRuntimePostEffect(this.runtimeOverrides, name, patch, undefined);
|
|
376
|
+
}
|
|
377
|
+
/** GU47 E-C (EC-5): drop one runtime-controllable effect from the chain, or restore it. */
|
|
378
|
+
setEffectEnabled(name, enabled) {
|
|
379
|
+
if (typeof enabled !== "boolean") {
|
|
380
|
+
throw new AuraRuntimeError("POST_FIELD_UNSUPPORTED", `app.post.setEffectEnabled(${String(name)}) expects a boolean`);
|
|
381
|
+
}
|
|
382
|
+
writeRuntimePostEffect(this.runtimeOverrides, name, undefined, enabled);
|
|
383
|
+
}
|
|
345
384
|
setQualityTier(tier) {
|
|
346
385
|
this.requestedTier = tier;
|
|
347
386
|
// The compiler reads the shared context store when resolving tier AA (Phase 1).
|
|
@@ -381,6 +420,174 @@ export function createPrd03PostSurface(app, ctx) {
|
|
|
381
420
|
return new Prd03PostSurface(ctx.flags, app.canvas ?? undefined, app);
|
|
382
421
|
}
|
|
383
422
|
/* ------------------------------------------------------------------------- */
|
|
423
|
+
/* GU47 E-C (EC-5): runtime post control (`app.post.setEffect`) */
|
|
424
|
+
/* ------------------------------------------------------------------------- */
|
|
425
|
+
/** `app.post.setEffect` / `setEffectEnabled` names (factory names) → the effect node id they drive. */
|
|
426
|
+
export const POST_RUNTIME_EFFECTS = Object.freeze({
|
|
427
|
+
bloom: "bloom",
|
|
428
|
+
colorGrade: "color-grade",
|
|
429
|
+
depthOfField: "depth-of-field",
|
|
430
|
+
motionBlur: "motion-blur",
|
|
431
|
+
chromaticAberration: "chromatic-aberration",
|
|
432
|
+
volumetricFog: "volumetric-fog",
|
|
433
|
+
vignette: "vignette",
|
|
434
|
+
// GU47 E-E handoff H4: retarget the outline at runtime (`setEffect("outline", { targets: [id] })`).
|
|
435
|
+
outline: "outline",
|
|
436
|
+
// GU47 pass 4 (g19): an fps governor drops GTAO and grain at runtime (`setEffectEnabled("ambientOcclusion", false)`).
|
|
437
|
+
ambientOcclusion: "ambient-occlusion",
|
|
438
|
+
filmGrain: "film-grain"
|
|
439
|
+
});
|
|
440
|
+
const canvasRuntimeOverrides = new WeakMap();
|
|
441
|
+
/**
|
|
442
|
+
* The store a canvas-less derivation reads: the most recently created or
|
|
443
|
+
* written app's. Exact for one app per page (every live game); the compiler
|
|
444
|
+
* passes the canvas once E-G's `compiler/postprocess.ts` hook lands, which
|
|
445
|
+
* scopes two apps on one page exactly.
|
|
446
|
+
*/
|
|
447
|
+
let latestRuntimeOverrides = new Map();
|
|
448
|
+
/** A fresh store for a new post surface; it becomes the canvas-less default. */
|
|
449
|
+
function adoptRuntimePostOverrides(canvas) {
|
|
450
|
+
const store = new Map();
|
|
451
|
+
if (canvas)
|
|
452
|
+
canvasRuntimeOverrides.set(canvas, store);
|
|
453
|
+
latestRuntimeOverrides = store;
|
|
454
|
+
return store;
|
|
455
|
+
}
|
|
456
|
+
function runtimePostOverridesFor(canvas) {
|
|
457
|
+
return (canvas ? canvasRuntimeOverrides.get(canvas) : undefined) ?? latestRuntimeOverrides;
|
|
458
|
+
}
|
|
459
|
+
/** Test hook: forgets the canvas-less runtime overrides (per-canvas stores go with their canvas). */
|
|
460
|
+
export function resetRuntimePostOverrides() {
|
|
461
|
+
latestRuntimeOverrides = new Map();
|
|
462
|
+
}
|
|
463
|
+
const RUNTIME_EFFECT_IDS = new Set(Object.values(POST_RUNTIME_EFFECTS));
|
|
464
|
+
function runtimeEffectId(name) {
|
|
465
|
+
if (typeof name === "string") {
|
|
466
|
+
if (Object.prototype.hasOwnProperty.call(POST_RUNTIME_EFFECTS, name))
|
|
467
|
+
return POST_RUNTIME_EFFECTS[name];
|
|
468
|
+
if (RUNTIME_EFFECT_IDS.has(name))
|
|
469
|
+
return name;
|
|
470
|
+
}
|
|
471
|
+
throw new AuraRuntimeError("POST_FIELD_UNSUPPORTED", `app.post: "${String(name)}" is not a runtime post effect (use ${Object.keys(POST_RUNTIME_EFFECTS).join(", ")}).`);
|
|
472
|
+
}
|
|
473
|
+
function runtimePatchValue(effectName, key, value, effectId) {
|
|
474
|
+
const reject = (why) => {
|
|
475
|
+
throw new AuraRuntimeError("POST_FIELD_UNSUPPORTED", `app.post.setEffect(${effectName}, { ${key} }) ${why}`);
|
|
476
|
+
};
|
|
477
|
+
// GU47 E-E handoff H4: outline `targets` is a list of node names / runtime ids (an empty list inks nothing).
|
|
478
|
+
if (key === "targets") {
|
|
479
|
+
if (!Array.isArray(value) || !value.every((entry) => typeof entry === "string" && entry.trim().length > 0)) {
|
|
480
|
+
reject("expects an array of node names");
|
|
481
|
+
}
|
|
482
|
+
return Object.freeze([...value]);
|
|
483
|
+
}
|
|
484
|
+
if (typeof value === "number")
|
|
485
|
+
return Number.isFinite(value) ? value : reject("expects a finite number");
|
|
486
|
+
if (typeof value === "boolean")
|
|
487
|
+
return value;
|
|
488
|
+
if (typeof value === "string") {
|
|
489
|
+
if (!value.trim())
|
|
490
|
+
reject("expects a non-empty string");
|
|
491
|
+
// A CSS-style colour string becomes the RGB triple the bridge reads (the
|
|
492
|
+
// compiled outline parses the colour string itself).
|
|
493
|
+
if (key === "color" && effectId !== "outline") {
|
|
494
|
+
const [r, g, b] = colorToRgba(value);
|
|
495
|
+
return [r, g, b];
|
|
496
|
+
}
|
|
497
|
+
return value;
|
|
498
|
+
}
|
|
499
|
+
if (Array.isArray(value)) {
|
|
500
|
+
if (value.length === 0 || value.length > 4 || !value.every((entry) => typeof entry === "number" && Number.isFinite(entry))) {
|
|
501
|
+
reject("expects 1-4 finite numbers");
|
|
502
|
+
}
|
|
503
|
+
// `tiltShift` is an object on the node; the flat patch carries [bandCenter, bandWidth, angleDeg?].
|
|
504
|
+
if (key === "tiltShift") {
|
|
505
|
+
if (value.length < 2)
|
|
506
|
+
reject("expects [bandCenter, bandWidth, angleDeg?]");
|
|
507
|
+
return { bandCenter: value[0], bandWidth: value[1], ...(value.length > 2 ? { angleDeg: value[2] } : {}) };
|
|
508
|
+
}
|
|
509
|
+
return Object.freeze([...value]);
|
|
510
|
+
}
|
|
511
|
+
return reject("expects a number, string, boolean or number array");
|
|
512
|
+
}
|
|
513
|
+
/** Validates and merges one `setEffect` / `setEffectEnabled` call into `store`. */
|
|
514
|
+
function writeRuntimePostEffect(store, name, patch, enabled) {
|
|
515
|
+
const effectId = runtimeEffectId(name);
|
|
516
|
+
const values = new Map();
|
|
517
|
+
if (patch !== undefined) {
|
|
518
|
+
if (patch === null || typeof patch !== "object" || Array.isArray(patch)) {
|
|
519
|
+
throw new AuraRuntimeError("POST_FIELD_UNSUPPORTED", `app.post.setEffect(${name}) expects a field patch object`);
|
|
520
|
+
}
|
|
521
|
+
const allowed = POST_EFFECT_FIELDS[effectId] ?? [];
|
|
522
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
523
|
+
if (key !== "intensity" && !allowed.includes(key)) {
|
|
524
|
+
throw new AuraRuntimeError("POST_FIELD_UNSUPPORTED", `app.post.setEffect(${name}): "${key}" is not a ${effectId} field (fields: intensity, ${allowed.join(", ")}).`);
|
|
525
|
+
}
|
|
526
|
+
values.set(key, runtimePatchValue(name, key, value, effectId));
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
let state = store.get(effectId);
|
|
530
|
+
if (!state) {
|
|
531
|
+
state = { enabled: undefined, patch: new Map() };
|
|
532
|
+
store.set(effectId, state);
|
|
533
|
+
}
|
|
534
|
+
for (const [key, value] of values)
|
|
535
|
+
state.patch.set(key, value);
|
|
536
|
+
if (enabled !== undefined)
|
|
537
|
+
state.enabled = enabled;
|
|
538
|
+
latestRuntimeOverrides = store;
|
|
539
|
+
}
|
|
540
|
+
function patchedEffectNode(node, state) {
|
|
541
|
+
if (state.patch.size === 0)
|
|
542
|
+
return node;
|
|
543
|
+
const patch = Object.fromEntries(state.patch);
|
|
544
|
+
// The v2 bloom mapping and the compiler's bloom bag read the pre-cap
|
|
545
|
+
// `postIntensity` and the `radius` spread alias; mirror them so a runtime
|
|
546
|
+
// intensity / scatter reaches both.
|
|
547
|
+
if (node.effect === "bloom") {
|
|
548
|
+
if (state.patch.has("intensity"))
|
|
549
|
+
patch.postIntensity = patch.intensity;
|
|
550
|
+
if (state.patch.has("scatter"))
|
|
551
|
+
patch.radius = patch.scatter;
|
|
552
|
+
}
|
|
553
|
+
// `postAuthored` (CCR-03-3) marks authored keys; patched keys count as authored.
|
|
554
|
+
const postAuthored = node.postAuthored === undefined ? undefined : [...new Set([...node.postAuthored, ...state.patch.keys()])];
|
|
555
|
+
return { ...node, ...patch, ...(postAuthored ? { postAuthored } : {}) };
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Applies the runtime post overrides (`app.post.setEffect` /
|
|
559
|
+
* `setEffectEnabled`) to a flattened node list: patched effects get their
|
|
560
|
+
* fields (marked authored), disabled effects are dropped, and an effect that
|
|
561
|
+
* was patched or enabled but is not declared is appended over its defaults.
|
|
562
|
+
* Non-effect nodes pass through; with no overrides the input is returned as
|
|
563
|
+
* is. Idempotent, so the compiler and the bridge may both apply it.
|
|
564
|
+
*/
|
|
565
|
+
export function applyRuntimePostOverrides(nodes, canvas) {
|
|
566
|
+
const store = runtimePostOverridesFor(canvas);
|
|
567
|
+
if (store.size === 0)
|
|
568
|
+
return nodes;
|
|
569
|
+
const result = [];
|
|
570
|
+
const present = new Set();
|
|
571
|
+
for (const node of nodes) {
|
|
572
|
+
const state = node.kind === "effect" ? store.get(node.effect) : undefined;
|
|
573
|
+
if (!state) {
|
|
574
|
+
result.push(node);
|
|
575
|
+
continue;
|
|
576
|
+
}
|
|
577
|
+
present.add(node.effect);
|
|
578
|
+
if (state.enabled === false)
|
|
579
|
+
continue;
|
|
580
|
+
result.push(patchedEffectNode(node, state));
|
|
581
|
+
}
|
|
582
|
+
for (const [effectId, state] of store) {
|
|
583
|
+
if (present.has(effectId) || state.enabled === false || (state.enabled !== true && state.patch.size === 0))
|
|
584
|
+
continue;
|
|
585
|
+
const declared = { kind: "effect", effect: effectId, postAuthored: [] };
|
|
586
|
+
result.push(patchedEffectNode(declared, state));
|
|
587
|
+
}
|
|
588
|
+
return result;
|
|
589
|
+
}
|
|
590
|
+
/* ------------------------------------------------------------------------- */
|
|
384
591
|
/* Phase 2 — C-13 v2 bridge: field validation + v2 option assembly */
|
|
385
592
|
/* ------------------------------------------------------------------------- */
|
|
386
593
|
/**
|
|
@@ -409,11 +616,16 @@ export const POST_EFFECT_FIELDS = {
|
|
|
409
616
|
"film-grain": ["intensity", "size", "luminanceResponse"],
|
|
410
617
|
"chromatic-aberration": ["intensity"],
|
|
411
618
|
// Lane-07 factories route through this bridge on the v2 chain (§6.9).
|
|
412
|
-
|
|
413
|
-
|
|
619
|
+
// GU47 E-C (EC-8): `godRayDensity` (S4 shaft density, decoupled from the fog
|
|
620
|
+
// `density`) and the DOF `tiltShift` band; E-F adds the factory option types.
|
|
621
|
+
"volumetric-fog": ["density", "color", "volumetricQuality", "lightPosition", "heightFalloff", "heightReference", "godRayDensity"],
|
|
622
|
+
"depth-of-field": ["focusDistance", "fStop", "focalLength", "maxBlur", "tiltShift"],
|
|
414
623
|
"motion-blur": ["shutter", "maxBlur", "samples", "tileSize", "timeScale"],
|
|
415
|
-
|
|
416
|
-
|
|
624
|
+
// GU47 E-C (EC-6): S3 roughness hint (cutoff 0.5) and hit thickness.
|
|
625
|
+
"screen-space-reflections": ["maxDistance", "intensity", "roughness", "thickness"],
|
|
626
|
+
// GU47 E-E (WP-5): `targets` names the nodes whose silhouettes get ink
|
|
627
|
+
// (compiled to renderer match keys by `nodes/outlineTargets.ts`).
|
|
628
|
+
outline: ["color", "width", "threshold", "targets"]
|
|
417
629
|
};
|
|
418
630
|
/**
|
|
419
631
|
* §7.1 deprecated fields — accepted with a `post-field-deprecated` diagnostic,
|
|
@@ -487,6 +699,147 @@ function rgbField(node, field, fallback) {
|
|
|
487
699
|
}
|
|
488
700
|
return fallback;
|
|
489
701
|
}
|
|
702
|
+
/**
|
|
703
|
+
* GU47 E-C: grade terms (`lift`, `gamma`, `gain`, `shadows`, `midtones`,
|
|
704
|
+
* `highlights`) also accept a scalar applied to all three channels — the
|
|
705
|
+
* `AuraEffectNode` field had been typed `number` for shadows/highlights while
|
|
706
|
+
* the bridge only read RGB, so a numeric value never reached a pixel.
|
|
707
|
+
* Non-finite channels fall back per channel.
|
|
708
|
+
*/
|
|
709
|
+
function gradeRgbField(node, field, fallback) {
|
|
710
|
+
const value = node[field];
|
|
711
|
+
if (typeof value === "number")
|
|
712
|
+
return Number.isFinite(value) ? { r: value, g: value, b: value } : fallback;
|
|
713
|
+
const rgb = rgbField(node, field, fallback);
|
|
714
|
+
return {
|
|
715
|
+
r: Number.isFinite(rgb.r) ? rgb.r : fallback.r,
|
|
716
|
+
g: Number.isFinite(rgb.g) ? rgb.g : fallback.g,
|
|
717
|
+
b: Number.isFinite(rgb.b) ? rgb.b : fallback.b
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
/** Temperature / tint are normalised white-balance offsets in [-1, 1] (0 = neutral). */
|
|
721
|
+
const clampUnit = (value) => Math.min(1, Math.max(-1, value));
|
|
722
|
+
/** The DOF node's tilt-shift band, centre/width clamped to [0, 1]; `undefined` when absent or malformed. */
|
|
723
|
+
function dofTiltShiftOf(node) {
|
|
724
|
+
const tilt = node.tiltShift;
|
|
725
|
+
if (!tilt || typeof tilt !== "object")
|
|
726
|
+
return undefined;
|
|
727
|
+
const { bandCenter, bandWidth, angleDeg } = tilt;
|
|
728
|
+
if (typeof bandCenter !== "number" || !Number.isFinite(bandCenter) || typeof bandWidth !== "number" || !Number.isFinite(bandWidth))
|
|
729
|
+
return undefined;
|
|
730
|
+
return {
|
|
731
|
+
bandCenter: Math.min(1, Math.max(0, bandCenter)),
|
|
732
|
+
bandWidth: Math.min(1, Math.max(0, bandWidth)),
|
|
733
|
+
...(typeof angleDeg === "number" && Number.isFinite(angleDeg) ? { angleDeg } : {})
|
|
734
|
+
};
|
|
735
|
+
}
|
|
736
|
+
/**
|
|
737
|
+
* GU47 E-C (EC-7): every material `bloom` weight in the scene. `bloom` is
|
|
738
|
+
* E-D's new `AuraMaterialSpec` field (0..2, default 1), read structurally
|
|
739
|
+
* until that merges.
|
|
740
|
+
*/
|
|
741
|
+
function materialBloomWeights(nodes) {
|
|
742
|
+
const weights = [];
|
|
743
|
+
for (const node of nodes) {
|
|
744
|
+
const material = node.material;
|
|
745
|
+
if (material && typeof material === "object" && "bloom" in material)
|
|
746
|
+
weights.push(material.bloom);
|
|
747
|
+
}
|
|
748
|
+
return weights;
|
|
749
|
+
}
|
|
750
|
+
/** Mirrors `NativeBloomPyramid.selectiveBloomActive`: a weight that clamps to anything but 1 needs the prefilter's alpha weight. */
|
|
751
|
+
function selectiveBloomActive(weights) {
|
|
752
|
+
return weights.some((weight) => typeof weight === "number" && Number.isFinite(weight) && Math.min(2, Math.max(0, weight)) !== 1);
|
|
753
|
+
}
|
|
754
|
+
/** volumetricFog `godRayDensity` (S4 march fraction) clamped to [0.05, 1]; `undefined` when not authored. */
|
|
755
|
+
function godRayDensityOf(node) {
|
|
756
|
+
const value = node.godRayDensity;
|
|
757
|
+
return typeof value === "number" && Number.isFinite(value) ? Math.min(1, Math.max(0.05, value)) : undefined;
|
|
758
|
+
}
|
|
759
|
+
/** Served `.cube` URL → load state. Shared by every app on the page (same URL, same bytes). */
|
|
760
|
+
const postLutRecords = new Map();
|
|
761
|
+
/**
|
|
762
|
+
* The served URL of a `colorGrade({ lut })` value: a typed `.cube` asset
|
|
763
|
+
* (`aura3d assets add grade.cube --type lut` → `assets.grade`, whose `url` is
|
|
764
|
+
* the hashed public path) or a plain URL string. `null` for anything else.
|
|
765
|
+
*/
|
|
766
|
+
export function postLutUrl(lut) {
|
|
767
|
+
if (typeof lut === "string")
|
|
768
|
+
return lut.trim() ? lut.trim() : null;
|
|
769
|
+
if (lut && typeof lut === "object") {
|
|
770
|
+
const url = lut.url;
|
|
771
|
+
if (typeof url === "string" && url.trim())
|
|
772
|
+
return url.trim();
|
|
773
|
+
}
|
|
774
|
+
return null;
|
|
775
|
+
}
|
|
776
|
+
/**
|
|
777
|
+
* Seeds a `.cube` by URL so the first frame binds it without a fetch (inline
|
|
778
|
+
* grades, tests, preloaders). A later `colorGrade({ lut: url })` uses it.
|
|
779
|
+
*/
|
|
780
|
+
export function preloadPostLut(url, cube) {
|
|
781
|
+
postLutRecords.set(url, { status: "ready", cube, settled: Promise.resolve() });
|
|
782
|
+
}
|
|
783
|
+
/** Settles once every requested `.cube` has loaded or failed (capture specs await it). */
|
|
784
|
+
export function postLutsSettled() {
|
|
785
|
+
return Promise.all([...postLutRecords.values()].map((record) => record.settled)).then(() => undefined);
|
|
786
|
+
}
|
|
787
|
+
/** Test hook: forgets every requested / preloaded LUT. */
|
|
788
|
+
export function resetPostLuts() {
|
|
789
|
+
postLutRecords.clear();
|
|
790
|
+
}
|
|
791
|
+
function requestPostLut(url) {
|
|
792
|
+
const existing = postLutRecords.get(url);
|
|
793
|
+
if (existing)
|
|
794
|
+
return existing;
|
|
795
|
+
const record = { status: "pending", settled: Promise.resolve() };
|
|
796
|
+
postLutRecords.set(url, record);
|
|
797
|
+
const host = globalThis;
|
|
798
|
+
if (typeof host.fetch !== "function") {
|
|
799
|
+
record.status = "failed";
|
|
800
|
+
record.error = "fetch is unavailable";
|
|
801
|
+
return record;
|
|
802
|
+
}
|
|
803
|
+
record.settled = (async () => {
|
|
804
|
+
try {
|
|
805
|
+
const response = await host.fetch(url);
|
|
806
|
+
if (!response.ok)
|
|
807
|
+
throw new Error(`HTTP ${response.status}`);
|
|
808
|
+
record.cube = await response.text();
|
|
809
|
+
record.status = "ready";
|
|
810
|
+
}
|
|
811
|
+
catch (error) {
|
|
812
|
+
record.status = "failed";
|
|
813
|
+
record.error = error instanceof Error ? error.message : String(error);
|
|
814
|
+
}
|
|
815
|
+
})();
|
|
816
|
+
return record;
|
|
817
|
+
}
|
|
818
|
+
/**
|
|
819
|
+
* `pipeline.lut` for the S10b display grade. With the `.cube` text loaded the
|
|
820
|
+
* bag carries it (the renderer parses and uploads once per source); while it
|
|
821
|
+
* loads, or after the load failed, the bag carries `status` instead, the tail
|
|
822
|
+
* binds the identity LUT exactly as an authored lut rendered before GU47, and
|
|
823
|
+
* a `POST_LUT_PENDING` / `POST_LUT_UNAVAILABLE` diagnostic says why.
|
|
824
|
+
*/
|
|
825
|
+
function resolvePipelineLut(gradeNode, diagnostics) {
|
|
826
|
+
const value = gradeNode.lut;
|
|
827
|
+
if (value === undefined || value === null || value === "")
|
|
828
|
+
return undefined;
|
|
829
|
+
const url = postLutUrl(value);
|
|
830
|
+
if (!url) {
|
|
831
|
+
diagnostics.push({ code: "POST_LUT_UNAVAILABLE", effect: "color-grade", field: "lut", message: "colorGrade lut must be a typed .cube asset (aura3d assets add <file.cube> --type lut) or a served .cube URL." });
|
|
832
|
+
return undefined;
|
|
833
|
+
}
|
|
834
|
+
const intensity = Math.min(1, Math.max(0, numberField(gradeNode, "lutIntensity", 1)));
|
|
835
|
+
const record = requestPostLut(url);
|
|
836
|
+
if (record.status === "ready" && record.cube !== undefined)
|
|
837
|
+
return { source: url, intensity, cube: record.cube };
|
|
838
|
+
diagnostics.push(record.status === "failed"
|
|
839
|
+
? { code: "POST_LUT_UNAVAILABLE", effect: "color-grade", field: "lut", message: `colorGrade lut ${url} failed to load (${record.error ?? "unknown"}); S10b binds the identity LUT.` }
|
|
840
|
+
: { code: "POST_LUT_PENDING", effect: "color-grade", field: "lut", message: `colorGrade lut ${url} is loading; S10b binds the identity LUT until it arrives.` });
|
|
841
|
+
return { source: url, intensity, status: record.status === "failed" ? "failed" : "pending" };
|
|
842
|
+
}
|
|
490
843
|
/**
|
|
491
844
|
* §6.6 v2 bloom mapping: authored fields win; fields absent from
|
|
492
845
|
* `postAuthored` take the v2 defaults (factory defaults are legacy). A
|
|
@@ -535,8 +888,13 @@ export function mapBloomOptionsV2(node, mipLevels) {
|
|
|
535
888
|
* `AuraRuntimeError("POST_FIELD_UNSUPPORTED", ...)` on an unknown effect-node
|
|
536
889
|
* field — this runs inside the compile, so `app.ready()` rejects before the
|
|
537
890
|
* first frame instead of the error dying inside `diagnostics.errors`.
|
|
891
|
+
*
|
|
892
|
+
* GU47 E-C (EC-5): the runtime overrides of `app.post.setEffect` /
|
|
893
|
+
* `setEffectEnabled` apply after the look-grade merge and preset expansion,
|
|
894
|
+
* every derivation (the compiler derives once per frame). `canvas` scopes
|
|
895
|
+
* them to one app; without it the latest app's overrides apply.
|
|
538
896
|
*/
|
|
539
|
-
export function createRootPostPipeline(snapshot, camera, output, tierSettings, lights = [], tierResolution) {
|
|
897
|
+
export function createRootPostPipeline(snapshot, camera, output, tierSettings, lights = [], tierResolution, canvas) {
|
|
540
898
|
const nodes = groups.flatten(snapshot.nodes);
|
|
541
899
|
const diagnostics = [];
|
|
542
900
|
for (const node of nodes) {
|
|
@@ -553,20 +911,17 @@ export function createRootPostPipeline(snapshot, camera, output, tierSettings, l
|
|
|
553
911
|
// §6.8 (Phase 5): `output.preset` expands into `output` + effect nodes.
|
|
554
912
|
// Authored `output` fields win over the preset's; an authored effect node
|
|
555
913
|
// overrides the preset's same-effect node field by field. Presets naming
|
|
556
|
-
// agx/neutral render
|
|
914
|
+
// agx/neutral render that operator (GU47 E-C, EC-3).
|
|
557
915
|
// CR-4: a grade authored next to a look wins over the look's grade field by field (looks/lookGrade.ts).
|
|
558
916
|
const authoredEffectNodes = mergeLookColorGrade(nodes.filter((node) => node.kind === "effect"));
|
|
559
|
-
|
|
917
|
+
// GU47 E-A handoff: a look's declared post preset (the `output.preset` child
|
|
918
|
+
// `looks.preset` emits, or a v1 look node's preset) applies when the app
|
|
919
|
+
// authors no `output.preset`. Authored `output` fields still win over the
|
|
920
|
+
// preset's, and the look's own grade/bloom nodes win field by field.
|
|
921
|
+
const lookPreset = output?.preset === undefined ? lookOutputPreset(snapshot.nodes) : undefined;
|
|
922
|
+
const expansion = expandPostPreset(lookPreset === undefined ? output : { ...output, preset: lookPreset }, authoredEffectNodes);
|
|
560
923
|
const effectiveOutput = expansion.output;
|
|
561
|
-
const effectNodes = expansion.nodes;
|
|
562
|
-
if (expansion.preset && presetCapabilityDegraded(expansion.preset, output?.toneMapping)) {
|
|
563
|
-
diagnostics.push({
|
|
564
|
-
code: "preset-capability-degraded",
|
|
565
|
-
effect: "output",
|
|
566
|
-
field: "preset",
|
|
567
|
-
message: `preset "${expansion.preset.id}" declares ${expansion.preset.output.toneMapping}; renders as "aces" until C-05's operator selection is real.`
|
|
568
|
-
});
|
|
569
|
-
}
|
|
924
|
+
const effectNodes = applyRuntimePostOverrides(expansion.nodes, canvas);
|
|
570
925
|
const tierDisabled = (stage, reason) => {
|
|
571
926
|
diagnostics.push({
|
|
572
927
|
code: "post-tier-disabled",
|
|
@@ -616,6 +971,24 @@ export function createRootPostPipeline(snapshot, camera, output, tierSettings, l
|
|
|
616
971
|
const bloom = bloomNode ? mapBloomOptionsV2(bloomNode, tierSettings.bloomMipLevels) : undefined;
|
|
617
972
|
if (bloom)
|
|
618
973
|
diagnostics.push(...bloom.diagnostics);
|
|
974
|
+
// GU47 E-C (EC-7): a material `bloom` weight other than 1 asks for the
|
|
975
|
+
// prefilter's alpha weight. Not stamped (GU47 phase 2): no forward program
|
|
976
|
+
// writes the weight, and on the generated path every opaque pixel's HDR
|
|
977
|
+
// alpha already carries the S2 indirect-fraction tag (2 + f_ind,
|
|
978
|
+
// `post/chunks/indirectFraction.glsl.ts`), which `auraBloomWeight` clamps
|
|
979
|
+
// to 2, doubling the bloom of every surface instead of masking one (receipt
|
|
980
|
+
// effects-selective-bloom: wall at weight 0 bloomed by 157). Until the
|
|
981
|
+
// forward write and a non-colliding encoding land, bloom stays unweighted
|
|
982
|
+
// and the scene is told so.
|
|
983
|
+
const selectiveBloomRequested = Boolean(bloom) && selectiveBloomActive(materialBloomWeights(nodes));
|
|
984
|
+
if (selectiveBloomRequested) {
|
|
985
|
+
diagnostics.push({
|
|
986
|
+
code: "POST_SELECTIVE_BLOOM_UNAVAILABLE",
|
|
987
|
+
effect: "bloom",
|
|
988
|
+
field: "material.bloom",
|
|
989
|
+
message: "material bloom weights are ignored: the forward pass does not write the weight yet, so bloom applies to every surface over the threshold."
|
|
990
|
+
});
|
|
991
|
+
}
|
|
619
992
|
const exposure = (effectiveOutput?.exposure ?? 1) * authoredNumber(gradeNode ?? {}, "exposure", 1);
|
|
620
993
|
const toneMapping = effectiveOutput?.toneMapping ?? "aces";
|
|
621
994
|
// §6.8 tier gates (Phase 5): `resolvePostTier` decides which authored or
|
|
@@ -637,6 +1010,14 @@ export function createRootPostPipeline(snapshot, camera, output, tierSettings, l
|
|
|
637
1010
|
const ssrEnabled = tierResolution === undefined || tierResolution.ssr.enabled;
|
|
638
1011
|
if (ssrNode && !ssrEnabled)
|
|
639
1012
|
tierDisabled("S3-ssr", "SSR off below High");
|
|
1013
|
+
// GU47 phase 2 (receipt effects-ssr): S3 has no per-pixel material inputs.
|
|
1014
|
+
if (ssrNode && ssrEnabled) {
|
|
1015
|
+
diagnostics.push({
|
|
1016
|
+
code: "POST_SSR_MATERIAL_INPUTS_UNAVAILABLE",
|
|
1017
|
+
effect: "screen-space-reflections",
|
|
1018
|
+
message: "S3 reflects with dielectric F0 0.04 and the node roughness for the whole frame: the forward pass writes no per-pixel metalness or roughness, so metallic surfaces reflect weaker than their material."
|
|
1019
|
+
});
|
|
1020
|
+
}
|
|
640
1021
|
const grainEnabled = tierResolution === undefined || tierResolution.allowsFilmGrain;
|
|
641
1022
|
if (grainNode && !grainEnabled)
|
|
642
1023
|
tierDisabled("S12-film-grain", "grain off on Low");
|
|
@@ -650,6 +1031,8 @@ export function createRootPostPipeline(snapshot, camera, output, tierSettings, l
|
|
|
650
1031
|
const aeEnabled = tierResolution === undefined || tierResolution.autoExposure;
|
|
651
1032
|
if (aeRequested && !aeEnabled)
|
|
652
1033
|
tierDisabled("S8-auto-exposure", "auto-exposure off on Low");
|
|
1034
|
+
// GU47 E-C (EC-2): the S10b `.cube` LUT, once loaded.
|
|
1035
|
+
const lutBag = gradeNode ? resolvePipelineLut(gradeNode, diagnostics) : undefined;
|
|
653
1036
|
const options = {
|
|
654
1037
|
antiAliasing: "off", // resolved by the caller through resolvePostAntiAlias
|
|
655
1038
|
depthRange: {
|
|
@@ -664,6 +1047,7 @@ export function createRootPostPipeline(snapshot, camera, output, tierSettings, l
|
|
|
664
1047
|
// prd03-taa 1-px line moved ~1 px and spread over five rows, promote run
|
|
665
1048
|
// 38203056326) and armed the S12 RCAS sharpen on every frame.
|
|
666
1049
|
renderScale: 1,
|
|
1050
|
+
// `selective: true` is not stamped (see POST_SELECTIVE_BLOOM_UNAVAILABLE above).
|
|
667
1051
|
...(bloom ? { bloom: bloom.options } : {}),
|
|
668
1052
|
exposure,
|
|
669
1053
|
toneMapping: toneMapping,
|
|
@@ -689,10 +1073,16 @@ export function createRootPostPipeline(snapshot, camera, output, tierSettings, l
|
|
|
689
1073
|
samples: (tierResolution?.godRays.enabled === true ? tierResolution.godRays.samples : 32),
|
|
690
1074
|
decay: 0.94,
|
|
691
1075
|
weight: numberField(volumetricNode, "intensity", 0.7),
|
|
692
|
-
|
|
1076
|
+
// GU47 E-C (EC-8): S4 shaft density comes from `godRayDensity` only;
|
|
1077
|
+
// the fog `density` no longer rides along (S4 never read it), and an
|
|
1078
|
+
// omitted value keeps the full march.
|
|
1079
|
+
...(godRayDensityOf(volumetricNode) !== undefined ? { density: godRayDensityOf(volumetricNode) } : {}),
|
|
1080
|
+
// GU47 phase 2: the fog `density` is the shaft medium (distance scaling), never the march density.
|
|
1081
|
+
medium: numberField(volumetricNode, "density", 0.18),
|
|
693
1082
|
intensity: numberField(volumetricNode, "intensity", 0.7),
|
|
694
1083
|
color: rgbField(volumetricNode, "color", { r: 0.44, g: 0.52, b: 0.73 }),
|
|
695
|
-
|
|
1084
|
+
// GU47 pass 4 (g08, g18): only a 3-number lightPosition is a world point; the UV pair is the forward anchor.
|
|
1085
|
+
lightWorld: Array.isArray(volumetricNode.lightPosition) && volumetricNode.lightPosition.length === 3 ? volumetricNode.lightPosition.slice(0, 3) : undefined,
|
|
696
1086
|
...(godRayLightDirection ? { lightDirection: godRayLightDirection } : {})
|
|
697
1087
|
}
|
|
698
1088
|
} : {}),
|
|
@@ -707,7 +1097,9 @@ export function createRootPostPipeline(snapshot, camera, output, tierSettings, l
|
|
|
707
1097
|
focalLengthMm: numberField(dofNode, "focalLength", 50),
|
|
708
1098
|
maxBlurPx: numberField(dofNode, "maxBlur", 12),
|
|
709
1099
|
halfRes: tierResolution?.dof.enabled === true ? tierResolution.dof.halfRes : true,
|
|
710
|
-
sensorHeightMm: 24
|
|
1100
|
+
sensorHeightMm: 24,
|
|
1101
|
+
// GU47 E-C (EC-8): screen-space band mode replaces the thin-lens CoC.
|
|
1102
|
+
...(dofTiltShiftOf(dofNode) ? { tiltShift: dofTiltShiftOf(dofNode) } : {})
|
|
711
1103
|
}
|
|
712
1104
|
} : {}),
|
|
713
1105
|
...(mbNode && mbEnabled ? {
|
|
@@ -725,24 +1117,35 @@ export function createRootPostPipeline(snapshot, camera, output, tierSettings, l
|
|
|
725
1117
|
tileSize: numberField(mbNode, "tileSize", 16) <= 16 ? 16 : 20
|
|
726
1118
|
}
|
|
727
1119
|
} : {}),
|
|
728
|
-
|
|
1120
|
+
// GU47 E-C (EC-6): an authored screenSpaceReflections node runs the S3
|
|
1121
|
+
// trace (v2Stages); roughness/thickness ride along only when authored.
|
|
1122
|
+
...(ssrNode && ssrEnabled ? {
|
|
1123
|
+
ssr: {
|
|
1124
|
+
intensity: numberField(ssrNode, "intensity", 0.9),
|
|
1125
|
+
maxDistance: numberField(ssrNode, "maxDistance", 18),
|
|
1126
|
+
...(Number.isFinite(numberField(ssrNode, "roughness", NaN)) ? { roughness: numberField(ssrNode, "roughness", 0) } : {}),
|
|
1127
|
+
...(Number.isFinite(numberField(ssrNode, "thickness", NaN)) ? { thickness: numberField(ssrNode, "thickness", 0.25) } : {})
|
|
1128
|
+
}
|
|
1129
|
+
} : {}),
|
|
729
1130
|
...(gradeNode ? {
|
|
730
1131
|
grade: {
|
|
731
|
-
|
|
732
|
-
|
|
1132
|
+
// GU47 E-C: these reach pixels in the S10 linear grade (v2Stages
|
|
1133
|
+
// `runHdrGradeDraw`); an all-default bag resolves to no draw.
|
|
1134
|
+
temperature: clampUnit(authoredNumber(gradeNode, "temperature", 0)),
|
|
1135
|
+
tint: clampUnit(authoredNumber(gradeNode, "tint", 0)),
|
|
733
1136
|
contrast: authoredNumber(gradeNode, "contrast", 1),
|
|
734
1137
|
saturation: authoredNumber(gradeNode, "saturation", 1),
|
|
735
1138
|
vibrance: authoredNumber(gradeNode, "vibrance", 0),
|
|
736
|
-
lift:
|
|
737
|
-
gamma:
|
|
738
|
-
gain:
|
|
739
|
-
shadows:
|
|
740
|
-
midtones:
|
|
741
|
-
highlights:
|
|
1139
|
+
lift: gradeRgbField(gradeNode, "lift", { r: 0, g: 0, b: 0 }),
|
|
1140
|
+
gamma: gradeRgbField(gradeNode, "gamma", { r: 1, g: 1, b: 1 }),
|
|
1141
|
+
gain: gradeRgbField(gradeNode, "gain", { r: 1, g: 1, b: 1 }),
|
|
1142
|
+
shadows: gradeRgbField(gradeNode, "shadows", { r: 1, g: 1, b: 1 }),
|
|
1143
|
+
midtones: gradeRgbField(gradeNode, "midtones", { r: 1, g: 1, b: 1 }),
|
|
1144
|
+
highlights: gradeRgbField(gradeNode, "highlights", { r: 1, g: 1, b: 1 }),
|
|
742
1145
|
lutIntensity: authoredNumber(gradeNode, "lutIntensity", 1)
|
|
743
1146
|
}
|
|
744
1147
|
} : {}),
|
|
745
|
-
...(
|
|
1148
|
+
...(lutBag ? { lut: lutBag } : {}),
|
|
746
1149
|
...(vignetteNode ? {
|
|
747
1150
|
vignette: {
|
|
748
1151
|
intensity: numberField(vignetteNode, "intensity", 0.3),
|