@aura3d/engine 4.3.7 → 4.6.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/README.md +1 -0
- package/dist/animation/AnimationTrack.d.ts.map +1 -1
- package/dist/animation/AnimationTrack.js +3 -1
- package/dist/animation/AnimationTrack.js.map +1 -1
- package/dist/animation/pose/BoneMask.d.ts +8 -0
- package/dist/animation/pose/BoneMask.d.ts.map +1 -1
- package/dist/animation/pose/BoneMask.js +18 -1
- package/dist/animation/pose/BoneMask.js.map +1 -1
- package/dist/animation/pose/PoseMixer.d.ts +18 -2
- package/dist/animation/pose/PoseMixer.d.ts.map +1 -1
- package/dist/animation/pose/PoseMixer.js +55 -4
- package/dist/animation/pose/PoseMixer.js.map +1 -1
- package/dist/animation/pose/RetargetWorker.d.ts +8 -1
- package/dist/animation/pose/RetargetWorker.d.ts.map +1 -1
- package/dist/animation/pose/RetargetWorker.js +30 -2
- package/dist/animation/pose/RetargetWorker.js.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +11 -4
- package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
- package/dist/assets/GLTFLoader.d.ts +2 -0
- package/dist/assets/GLTFLoader.d.ts.map +1 -1
- package/dist/assets/GLTFLoader.js +17 -3
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +6 -0
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +28 -0
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/emit.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/emit.js +109 -29
- package/dist/aura3d-cli/migrate-three/emit.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/mappings.d.ts +15 -0
- package/dist/aura3d-cli/migrate-three/mappings.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/mappings.js +70 -60
- package/dist/aura3d-cli/migrate-three/mappings.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/parse.d.ts +9 -0
- package/dist/aura3d-cli/migrate-three/parse.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/parse.js +1 -1
- package/dist/aura3d-cli/migrate-three/parse.js.map +1 -1
- package/dist/create-aura3d/cli.js +22 -2
- package/dist/create-aura3d/cli.js.map +1 -1
- package/dist/create-aura3d/index.d.ts +11 -0
- package/dist/create-aura3d/index.d.ts.map +1 -1
- package/dist/create-aura3d/index.js +9 -2
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/create-aura3d/template-assets.d.ts +53 -0
- package/dist/create-aura3d/template-assets.d.ts.map +1 -0
- package/dist/create-aura3d/template-assets.js +116 -0
- package/dist/create-aura3d/template-assets.js.map +1 -0
- package/dist/engine/agent-api/Clock.d.ts +9 -3
- package/dist/engine/agent-api/Clock.d.ts.map +1 -1
- package/dist/engine/agent-api/Clock.js +17 -6
- package/dist/engine/agent-api/Clock.js.map +1 -1
- package/dist/engine/agent-api/animationMask.d.ts +26 -0
- package/dist/engine/agent-api/animationMask.d.ts.map +1 -0
- package/dist/engine/agent-api/animationMask.js +38 -0
- package/dist/engine/agent-api/animationMask.js.map +1 -0
- 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 +26 -3
- package/dist/engine/agent-api/app/actorAnimationHandle.js.map +1 -1
- package/dist/engine/agent-api/app/canvas.d.ts +21 -0
- package/dist/engine/agent-api/app/canvas.d.ts.map +1 -1
- package/dist/engine/agent-api/app/canvas.js +119 -7
- package/dist/engine/agent-api/app/canvas.js.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.js +153 -14
- package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.d.ts +13 -0
- package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.js +118 -15
- package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
- package/dist/engine/agent-api/app/mountRenderer.d.ts +6 -1
- package/dist/engine/agent-api/app/mountRenderer.d.ts.map +1 -1
- package/dist/engine/agent-api/app/mountRenderer.js +2 -2
- package/dist/engine/agent-api/app/mountRenderer.js.map +1 -1
- package/dist/engine/agent-api/app/parentFit.d.ts +20 -2
- package/dist/engine/agent-api/app/parentFit.d.ts.map +1 -1
- package/dist/engine/agent-api/app/parentFit.js +13 -9
- package/dist/engine/agent-api/app/parentFit.js.map +1 -1
- package/dist/engine/agent-api/app/renderPath.d.ts +86 -0
- package/dist/engine/agent-api/app/renderPath.d.ts.map +1 -0
- package/dist/engine/agent-api/app/renderPath.js +269 -0
- package/dist/engine/agent-api/app/renderPath.js.map +1 -0
- package/dist/engine/agent-api/app/rendererOptions.d.ts +31 -1
- package/dist/engine/agent-api/app/rendererOptions.d.ts.map +1 -1
- package/dist/engine/agent-api/app/rendererOptions.js +74 -7
- package/dist/engine/agent-api/app/rendererOptions.js.map +1 -1
- package/dist/engine/agent-api/app/routeState.d.ts.map +1 -1
- package/dist/engine/agent-api/app/routeState.js +8 -3
- package/dist/engine/agent-api/app/routeState.js.map +1 -1
- package/dist/engine/agent-api/app/runtimeNodes.d.ts +2 -0
- package/dist/engine/agent-api/app/runtimeNodes.d.ts.map +1 -1
- package/dist/engine/agent-api/app/runtimeNodes.js +111 -2
- package/dist/engine/agent-api/app/runtimeNodes.js.map +1 -1
- package/dist/engine/agent-api/camera/extension.d.ts.map +1 -1
- package/dist/engine/agent-api/camera/extension.js +2 -2
- package/dist/engine/agent-api/camera/extension.js.map +1 -1
- package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts +2 -0
- package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts.map +1 -1
- package/dist/engine/agent-api/camera/rigs/fromSpec.js +11 -1
- package/dist/engine/agent-api/camera/rigs/fromSpec.js.map +1 -1
- package/dist/engine/agent-api/compiler/animation.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/animation.js +4 -2
- package/dist/engine/agent-api/compiler/animation.js.map +1 -1
- package/dist/engine/agent-api/compiler/camera.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/camera.js +10 -0
- package/dist/engine/agent-api/compiler/camera.js.map +1 -1
- package/dist/engine/agent-api/compiler/compileScene.d.ts +21 -5
- package/dist/engine/agent-api/compiler/compileScene.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/compileScene.js +112 -13
- package/dist/engine/agent-api/compiler/compileScene.js.map +1 -1
- package/dist/engine/agent-api/compiler/contactShadowKey.d.ts +14 -0
- package/dist/engine/agent-api/compiler/contactShadowKey.d.ts.map +1 -0
- package/dist/engine/agent-api/compiler/contactShadowKey.js +66 -0
- package/dist/engine/agent-api/compiler/contactShadowKey.js.map +1 -0
- package/dist/engine/agent-api/compiler/environment.d.ts +56 -2
- package/dist/engine/agent-api/compiler/environment.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/environment.js +202 -15
- package/dist/engine/agent-api/compiler/environment.js.map +1 -1
- package/dist/engine/agent-api/compiler/geometry.d.ts +18 -1
- package/dist/engine/agent-api/compiler/geometry.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/geometry.js +25 -5
- package/dist/engine/agent-api/compiler/geometry.js.map +1 -1
- package/dist/engine/agent-api/compiler/lights.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/lights.js +14 -6
- package/dist/engine/agent-api/compiler/lights.js.map +1 -1
- package/dist/engine/agent-api/compiler/mountedRoots.d.ts +6 -0
- package/dist/engine/agent-api/compiler/mountedRoots.d.ts.map +1 -0
- package/dist/engine/agent-api/compiler/mountedRoots.js +25 -0
- package/dist/engine/agent-api/compiler/mountedRoots.js.map +1 -0
- package/dist/engine/agent-api/compiler/observations.d.ts +9 -1
- package/dist/engine/agent-api/compiler/observations.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/observations.js +5 -4
- package/dist/engine/agent-api/compiler/observations.js.map +1 -1
- package/dist/engine/agent-api/compiler/optionCoverage.js +17 -0
- package/dist/engine/agent-api/compiler/optionCoverage.js.map +1 -1
- package/dist/engine/agent-api/compiler/postprocess.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/postprocess.js +2 -0
- package/dist/engine/agent-api/compiler/postprocess.js.map +1 -1
- package/dist/engine/agent-api/compiler/primitives.d.ts +34 -0
- package/dist/engine/agent-api/compiler/primitives.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/primitives.js +113 -3
- package/dist/engine/agent-api/compiler/primitives.js.map +1 -1
- package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/renderInput.js +40 -4
- package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
- package/dist/engine/agent-api/compiler/renderer.d.ts +6 -4
- package/dist/engine/agent-api/compiler/renderer.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/renderer.js +54 -14
- package/dist/engine/agent-api/compiler/renderer.js.map +1 -1
- package/dist/engine/agent-api/compiler/shadows.d.ts +35 -1
- package/dist/engine/agent-api/compiler/shadows.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/shadows.js +103 -4
- package/dist/engine/agent-api/compiler/shadows.js.map +1 -1
- package/dist/engine/agent-api/diagnostics.d.ts +22 -0
- package/dist/engine/agent-api/diagnostics.d.ts.map +1 -1
- package/dist/engine/agent-api/diagnostics.js +53 -1
- package/dist/engine/agent-api/diagnostics.js.map +1 -1
- package/dist/engine/agent-api/feel/extension.d.ts.map +1 -1
- package/dist/engine/agent-api/feel/extension.js +2 -1
- package/dist/engine/agent-api/feel/extension.js.map +1 -1
- package/dist/engine/agent-api/looks/lookFill.d.ts +4 -0
- package/dist/engine/agent-api/looks/lookFill.d.ts.map +1 -0
- package/dist/engine/agent-api/looks/lookFill.js +29 -0
- package/dist/engine/agent-api/looks/lookFill.js.map +1 -0
- package/dist/engine/agent-api/looks/lookPresets.d.ts +13 -0
- package/dist/engine/agent-api/looks/lookPresets.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/lookPresets.js +5 -0
- package/dist/engine/agent-api/looks/lookPresets.js.map +1 -1
- package/dist/engine/agent-api/looks/looks.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/looks.js +6 -0
- package/dist/engine/agent-api/looks/looks.js.map +1 -1
- package/dist/engine/agent-api/looks/structuralQA.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/structuralQA.js +4 -2
- package/dist/engine/agent-api/looks/structuralQA.js.map +1 -1
- package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts +5 -4
- package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/game/instanceTransforms.js +61 -5
- package/dist/engine/agent-api/nodes/game/instanceTransforms.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 -1
- package/dist/engine/agent-api/nodes/groups.js.map +1 -1
- package/dist/engine/agent-api/nodes/instances.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/instances.js +16 -4
- package/dist/engine/agent-api/nodes/instances.js.map +1 -1
- package/dist/engine/agent-api/nodes/interactions.d.ts +32 -10
- package/dist/engine/agent-api/nodes/interactions.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/interactions.js +40 -11
- package/dist/engine/agent-api/nodes/interactions.js.map +1 -1
- package/dist/engine/agent-api/nodes/model.d.ts +18 -0
- package/dist/engine/agent-api/nodes/model.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/model.js +41 -1
- package/dist/engine/agent-api/nodes/model.js.map +1 -1
- package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts +14 -0
- package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/optionDiagnostics.js +34 -0
- package/dist/engine/agent-api/nodes/optionDiagnostics.js.map +1 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.d.ts +9 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.js +52 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.js.map +1 -0
- package/dist/engine/agent-api/nodes/physics.d.ts +26 -0
- package/dist/engine/agent-api/nodes/physics.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/physics.js +115 -7
- package/dist/engine/agent-api/nodes/physics.js.map +1 -1
- package/dist/engine/agent-api/nodes/primitives.d.ts +16 -1
- package/dist/engine/agent-api/nodes/primitives.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/primitives.js +27 -1
- package/dist/engine/agent-api/nodes/primitives.js.map +1 -1
- package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/scene.js +4 -2
- package/dist/engine/agent-api/nodes/scene.js.map +1 -1
- package/dist/engine/agent-api/nodes/text3d.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/text3d.js +11 -2
- package/dist/engine/agent-api/nodes/text3d.js.map +1 -1
- package/dist/engine/agent-api/nodes/types/runtime.d.ts +38 -0
- package/dist/engine/agent-api/nodes/types/runtime.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/types.d.ts +44 -0
- package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
- package/dist/engine/agent-api/platform.d.ts +5 -0
- package/dist/engine/agent-api/platform.d.ts.map +1 -1
- package/dist/engine/agent-api/platform.js +15 -0
- package/dist/engine/agent-api/platform.js.map +1 -1
- package/dist/engine/agent-api/postBridge.d.ts.map +1 -1
- package/dist/engine/agent-api/postBridge.js +5 -1
- package/dist/engine/agent-api/postBridge.js.map +1 -1
- package/dist/engine/agent-api/sceneKitDiagnostics.d.ts.map +1 -1
- package/dist/engine/agent-api/sceneKitDiagnostics.js +5 -2
- package/dist/engine/agent-api/sceneKitDiagnostics.js.map +1 -1
- package/dist/engine/contracts/animation.d.ts +5 -3
- package/dist/engine/contracts/animation.d.ts.map +1 -1
- package/dist/engine/contracts/animation.js.map +1 -1
- package/dist/engine/contracts/environment.d.ts +9 -0
- package/dist/engine/contracts/environment.d.ts.map +1 -1
- package/dist/engine/contracts/environment.js.map +1 -1
- package/dist/engine/contracts/flags.d.ts.map +1 -1
- package/dist/engine/contracts/flags.js +2 -1
- package/dist/engine/contracts/flags.js.map +1 -1
- package/dist/engine/contracts/lighting.d.ts +3 -0
- package/dist/engine/contracts/lighting.d.ts.map +1 -1
- package/dist/engine/contracts/lighting.js.map +1 -1
- package/dist/engine/contracts/stubs/game.d.ts.map +1 -1
- package/dist/engine/contracts/stubs/game.js +9 -1
- package/dist/engine/contracts/stubs/game.js.map +1 -1
- package/dist/engine/contracts/urlCache.d.ts +4 -0
- package/dist/engine/contracts/urlCache.d.ts.map +1 -0
- package/dist/engine/contracts/urlCache.js +25 -0
- package/dist/engine/contracts/urlCache.js.map +1 -0
- package/dist/engine/lanes/prd01/outputSurface.d.ts.map +1 -1
- package/dist/engine/lanes/prd01/outputSurface.js +25 -1
- package/dist/engine/lanes/prd01/outputSurface.js.map +1 -1
- package/dist/engine/lanes/prd02.d.ts +12 -4
- package/dist/engine/lanes/prd02.d.ts.map +1 -1
- package/dist/engine/lanes/prd02.js +23 -7
- package/dist/engine/lanes/prd02.js.map +1 -1
- package/dist/game/touch/TouchControls.d.ts.map +1 -1
- package/dist/game/touch/TouchControls.js +48 -12
- package/dist/game/touch/TouchControls.js.map +1 -1
- package/dist/math/SphericalHarmonics3.d.ts +6 -3
- package/dist/math/SphericalHarmonics3.d.ts.map +1 -1
- package/dist/math/SphericalHarmonics3.js +8 -5
- package/dist/math/SphericalHarmonics3.js.map +1 -1
- package/dist/math/three/Box3.d.ts +106 -0
- package/dist/math/three/Box3.d.ts.map +1 -0
- package/dist/math/three/Box3.js +348 -0
- package/dist/math/three/Box3.js.map +1 -0
- package/dist/math/three/Color.d.ts +127 -0
- package/dist/math/three/Color.d.ts.map +1 -0
- package/dist/math/three/Color.js +501 -0
- package/dist/math/three/Color.js.map +1 -0
- package/dist/math/three/Euler.d.ts +50 -0
- package/dist/math/three/Euler.d.ts.map +1 -0
- package/dist/math/three/Euler.js +210 -0
- package/dist/math/three/Euler.js.map +1 -0
- package/dist/math/three/Frustum.d.ts +59 -0
- package/dist/math/three/Frustum.d.ts.map +1 -0
- package/dist/math/three/Frustum.js +135 -0
- package/dist/math/three/Frustum.js.map +1 -0
- package/dist/math/three/Matrix3.d.ts +56 -0
- package/dist/math/three/Matrix3.d.ts.map +1 -0
- package/dist/math/three/Matrix3.js +248 -0
- package/dist/math/three/Matrix3.js.map +1 -0
- package/dist/math/three/Matrix4.d.ts +79 -0
- package/dist/math/three/Matrix4.d.ts.map +1 -0
- package/dist/math/three/Matrix4.js +708 -0
- package/dist/math/three/Matrix4.js.map +1 -0
- package/dist/math/three/Plane.d.ts +65 -0
- package/dist/math/three/Plane.d.ts.map +1 -0
- package/dist/math/three/Plane.js +135 -0
- package/dist/math/three/Plane.js.map +1 -0
- package/dist/math/three/Quaternion.d.ts +91 -0
- package/dist/math/three/Quaternion.d.ts.map +1 -0
- package/dist/math/three/Quaternion.js +444 -0
- package/dist/math/three/Quaternion.js.map +1 -0
- package/dist/math/three/Ray.d.ts +56 -0
- package/dist/math/three/Ray.d.ts.map +1 -0
- package/dist/math/three/Ray.js +340 -0
- package/dist/math/three/Ray.js.map +1 -0
- package/dist/math/three/Sphere.d.ts +58 -0
- package/dist/math/three/Sphere.d.ts.map +1 -0
- package/dist/math/three/Sphere.js +166 -0
- package/dist/math/three/Sphere.js.map +1 -0
- package/dist/math/three/Triangle.d.ts +58 -0
- package/dist/math/three/Triangle.d.ts.map +1 -0
- package/dist/math/three/Triangle.js +229 -0
- package/dist/math/three/Triangle.js.map +1 -0
- package/dist/math/three/Vector2.d.ts +88 -0
- package/dist/math/three/Vector2.d.ts.map +1 -0
- package/dist/math/three/Vector2.js +283 -0
- package/dist/math/three/Vector2.js.map +1 -0
- package/dist/math/three/Vector3.d.ts +137 -0
- package/dist/math/three/Vector3.d.ts.map +1 -0
- package/dist/math/three/Vector3.js +458 -0
- package/dist/math/three/Vector3.js.map +1 -0
- package/dist/math/three/Vector4.d.ts +100 -0
- package/dist/math/three/Vector4.d.ts.map +1 -0
- package/dist/math/three/Vector4.js +443 -0
- package/dist/math/three/Vector4.js.map +1 -0
- package/dist/math/three/index.d.ts +29 -0
- package/dist/math/three/index.d.ts.map +1 -0
- package/dist/math/three/index.js +29 -0
- package/dist/math/three/index.js.map +1 -0
- package/dist/react/index.d.ts +21 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +128 -21
- package/dist/react/index.js.map +1 -1
- package/dist/rendering/DepthPass.d.ts +7 -0
- package/dist/rendering/DepthPass.d.ts.map +1 -1
- package/dist/rendering/DepthPass.js +43 -6
- package/dist/rendering/DepthPass.js.map +1 -1
- package/dist/rendering/ForwardPass.d.ts +82 -5
- package/dist/rendering/ForwardPass.d.ts.map +1 -1
- package/dist/rendering/ForwardPass.js +180 -35
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/MaterialBinding.js +6 -2
- package/dist/rendering/MaterialBinding.js.map +1 -1
- package/dist/rendering/RenderDevice.d.ts +5 -0
- package/dist/rendering/RenderDevice.d.ts.map +1 -1
- package/dist/rendering/RenderDevice.js.map +1 -1
- package/dist/rendering/Renderer.d.ts +8 -0
- package/dist/rendering/Renderer.d.ts.map +1 -1
- package/dist/rendering/Renderer.js +37 -6
- package/dist/rendering/Renderer.js.map +1 -1
- package/dist/rendering/RendererPostprocessPlan.d.ts.map +1 -1
- package/dist/rendering/RendererPostprocessPlan.js +8 -1
- package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
- package/dist/rendering/ShaderChunks.d.ts.map +1 -1
- package/dist/rendering/ShaderChunks.js +3 -1
- package/dist/rendering/ShaderChunks.js.map +1 -1
- package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/ShaderLibrary.js +17 -5
- package/dist/rendering/ShaderLibrary.js.map +1 -1
- package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -1
- package/dist/rendering/ShaderLibraryCore.js +2 -1
- package/dist/rendering/ShaderLibraryCore.js.map +1 -1
- package/dist/rendering/WebGL2Device.d.ts +19 -1
- package/dist/rendering/WebGL2Device.d.ts.map +1 -1
- package/dist/rendering/WebGL2Device.js +114 -37
- package/dist/rendering/WebGL2Device.js.map +1 -1
- package/dist/rendering/WebGL2StateCache.d.ts +22 -0
- package/dist/rendering/WebGL2StateCache.d.ts.map +1 -1
- package/dist/rendering/WebGL2StateCache.js +71 -42
- package/dist/rendering/WebGL2StateCache.js.map +1 -1
- package/dist/rendering/contracts/core.d.ts.map +1 -1
- package/dist/rendering/contracts/core.js +22 -2
- package/dist/rendering/contracts/core.js.map +1 -1
- package/dist/rendering/contracts/program.d.ts.map +1 -1
- package/dist/rendering/contracts/program.js +8 -1
- package/dist/rendering/contracts/program.js.map +1 -1
- package/dist/rendering/contracts/quality.d.ts +21 -0
- package/dist/rendering/contracts/quality.d.ts.map +1 -1
- package/dist/rendering/contracts/quality.js +5 -0
- package/dist/rendering/contracts/quality.js.map +1 -1
- package/dist/rendering/contracts/renderItem.d.ts +6 -0
- package/dist/rendering/contracts/renderItem.d.ts.map +1 -1
- package/dist/rendering/contracts/structuralMemo.d.ts +23 -0
- package/dist/rendering/contracts/structuralMemo.d.ts.map +1 -0
- package/dist/rendering/contracts/structuralMemo.js +81 -0
- package/dist/rendering/contracts/structuralMemo.js.map +1 -0
- package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
- package/dist/rendering/environment/EnvironmentCache.js +6 -1
- package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
- package/dist/rendering/environment/FirstFrameGate.d.ts +23 -0
- package/dist/rendering/environment/FirstFrameGate.d.ts.map +1 -0
- package/dist/rendering/environment/FirstFrameGate.js +58 -0
- package/dist/rendering/environment/FirstFrameGate.js.map +1 -0
- package/dist/rendering/environment/Rgb9e5Cube.d.ts.map +1 -1
- package/dist/rendering/environment/Rgb9e5Cube.js +8 -4
- package/dist/rendering/environment/Rgb9e5Cube.js.map +1 -1
- package/dist/rendering/environment/probeBuild.d.ts +29 -0
- package/dist/rendering/environment/probeBuild.d.ts.map +1 -1
- package/dist/rendering/environment/probeBuild.js +124 -45
- package/dist/rendering/environment/probeBuild.js.map +1 -1
- package/dist/rendering/forward/Lighting.d.ts +43 -3
- package/dist/rendering/forward/Lighting.d.ts.map +1 -1
- package/dist/rendering/forward/Lighting.js +127 -17
- package/dist/rendering/forward/Lighting.js.map +1 -1
- package/dist/rendering/forward/contactShadowMaskStore.d.ts +41 -0
- package/dist/rendering/forward/contactShadowMaskStore.d.ts.map +1 -0
- package/dist/rendering/forward/contactShadowMaskStore.js +85 -0
- package/dist/rendering/forward/contactShadowMaskStore.js.map +1 -0
- package/dist/rendering/geometry/Shape.d.ts.map +1 -1
- package/dist/rendering/geometry/Shape.js +7 -2
- package/dist/rendering/geometry/Shape.js.map +1 -1
- package/dist/rendering/geometry/Support.d.ts +4 -0
- package/dist/rendering/geometry/Support.d.ts.map +1 -1
- package/dist/rendering/geometry/Support.js +3 -2
- package/dist/rendering/geometry/Support.js.map +1 -1
- package/dist/rendering/index.d.ts +6 -0
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +5 -0
- package/dist/rendering/index.js.map +1 -1
- package/dist/rendering/passes/ContactShadowPass.d.ts +40 -3
- package/dist/rendering/passes/ContactShadowPass.d.ts.map +1 -1
- package/dist/rendering/passes/ContactShadowPass.js +73 -13
- package/dist/rendering/passes/ContactShadowPass.js.map +1 -1
- package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts +19 -0
- package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts.map +1 -1
- package/dist/rendering/passes/Prd02ContactShadowsContributor.js +179 -28
- package/dist/rendering/passes/Prd02ContactShadowsContributor.js.map +1 -1
- package/dist/rendering/post/v2Stages.d.ts.map +1 -1
- package/dist/rendering/post/v2Stages.js +2 -0
- package/dist/rendering/post/v2Stages.js.map +1 -1
- package/dist/rendering/program/ProgramFeatures.d.ts +6 -0
- package/dist/rendering/program/ProgramFeatures.d.ts.map +1 -1
- package/dist/rendering/program/ProgramFeatures.js +11 -5
- package/dist/rendering/program/ProgramFeatures.js.map +1 -1
- package/dist/rendering/program/ProgramGenerator.d.ts +6 -0
- package/dist/rendering/program/ProgramGenerator.d.ts.map +1 -1
- package/dist/rendering/program/ProgramGenerator.js +36 -1
- package/dist/rendering/program/ProgramGenerator.js.map +1 -1
- package/dist/rendering/program/ProgramKey.d.ts.map +1 -1
- package/dist/rendering/program/ProgramKey.js +4 -1
- package/dist/rendering/program/ProgramKey.js.map +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts.map +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.js +4 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.js.map +1 -1
- package/dist/rendering/quality/DirectPath.d.ts +56 -0
- package/dist/rendering/quality/DirectPath.d.ts.map +1 -0
- package/dist/rendering/quality/DirectPath.js +74 -0
- package/dist/rendering/quality/DirectPath.js.map +1 -0
- package/dist/rendering/renderer/Background.d.ts +0 -5
- package/dist/rendering/renderer/Background.d.ts.map +1 -1
- package/dist/rendering/renderer/Background.js +56 -4
- package/dist/rendering/renderer/Background.js.map +1 -1
- package/dist/rendering/renderer/InstanceFrustumCull.d.ts +41 -0
- package/dist/rendering/renderer/InstanceFrustumCull.d.ts.map +1 -0
- package/dist/rendering/renderer/InstanceFrustumCull.js +138 -0
- package/dist/rendering/renderer/InstanceFrustumCull.js.map +1 -0
- package/dist/rendering/renderer/ShadowOrchestration.d.ts +2 -0
- package/dist/rendering/renderer/ShadowOrchestration.d.ts.map +1 -1
- package/dist/rendering/renderer/ShadowOrchestration.js +1 -0
- package/dist/rendering/renderer/ShadowOrchestration.js.map +1 -1
- package/dist/rendering/renderer/coreOutputPostRoute.d.ts +0 -5
- package/dist/rendering/renderer/coreOutputPostRoute.d.ts.map +1 -1
- package/dist/rendering/renderer/coreOutputPostRoute.js +12 -2
- package/dist/rendering/renderer/coreOutputPostRoute.js.map +1 -1
- package/dist/rendering/resources/InstanceBuffer.d.ts +2 -0
- package/dist/rendering/resources/InstanceBuffer.d.ts.map +1 -1
- package/dist/rendering/resources/InstanceBuffer.js +23 -0
- package/dist/rendering/resources/InstanceBuffer.js.map +1 -1
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts +11 -6
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts.map +1 -1
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.js +41 -19
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.js.map +1 -1
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts +12 -0
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts.map +1 -0
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js +21 -0
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js.map +1 -0
- package/dist/rendering/shaders/chunks/lighting_ibl.glsl.d.ts +6 -1
- package/dist/rendering/shaders/chunks/lighting_ibl.glsl.d.ts.map +1 -1
- package/dist/rendering/shaders/chunks/lighting_ibl.glsl.js +8 -2
- package/dist/rendering/shaders/chunks/lighting_ibl.glsl.js.map +1 -1
- package/dist/rendering/shadows/CascadeUse.d.ts +31 -0
- package/dist/rendering/shadows/CascadeUse.d.ts.map +1 -0
- package/dist/rendering/shadows/CascadeUse.js +60 -0
- package/dist/rendering/shadows/CascadeUse.js.map +1 -0
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts +7 -1
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.js +12 -3
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.js.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.d.ts +12 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.js +17 -5
- package/dist/rendering/shadows/Prd02ShadowBridge.js.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowsContributor.d.ts +4 -0
- package/dist/rendering/shadows/Prd02ShadowsContributor.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowsContributor.js +3 -1
- package/dist/rendering/shadows/Prd02ShadowsContributor.js.map +1 -1
- package/dist/rendering/shadows/ShadowFilterTier.d.ts +51 -0
- package/dist/rendering/shadows/ShadowFilterTier.d.ts.map +1 -0
- package/dist/rendering/shadows/ShadowFilterTier.js +89 -0
- package/dist/rendering/shadows/ShadowFilterTier.js.map +1 -0
- package/dist/rendering/shadows/ShadowSystem.d.ts +15 -0
- package/dist/rendering/shadows/ShadowSystem.d.ts.map +1 -1
- package/dist/rendering/shadows/ShadowSystem.js +12 -2
- package/dist/rendering/shadows/ShadowSystem.js.map +1 -1
- package/dist/rendering/shadows/shadowLegacy.d.ts +12 -0
- package/dist/rendering/shadows/shadowLegacy.d.ts.map +1 -1
- package/dist/rendering/shadows/shadowLegacy.js +24 -0
- package/dist/rendering/shadows/shadowLegacy.js.map +1 -1
- package/dist/rendering/webgl2/BloomFusion.d.ts +31 -0
- package/dist/rendering/webgl2/BloomFusion.d.ts.map +1 -0
- package/dist/rendering/webgl2/BloomFusion.js +25 -0
- package/dist/rendering/webgl2/BloomFusion.js.map +1 -0
- package/dist/rendering/webgl2/ContextLifecycle.d.ts +14 -0
- package/dist/rendering/webgl2/ContextLifecycle.d.ts.map +1 -1
- package/dist/rendering/webgl2/ContextLifecycle.js +44 -5
- package/dist/rendering/webgl2/ContextLifecycle.js.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.d.ts +30 -0
- package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.js +259 -27
- package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
- package/dist/rendering/webgl2/MultiDraw.d.ts +2 -0
- package/dist/rendering/webgl2/MultiDraw.d.ts.map +1 -1
- package/dist/rendering/webgl2/MultiDraw.js +33 -7
- package/dist/rendering/webgl2/MultiDraw.js.map +1 -1
- package/dist/rendering/webgl2/Samplers.d.ts +10 -1
- package/dist/rendering/webgl2/Samplers.d.ts.map +1 -1
- package/dist/rendering/webgl2/Samplers.js +24 -1
- package/dist/rendering/webgl2/Samplers.js.map +1 -1
- package/dist/rendering/webgl2/TextureFormats.d.ts +12 -0
- package/dist/rendering/webgl2/TextureFormats.d.ts.map +1 -1
- package/dist/rendering/webgl2/TextureFormats.js +16 -0
- package/dist/rendering/webgl2/TextureFormats.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
- package/dist/environments/EnvironmentPreview.d.ts +0 -13
- package/dist/environments/EnvironmentPreview.d.ts.map +0 -1
- package/dist/environments/EnvironmentPreview.js +0 -16
- package/dist/environments/EnvironmentPreview.js.map +0 -1
- package/dist/environments/EnvironmentRegistry.d.ts +0 -35
- package/dist/environments/EnvironmentRegistry.d.ts.map +0 -1
- package/dist/environments/EnvironmentRegistry.js +0 -39
- package/dist/environments/EnvironmentRegistry.js.map +0 -1
- package/dist/environments/HDRIEnvironment.d.ts +0 -38
- package/dist/environments/HDRIEnvironment.d.ts.map +0 -1
- package/dist/environments/HDRIEnvironment.js +0 -34
- package/dist/environments/HDRIEnvironment.js.map +0 -1
- package/dist/environments/PMREMPreset.d.ts +0 -14
- package/dist/environments/PMREMPreset.d.ts.map +0 -1
- package/dist/environments/PMREMPreset.js +0 -16
- package/dist/environments/PMREMPreset.js.map +0 -1
- package/dist/environments/index.d.ts +0 -6
- package/dist/environments/index.d.ts.map +0 -1
- package/dist/environments/index.js +0 -3
- package/dist/environments/index.js.map +0 -1
- package/dist/environments/node.d.ts +0 -7
- package/dist/environments/node.d.ts.map +0 -1
- package/dist/environments/node.js +0 -5
- package/dist/environments/node.js.map +0 -1
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts +0 -78
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts.map +0 -1
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js +0 -67
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js.map +0 -1
- package/dist/environments/production-runtime/index.d.ts +0 -3
- package/dist/environments/production-runtime/index.d.ts.map +0 -1
- package/dist/environments/production-runtime/index.js +0 -2
- package/dist/environments/production-runtime/index.js.map +0 -1
- package/dist/environments/threejs-example-parity/index.d.ts +0 -17
- package/dist/environments/threejs-example-parity/index.d.ts.map +0 -1
- package/dist/environments/threejs-example-parity/index.js +0 -49
- package/dist/environments/threejs-example-parity/index.js.map +0 -1
- package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +0 -8
- package/templates/cinematic-scene/node_modules/.vite/deps/package.json +0 -3
- package/templates/cinematic-scene/test-results/.last-run.json +0 -6
- package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +0 -64
- package/templates/mini-game/package-lock.json +0 -1312
- package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +0 -8
- package/templates/product-viewer/node_modules/.vite/deps/package.json +0 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const EPSILON = 0.5;
|
|
2
|
-
export function createParentFit(canvas) {
|
|
3
|
-
const
|
|
4
|
-
const mountedWidth = parseFloat(canvas.style.width) ||
|
|
5
|
-
const mountedHeight = parseFloat(canvas.style.height) ||
|
|
2
|
+
export function createParentFit(canvas, own) {
|
|
3
|
+
const mountedRect = canvas.getBoundingClientRect();
|
|
4
|
+
const mountedWidth = parseFloat(canvas.style.width) || mountedRect.width || canvas.clientWidth;
|
|
5
|
+
const mountedHeight = parseFloat(canvas.style.height) || mountedRect.height || canvas.clientHeight;
|
|
6
6
|
let contentWidth = false;
|
|
7
7
|
let contentHeight = false;
|
|
8
8
|
let lastParentWidth = 0;
|
|
@@ -12,20 +12,24 @@ export function createParentFit(canvas) {
|
|
|
12
12
|
const parentRect = canvas.parentElement?.getBoundingClientRect();
|
|
13
13
|
lastParentWidth = parentRect?.width ?? 0;
|
|
14
14
|
lastParentHeight = parentRect?.height ?? 0;
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
15
|
+
const ownBox = own && (own.width || own.height) ? own.box() : undefined;
|
|
16
|
+
const ownWidth = Boolean(own?.width && ownBox && ownBox.width > 0);
|
|
17
|
+
const ownHeight = Boolean(own?.height && ownBox && ownBox.height > 0);
|
|
18
|
+
const cssWidth = ownWidth ? ownBox.width : contentWidth && mountedWidth > 0 ? mountedWidth : lastParentWidth || canvas.clientWidth || fallbackWidth;
|
|
19
|
+
const cssHeight = ownHeight ? ownBox.height : contentHeight && mountedHeight > 0 ? mountedHeight : lastParentHeight || canvas.clientHeight || fallbackHeight;
|
|
20
|
+
return { cssWidth, cssHeight, ownWidth, ownHeight };
|
|
18
21
|
},
|
|
19
22
|
settle() {
|
|
20
23
|
const parentRect = canvas.parentElement?.getBoundingClientRect();
|
|
21
24
|
if (!parentRect)
|
|
22
25
|
return false;
|
|
23
26
|
let frozen = false;
|
|
24
|
-
|
|
27
|
+
// Axes sized by the page's CSS do not follow the parent, so they cannot feed back into it.
|
|
28
|
+
if (!own?.width && !contentWidth && Math.abs(parentRect.width - lastParentWidth) > EPSILON) {
|
|
25
29
|
contentWidth = true;
|
|
26
30
|
frozen = true;
|
|
27
31
|
}
|
|
28
|
-
if (!contentHeight && Math.abs(parentRect.height - lastParentHeight) > EPSILON) {
|
|
32
|
+
if (!own?.height && !contentHeight && Math.abs(parentRect.height - lastParentHeight) > EPSILON) {
|
|
29
33
|
contentHeight = true;
|
|
30
34
|
frozen = true;
|
|
31
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parentFit.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/app/parentFit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parentFit.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/app/parentFit.ts"],"names":[],"mappings":"AAmCA,MAAM,OAAO,GAAG,GAAG,CAAC;AAEpB,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,GAAe;IACtE,MAAM,WAAW,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,CAAC;IAC/F,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;IACnG,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,OAAO;QACL,OAAO,CAAC,aAAa,EAAE,cAAc;YACnC,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,CAAC;YACjE,eAAe,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC;YACzC,gBAAgB,GAAG,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,WAAW,IAAI,aAAa,CAAC;YACrJ,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,IAAI,MAAM,CAAC,YAAY,IAAI,cAAc,CAAC;YAC9J,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QACtD,CAAC;QACD,MAAM;YACJ,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,CAAC;YACjE,IAAI,CAAC,UAAU;gBAAE,OAAO,KAAK,CAAC;YAC9B,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,2FAA2F;YAC3F,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,OAAO,EAAE,CAAC;gBAAC,YAAY,GAAG,IAAI,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC;YACnI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,gBAAgB,CAAC,GAAG,OAAO,EAAE,CAAC;gBAAC,aAAa,GAAG,IAAI,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC;YACxI,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type AuraQualityMode, type BloomFusionConfig, type DirectPathItemLike, type RenderPathDecision } from "../../../rendering/index.js";
|
|
2
|
+
import type { AuraBloomFusion, QrFlags } from "../../../rendering/contracts/index.js";
|
|
3
|
+
import type { AuraCreateAppOptions, AuraSceneSnapshot } from "../nodes/types.js";
|
|
4
|
+
/** What `app.diagnostics().renderPath` reports. */
|
|
5
|
+
export interface AuraRenderPathReport {
|
|
6
|
+
readonly path: RenderPathDecision["path"];
|
|
7
|
+
readonly quality: AuraQualityMode;
|
|
8
|
+
readonly reason: string;
|
|
9
|
+
/**
|
|
10
|
+
* Bloom pass fusion mode that applies to this mount. `"off"` whenever no fused bloom pass can be issued: quality `production` or
|
|
11
|
+
* `safe-basic`, the direct path (no post chain), the legacy LDR route (not HDR, so the pyramid never fuses), or a scene with no
|
|
12
|
+
* bloom effect. Otherwise the selected mode. The pyramid itself additionally needs a five-mip-or-fewer plan, which depends on the
|
|
13
|
+
* canvas size and is only known at render time.
|
|
14
|
+
*/
|
|
15
|
+
readonly bloomFusion: AuraBloomFusion | "off";
|
|
16
|
+
}
|
|
17
|
+
/** Fusion is allowed only under quality `auto` or `cinematic`; the mount (`applyRenderPathToCanvas`) and the report both use this. */
|
|
18
|
+
export declare function bloomFusionAllowed(quality: AuraQualityMode): boolean;
|
|
19
|
+
export interface AppRenderPath {
|
|
20
|
+
readonly report: AuraRenderPathReport;
|
|
21
|
+
/** Flags to hand the renderer; the app's own flags unchanged on the HDR path. */
|
|
22
|
+
readonly flags: QrFlags;
|
|
23
|
+
/**
|
|
24
|
+
* True when this mount chose the direct path over the HDR one: the source then carries no
|
|
25
|
+
* postprocess at all (no default tone-mapping chain), so the forward pass renders straight into
|
|
26
|
+
* the canvas framebuffer and encodes in-shader.
|
|
27
|
+
*/
|
|
28
|
+
readonly direct: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Warnings for `diagnostics().warnings`: ignored URL switches (RP-04, `QUALITY_URL_IGNORED:`) and what `safe-basic` does not
|
|
31
|
+
* render (RP-06, `SAFE_BASIC_DROPS:`).
|
|
32
|
+
*/
|
|
33
|
+
readonly warnings: readonly string[];
|
|
34
|
+
}
|
|
35
|
+
/** Record (per canvas, per mount) that the direct path was chosen; read by the render-input and clear-colour code. */
|
|
36
|
+
export declare function setDirectRenderPath(canvas: object, direct: boolean): void;
|
|
37
|
+
/** Record (per canvas, per mount) that look-neutral bloom pass fusion is allowed: quality `auto` or `cinematic`, never `production`. */
|
|
38
|
+
export declare function setFusedBloomPasses(canvas: object, enabled: boolean): void;
|
|
39
|
+
export declare function isFusedBloomPasses(canvas: object | undefined): boolean;
|
|
40
|
+
/** Record this mount's route on the canvas: whether it is direct, and whether bloom pass fusion is allowed (one predicate: `bloomFusionAllowed`). */
|
|
41
|
+
export declare function applyRenderPathToCanvas(canvas: object, renderPath: Pick<AppRenderPath, "direct" | "report">): void;
|
|
42
|
+
/** The device fields the fused bloom pyramid reads. */
|
|
43
|
+
export interface BloomFusionDevice {
|
|
44
|
+
bloomFusedPasses?: boolean;
|
|
45
|
+
bloomFusion?: BloomFusionConfig;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Configure a freshly created render device for this canvas's route: fused bloom passes plus the selected mode when the mount
|
|
49
|
+
* allowed fusion (`auto` / `cinematic`), nothing at all otherwise so `production` keeps the original pass sequence.
|
|
50
|
+
*/
|
|
51
|
+
export declare function configureBloomFusionDevice(device: BloomFusionDevice, canvas: object | undefined, rendererOptions: AuraCreateAppOptions["renderer"]): void;
|
|
52
|
+
export declare function isDirectRenderPath(canvas: object | undefined): boolean;
|
|
53
|
+
/** Add a reason that keeps `canvas` off the direct path; returns a release function (reference counted per reason). */
|
|
54
|
+
export declare function vetoDirectPath(canvas: object, reason: string): () => void;
|
|
55
|
+
export declare function directPathVetoReasons(canvas: object | undefined): string[];
|
|
56
|
+
/** RP-01: decoded-material blockers of a mounted scene's GLB actors (their render items at the default placement). */
|
|
57
|
+
export declare function decodedModelDirectPathBlockers(actors: readonly {
|
|
58
|
+
readonly actor: {
|
|
59
|
+
collectRenderItems(): readonly DirectPathItemLike[];
|
|
60
|
+
};
|
|
61
|
+
}[]): string[];
|
|
62
|
+
/** Called by the mount once its GLBs are decoded (direct path only); read once by the frame loop through {@link takeDecodedDirectPathBlockers}. */
|
|
63
|
+
export declare function recordDecodedDirectPathBlockers(canvas: object, blockers: readonly string[]): void;
|
|
64
|
+
export declare function takeDecodedDirectPathBlockers(canvas: object): readonly string[];
|
|
65
|
+
/** Reasons this scene needs the HDR target. Conservative: anything not known to render identically on the direct path is listed. */
|
|
66
|
+
export declare function renderPathBlockers(snapshot: AuraSceneSnapshot, options: AuraCreateAppOptions): string[];
|
|
67
|
+
/**
|
|
68
|
+
* The node-level part of {@link renderPathBlockers}: effects other than fog, node kinds the direct path does not draw, HDRI
|
|
69
|
+
* environments, and custom, transmissive or transparent materials (authored, from the asset manifest, or overrides). Also used for
|
|
70
|
+
* nodes added at runtime (RP-03).
|
|
71
|
+
*/
|
|
72
|
+
export declare function nodeDirectPathBlockers(nodes: AuraSceneSnapshot["nodes"]): string[];
|
|
73
|
+
export interface ResolveAppRenderPathContext {
|
|
74
|
+
/** URL query to read the debug switches from; defaults to `location.search`. */
|
|
75
|
+
readonly search?: string | null;
|
|
76
|
+
/** Reasons found after mount that keep this canvas off the direct path (see {@link vetoDirectPath}). */
|
|
77
|
+
readonly extraBlockers?: readonly string[];
|
|
78
|
+
}
|
|
79
|
+
export declare function resolveAppRenderPath(snapshot: AuraSceneSnapshot, options: AuraCreateAppOptions, flags: QrFlags, context?: ResolveAppRenderPathContext): AppRenderPath;
|
|
80
|
+
/**
|
|
81
|
+
* Whether the WebGL drawing buffer must survive presentation: capture and
|
|
82
|
+
* evidence runs read the canvas after the frame was presented. An explicit
|
|
83
|
+
* `preserveDrawingBuffer` option wins; otherwise `?capture=1` / `?qa=1`.
|
|
84
|
+
*/
|
|
85
|
+
export declare function wantsPreservedDrawingBuffer(options: Pick<AuraCreateAppOptions, "preserveDrawingBuffer">, search?: string | null): boolean;
|
|
86
|
+
//# sourceMappingURL=renderPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderPath.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/app/renderPath.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
// beat-three.js L-P1: pick the render path for one mount (direct canvas MSAA vs HDR multisampled target).
|
|
2
|
+
import { directPathItemBlockers, isQualityMode, qrCoreOutputOn, resolveBloomFusionConfig, resolveRenderPath, withDirectPath } from "../../../rendering/index.js";
|
|
3
|
+
import { groups } from "../nodes/groups.js";
|
|
4
|
+
import { ignoreInvalidUrlValue, parseBloomFusionOption } from "./rendererOptions.js";
|
|
5
|
+
/** Fusion is allowed only under quality `auto` or `cinematic`; the mount (`applyRenderPathToCanvas`) and the report both use this. */
|
|
6
|
+
export function bloomFusionAllowed(quality) {
|
|
7
|
+
return quality === "auto" || quality === "cinematic";
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The bloom fusion mode to report. The pyramid fuses only on the HDR route (`hdr-msaa`) and only when the scene has a bloom
|
|
11
|
+
* effect (the only source of a bloom pass), so every other combination reports `"off"`. The option is validated first so a
|
|
12
|
+
* typo throws whatever the quality.
|
|
13
|
+
*/
|
|
14
|
+
function reportedBloomFusion(quality, path, legacyLdrRoute, snapshot, options, search, policy) {
|
|
15
|
+
const mode = parseBloomFusionOption(options.renderer, search, policy);
|
|
16
|
+
if (!bloomFusionAllowed(quality) || path !== "hdr-msaa" || legacyLdrRoute)
|
|
17
|
+
return "off";
|
|
18
|
+
const hasBloom = groups.flatten(snapshot.nodes).some((node) => node.kind === "effect" && node.effect === "bloom");
|
|
19
|
+
return hasBloom ? mode : "off";
|
|
20
|
+
}
|
|
21
|
+
const directPathCanvases = new WeakSet();
|
|
22
|
+
/** Record (per canvas, per mount) that the direct path was chosen; read by the render-input and clear-colour code. */
|
|
23
|
+
export function setDirectRenderPath(canvas, direct) {
|
|
24
|
+
if (direct)
|
|
25
|
+
directPathCanvases.add(canvas);
|
|
26
|
+
else
|
|
27
|
+
directPathCanvases.delete(canvas);
|
|
28
|
+
}
|
|
29
|
+
const fusedBloomCanvases = new WeakSet();
|
|
30
|
+
/** Record (per canvas, per mount) that look-neutral bloom pass fusion is allowed: quality `auto` or `cinematic`, never `production`. */
|
|
31
|
+
export function setFusedBloomPasses(canvas, enabled) {
|
|
32
|
+
if (enabled)
|
|
33
|
+
fusedBloomCanvases.add(canvas);
|
|
34
|
+
else
|
|
35
|
+
fusedBloomCanvases.delete(canvas);
|
|
36
|
+
}
|
|
37
|
+
export function isFusedBloomPasses(canvas) {
|
|
38
|
+
return canvas !== undefined && fusedBloomCanvases.has(canvas);
|
|
39
|
+
}
|
|
40
|
+
/** Record this mount's route on the canvas: whether it is direct, and whether bloom pass fusion is allowed (one predicate: `bloomFusionAllowed`). */
|
|
41
|
+
export function applyRenderPathToCanvas(canvas, renderPath) {
|
|
42
|
+
setDirectRenderPath(canvas, renderPath.direct);
|
|
43
|
+
setFusedBloomPasses(canvas, bloomFusionAllowed(renderPath.report.quality));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Configure a freshly created render device for this canvas's route: fused bloom passes plus the selected mode when the mount
|
|
47
|
+
* allowed fusion (`auto` / `cinematic`), nothing at all otherwise so `production` keeps the original pass sequence.
|
|
48
|
+
*/
|
|
49
|
+
export function configureBloomFusionDevice(device, canvas, rendererOptions) {
|
|
50
|
+
if (!isFusedBloomPasses(canvas))
|
|
51
|
+
return;
|
|
52
|
+
device.bloomFusedPasses = true;
|
|
53
|
+
device.bloomFusion = resolveBloomFusionConfig(parseBloomFusionOption(rendererOptions));
|
|
54
|
+
}
|
|
55
|
+
export function isDirectRenderPath(canvas) {
|
|
56
|
+
return canvas !== undefined && directPathCanvases.has(canvas);
|
|
57
|
+
}
|
|
58
|
+
/*
|
|
59
|
+
* RP-01 / RP-03: reasons, found after the path was chosen, why this canvas must leave the direct path. The direct-path decision
|
|
60
|
+
* reads the authored snapshot, so it cannot see a GLB's own BLEND or transmission materials (known only once decoded) or a custom
|
|
61
|
+
* post pass registered after mount. Each mount on the canvas reads these as extra blockers, so the re-mount takes the HDR target.
|
|
62
|
+
*/
|
|
63
|
+
const directPathVetoes = new WeakMap();
|
|
64
|
+
/** Add a reason that keeps `canvas` off the direct path; returns a release function (reference counted per reason). */
|
|
65
|
+
export function vetoDirectPath(canvas, reason) {
|
|
66
|
+
let reasons = directPathVetoes.get(canvas);
|
|
67
|
+
if (!reasons)
|
|
68
|
+
directPathVetoes.set(canvas, (reasons = new Map()));
|
|
69
|
+
reasons.set(reason, (reasons.get(reason) ?? 0) + 1);
|
|
70
|
+
let released = false;
|
|
71
|
+
return () => {
|
|
72
|
+
if (released)
|
|
73
|
+
return;
|
|
74
|
+
released = true;
|
|
75
|
+
const count = (reasons.get(reason) ?? 1) - 1;
|
|
76
|
+
if (count > 0)
|
|
77
|
+
reasons.set(reason, count);
|
|
78
|
+
else
|
|
79
|
+
reasons.delete(reason);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export function directPathVetoReasons(canvas) {
|
|
83
|
+
return canvas === undefined ? [] : [...(directPathVetoes.get(canvas)?.keys() ?? [])];
|
|
84
|
+
}
|
|
85
|
+
/** RP-01: decoded-material blockers of a mounted scene's GLB actors (their render items at the default placement). */
|
|
86
|
+
export function decodedModelDirectPathBlockers(actors) {
|
|
87
|
+
if (actors.length === 0)
|
|
88
|
+
return [];
|
|
89
|
+
const items = [];
|
|
90
|
+
for (const entry of actors) {
|
|
91
|
+
try {
|
|
92
|
+
items.push(...entry.actor.collectRenderItems());
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// An actor that cannot collect here is not evidence either way; the frame loop reports its own errors.
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return directPathItemBlockers(items);
|
|
99
|
+
}
|
|
100
|
+
const decodedBlockers = new WeakMap();
|
|
101
|
+
/** Called by the mount once its GLBs are decoded (direct path only); read once by the frame loop through {@link takeDecodedDirectPathBlockers}. */
|
|
102
|
+
export function recordDecodedDirectPathBlockers(canvas, blockers) {
|
|
103
|
+
if (blockers.length > 0)
|
|
104
|
+
decodedBlockers.set(canvas, blockers);
|
|
105
|
+
else
|
|
106
|
+
decodedBlockers.delete(canvas);
|
|
107
|
+
}
|
|
108
|
+
export function takeDecodedDirectPathBlockers(canvas) {
|
|
109
|
+
const blockers = decodedBlockers.get(canvas) ?? [];
|
|
110
|
+
decodedBlockers.delete(canvas);
|
|
111
|
+
return blockers;
|
|
112
|
+
}
|
|
113
|
+
/** Effects the forward pass draws itself; every other effect is a post pass or a frame contributor that reads the HDR target. */
|
|
114
|
+
const FORWARD_ONLY_EFFECTS = new Set(["fog"]);
|
|
115
|
+
const DIRECT_SAFE_NODE_KINDS = new Set(["model", "primitive", "group", "light", "environment", "interaction", "label"]);
|
|
116
|
+
/** Reasons this scene needs the HDR target. Conservative: anything not known to render identically on the direct path is listed. */
|
|
117
|
+
export function renderPathBlockers(snapshot, options) {
|
|
118
|
+
const blockers = [];
|
|
119
|
+
if (options.output !== undefined || options.renderer?.output !== undefined)
|
|
120
|
+
blockers.push("output options (tone mapping, exposure, dithering) are authored");
|
|
121
|
+
if (options.renderer?.backend !== undefined && options.renderer.backend !== "webgl2")
|
|
122
|
+
blockers.push(`backend ${String(options.renderer.backend)}`);
|
|
123
|
+
if (typeof location !== "undefined" && /[?&](aura3d-tonemap|tm|aura3d-exp|exp)=/.test(location.search))
|
|
124
|
+
blockers.push("URL tone-mapping or exposure override");
|
|
125
|
+
if (snapshot.backgroundToneMapped === false)
|
|
126
|
+
blockers.push("background opts out of tone mapping");
|
|
127
|
+
// RP-02: the background-image shader encodes with its own ACES fit (Narkowicz), not the r185 curve the direct path's forward
|
|
128
|
+
// shader uses, so on the direct path the backdrop and the scene would be tone-mapped differently (linear 0.18 grey: 141 vs 127).
|
|
129
|
+
if (snapshot.backgroundImage !== undefined)
|
|
130
|
+
blockers.push("background image");
|
|
131
|
+
for (const reason of nodeDirectPathBlockers(snapshot.nodes))
|
|
132
|
+
blockers.push(reason);
|
|
133
|
+
return blockers;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* The node-level part of {@link renderPathBlockers}: effects other than fog, node kinds the direct path does not draw, HDRI
|
|
137
|
+
* environments, and custom, transmissive or transparent materials (authored, from the asset manifest, or overrides). Also used for
|
|
138
|
+
* nodes added at runtime (RP-03).
|
|
139
|
+
*/
|
|
140
|
+
export function nodeDirectPathBlockers(nodes) {
|
|
141
|
+
const blockers = [];
|
|
142
|
+
const seen = new Set();
|
|
143
|
+
const note = (message) => {
|
|
144
|
+
if (seen.has(message))
|
|
145
|
+
return;
|
|
146
|
+
seen.add(message);
|
|
147
|
+
blockers.push(message);
|
|
148
|
+
};
|
|
149
|
+
for (const node of groups.flatten(nodes)) {
|
|
150
|
+
if (node.kind === "effect") {
|
|
151
|
+
if (!FORWARD_ONLY_EFFECTS.has(node.effect))
|
|
152
|
+
note(`effect "${node.effect}"`);
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (!DIRECT_SAFE_NODE_KINDS.has(node.kind)) {
|
|
156
|
+
note(`${node.kind} node`);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
// A visible HDRI background is encoded by the environment-background shader's own (different) filmic curve.
|
|
160
|
+
if (node.kind === "environment" && node.environment === "hdri")
|
|
161
|
+
note("hdri environment");
|
|
162
|
+
if (node.kind !== "model" && node.kind !== "primitive")
|
|
163
|
+
continue;
|
|
164
|
+
if (node.kind === "model")
|
|
165
|
+
for (const reason of modelAssetBlockers(node))
|
|
166
|
+
note(reason);
|
|
167
|
+
const material = node.material;
|
|
168
|
+
if (!material)
|
|
169
|
+
continue;
|
|
170
|
+
if (material.kind !== undefined)
|
|
171
|
+
note(`${material.kind} material`);
|
|
172
|
+
if (material.shader !== undefined)
|
|
173
|
+
note(`shader material "${material.shader}"`);
|
|
174
|
+
if (typeof material.transmission === "number" && material.transmission > 0)
|
|
175
|
+
note("transmission material");
|
|
176
|
+
// Blending happens after the in-shader encode on the direct path (display space) but before it on the HDR path (linear).
|
|
177
|
+
if (material.alphaMode === "blend" || material.blend !== undefined || (typeof material.opacity === "number" && material.opacity < 1))
|
|
178
|
+
note("transparent material");
|
|
179
|
+
}
|
|
180
|
+
return blockers;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* RP-01: material facts the asset manifest records for a typed GLB (`metadata.materialMetadata`, written by `aura3d assets add`
|
|
184
|
+
* and `assets typegen`), plus `materialOverrides` opacity. A BLEND or partly transparent material blends after the in-shader encode
|
|
185
|
+
* on the direct path. Transmission is not in the manifest; the mount catches it after decode (`decodedModelDirectPathBlockers`).
|
|
186
|
+
*/
|
|
187
|
+
function modelAssetBlockers(node) {
|
|
188
|
+
const reasons = [];
|
|
189
|
+
const facts = node.asset?.metadata?.materialMetadata;
|
|
190
|
+
if (Array.isArray(facts)) {
|
|
191
|
+
const transparent = facts.some((fact) => fact !== null && typeof fact === "object"
|
|
192
|
+
// glTF ignores base-colour alpha on OPAQUE and MASK materials, so opacity counts only when no alpha mode was recorded.
|
|
193
|
+
&& (typeof fact.alphaMode === "string" ? fact.alphaMode.toUpperCase() === "BLEND" : typeof fact.opacity === "number" && fact.opacity < 1));
|
|
194
|
+
if (transparent)
|
|
195
|
+
reasons.push("model asset has a transparent (BLEND) material");
|
|
196
|
+
}
|
|
197
|
+
if (node.materialOverrides?.some((override) => typeof override.opacity === "number" && override.opacity < 1))
|
|
198
|
+
reasons.push("transparent material override");
|
|
199
|
+
return reasons;
|
|
200
|
+
}
|
|
201
|
+
function requestedQuality(options, search, policy) {
|
|
202
|
+
let fromOptions;
|
|
203
|
+
if (options.quality !== undefined) {
|
|
204
|
+
if (!isQualityMode(options.quality)) {
|
|
205
|
+
throw new Error(`QUALITY_OPTION_INVALID:quality=${String(options.quality)} (expected auto|production|safe-basic|cinematic)`);
|
|
206
|
+
}
|
|
207
|
+
fromOptions = options.quality;
|
|
208
|
+
}
|
|
209
|
+
// `?aura3d-render=<mode>` wins over the option (like `?aura3d-quality=`): compare a page's two render paths without a rebuild.
|
|
210
|
+
// RP-04: a typo there warns and keeps the code option (strict apps still throw).
|
|
211
|
+
const fromUrl = search ? new URLSearchParams(search).get("aura3d-render") : null;
|
|
212
|
+
if (fromUrl !== null) {
|
|
213
|
+
if (isQualityMode(fromUrl))
|
|
214
|
+
return fromUrl;
|
|
215
|
+
ignoreInvalidUrlValue(`?aura3d-render=${fromUrl} (expected auto|production|safe-basic|cinematic); using "${fromOptions ?? "auto"}"`, policy);
|
|
216
|
+
}
|
|
217
|
+
// `renderer.qualityProfile` is a deprecated pixel-ratio/draw-budget preset, not a pipeline request.
|
|
218
|
+
return fromOptions;
|
|
219
|
+
}
|
|
220
|
+
export function resolveAppRenderPath(snapshot, options, flags, context = {}) {
|
|
221
|
+
const search = context.search !== undefined ? context.search : typeof location !== "undefined" ? location.search : null;
|
|
222
|
+
const warnings = [];
|
|
223
|
+
const policy = { strict: options.strict ?? flags.on("A3D_QR_STRICT"), warnings };
|
|
224
|
+
const quality = requestedQuality(options, search, policy) ?? "auto";
|
|
225
|
+
if (!qrCoreOutputOn(flags)) {
|
|
226
|
+
const explicit = flags.values.A3D_QR_CORE_OUTPUT !== undefined;
|
|
227
|
+
return {
|
|
228
|
+
report: { path: "direct", quality, reason: explicit ? "A3D_QR_CORE_OUTPUT is off: legacy LDR route" : "A3D_QR_CORE is off: legacy LDR route (its own post chain is kept)", bloomFusion: reportedBloomFusion(quality, "direct", true, snapshot, options, search, policy) },
|
|
229
|
+
flags,
|
|
230
|
+
direct: false,
|
|
231
|
+
warnings
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
if (flags.values.A3D_QR_CORE_OUTPUT !== undefined) {
|
|
235
|
+
return { report: { path: "hdr-msaa", quality, reason: "A3D_QR_CORE_OUTPUT is set explicitly", bloomFusion: reportedBloomFusion(quality, "hdr-msaa", false, snapshot, options, search, policy) }, flags, direct: false, warnings };
|
|
236
|
+
}
|
|
237
|
+
// RP-06: blockers are computed for safe-basic too, so what it does not render is named instead of dropped silently.
|
|
238
|
+
const blockers = quality === "auto" || quality === "safe-basic"
|
|
239
|
+
? [...new Set([...renderPathBlockers(snapshot, options), ...(context.extraBlockers ?? [])])]
|
|
240
|
+
: [];
|
|
241
|
+
const decision = resolveRenderPath({ quality, blockers });
|
|
242
|
+
if (quality === "safe-basic" && blockers.length > 0) {
|
|
243
|
+
warnings.push(`SAFE_BASIC_DROPS: quality "safe-basic" renders on the direct path, which has no post chain or HDR target, so these are not rendered: ${blockers.join("; ")}. Use quality "auto" or "production" to keep them.`);
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
report: { path: decision.path, quality: decision.quality, reason: decision.reason, bloomFusion: reportedBloomFusion(decision.quality, decision.path, false, snapshot, options, search, policy) },
|
|
247
|
+
flags: decision.path === "direct" ? withDirectPath(flags) : flags,
|
|
248
|
+
direct: decision.path === "direct",
|
|
249
|
+
warnings
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Whether the WebGL drawing buffer must survive presentation: capture and
|
|
254
|
+
* evidence runs read the canvas after the frame was presented. An explicit
|
|
255
|
+
* `preserveDrawingBuffer` option wins; otherwise `?capture=1` / `?qa=1`.
|
|
256
|
+
*/
|
|
257
|
+
export function wantsPreservedDrawingBuffer(options, search = typeof location !== "undefined" ? location.search : null) {
|
|
258
|
+
if (typeof options.preserveDrawingBuffer === "boolean")
|
|
259
|
+
return options.preserveDrawingBuffer;
|
|
260
|
+
if (!search)
|
|
261
|
+
return false;
|
|
262
|
+
const params = new URLSearchParams(search);
|
|
263
|
+
const on = (key) => {
|
|
264
|
+
const raw = params.get(key);
|
|
265
|
+
return raw !== null && raw !== "0" && raw.toLowerCase() !== "false";
|
|
266
|
+
};
|
|
267
|
+
return on("capture") || on("qa");
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=renderPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderPath.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/app/renderPath.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AuraCreateAppRendererOptions, AuraRendererQualityPreset, AuraRendererQualityProfile, AuraRendererQualityProfileId } from "../nodes/types.js";
|
|
2
|
+
import { type AuraBloomFusion } from "../../../rendering/contracts/index.js";
|
|
2
3
|
/**
|
|
3
4
|
* PRD 11 Phase 1 freeze (§6.2): thrown when a caller requests the frozen
|
|
4
5
|
* `experimental-webgpu` quality profile. The union member stays for CCR
|
|
@@ -41,5 +42,34 @@ export declare function resetRendererOptionDeprecationsForTests(): void;
|
|
|
41
42
|
*/
|
|
42
43
|
export declare function parseQualityRendererOptions(renderer: AuraCreateAppRendererOptions | undefined, search?: string | null, root?: {
|
|
43
44
|
readonly performanceQuality?: unknown;
|
|
44
|
-
}): ParsedQualityRendererOptions;
|
|
45
|
+
}, urlPolicy?: Pick<UrlOptionPolicy, "strict">): ParsedQualityRendererOptions;
|
|
46
|
+
/** How URL-sourced debug switches behave on an invalid value (RP-04). */
|
|
47
|
+
export interface UrlOptionPolicy {
|
|
48
|
+
/** Throw on an invalid URL value, like an invalid code option. Default false: warn and fall back. */
|
|
49
|
+
readonly strict?: boolean;
|
|
50
|
+
/** Receives one `QUALITY_URL_IGNORED:` message per ignored URL value. */
|
|
51
|
+
readonly warnings?: string[];
|
|
52
|
+
/** Also `console.warn` the message (once per message). Default true; false when the caller prints `warnings` itself. */
|
|
53
|
+
readonly console?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* RP-04: a typo in a debug URL switch (`?aura3d-render=`, `?aura3d-bloom-fusion=`, `?aura3d-quality=`, `?aura3d-adaptive=`) used to
|
|
57
|
+
* throw inside the mount, so every game showed its "needs WebGL 2" error screen. URL values are a tester's switch, not code: warn
|
|
58
|
+
* once (console and `diagnostics().warnings`) and keep the code option or default. Strict apps keep the throw.
|
|
59
|
+
*/
|
|
60
|
+
export declare function ignoreInvalidUrlValue(message: string, policy: UrlOptionPolicy | undefined): void;
|
|
61
|
+
/**
|
|
62
|
+
* Bloom pass-fusion mode (PRD beat-threejs-2 contract 2.1): `renderer.bloomFusion` (`"separable"` default | `"fused-2d"`),
|
|
63
|
+
* overridden by `?aura3d-bloom-fusion=`. An invalid code option throws so a typo never silently runs the default; an invalid URL
|
|
64
|
+
* value warns and falls back to the code option (RP-04) unless `policy.strict`. The mode only takes effect under
|
|
65
|
+
* `quality: "auto"` / `"cinematic"`; `production` never fuses.
|
|
66
|
+
*/
|
|
67
|
+
export declare function parseBloomFusionOption(renderer: Pick<AuraCreateAppRendererOptions, "bloomFusion"> | undefined, search?: string | null, policy?: UrlOptionPolicy): AuraBloomFusion;
|
|
68
|
+
/**
|
|
69
|
+
* Top-tennis C11 (engine part): `renderer.quality` diagnostics, reported in `diagnostics().warnings` (not the console, since the
|
|
70
|
+
* string form is valid). A tier-name string is a fixed tier: every device, phones included, mounts at that tier, which a reader
|
|
71
|
+
* of `renderer: { quality: "high" }` easily takes for a no-op or for "best available". An unknown name used to mount at "high"
|
|
72
|
+
* with no message while the quality lane is off.
|
|
73
|
+
*/
|
|
74
|
+
export declare function rendererQualityWarnings(renderer: Pick<AuraCreateAppRendererOptions, "quality"> | undefined): string[];
|
|
45
75
|
//# sourceMappingURL=rendererOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendererOptions.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/app/rendererOptions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"rendererOptions.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/app/rendererOptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// PR 0b-1 carve-out (CONTRACTS.md §3.2) — verbatim move from agent-api/index.ts; 0 changed logic lines.
|
|
2
|
+
import { DEFAULT_BLOOM_FUSION_MODE, isBloomFusion } from "../../../rendering/contracts/index.js";
|
|
2
3
|
/**
|
|
3
4
|
* PRD 11 Phase 1 freeze (§6.2): thrown when a caller requests the frozen
|
|
4
5
|
* `experimental-webgpu` quality profile. The union member stays for CCR
|
|
@@ -140,6 +141,7 @@ function deprecation(id, message, out) {
|
|
|
140
141
|
/** Test seam: forget which one-time deprecation warnings were already emitted. */
|
|
141
142
|
export function resetRendererOptionDeprecationsForTests() {
|
|
142
143
|
warnedDeprecations.clear();
|
|
144
|
+
warnedUrlValues.clear();
|
|
143
145
|
}
|
|
144
146
|
/**
|
|
145
147
|
* Parse `renderer.quality` (tier string or `{ tier, overrides }`),
|
|
@@ -149,7 +151,7 @@ export function resetRendererOptionDeprecationsForTests() {
|
|
|
149
151
|
* `source: "url"`). `qualityProfile` and root `performanceQuality` stay
|
|
150
152
|
* accepted and emit a one-time deprecation warning pointing at `quality`.
|
|
151
153
|
*/
|
|
152
|
-
export function parseQualityRendererOptions(renderer, search = typeof location !== "undefined" ? location.search : null, root = {}) {
|
|
154
|
+
export function parseQualityRendererOptions(renderer, search = typeof location !== "undefined" ? location.search : null, root = {}, urlPolicy) {
|
|
153
155
|
const warnings = [];
|
|
154
156
|
const quality = renderer?.quality;
|
|
155
157
|
let requested;
|
|
@@ -185,16 +187,24 @@ export function parseQualityRendererOptions(renderer, search = typeof location !
|
|
|
185
187
|
const params = new URLSearchParams(search);
|
|
186
188
|
const urlTier = params.get("aura3d-quality");
|
|
187
189
|
if (urlTier !== null) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
+
// RP-04: a URL typo warns and keeps the code option (strict apps still throw).
|
|
191
|
+
if (urlTier === "auto" || QUALITY_TIER_NAMES.includes(urlTier)) {
|
|
192
|
+
requested = urlTier;
|
|
193
|
+
requestedSource = "url";
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
ignoreInvalidUrlValue(`?aura3d-quality=${urlTier} (expected low|medium|high|ultra|auto); using "${requested}"`, { strict: urlPolicy?.strict, warnings, console: false });
|
|
197
|
+
}
|
|
190
198
|
}
|
|
191
199
|
const urlAdaptive = params.get("aura3d-adaptive");
|
|
192
200
|
if (urlAdaptive !== null) {
|
|
193
|
-
if (urlAdaptive
|
|
194
|
-
|
|
201
|
+
if (urlAdaptive === "0" || urlAdaptive === "1") {
|
|
202
|
+
adaptive = urlAdaptive === "1";
|
|
203
|
+
adaptiveSource = "url";
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
ignoreInvalidUrlValue(`?aura3d-adaptive=${urlAdaptive} (expected 0|1); using ${adaptive ? "1" : "0"}`, { strict: urlPolicy?.strict, warnings, console: false });
|
|
195
207
|
}
|
|
196
|
-
adaptive = urlAdaptive === "1";
|
|
197
|
-
adaptiveSource = "url";
|
|
198
208
|
}
|
|
199
209
|
}
|
|
200
210
|
if (renderer?.qualityProfile !== undefined) {
|
|
@@ -205,4 +215,61 @@ export function parseQualityRendererOptions(renderer, search = typeof location !
|
|
|
205
215
|
}
|
|
206
216
|
return { requested, requestedSource, overrides, adaptive, adaptiveSource, targetFrameRate, batching, warnings };
|
|
207
217
|
}
|
|
218
|
+
const warnedUrlValues = new Set();
|
|
219
|
+
/**
|
|
220
|
+
* RP-04: a typo in a debug URL switch (`?aura3d-render=`, `?aura3d-bloom-fusion=`, `?aura3d-quality=`, `?aura3d-adaptive=`) used to
|
|
221
|
+
* throw inside the mount, so every game showed its "needs WebGL 2" error screen. URL values are a tester's switch, not code: warn
|
|
222
|
+
* once (console and `diagnostics().warnings`) and keep the code option or default. Strict apps keep the throw.
|
|
223
|
+
*/
|
|
224
|
+
export function ignoreInvalidUrlValue(message, policy) {
|
|
225
|
+
if (policy?.strict)
|
|
226
|
+
throw new Error(`QUALITY_OPTION_INVALID:${message}`);
|
|
227
|
+
const warning = `QUALITY_URL_IGNORED: ${message}`;
|
|
228
|
+
policy?.warnings?.push(warning);
|
|
229
|
+
if (policy?.console !== false && !warnedUrlValues.has(warning)) {
|
|
230
|
+
warnedUrlValues.add(warning);
|
|
231
|
+
if (typeof console !== "undefined")
|
|
232
|
+
console.warn(`[aura3d] ${warning}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Bloom pass-fusion mode (PRD beat-threejs-2 contract 2.1): `renderer.bloomFusion` (`"separable"` default | `"fused-2d"`),
|
|
237
|
+
* overridden by `?aura3d-bloom-fusion=`. An invalid code option throws so a typo never silently runs the default; an invalid URL
|
|
238
|
+
* value warns and falls back to the code option (RP-04) unless `policy.strict`. The mode only takes effect under
|
|
239
|
+
* `quality: "auto"` / `"cinematic"`; `production` never fuses.
|
|
240
|
+
*/
|
|
241
|
+
export function parseBloomFusionOption(renderer, search = typeof location !== "undefined" ? location.search : null, policy) {
|
|
242
|
+
const mode = renderer?.bloomFusion ?? DEFAULT_BLOOM_FUSION_MODE;
|
|
243
|
+
if (!isBloomFusion(mode))
|
|
244
|
+
throw new Error(`QUALITY_OPTION_INVALID:renderer.bloomFusion=${String(mode)} (expected separable|fused-2d)`);
|
|
245
|
+
if (search) {
|
|
246
|
+
const fromUrl = new URLSearchParams(search).get("aura3d-bloom-fusion");
|
|
247
|
+
if (fromUrl !== null) {
|
|
248
|
+
if (isBloomFusion(fromUrl))
|
|
249
|
+
return fromUrl;
|
|
250
|
+
ignoreInvalidUrlValue(`?aura3d-bloom-fusion=${fromUrl} (expected separable|fused-2d); using "${mode}"`, policy);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return mode;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Top-tennis C11 (engine part): `renderer.quality` diagnostics, reported in `diagnostics().warnings` (not the console, since the
|
|
257
|
+
* string form is valid). A tier-name string is a fixed tier: every device, phones included, mounts at that tier, which a reader
|
|
258
|
+
* of `renderer: { quality: "high" }` easily takes for a no-op or for "best available". An unknown name used to mount at "high"
|
|
259
|
+
* with no message while the quality lane is off.
|
|
260
|
+
*/
|
|
261
|
+
export function rendererQualityWarnings(renderer) {
|
|
262
|
+
const quality = renderer?.quality;
|
|
263
|
+
if (quality === undefined || quality === "auto")
|
|
264
|
+
return [];
|
|
265
|
+
const tier = typeof quality === "string" ? quality : quality !== null && typeof quality === "object" ? quality.tier : quality;
|
|
266
|
+
if (tier === undefined || tier === "auto")
|
|
267
|
+
return [];
|
|
268
|
+
if (typeof tier !== "string" || !QUALITY_TIER_NAMES.includes(tier)) {
|
|
269
|
+
return [`RENDERER_QUALITY_INVALID: renderer.quality${typeof quality === "object" ? ".tier" : ""}=${String(tier)} is not a tier (expected low|medium|high|ultra|auto); the mount uses "high".`];
|
|
270
|
+
}
|
|
271
|
+
if (typeof quality !== "string")
|
|
272
|
+
return [];
|
|
273
|
+
return [`RENDERER_QUALITY_STRING: renderer.quality "${tier}" is a fixed tier, so every device, phones included, mounts at "${tier}" (pixel-ratio cap, shadow and post settings). Use "auto" or { tier: "auto" } to let the tier follow the device where the quality lane (A3D_QR_TIERS) is on.`];
|
|
274
|
+
}
|
|
208
275
|
//# sourceMappingURL=rendererOptions.js.map
|