@forgeax/engine-render 0.1.29 → 0.1.31
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 +248 -21
- package/dist/assembly/atmosphere-shader-prewarm.d.ts +1 -1
- package/dist/assembly/atmosphere-shader-prewarm.d.ts.map +1 -1
- package/dist/assembly/device-feature-admission.d.ts +4 -3
- package/dist/assembly/device-feature-admission.d.ts.map +1 -1
- package/dist/assembly/dynamic-geometry-host.d.ts +6 -0
- package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
- package/dist/assembly/host-contract.d.ts +6 -0
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/material/assembly.d.ts +26 -3
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/pipeline-helpers.d.ts +24 -0
- package/dist/assembly/material/pipeline-helpers.d.ts.map +1 -0
- package/dist/assembly/material-shader-policy.d.ts.map +1 -1
- package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -1
- package/dist/assembly/recovery/recovery-attempt.d.ts +1 -6
- package/dist/assembly/recovery/recovery-attempt.d.ts.map +1 -1
- package/dist/assembly/recovery/renderer-recover.d.ts +1 -0
- package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
- package/dist/assembly/renderer-facade.d.ts.map +1 -1
- package/dist/assembly/shader-prewarm-policy.d.ts +1 -1
- package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -1
- package/dist/assembly/webgpu-ready.d.ts +1 -1
- package/dist/assembly/webgpu-ready.d.ts.map +1 -1
- package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
- package/dist/capture/scene-projection.d.ts +41 -0
- package/dist/capture/scene-projection.d.ts.map +1 -0
- package/dist/{chunk-BQVQOQJH.mjs → chunk-7MQ3XBSP.mjs} +20 -14
- package/dist/chunk-7MQ3XBSP.mjs.map +1 -0
- package/dist/{chunk-S4DNKQYQ.mjs → chunk-C3DDSXYK.mjs} +86 -33
- package/dist/chunk-C3DDSXYK.mjs.map +1 -0
- package/dist/{chunk-BTWH7BP4.mjs → chunk-FUUO4UND.mjs} +73 -29
- package/dist/chunk-FUUO4UND.mjs.map +1 -0
- package/dist/{chunk-NRNXBLIJ.mjs → chunk-JRBDO2KB.mjs} +46 -6
- package/dist/chunk-JRBDO2KB.mjs.map +1 -0
- package/dist/{chunk-NICXSHAT.mjs → chunk-MDQJPY3T.mjs} +8 -6
- package/dist/chunk-MDQJPY3T.mjs.map +1 -0
- package/dist/{chunk-JQTSEI3Z.mjs → chunk-NO4WZCAH.mjs} +3 -3
- package/dist/chunk-NO4WZCAH.mjs.map +1 -0
- package/dist/{chunk-FUODTTIA.mjs → chunk-PSEQ6QPH.mjs} +621 -108
- package/dist/chunk-PSEQ6QPH.mjs.map +1 -0
- package/dist/{chunk-33XZFTQU.mjs → chunk-S5UE2T5P.mjs} +48 -6
- package/dist/chunk-S5UE2T5P.mjs.map +1 -0
- package/dist/components/directional-light.d.ts +2 -2
- package/dist/components/dynamic-resolution.d.ts +15 -0
- package/dist/components/dynamic-resolution.d.ts.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/light-helpers.d.ts.map +1 -1
- package/dist/components/reflection-probe.d.ts +1 -0
- package/dist/components/reflection-probe.d.ts.map +1 -1
- package/dist/components/skylight.d.ts +4 -1
- package/dist/components/skylight.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +2172 -796
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/device-scope.d.ts +2 -0
- package/dist/device/device-scope.d.ts.map +1 -1
- package/dist/device/gpu-residency.d.ts +2 -2
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/dynamic-geometry.d.ts.map +1 -1
- package/dist/environment/background.d.ts +3 -2
- package/dist/environment/background.d.ts.map +1 -1
- package/dist/environment/ibl.d.ts +11 -0
- package/dist/environment/ibl.d.ts.map +1 -0
- package/dist/environment/storage.d.ts +14 -0
- package/dist/environment/storage.d.ts.map +1 -0
- package/dist/errors/gpu-driven.d.ts +2 -2
- package/dist/errors/gpu-driven.d.ts.map +1 -1
- package/dist/errors/render.d.ts +35 -1
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/camera.d.ts.map +1 -1
- package/dist/extract/contracts.d.ts +7 -0
- package/dist/extract/contracts.d.ts.map +1 -1
- package/dist/extract/gpu-driven.d.ts +18 -1
- package/dist/extract/gpu-driven.d.ts.map +1 -1
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/material-artifacts.d.ts +24 -0
- package/dist/gpu-driven/material-artifacts.d.ts.map +1 -0
- package/dist/gpu-driven/material-bindings.d.ts +7 -0
- package/dist/gpu-driven/material-bindings.d.ts.map +1 -0
- package/dist/gpu-driven/prepared-draw.d.ts +2 -0
- package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +27 -6
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-resource.d.ts +5 -2
- package/dist/gpu-resource.d.ts.map +1 -1
- package/dist/gpu-scene-schema.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +3 -0
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/IblPipelineCache.d.ts +2 -0
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +3 -1
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +83 -81
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +7 -5
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +16 -1
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/internal.mjs +6 -6
- package/dist/material-row.d.ts +10 -0
- package/dist/material-row.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +3 -1
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/render-extent.d.ts +51 -0
- package/dist/pipeline/render-extent.d.ts.map +1 -0
- package/dist/pipeline/standard-build-context.d.ts +7 -0
- package/dist/pipeline/standard-build-context.d.ts.map +1 -0
- package/dist/pipeline/standard-forward-lane.d.ts +3 -2
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-post.d.ts +1 -1
- package/dist/pipeline/standard-post.d.ts.map +1 -1
- package/dist/pipeline/standard-profile.d.ts +2 -1
- package/dist/pipeline/standard-profile.d.ts.map +1 -1
- package/dist/pipeline-builder.d.ts +3 -1
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/post-process-errors.d.ts +9 -2
- package/dist/post-process-errors.d.ts.map +1 -1
- package/dist/prepare/extended-lighting/resources.d.ts +3 -3
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +3 -8
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame.d.ts +3 -2
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +7 -2
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +6 -3
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +2 -0
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/prepared-material-bindings.d.ts.map +1 -1
- package/dist/record/recovery-pipeline.d.ts +9 -1
- package/dist/record/recovery-pipeline.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +34 -3
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts +2 -2
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +5 -2
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/recovery/render-system-candidate.d.ts.map +1 -1
- package/dist/reflection/background.d.ts +14 -0
- package/dist/reflection/background.d.ts.map +1 -0
- package/dist/reflection/filter.d.ts.map +1 -1
- package/dist/reflection/projection.d.ts +1 -0
- package/dist/reflection/projection.d.ts.map +1 -1
- package/dist/reflection/record-owner.d.ts +4 -2
- package/dist/reflection/record-owner.d.ts.map +1 -1
- package/dist/render-contract.d.ts +47 -32
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +17 -1
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts +9 -2
- package/dist/render-system-extract-tail.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +29 -2
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +2 -0
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/ssao-config.d.ts +8 -6
- package/dist/ssao-config.d.ts.map +1 -1
- package/dist/ssr/graph.d.ts.map +1 -1
- package/dist/temporal/gpu.d.ts.map +1 -1
- package/dist/temporal/index.mjs +5 -5
- package/dist/temporal/standard-scene-data.d.ts +2 -1
- package/dist/temporal/standard-scene-data.d.ts.map +1 -1
- package/dist/temporal/target-coverage-attachment.d.ts +15 -0
- package/dist/temporal/target-coverage-attachment.d.ts.map +1 -0
- package/dist/temporal/temporal-view.d.ts +6 -2
- package/dist/temporal/temporal-view.d.ts.map +1 -1
- package/dist/temporal/view.d.ts +6 -0
- package/dist/temporal/view.d.ts.map +1 -1
- package/dist/typed-render-graph-primitives.d.ts +6 -0
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/volume/component.d.ts +1 -0
- package/dist/volume/component.d.ts.map +1 -1
- package/package.json +21 -21
- package/src/__tests__/capture-scene-projection.unit.test.ts +24 -0
- package/src/__tests__/device-feature-admission.unit.test.ts +15 -24
- package/src/__tests__/device-loss-fanout.unit.test.ts +43 -0
- package/src/__tests__/dynamic-geometry-batch.unit.test.ts +157 -0
- package/src/__tests__/dynamic-geometry.unit.test.ts +36 -0
- package/src/__tests__/dynamic-resolution-plugin.integration.test.ts +81 -0
- package/src/__tests__/factory-contract.integration.test.ts +164 -1
- package/src/__tests__/frame-observation.contract.test.ts +21 -0
- package/src/__tests__/gpu-driven-baseline.characterization.test.ts +1 -1
- package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +20 -1
- package/src/__tests__/gpu-driven-lod-cache.unit.test.ts +0 -3
- package/src/__tests__/gpu-driven-mesh-world-identity.unit.test.ts +0 -3
- package/src/__tests__/gpu-driven-pbr.dawn.test.ts +11 -6
- package/src/__tests__/gpu-driven-production.integration.test.ts +13 -25
- package/src/__tests__/gpu-driven-view.unit.test.ts +1 -0
- package/src/__tests__/gpu-pass-timing-browser-runner.ts +15 -0
- package/src/__tests__/gpu-pass-timing.browser.test.ts +14 -1
- package/src/__tests__/gpu-resource-scope.unit.test.ts +71 -0
- package/src/__tests__/gpu-scene.unit.test.ts +55 -1
- package/src/__tests__/materials-standard-contract.unit.test.ts +5 -1
- package/src/__tests__/mesh-submission-lifetime.unit.test.ts +8 -0
- package/src/__tests__/morph-neutral-admission.unit.test.ts +19 -0
- package/src/__tests__/physical-clearcoat.integration.test.ts +6 -1
- package/src/__tests__/post-process-error-policy-owner.unit.test.ts +6 -5
- package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +216 -5
- package/src/__tests__/reflection-fallback-async-publication.unit.test.ts +68 -1
- package/src/__tests__/reflection-probe-authoring.unit.test.ts +12 -10
- package/src/__tests__/reflection-probe-box.dawn.test.ts +71 -0
- package/src/__tests__/reflection-probe-filter.unit.test.ts +9 -0
- package/src/__tests__/reflection-probe-orientation.dawn.test.ts +294 -0
- package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +5 -15
- package/src/__tests__/reflection-probe-updates.unit.test.ts +129 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +3 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +5 -1
- package/src/__tests__/render-extent.unit.test.ts +63 -0
- package/src/__tests__/render-scene-projection.unit.test.ts +3 -2
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +173 -9
- package/src/__tests__/shader-manifest-fixture.ts +6 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +8 -1
- package/src/__tests__/specular-environment-scale.dawn.test.ts +4 -2
- package/src/__tests__/ssao-config.unit.test.ts +7 -0
- package/src/__tests__/ssao-surface.dawn.test.ts +252 -0
- package/src/__tests__/ssr-cube-silhouette.dawn.test.ts +270 -0
- package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +51 -43
- package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +4 -0
- package/src/__tests__/ssr-gpu-dispatch.ts +10 -5
- package/src/__tests__/ssr-graph-topology.unit.test.ts +2 -2
- package/src/__tests__/ssr-hiz.browser.test.ts +1 -1
- package/src/__tests__/ssr-hiz.dawn.test.ts +1 -1
- package/src/__tests__/ssr-spatial.integration.test.ts +1 -1
- package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +40 -0
- package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +238 -1
- package/src/__tests__/standard-profile-oracle.unit.test.ts +27 -0
- package/src/__tests__/taa-coverage-edge.dawn.test.ts +6 -0
- package/src/__tests__/taa-neighborhood-equivalence.dawn.test.ts +5 -1
- package/src/__tests__/taa-stability-feedback.ts +1 -0
- package/src/__tests__/temporal-reset-matrix.unit.test.ts +2 -2
- package/src/__tests__/temporal-view.unit.test.ts +17 -0
- package/src/__tests__/transmission-prewarm.unit.test.ts +57 -0
- package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +62 -13
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +7 -7
- package/src/assembly/atmosphere-shader-prewarm.ts +3 -2
- package/src/assembly/device-feature-admission.ts +9 -4
- package/src/assembly/dynamic-geometry-host.ts +236 -163
- package/src/assembly/host-contract.ts +9 -0
- package/src/assembly/material/assembly.ts +350 -6
- package/src/assembly/material/pipeline-helpers.ts +100 -0
- package/src/assembly/material-shader-policy.ts +39 -18
- package/src/assembly/recovery/device-loss-fanout.ts +5 -0
- package/src/assembly/recovery/recovery-attempt.ts +2 -29
- package/src/assembly/recovery/renderer-recover.ts +6 -9
- package/src/assembly/renderer-facade.ts +22 -1
- package/src/assembly/shader-prewarm-policy.ts +14 -1
- package/src/assembly/webgpu-ready.ts +28 -19
- package/src/assembly/webgpu-renderer.ts +95 -95
- package/src/capture/scene-projection.ts +37 -0
- package/src/components/__tests__/dynamic-resolution-schema.unit.test.ts +65 -0
- package/src/components/__tests__/light-radius.integration.test.ts +59 -0
- package/src/components/directional-light.ts +3 -3
- package/src/components/dynamic-resolution.ts +67 -0
- package/src/components/index.ts +1 -0
- package/src/components/light-helpers.ts +6 -1
- package/src/components/reflection-probe.ts +1 -0
- package/src/components/skylight.ts +4 -1
- package/src/device/device-scope.ts +13 -7
- package/src/device/gpu-residency.ts +11 -11
- package/src/dynamic-geometry.ts +13 -8
- package/src/environment/background.ts +30 -12
- package/src/environment/ibl.ts +211 -0
- package/src/environment/storage.ts +63 -0
- package/src/errors/gpu-driven.ts +10 -3
- package/src/errors/render.ts +64 -0
- package/src/extract/camera.ts +12 -1
- package/src/extract/contracts.ts +10 -0
- package/src/extract/gpu-driven.ts +72 -17
- package/src/gpu-driven/batch-topology.ts +33 -11
- package/src/gpu-driven/material-artifacts.ts +179 -0
- package/src/gpu-driven/material-bindings.ts +41 -0
- package/src/gpu-driven/prepared-draw.ts +13 -2
- package/src/gpu-driven/production-raster.ts +681 -164
- package/src/gpu-resource.ts +21 -2
- package/src/gpu-scene-schema.ts +11 -2
- package/src/gpu-scene.ts +14 -3
- package/src/hdrp-buffers.ts +69 -0
- package/src/ibl/IblPipelineCache.ts +5 -0
- package/src/ibl/skylight-bind-group.ts +27 -17
- package/src/index.ts +92 -81
- package/src/inspection-types.ts +16 -1
- package/src/material-row.ts +60 -11
- package/src/pbr-pipeline.ts +13 -2
- package/src/pipeline/render-extent.ts +111 -0
- package/src/pipeline/standard-build-context.ts +7 -0
- package/src/pipeline/standard-forward-lane.ts +41 -24
- package/src/pipeline/standard-pipeline.ts +47 -18
- package/src/pipeline/standard-post.ts +4 -0
- package/src/pipeline/standard-profile.ts +2 -1
- package/src/pipeline-builder.ts +12 -3
- package/src/plugin.ts +4 -0
- package/src/post-process-errors.ts +26 -18
- package/src/prepare/__tests__/extended-lighting-capability.unit.test.ts +2 -2
- package/src/prepare/extended-lighting/resources.ts +3 -3
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +68 -0
- package/src/record/__tests__/material-bg-cache.unit.test.ts +45 -0
- package/src/record/__tests__/material-slot-plan.unit.test.ts +9 -0
- package/src/record/__tests__/recovery-pipeline.unit.test.ts +47 -1
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +7 -3
- package/src/record/__tests__/temporal-payload.unit.test.ts +2 -0
- package/src/record/frame-lighting.ts +3 -1
- package/src/record/frame-snapshot.ts +13 -11
- package/src/record/frame.ts +150 -74
- package/src/record/main-pass-geometry.ts +60 -9
- package/src/record/main-pass-material.ts +47 -19
- package/src/record/main-pass.ts +63 -4
- package/src/record/prepared-material-bindings.ts +4 -0
- package/src/record/recovery-pipeline.ts +56 -0
- package/src/record/render-context.ts +34 -3
- package/src/record/shadow-pass.ts +187 -50
- package/src/record/typed-frame-graph.ts +60 -3
- package/src/record/view-ubo.ts +1 -1
- package/src/recovery/render-system-candidate.ts +54 -11
- package/src/reflection/background.ts +151 -0
- package/src/reflection/filter.ts +3 -0
- package/src/reflection/projection.ts +16 -6
- package/src/reflection/record-owner.ts +282 -86
- package/src/render-contract.ts +50 -32
- package/src/render-graph-primitives.ts +28 -3
- package/src/render-pipeline.ts +20 -1
- package/src/render-system-extract-tail.ts +23 -3
- package/src/render-system-extract.ts +127 -42
- package/src/render-system.ts +35 -7
- package/src/scene/render-scene.ts +8 -0
- package/src/ssao-config.ts +25 -8
- package/src/ssr/graph.ts +78 -58
- package/src/temporal/gpu.ts +5 -0
- package/src/temporal/standard-scene-data.ts +7 -1
- package/src/temporal/target-coverage-attachment.ts +72 -0
- package/src/temporal/temporal-view.ts +10 -4
- package/src/temporal/view.ts +12 -2
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +24 -9
- package/src/typed-render-graph-primitives.ts +38 -0
- package/src/volume/component.ts +1 -0
- package/src/volume/passes.ts +3 -3
- package/dist/chunk-33XZFTQU.mjs.map +0 -1
- package/dist/chunk-BQVQOQJH.mjs.map +0 -1
- package/dist/chunk-BTWH7BP4.mjs.map +0 -1
- package/dist/chunk-FUODTTIA.mjs.map +0 -1
- package/dist/chunk-JQTSEI3Z.mjs.map +0 -1
- package/dist/chunk-NICXSHAT.mjs.map +0 -1
- package/dist/chunk-NRNXBLIJ.mjs.map +0 -1
- package/dist/chunk-S4DNKQYQ.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -49,6 +49,12 @@ An AI consumer can start with the public sequence `state -> inspect -> recover
|
|
|
49
49
|
`disposed` is terminal. `inspect()` is detached POD evidence for the current
|
|
50
50
|
state, recovery attempt, and named output contract. After `recover()` succeeds, submit the current
|
|
51
51
|
draw input and use the new `FrameReceipt` as the proof for that generation.
|
|
52
|
+
An active device loss includes native `destroyed` notifications; only retired
|
|
53
|
+
or unpublished candidate generations are isolated from active health. Pending
|
|
54
|
+
dynamic geometry must be prepared again for the replacement generation before
|
|
55
|
+
admission. Explicit preparation between recovery and draw may upload its new
|
|
56
|
+
payload; the first-draw guard still rejects lazy cold uploads or pipeline builds
|
|
57
|
+
inside rendering. Preparation does not make an old-generation receipt current.
|
|
52
58
|
Recovery prepares the last successfully submitted workset; the next draw still
|
|
53
59
|
consumes current World edits and admits new resources through normal residency.
|
|
54
60
|
|
|
@@ -144,9 +150,20 @@ The remaining CSM fields keep these public units and defaults: `cascadeCount`
|
|
|
144
150
|
is an integer in `[1, 4]` (default `4`), `splitLambda` is `[0, 1]` (default
|
|
145
151
|
`0.75`), `cascadeBlend` is `[0, 0.5]` (default `0.2`), `mapSize` is a positive
|
|
146
152
|
map resolution (default `2048`), `depthBias` is a depth value (default
|
|
147
|
-
`0.
|
|
153
|
+
`0.00001`, subtracted from normalized receiver depth), `normalBias` offsets the
|
|
154
|
+
surface receiver position along its world-space normal before projection (default `0.05`), and
|
|
148
155
|
`shadowDistance` is a positive world-unit distance in meters (default `200`).
|
|
149
156
|
|
|
157
|
+
Normal offset and depth bias are independent: increasing the CSM depth span must
|
|
158
|
+
not magnify the world-space normal offset. Both PCF and PCSS project the offset
|
|
159
|
+
receiver; volumetric samples have no surface normal and use only depth bias.
|
|
160
|
+
Cascade projections include their incoming blend band, and PCSS depth spans
|
|
161
|
+
match the actual projection, including toward-light caster reach. The normal
|
|
162
|
+
position offset follows the approach in
|
|
163
|
+
[Three.js shadowmap_vertex](https://github.com/mrdoob/three.js/blob/e45cbf7ff66df079cfa39d9699ccb42729934be1/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js).
|
|
164
|
+
The real-render regression is
|
|
165
|
+
[`shadow-contact.browser.test.ts`](../runtime/src/__tests__/shadow-contact.browser.test.ts).
|
|
166
|
+
|
|
150
167
|
After `draw`, read the single `renderer.inspect().directionalShadow` projection.
|
|
151
168
|
It is JSON-safe and bounded: `requested` is author intent, `effective` is the
|
|
152
169
|
admitted profile, `status` is `accepted | fallback | rejected`, and
|
|
@@ -202,16 +219,24 @@ The Standard graph renders an Atmosphere source as a 128-by-128, six-face
|
|
|
202
219
|
DirectionalLight supplies the sun direction, color, and illuminance; the sun
|
|
203
220
|
angle is in radians, and zero radius disables the visible disc. Geometry covers
|
|
204
221
|
the background through ordinary scene rendering, including transparent blending.
|
|
205
|
-
The cube excludes the disc.
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
222
|
+
The cube excludes the disc. An explicit `Skylight` without an equirect asset
|
|
223
|
+
uses diffuse irradiance and roughness-prefiltered radiance from this same cube.
|
|
224
|
+
Its color and intensity remain the lighting controls; no Skylight means no
|
|
225
|
+
global ambient contribution. An explicit equirect keeps its image source.
|
|
226
|
+
Use a neutral Skylight tint when comparing local captures against the sky.
|
|
227
|
+
|
|
228
|
+
The cube has 786,432 texture payload bytes. Its 16-square irradiance cube and
|
|
229
|
+
64-square, five-mip prefilter add 274,176 bytes; parameters and vertices total
|
|
230
|
+
1,560 bytes, before backend allocation alignment. DeviceScope owns one cached
|
|
231
|
+
set, imported into each graph. Resize and probe topology changes reuse it;
|
|
232
|
+
disabling Atmosphere retains it until device-scope retirement. Device recovery
|
|
233
|
+
allocates a fresh set. Its six faces and lighting products update together only
|
|
234
|
+
when the selected environment signature changes, and become current only after
|
|
235
|
+
successful frame submission. An unchanged source runs only the background pass.
|
|
236
|
+
GPU pass observations
|
|
213
237
|
name `atmosphere-prepare`, `atmosphere-cube-0` through `atmosphere-cube-5`, and
|
|
214
|
-
`atmosphere-background
|
|
238
|
+
`atmosphere-background`, `atmosphere-irradiance-*` and `atmosphere-prefilter-*`;
|
|
239
|
+
unavailable timestamps remain explicitly unavailable.
|
|
215
240
|
The source lifecycle inspection and graph resource accounting describe different
|
|
216
241
|
owners: a source revision is not a claim that its GPU cube was submitted.
|
|
217
242
|
|
|
@@ -220,6 +245,10 @@ shows the public scene inputs and associated acceptance gates.
|
|
|
220
245
|
|
|
221
246
|
## GPU pass timing: opt in, draw, observe, branch on status
|
|
222
247
|
|
|
248
|
+
When App owns the draw loop, `renderer.subscribe` delivers the exact `receipt`
|
|
249
|
+
in each `frame-submitted` event. Pass that receipt to `observe`; do not construct
|
|
250
|
+
one from the frame number. Start observation promptly because retention is bounded.
|
|
251
|
+
|
|
223
252
|
GPU pass timing is disabled by default. Opt in once on `createRenderer`, keep the
|
|
224
253
|
returned `FrameReceipt`, and request facts only for that receipt. The pass
|
|
225
254
|
duration is a bounded GPU fact; it is not frame latency.
|
|
@@ -497,6 +526,50 @@ API; use the existing owner operation shown here, then submit and inspect again:
|
|
|
497
526
|
SSR never invokes these operations or mutates producer/device state; this table
|
|
498
527
|
maps the typed action to the existing public World and Renderer seams.
|
|
499
528
|
|
|
529
|
+
## Screen-space ambient occlusion
|
|
530
|
+
|
|
531
|
+
Enable AO through the same public Standard profile used at creation or by
|
|
532
|
+
`renderer.setProfile()`. It requires `renderPath: 'deferred'` for current-frame
|
|
533
|
+
depth and world normals; an incompatible profile returns a structured error.
|
|
534
|
+
|
|
535
|
+
The GLES fallback does not support the required raw-depth shader reads. It boots normally with AO disabled; requesting AO reports `feature-not-enabled` and requires WebGPU.
|
|
536
|
+
|
|
537
|
+
The default Vite shader producer includes SSAO, so `StandardProfile.ssao` needs no build-time opt-in. A deliberately stripped manifest reports `post-process-not-found` when AO is requested; it must not silently render white AO.
|
|
538
|
+
|
|
539
|
+
```ts
|
|
540
|
+
const configured = renderer.setProfile({
|
|
541
|
+
...renderer.inspect().profile,
|
|
542
|
+
renderPath: 'deferred',
|
|
543
|
+
ssao: { quality: 'medium', radius: 0.5, bias: 0.025, intensity: 1 },
|
|
544
|
+
});
|
|
545
|
+
if (!configured.ok) throw configured.error;
|
|
546
|
+
// Remove both AO passes and their per-frame upload work:
|
|
547
|
+
const disabled = renderer.setProfile({ ...renderer.inspect().profile, ssao: false });
|
|
548
|
+
if (!disabled.ok) throw disabled.error;
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
| Parameter | Contract |
|
|
552
|
+
|:--|:--|
|
|
553
|
+
| `quality` | `low` / `medium` / `high`: 16 / 32 / 64 hemisphere samples; default `high` |
|
|
554
|
+
| `radius` | Positive finite view-space distance; default `0.5` |
|
|
555
|
+
| `bias` | Non-negative finite view-space depth bias; default `0.025` |
|
|
556
|
+
| `intensity` | Non-negative finite strength; default `1`; zero preserves the unoccluded image |
|
|
557
|
+
| `ssao: true` | Enables the same default parameter set |
|
|
558
|
+
|
|
559
|
+
AO runs at half resolution with a symmetric depth/normal-aware blur. Sampling
|
|
560
|
+
uses the raster projection, including camera jitter. Static, skinned, and
|
|
561
|
+
custom Standard surfaces multiply ambient illumination and the corresponding
|
|
562
|
+
SSR fallback by the same AO factor; direct lights remain unchanged. Material
|
|
563
|
+
occlusion is applied once. AO is reconstructed every frame and owns no temporal
|
|
564
|
+
history, so moved geometry cannot leave a retained AO image.
|
|
565
|
+
|
|
566
|
+
> [!NOTE]
|
|
567
|
+
> AO is a local screen-space approximation. Offscreen occluders are absent,
|
|
568
|
+
> and silhouettes can retain small half-resolution sampling artifacts. Use
|
|
569
|
+
> the plane-plus-cube example at `apps/learn-render/5.advanced-lighting/9.ssao`
|
|
570
|
+
> to compare contact, lift, quality, radius, and disabled behavior. GPU timings
|
|
571
|
+
> are opt-in via `gpuPassTiming` and receipt-bound `observe(..., { include: ['timings'] })`.
|
|
572
|
+
|
|
500
573
|
## Target and probe lifecycle index
|
|
501
574
|
|
|
502
575
|
The public target route is one Renderer owner: create a typed `RenderTarget`, create a
|
|
@@ -520,6 +593,90 @@ must match the committed row's frame and device generation before it is used as
|
|
|
520
593
|
The exact public names and stable consumer IDs are machine-readable in
|
|
521
594
|
`src/__tests__/render-target-public-schema.json`.
|
|
522
595
|
|
|
596
|
+
### Dynamic reflection probes
|
|
597
|
+
|
|
598
|
+
```ts
|
|
599
|
+
const probe = world.spawn(
|
|
600
|
+
{ component: Transform, data: { pos: [0, 1, 0] } },
|
|
601
|
+
{ component: ReflectionProbe, data: {
|
|
602
|
+
halfExtents: [5, 3, 5], resolution: 128,
|
|
603
|
+
updateIntent: REFLECTION_PROBE_UPDATE_ON_CHANGE,
|
|
604
|
+
} },
|
|
605
|
+
).unwrap();
|
|
606
|
+
// Explicit invalidation also works for a once probe.
|
|
607
|
+
const current = world.get(probe, ReflectionProbe).unwrap();
|
|
608
|
+
world.set(probe, ReflectionProbe, {
|
|
609
|
+
invalidationVersion: current.invalidationVersion + 1,
|
|
610
|
+
}).unwrap();
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
| Update intent | Trigger |
|
|
614
|
+
|:--|:--|
|
|
615
|
+
| `REFLECTION_PROBE_UPDATE_ONCE` | Initial capture, explicit invalidation, or probe movement |
|
|
616
|
+
| `REFLECTION_PROBE_UPDATE_ON_CHANGE` | Above, plus retained scene/material/geometry or light/environment changes |
|
|
617
|
+
| `REFLECTION_PROBE_UPDATE_CONTINUOUS` | Start another capture after the previous candidate completes |
|
|
618
|
+
|
|
619
|
+
The renderer shares **one capture face or PMREM face/mip step per submitted
|
|
620
|
+
frame across all probes**, round-robin. One probe needs six raw faces plus 30
|
|
621
|
+
filter steps: 36 completed submissions after pipeline readiness. Multiple probes
|
|
622
|
+
share that budget. This is amortized realtime updating, with visible latency;
|
|
623
|
+
it does not provide a fresh six-face snapshot every display frame. Changes
|
|
624
|
+
arriving during a cycle coalesce into the next cycle rather than starving
|
|
625
|
+
publication. Video and time-driven shader changes require continuous mode or
|
|
626
|
+
explicit invalidation when their producer does not update scene change evidence.
|
|
627
|
+
|
|
628
|
+
A complete candidate swaps atomically after successful GPU completion. Failed
|
|
629
|
+
submissions retry the same step, and stale device-generation completions cannot
|
|
630
|
+
publish. A moving probe uses Skylight fallback until a capture at its new center
|
|
631
|
+
is ready. Each face sees the retained authored scene, including objects outside
|
|
632
|
+
the display camera; authored hidden objects stay excluded. Probe specular keeps
|
|
633
|
+
the global Skylight diffuse color, intensity, and rotation. Shared materials
|
|
634
|
+
still select probes independently for each object.
|
|
635
|
+
|
|
636
|
+
Raw faces sample the selected Atmosphere sky cube, otherwise the authored
|
|
637
|
+
`SkyboxBackground`, or the Skylight environment when no skybox is present,
|
|
638
|
+
in the same HDR geometry pass. Atmosphere capture declares a sampled-read of
|
|
639
|
+
the existing graph-owned cube; it does not evaluate another sky or allocate
|
|
640
|
+
another sky texture. Its sun disc remains in the display background only,
|
|
641
|
+
while directional lighting supplies the specular sun response. Changes to
|
|
642
|
+
Atmosphere parameters invalidate `on-change` probes through the existing
|
|
643
|
+
selected-environment signature. Camera-only changes do not invalidate them.
|
|
644
|
+
Environment asset readiness precedes capture. Camera-cube orientation is normalized during PMREM
|
|
645
|
+
production; runtime probe sampling does not apply the image-IBL Y conversion.
|
|
646
|
+
Place capture centers in empty space, away from the interior of opaque objects.
|
|
647
|
+
|
|
648
|
+
Fallback source receipts publish only after the actual graph output completes
|
|
649
|
+
on the GPU. Normal rendering performs no fallback pixel readback or hashing.
|
|
650
|
+
Set `captureReflectionFallbackReadback: true` on `createApp` / `createRenderer`
|
|
651
|
+
only for diagnostics that need `reflectionFallbackReadback`: this copies,
|
|
652
|
+
maps, validates and hashes the full HDR attachment each submitted frame.
|
|
653
|
+
Source receipts contain selection facts; the optional readback receipt contains
|
|
654
|
+
actual sampled pixel evidence. Submission failure preserves compatible LKG,
|
|
655
|
+
and stale device or source completions cannot publish either kind of receipt.
|
|
656
|
+
|
|
657
|
+
The selected probe is admitted per object, but its influence is evaluated per
|
|
658
|
+
shaded pixel. Pixels outside `halfExtents` use the global Skylight specular map;
|
|
659
|
+
the outer 10% of the box blends into that source. The global texture stays
|
|
660
|
+
resident alongside the local cube, including GPU-driven and custom Surface
|
|
661
|
+
materials. Changing either resource invalidates material binding reuse.
|
|
662
|
+
|
|
663
|
+
`boxProjection` defaults to `false`, as a general captured cubemap has no known
|
|
664
|
+
wall geometry. Set it to `true` only when `halfExtents` also describes a room's
|
|
665
|
+
reflection proxy. A small influence box around an outdoor object is not a room
|
|
666
|
+
proxy: forcing that correction can reflect the wrong surface even for an
|
|
667
|
+
otherwise valid ray. The SSR demo exposes independent SSR/probe controls and a
|
|
668
|
+
**Plane + cube** fixture; the Objects fixture keeps every object resting on its
|
|
669
|
+
floor and contains the probe receiver within the influence box.
|
|
670
|
+
|
|
671
|
+
Resolution is an actual power of two from 16 through 256. The 64 MiB admission
|
|
672
|
+
budget counts the raw cube, two filtered cubes, and depth attachments, with at
|
|
673
|
+
most 16 probes; at 256 pixels the byte budget admits five. Start at 64 or 128 for
|
|
674
|
+
frequent updates. `inspect().reflectionProbes.updates` reports intent, requested
|
|
675
|
+
and captured revision, active generation, pending work, and completion latency.
|
|
676
|
+
The SSR fallback source identity includes the active probe generation, so a
|
|
677
|
+
new environment invalidates stale SSR history. Probe capture, SSR ray tracing,
|
|
678
|
+
and SSR composition remain separate observable work.
|
|
679
|
+
|
|
523
680
|
## Stable inspection and dark-gradient evidence
|
|
524
681
|
|
|
525
682
|
Progressive disclosure is intentional: read Camera configuration first, then
|
|
@@ -1160,6 +1317,10 @@ the custom parameters on the returned root MaterialAsset. Compiler and loader
|
|
|
1160
1317
|
project that published contract without adding fields based on a Pass module.
|
|
1161
1318
|
Physical layer declarations remain sparse. A custom full-shader material does
|
|
1162
1319
|
not acquire Standard semantics by adding a shadow Pass or a `surface` slot.
|
|
1320
|
+
When a producer also publishes `vs_main` and `vs_scene_index` for a controlled
|
|
1321
|
+
full-custom program, the same prepared material can use the GPU-driven indirect
|
|
1322
|
+
lane; ordinary custom WGSL without that ABI remains on its direct/specialized
|
|
1323
|
+
lane.
|
|
1163
1324
|
|
|
1164
1325
|
The custom WGSL implements only `evaluate_surface`; it does not declare
|
|
1165
1326
|
stages, bindings, lighting, or output code. The Engine composes the result
|
|
@@ -1181,7 +1342,7 @@ consumer never re-infers physical layers from `SurfaceData`.
|
|
|
1181
1342
|
|:--|:--|:--|
|
|
1182
1343
|
| base-only Standard | no second physical layer | Deferred plus Forward and ShadowCaster |
|
|
1183
1344
|
| Standard with a physical layer | physical layer present | Forward plus ShadowCaster |
|
|
1184
|
-
| full-custom escape hatch | no Standard plan | authored custom pass contract |
|
|
1345
|
+
| full-custom escape hatch | no Standard plan | authored custom pass contract; GPU-driven only with a published direct/scene-index ABI |
|
|
1185
1346
|
|
|
1186
1347
|
## Points and Lines runtime contract
|
|
1187
1348
|
|
|
@@ -1337,16 +1498,31 @@ void materialHandle;
|
|
|
1337
1498
|
| Candidate | Main GPU lane | Shadow GPU lane | Closed result |
|
|
1338
1499
|
|:--|:--:|:--:|:--|
|
|
1339
1500
|
| Standard opaque or Alpha Mask, finite resources | supported | supported | `gpu` |
|
|
1340
|
-
| Standard skin with
|
|
1501
|
+
| Standard skin with imported or explicitly authored finite animated bounds | supported | supported | `gpu` |
|
|
1341
1502
|
| Skin bounds missing or non-finite | refused | refused | `cpu-deformation` |
|
|
1342
1503
|
| Capable resource/pipeline not ready | refused | refused | `blocked` (`resource-not-ready`) |
|
|
1343
|
-
| Blend, transmission, morph, custom, or unsupported topology | refused | refused | `cpu-semantic` |
|
|
1344
|
-
|
|
|
1504
|
+
| Blend, transmission, morph, custom without a published ABI, or unsupported topology | refused | refused | `cpu-semantic` |
|
|
1505
|
+
| ABI-backed custom Surface/full-custom row within the producer page | supported | supported when a ShadowCaster ABI is published | `gpu` |
|
|
1506
|
+
|
|
1507
|
+
The custom row is deliberately about the published producer contract, not a
|
|
1508
|
+
shader-name allowlist. A custom program is eligible only when its cooked receipt
|
|
1509
|
+
contains matching direct/scene-index entries, reflected resources, vertex inputs,
|
|
1510
|
+
and a schema-derived row no larger than the 512-byte GPU Scene page. Custom
|
|
1511
|
+
storage-buffer resources, renderer-local/video sources, and pass attachments that
|
|
1512
|
+
have no corresponding prepared owner remain on their specialized lane until that
|
|
1513
|
+
owner publishes the missing binding and recovery contract. The legacy
|
|
1514
|
+
[`custom-shader` demo](../../apps/hello/custom-shader) is direct-only by design;
|
|
1515
|
+
it does not publish `vs_scene_index`, so it is not evidence for the indirect lane.
|
|
1516
|
+
|
|
1517
|
+
Clustered local lights and SSAO use the same group-2 lighting bindings in direct
|
|
1518
|
+
and scene-index programs, including custom Surface programs. These switches do
|
|
1519
|
+
not disable GPU-driven admission. SSAO requires `renderPath: 'deferred'` to
|
|
1520
|
+
produce depth and normals. SSR's fallback MRT selects the corresponding
|
|
1521
|
+
scene-index fragment variant; background probe capture preserves the display
|
|
1522
|
+
view's GPU submission. Each pass selects its own material slots and color
|
|
1523
|
+
attachments. Shared materials at different local probes retain separate binding
|
|
1524
|
+
classes so deduplication cannot substitute one object's reflection environment.
|
|
1345
1525
|
|
|
1346
|
-
The current scene-index shader does not consume the unified Cluster surface
|
|
1347
|
-
bindings. Admission checks active surface requirements each frame; disabling
|
|
1348
|
-
SSAO restores GPU eligibility when no other unsupported input remains. The
|
|
1349
|
-
existing complete CPU submission path still renders on the selected GPU.
|
|
1350
1526
|
|
|
1351
1527
|
### Static TextureAsset admission
|
|
1352
1528
|
|
|
@@ -1455,9 +1631,12 @@ view-local visibility and projection bindings. Ownership is per draw item and
|
|
|
1455
1631
|
view pass, so one draw can be GPU-owned in the main/shadow channels while an
|
|
1456
1632
|
unrelated semantic pass remains CPU-owned.
|
|
1457
1633
|
|
|
1458
|
-
Transparent/blend, transmission, morph,
|
|
1459
|
-
|
|
1460
|
-
|
|
1634
|
+
Transparent/blend, transmission, morph, unsupported prepared variants, and
|
|
1635
|
+
skin without a producer-authored conservative bound stay on an explicit CPU
|
|
1636
|
+
semantic or CPU deformation lane. A producer-published custom Surface or
|
|
1637
|
+
full-custom ABI follows the same GPU lane when its selected Pass passes the
|
|
1638
|
+
prepared contract; an ordinary custom WGSL artifact without that ABI remains
|
|
1639
|
+
CPU/specialized. WebGL2 selects capability
|
|
1461
1640
|
fallback from the same persistent projection; it does not emulate compute.
|
|
1462
1641
|
Missing capable-path artifacts and failed resource publication are structured
|
|
1463
1642
|
errors that block graph promotion rather than silently drawing the same item a
|
|
@@ -1973,6 +2152,28 @@ physics.admitDerivedShapeCandidate(physicsCandidate, () => {
|
|
|
1973
2152
|
// After World.update succeeds, inspect Physics publication/failure and draw.
|
|
1974
2153
|
```
|
|
1975
2154
|
|
|
2155
|
+
For a group of physical bodies, pair `physics.admitDerivedShapeCandidates`
|
|
2156
|
+
with `renderer.acceptDynamicGeometryCandidates`. The latter accepts one prepared
|
|
2157
|
+
candidate per distinct render entity, all in the same attached World and fixed
|
|
2158
|
+
step, using the existing candidate budget. It retains previous unpublished
|
|
2159
|
+
credentials and GPU leases until every MeshFilter swap succeeds. A later-member
|
|
2160
|
+
refusal restores earlier bindings; if restoration cannot be proven it throws so
|
|
2161
|
+
the paired physics owner requires reconstruction. Topology history is invalidated
|
|
2162
|
+
once after the whole successful group. Retain every returned accepted credential
|
|
2163
|
+
and inspect its normal FrameReceipt; callback success alone is not a draw receipt.
|
|
2164
|
+
|
|
2165
|
+
```ts
|
|
2166
|
+
physics.admitDerivedShapeCandidates(physicsCandidates, () => {
|
|
2167
|
+
const admitted = renderer.acceptDynamicGeometryCandidates(geometryCandidates, {
|
|
2168
|
+
world,
|
|
2169
|
+
fixedStep: world.getResource(FixedTime).tick,
|
|
2170
|
+
});
|
|
2171
|
+
if (!admitted.ok) return err(admitted.error);
|
|
2172
|
+
acceptedGeometries = admitted.value;
|
|
2173
|
+
return ok(undefined);
|
|
2174
|
+
}).unwrap();
|
|
2175
|
+
```
|
|
2176
|
+
|
|
1976
2177
|
The commit must return immediately after its complete binding change, without
|
|
1977
2178
|
additional fallible work. On physical preparation/native failure it is not called;
|
|
1978
2179
|
cancel the still-prepared geometry using its normal owner. On a refused commit,
|
|
@@ -2073,6 +2274,32 @@ loading therefore continues through the existing route; a producer that needs
|
|
|
2073
2274
|
a custom voxel artifact owns that schema and loader outside the Engine, while
|
|
2074
2275
|
its projected standard mesh enters this candidate path.
|
|
2075
2276
|
|
|
2277
|
+
### Residency resource retirement
|
|
2278
|
+
|
|
2279
|
+
Scope-owned `GpuBuffer` and `GpuTexture` registrations end when their explicit
|
|
2280
|
+
`destroy()` succeeds. Failed destruction keeps scope ownership for cleanup;
|
|
2281
|
+
scope termination still cleans remaining resources in reverse adoption order.
|
|
2282
|
+
Mesh retirement waits for outstanding submission and candidate leases before
|
|
2283
|
+
releasing that registration, so repeated mesh replacement does not retain all
|
|
2284
|
+
destroyed handles in the renderer generation. Caller-held handles retain their
|
|
2285
|
+
existing observable state; resource disposal is distinct from JavaScript GC.
|
|
2286
|
+
|
|
2076
2287
|
### Targeted spatial inspection
|
|
2077
2288
|
|
|
2078
2289
|
`renderer.bounds(world, entity)` returns a detached world-space AABB from the last extracted composition, including the existing instance-bound projection. It returns `undefined` for an absent World/entity or unknown/invalid producer bounds. This is renderer geometry evidence, not collision geometry or a synchronous update of authored World changes. A subsequent draw refreshes the projection; callers must not substitute an origin for an unavailable mesh bound. The query reuses culling ownership and retains no additional bounds cache.
|
|
2290
|
+
|
|
2291
|
+
### Volumetric density coordinates
|
|
2292
|
+
|
|
2293
|
+
`VolumetricFog.density` is a linear scalar field over `boundsMin` to `boundsMax`.
|
|
2294
|
+
World positions map to `(position - boundsMin) / (boundsMax - boundsMin)` and
|
|
2295
|
+
sample with clamp-to-edge addressing. The renderer clamps negative density at
|
|
2296
|
+
the optical-depth boundary, but adds no bias, octave synthesis, repetition or
|
|
2297
|
+
animation. White density means one; zero density contributes no extinction or
|
|
2298
|
+
scattering. Noise synthesis belongs to the asset producer. The existing volume
|
|
2299
|
+
passes integrate this field against scene depth before output tonemapping.
|
|
2300
|
+
|
|
2301
|
+
Density integration uses fixed segment midpoints and the profile's logical
|
|
2302
|
+
froxel depth, including the clipped final segment. It does not rotate density
|
|
2303
|
+
samples with frame number: static authored air must not create temporal noise.
|
|
2304
|
+
Shadow visibility uses matching froxel centers without per-frame XY jitter or
|
|
2305
|
+
stochastic byte dithering. Shared PCF shadow filtering remains in effect.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ShaderModule } from '@forgeax/engine-rhi';
|
|
2
2
|
import type { ManifestEntry } from '@forgeax/engine-types';
|
|
3
3
|
import type { AtmosphereShaderSources } from '../render-contract';
|
|
4
|
-
/** Admit and compile the complete analytic-atmosphere shader
|
|
4
|
+
/** Admit and compile the complete analytic-atmosphere shader programs atomically. */
|
|
5
5
|
export declare function prewarmAtmosphereShaders(entries: readonly ManifestEntry[], compile: (label: string, source: string) => Promise<ShaderModule>, seed: (label: string, module: ShaderModule) => void): Promise<AtmosphereShaderSources | undefined>;
|
|
6
6
|
//# sourceMappingURL=atmosphere-shader-prewarm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atmosphere-shader-prewarm.d.ts","sourceRoot":"","sources":["../../src/assembly/atmosphere-shader-prewarm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,
|
|
1
|
+
{"version":3,"file":"atmosphere-shader-prewarm.d.ts","sourceRoot":"","sources":["../../src/assembly/atmosphere-shader-prewarm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,qFAAqF;AACrF,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,EACjE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,GAClD,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CA6B9C"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { RhiAdapter, RhiDevice } from '@forgeax/engine-rhi';
|
|
2
|
-
|
|
2
|
+
import { STANDARD_PBR_REQUIRED_SAMPLED_TEXTURES } from './shader-prewarm-policy';
|
|
3
|
+
export { STANDARD_PBR_REQUIRED_SAMPLED_TEXTURES };
|
|
4
|
+
export declare function transmissionBackdropAvailable(limit: number | undefined): boolean;
|
|
3
5
|
/**
|
|
4
6
|
* The complete Standard physical root can declare all optional texture slots.
|
|
5
7
|
* Its material group therefore needs one more sampled-texture entry than the
|
|
@@ -7,7 +9,7 @@ export declare const STANDARD_PBR_REQUIRED_SAMPLED_TEXTURES = 17;
|
|
|
7
9
|
* provide it; lower-capability devices remain fail-closed at material
|
|
8
10
|
* pipeline admission instead of receiving an invalid WebGPU layout.
|
|
9
11
|
*/
|
|
10
|
-
export declare const STANDARD_PHYSICAL_REQUIRED_SAMPLED_TEXTURES =
|
|
12
|
+
export declare const STANDARD_PHYSICAL_REQUIRED_SAMPLED_TEXTURES = 22;
|
|
11
13
|
export interface DeviceFeatureAdmissionOptions {
|
|
12
14
|
readonly gpuPassTiming?: object | undefined;
|
|
13
15
|
readonly captureGpuTimings?: boolean | undefined;
|
|
@@ -22,5 +24,4 @@ type AdapterFeatureProbe = Pick<RhiAdapter, 'features'> & Partial<Pick<RhiAdapte
|
|
|
22
24
|
export declare function deriveDeviceFeatureAdmission(adapter: AdapterFeatureProbe, options?: DeviceFeatureAdmissionOptions): DeviceFeatureAdmission;
|
|
23
25
|
export declare function deviceOptionsForAdapter(adapter: AdapterFeatureProbe, options?: DeviceFeatureAdmissionOptions): DeviceFeatureAdmission | undefined;
|
|
24
26
|
export declare function isTimestampQueryAdmitted(caps: Pick<RhiDevice['caps'], 'timestampQuery' | 'timestampPeriodNanoseconds'>): boolean;
|
|
25
|
-
export {};
|
|
26
27
|
//# sourceMappingURL=device-feature-admission.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-feature-admission.d.ts","sourceRoot":"","sources":["../../src/assembly/device-feature-admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"device-feature-admission.d.ts","sourceRoot":"","sources":["../../src/assembly/device-feature-admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,sCAAsC,EAAE,MAAM,yBAAyB,CAAC;AAcjF,OAAO,EAAE,sCAAsC,EAAE,CAAC;AAElD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEhF;AACD;;;;;;GAMG;AACH,eAAO,MAAM,2CAA2C,KAAK,CAAC;AAE9D,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE;QACxB,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;KACnD,CAAC;CACH;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE9F,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,6BAA6B,GACtC,sBAAsB,CA0BxB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,6BAA6B,GACtC,sBAAsB,GAAG,SAAS,CAKpC;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,4BAA4B,CAAC,GAC7E,OAAO,CAOT"}
|
|
@@ -5,6 +5,12 @@ import { type DynamicGeometryCandidate, DynamicGeometryError, type DynamicGeomet
|
|
|
5
5
|
export interface DynamicGeometryHostImplementation {
|
|
6
6
|
prepareDynamicGeometry(input: DynamicGeometryPrepareInput): Result<DynamicGeometryCandidate, DynamicGeometryError>;
|
|
7
7
|
acceptDynamicGeometry(candidate: DynamicGeometryCandidate, ordering: DynamicGeometryOrdering): Result<DynamicGeometryCandidate, DynamicGeometryError>;
|
|
8
|
+
/**
|
|
9
|
+
* Atomically swap distinct entities in one attached World. Returned failures
|
|
10
|
+
* retain old bindings; an uncertain rollback throws to require paired rebuild.
|
|
11
|
+
* Invoke inside PhysicsWorld.admitDerivedShapeCandidates commitGeometry.
|
|
12
|
+
*/
|
|
13
|
+
acceptDynamicGeometryCandidates(candidates: readonly DynamicGeometryCandidate[], ordering: DynamicGeometryOrdering): Result<readonly DynamicGeometryCandidate[], DynamicGeometryError>;
|
|
8
14
|
dynamicGeometryReceipt(candidate: DynamicGeometryCandidate): DynamicGeometryReceipt | undefined;
|
|
9
15
|
cancelDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
10
16
|
retireDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-geometry-host.d.ts","sourceRoot":"","sources":["../../src/assembly/dynamic-geometry-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAI/D,OAAO,
|
|
1
|
+
{"version":3,"file":"dynamic-geometry-host.d.ts","sourceRoot":"","sources":["../../src/assembly/dynamic-geometry-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,12 @@ export interface RendererHostImplementation {
|
|
|
39
39
|
attach(world: World): RenderResult<RenderWorldLease, RenderError>;
|
|
40
40
|
prepareDynamicGeometry(input: DynamicGeometryPrepareInput): Result<DynamicGeometryCandidate, DynamicGeometryError>;
|
|
41
41
|
acceptDynamicGeometry(candidate: DynamicGeometryCandidate, ordering: DynamicGeometryOrdering): Result<DynamicGeometryCandidate, DynamicGeometryError>;
|
|
42
|
+
/**
|
|
43
|
+
* Atomically swap distinct entities in one attached World. Returned failures
|
|
44
|
+
* retain old bindings; an uncertain rollback throws to require paired rebuild.
|
|
45
|
+
* Invoke inside PhysicsWorld.admitDerivedShapeCandidates commitGeometry.
|
|
46
|
+
*/
|
|
47
|
+
acceptDynamicGeometryCandidates(candidates: readonly DynamicGeometryCandidate[], ordering: DynamicGeometryOrdering): Result<readonly DynamicGeometryCandidate[], DynamicGeometryError>;
|
|
42
48
|
dynamicGeometryReceipt(candidate: DynamicGeometryCandidate): DynamicGeometryReceipt | undefined;
|
|
43
49
|
cancelDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
44
50
|
retireDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-contract.d.ts","sourceRoot":"","sources":["../../src/assembly/host-contract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"host-contract.d.ts","sourceRoot":"","sources":["../../src/assembly/host-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,39 @@
|
|
|
1
1
|
import { type MaterialRenderProjection as AssetMaterialRenderProjection } from '@forgeax/engine-assets-runtime';
|
|
2
2
|
import { type CookedMaterialRecord } from '@forgeax/engine-pack/material-cook';
|
|
3
|
-
import { type MaterialShaderArtifact } from '@forgeax/engine-shader';
|
|
4
|
-
import type { StandardLayerPlan } from '@forgeax/engine-types';
|
|
3
|
+
import { type MaterialShaderArtifact, type MaterialShaderEntry, type ShaderRegistry } from '@forgeax/engine-shader';
|
|
4
|
+
import type { MaterialProgramAddress, StandardLayerPlan } from '@forgeax/engine-types';
|
|
5
5
|
export type { MaterialRenderPassProjection } from '@forgeax/engine-assets-runtime';
|
|
6
6
|
export interface MaterialRenderProjection extends AssetMaterialRenderProjection {
|
|
7
7
|
readonly layerPlan: StandardLayerPlan;
|
|
8
8
|
}
|
|
9
9
|
export declare function assembleMaterialProjection(record: CookedMaterialRecord): MaterialRenderProjection;
|
|
10
10
|
/**
|
|
11
|
-
* Assemble the one built-in Standard PBR artifact from the
|
|
11
|
+
* Assemble the one built-in Standard PBR artifact from the registry-owned entry.
|
|
12
12
|
* Both rigid and skinned identifiers use this producer; unsupported identifiers
|
|
13
13
|
* stay outside the GPU-driven Standard PBR lane.
|
|
14
14
|
*/
|
|
15
15
|
export declare function assembleStandardPbrArtifact(materialShaderId: string, wgsl: string, vertexColorAvailable?: boolean): MaterialShaderArtifact | undefined;
|
|
16
|
+
export declare function assembleStandardPbrArtifact(materialShaderId: string, shaderEntry: MaterialShaderEntry, options?: MaterialShaderArtifactRequest): MaterialShaderArtifact | undefined;
|
|
17
|
+
export interface MaterialShaderArtifactRequest {
|
|
18
|
+
/** Geometry-owned COLOR_0 fact used to select the matching published variant. */
|
|
19
|
+
readonly vertexColorAvailable?: boolean;
|
|
20
|
+
/** Deformation lane used to select a skin-compatible shadow variant. */
|
|
21
|
+
readonly deformation?: 'rigid' | 'skin';
|
|
22
|
+
readonly clustered?: boolean;
|
|
23
|
+
readonly reflectionFallback?: boolean;
|
|
24
|
+
readonly variantSet?: string;
|
|
25
|
+
/** Submission address requested by the consumer; GPU-driven uses scene-index. */
|
|
26
|
+
readonly address?: MaterialProgramAddress;
|
|
27
|
+
/** Concrete Pass whose entry metadata is being assembled. */
|
|
28
|
+
readonly pass?: 'forward' | 'shadow' | 'depth';
|
|
29
|
+
}
|
|
30
|
+
/** Resolve the registry-owned Standard PBR artifact, including the historical skin alias. */
|
|
31
|
+
export declare function resolveStandardPbrArtifact(materialShaderId: string, shader: Pick<ShaderRegistry, 'findMaterialArtifact'> & Partial<Pick<ShaderRegistry, 'materialShaderManifestEntries'>>, options?: MaterialShaderArtifactRequest): MaterialShaderArtifact | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve any producer-published material artifact through the same manifest
|
|
34
|
+
* variant relation as Standard. Unlike the Standard compatibility helper this
|
|
35
|
+
* never fabricates a receipt: a custom shader without producer ABI remains
|
|
36
|
+
* outside the GPU-driven lane with a structured preparation error.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveMaterialShaderArtifact(materialShaderId: string, shader: Pick<ShaderRegistry, 'findMaterialArtifact'> & Partial<Pick<ShaderRegistry, 'materialShaderManifestEntries'>>, options?: MaterialShaderArtifactRequest): MaterialShaderArtifact | undefined;
|
|
16
39
|
//# sourceMappingURL=assembly.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../../../src/assembly/material/assembly.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,IAAI,6BAA6B,EAE/D,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,KAAK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../../../src/assembly/material/assembly.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,IAAI,6BAA6B,EAE/D,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,KAAK,sBAAsB,EAE3B,KAAK,mBAAmB,EAExB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAIvF,YAAY,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,MAAM,WAAW,wBAAyB,SAAQ,6BAA6B;IAC7E,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;CACvC;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,wBAAwB,CAejG;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,oBAAoB,CAAC,EAAE,OAAO,GAC7B,sBAAsB,GAAG,SAAS,CAAC;AACtC,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,mBAAmB,EAChC,OAAO,CAAC,EAAE,6BAA6B,GACtC,sBAAsB,GAAG,SAAS,CAAC;AA8DtC,MAAM,WAAW,6BAA6B;IAC5C,iFAAiF;IACjF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC1C,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;CAChD;AA6JD,6FAA6F;AAC7F,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,sBAAsB,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC,EAChE,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,GAAG,SAAS,CAkCpC;AAYD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,sBAAsB,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC,EAChE,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,GAAG,SAAS,CA+DpC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { BindGroupLayout } from '@forgeax/engine-rhi';
|
|
2
|
+
import type { MaterialShaderArtifact, ShaderRegistry } from '@forgeax/engine-shader';
|
|
3
|
+
import { type GpuDrivenPbrProgram } from '../../gpu-driven/pbr-program';
|
|
4
|
+
import type { LayoutKind } from '../material-shader-policy';
|
|
5
|
+
import { type MaterialShaderArtifactRequest } from './assembly';
|
|
6
|
+
type MaterialArtifactRegistry = Pick<ShaderRegistry, 'findMaterialArtifact'> & Partial<Pick<ShaderRegistry, 'materialShaderManifestEntries'>>;
|
|
7
|
+
export declare function resolveRendererMaterialShaderArtifact(materialShaderId: string, shader: MaterialArtifactRegistry, programs: ReadonlyMap<string, GpuDrivenPbrProgram> | undefined, options?: MaterialShaderArtifactRequest | boolean): MaterialShaderArtifact | undefined;
|
|
8
|
+
export declare function resolveMaterialPipelineShaderId(materialShaderId: string, passKind: string): string;
|
|
9
|
+
export declare function resolveMaterialPipelineVertexEntry(layoutKind: LayoutKind | undefined, vertexEntryPoint: string | undefined, authoredVertexEntry: string | undefined): string | undefined;
|
|
10
|
+
export interface MaterialPipelineBindGroupState {
|
|
11
|
+
readonly meshBindGroupLayout: BindGroupLayout;
|
|
12
|
+
readonly pbrSkinMeshBindGroupLayout: BindGroupLayout | null;
|
|
13
|
+
readonly hdrpSkinMeshBindGroupLayout: BindGroupLayout | null;
|
|
14
|
+
readonly hdrpMeshBindGroupLayout?: BindGroupLayout | null;
|
|
15
|
+
readonly instancesBindGroupLayout: BindGroupLayout;
|
|
16
|
+
readonly gpuDrivenInstancesBindGroupLayout?: BindGroupLayout | null;
|
|
17
|
+
}
|
|
18
|
+
export declare function resolveMaterialPipelineBindGroups(layoutKind: LayoutKind, state: MaterialPipelineBindGroupState, clustered?: boolean): {
|
|
19
|
+
readonly meshLayout: BindGroupLayout;
|
|
20
|
+
readonly instancesLayout: BindGroupLayout;
|
|
21
|
+
} | null;
|
|
22
|
+
export declare function isEngineOwnedMaterialShader(materialShaderId: string): boolean;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=pipeline-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-helpers.d.ts","sourceRoot":"","sources":["../../../src/assembly/material/pipeline-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,8BAA8B,CAAC;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,KAAK,6BAA6B,EAAiC,MAAM,YAAY,CAAC;AAE/F,KAAK,wBAAwB,GAAG,IAAI,CAAC,cAAc,EAAE,sBAAsB,CAAC,GAC1E,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC,CAAC;AAEjE,wBAAgB,qCAAqC,CACnD,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,SAAS,EAC9D,OAAO,GAAE,6BAA6B,GAAG,OAAY,GACpD,sBAAsB,GAAG,SAAS,CAWpC;AAED,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,GACf,MAAM,CAOR;AAED,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GACtC,MAAM,GAAG,SAAS,CAQpB;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,mBAAmB,EAAE,eAAe,CAAC;IAC9C,QAAQ,CAAC,0BAA0B,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5D,QAAQ,CAAC,2BAA2B,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7D,QAAQ,CAAC,uBAAuB,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1D,QAAQ,CAAC,wBAAwB,EAAE,eAAe,CAAC;IACnD,QAAQ,CAAC,iCAAiC,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACrE;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,8BAA8B,EACrC,SAAS,UAAQ,GAChB;IAAE,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAmB5F;AAED,wBAAgB,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAY7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material-shader-policy.d.ts","sourceRoot":"","sources":["../../src/assembly/material-shader-policy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAW,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAGzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAA8B,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE1F,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,kBAAkB,CAAC;AAEnF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAS7D;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IACtD,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,KAAK,uBAAuB,GAAG,WAAW,GAAG,WAAW,CAAC;AAEzD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,wBAAwB,EACxC,uBAAuB,EACnB,CAAC,CACC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,KAC/C,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,GAC7C,SAAS,EACb,2BAA2B,EACvB,CAAC,CACC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,KAC/C,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,GACpC,SAAS,EACb,IAAI,GAAE,uBAAqC,GAC1C,2BAA2B,CAoE7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACjD,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAmCzC;AAmBD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,aAAa,EAC9B,MAAM,EAAE,aAAa,EAIrB,yBAAyB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"material-shader-policy.d.ts","sourceRoot":"","sources":["../../src/assembly/material-shader-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-loss-fanout.d.ts","sourceRoot":"","sources":["../../../src/assembly/recovery/device-loss-fanout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,qFAAqF;AACrF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE;IACV,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,EAAE,wBAAwB,CAAC;IACxC,cAAc,EAAE,sBAAsB,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,GACA,IAAI,
|
|
1
|
+
{"version":3,"file":"device-loss-fanout.d.ts","sourceRoot":"","sources":["../../../src/assembly/recovery/device-loss-fanout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,qFAAqF;AACrF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE;IACV,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,EAAE,wBAAwB,CAAC;IACxC,cAAc,EAAE,sBAAsB,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,GACA,IAAI,CAuEN"}
|
|
@@ -2,7 +2,7 @@ import { type RhiAdapter, type RhiCanvasContext, type RhiDevice, RhiError, type
|
|
|
2
2
|
import { type Result } from '@forgeax/engine-types';
|
|
3
3
|
import type { RhiBackendPack } from '../backend-contract';
|
|
4
4
|
import { type RecoveryContinuation, type RecoveryDeadline, type RecoveryPhase } from '../renderer-lifecycle';
|
|
5
|
-
export
|
|
5
|
+
export { deviceOptionsForAdapter } from '../device-feature-admission';
|
|
6
6
|
type ProbeFormat = 'rgba16float' | 'rgba8unorm';
|
|
7
7
|
/**
|
|
8
8
|
* Prove that a freshly acquired candidate device can execute and expose one
|
|
@@ -28,10 +28,6 @@ export declare function probeCandidateGraphExecution(device: RhiDevice, target:
|
|
|
28
28
|
readonly view: TextureView;
|
|
29
29
|
readonly format: ProbeFormat;
|
|
30
30
|
}): Promise<import('@forgeax/engine-types').Result<void, RhiError>>;
|
|
31
|
-
export declare function deviceOptionsForAdapter(adapter: Pick<RhiAdapter, 'features' | 'limits'>): {
|
|
32
|
-
requiredFeatures?: GPUFeatureName[];
|
|
33
|
-
requiredLimits?: GPUDeviceDescriptor['requiredLimits'];
|
|
34
|
-
} | undefined;
|
|
35
31
|
export interface AcquiredDeviceGeneration {
|
|
36
32
|
readonly adapter: RhiAdapter;
|
|
37
33
|
readonly device: RhiDevice;
|
|
@@ -59,5 +55,4 @@ export type RecoveryStepOutcome<T, E> = {
|
|
|
59
55
|
export declare function runRecoveryStep<T, E>(operation: (continuation?: RecoveryContinuation) => Promise<Result<T, E>>, phase: RecoveryPhase, deadline: RecoveryDeadline | undefined, now?: () => number, continuation?: RecoveryContinuation): Promise<RecoveryStepOutcome<T, E>>;
|
|
60
56
|
/** Acquire the same backend generation inputs for boot and recovery. */
|
|
61
57
|
export declare function acquireDeviceGeneration(pack: RhiBackendPack, canvas: HTMLCanvasElement | OffscreenCanvas, deadline?: RecoveryDeadline, continuation?: RecoveryContinuation, onPhase?: (phase: RecoveryPhase) => void): Promise<Result<AcquiredDeviceGeneration, DeviceGenerationAcquisitionFailure>>;
|
|
62
|
-
export {};
|
|
63
58
|
//# sourceMappingURL=recovery-attempt.d.ts.map
|