@forgeax/engine-render 0.1.28 → 0.1.29
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 +627 -124
- package/dist/assembly/atmosphere-shader-prewarm.d.ts +6 -0
- package/dist/assembly/atmosphere-shader-prewarm.d.ts.map +1 -0
- package/dist/assembly/dynamic-geometry-host.d.ts +21 -0
- package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
- package/dist/assembly/dynamic-geometry-runtime.d.ts +20 -0
- package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +3 -1
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/gpu-driven-owner.d.ts +10 -0
- package/dist/assembly/gpu-driven-owner.d.ts.map +1 -0
- package/dist/assembly/host-contract.d.ts +8 -0
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/material/assembly.d.ts +7 -0
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material-shader-policy.d.ts +3 -1
- package/dist/assembly/material-shader-policy.d.ts.map +1 -1
- package/dist/assembly/recovery/failure-location.d.ts +12 -0
- package/dist/assembly/recovery/failure-location.d.ts.map +1 -0
- package/dist/assembly/recovery/renderer-recover.d.ts +6 -4
- package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
- package/dist/assembly/renderer-facade.d.ts.map +1 -1
- package/dist/assembly/renderer-feature-inspection.d.ts +5 -0
- package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -0
- package/dist/assembly/renderer-frame-transaction.d.ts +19 -0
- package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
- package/dist/assembly/renderer-helpers.d.ts +3 -0
- package/dist/assembly/renderer-helpers.d.ts.map +1 -1
- package/dist/assembly/renderer-inspection.d.ts +4 -0
- package/dist/assembly/renderer-inspection.d.ts.map +1 -1
- package/dist/assembly/shader-prewarm-policy.d.ts +6 -0
- package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -1
- package/dist/assembly/skin-palette-owner.d.ts +8 -0
- package/dist/assembly/skin-palette-owner.d.ts.map +1 -0
- package/dist/assembly/ssr-shader-prewarm.d.ts +6 -0
- package/dist/assembly/ssr-shader-prewarm.d.ts.map +1 -0
- package/dist/assembly/webgpu-device-loss.d.ts +15 -0
- package/dist/assembly/webgpu-device-loss.d.ts.map +1 -0
- package/dist/assembly/webgpu-pbr-ready.d.ts +38 -0
- package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready-mipmap.d.ts +11 -0
- package/dist/assembly/webgpu-ready-mipmap.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready.d.ts +7 -3
- package/dist/assembly/webgpu-ready.d.ts.map +1 -1
- package/dist/assembly/webgpu-renderer-bootstrap.d.ts +10 -0
- package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer-contract.d.ts +62 -0
- package/dist/assembly/webgpu-renderer-contract.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer-guards.d.ts +9 -0
- package/dist/assembly/webgpu-renderer-guards.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer-observation.d.ts +6 -0
- package/dist/assembly/webgpu-renderer-observation.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer-recovery-failure.d.ts +12 -0
- package/dist/assembly/webgpu-renderer-recovery-failure.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer.d.ts +7 -141
- package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
- package/dist/assembly/webgpu-vertex-layouts.d.ts +28 -84
- package/dist/assembly/webgpu-vertex-layouts.d.ts.map +1 -1
- package/dist/authoring.mjs +2 -2
- package/dist/{chunk-JAASCMXA.mjs → chunk-33XZFTQU.mjs} +245 -39
- package/dist/chunk-33XZFTQU.mjs.map +1 -0
- package/dist/{chunk-GF523LHF.mjs → chunk-BLXGONR2.mjs} +30 -12
- package/dist/chunk-BLXGONR2.mjs.map +1 -0
- package/dist/{chunk-J52NMQKR.mjs → chunk-BQVQOQJH.mjs} +1086 -838
- package/dist/chunk-BQVQOQJH.mjs.map +1 -0
- package/dist/{chunk-IQMKJLNU.mjs → chunk-BTWH7BP4.mjs} +386 -17
- package/dist/chunk-BTWH7BP4.mjs.map +1 -0
- package/dist/{chunk-MBU4ZVE7.mjs → chunk-FUODTTIA.mjs} +3921 -671
- package/dist/chunk-FUODTTIA.mjs.map +1 -0
- package/dist/{chunk-MYJ5RPJO.mjs → chunk-JQTSEI3Z.mjs} +3 -3
- package/dist/{chunk-MYJ5RPJO.mjs.map → chunk-JQTSEI3Z.mjs.map} +1 -1
- package/dist/{chunk-GE3SDD72.mjs → chunk-NICXSHAT.mjs} +16 -38
- package/dist/chunk-NICXSHAT.mjs.map +1 -0
- package/dist/{chunk-J6KACNOH.mjs → chunk-NRNXBLIJ.mjs} +577 -7
- package/dist/chunk-NRNXBLIJ.mjs.map +1 -0
- package/dist/{chunk-RBDBZ5R7.mjs → chunk-PA5DRJNI.mjs} +2 -2
- package/dist/chunk-PA5DRJNI.mjs.map +1 -0
- package/dist/{chunk-VSL23LZE.mjs → chunk-S4DNKQYQ.mjs} +1117 -445
- package/dist/chunk-S4DNKQYQ.mjs.map +1 -0
- package/dist/components/camera.d.ts +62 -2
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/instances.d.ts +6 -20
- package/dist/components/instances.d.ts.map +1 -1
- package/dist/components/scene-instance.d.ts +2 -1
- package/dist/components/scene-instance.d.ts.map +1 -1
- package/dist/components/screen-space-reflection.d.ts +14 -0
- package/dist/components/screen-space-reflection.d.ts.map +1 -0
- package/dist/construct-renderer.mjs +12888 -7025
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/gpu-residency.d.ts +1 -12
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/environment/background.d.ts +6 -0
- package/dist/environment/background.d.ts.map +1 -0
- package/dist/errors/gpu-driven.d.ts +6 -3
- package/dist/errors/gpu-driven.d.ts.map +1 -1
- package/dist/errors/render.d.ts +7 -4
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/camera.d.ts.map +1 -1
- package/dist/extract/gpu-driven.d.ts +33 -3
- package/dist/extract/gpu-driven.d.ts.map +1 -1
- package/dist/features/host.d.ts +23 -1
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/noise-texture.d.ts +17 -0
- package/dist/features/noise-texture.d.ts.map +1 -0
- package/dist/features/plan.d.ts +83 -2
- package/dist/features/plan.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +37 -4
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics-store.d.ts.map +1 -1
- package/dist/features/prepared-graphics.d.ts +5 -0
- package/dist/features/prepared-graphics.d.ts.map +1 -1
- package/dist/features/render-graph-compute.d.ts +5 -3
- package/dist/features/render-graph-compute.d.ts.map +1 -1
- package/dist/features/render-graph-contribution.d.ts +11 -3
- package/dist/features/render-graph-contribution.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +19 -3
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/types.d.ts +11 -0
- package/dist/features/types.d.ts.map +1 -1
- package/dist/fullscreen-post-process-pass.d.ts +2 -0
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/gpu-driven/batch-topology.d.ts +34 -1
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/pbr-program.d.ts +10 -0
- package/dist/gpu-driven/pbr-program.d.ts.map +1 -0
- package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +144 -23
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/shadow-views.d.ts +126 -0
- package/dist/gpu-driven/shadow-views.d.ts.map +1 -0
- package/dist/gpu-driven/view-gpu.d.ts +18 -2
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-scene-schema.d.ts +2 -8
- package/dist/gpu-scene-schema.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +14 -0
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/gpu-texture-usage.d.ts +1 -0
- package/dist/gpu-texture-usage.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +6 -0
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/frame-resources.d.ts +8 -0
- package/dist/ibl/frame-resources.d.ts.map +1 -0
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +18 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +8 -8
- package/dist/inspection-types.d.ts +164 -0
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/instances-derived-bounds.d.ts +11 -0
- package/dist/instances-derived-bounds.d.ts.map +1 -1
- package/dist/instances.d.ts +89 -44
- package/dist/instances.d.ts.map +1 -1
- package/dist/internal.d.ts +3 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +117 -9
- package/dist/internal.mjs.map +1 -1
- package/dist/lifecycle.d.ts +2 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/material-row.d.ts +5 -0
- package/dist/material-row.d.ts.map +1 -0
- package/dist/materials.d.ts +15 -0
- package/dist/materials.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +21 -5
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-output/auto-exposure/capability.d.ts +12 -0
- package/dist/pipeline/standard-output/auto-exposure/capability.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts +70 -0
- package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/graph.d.ts +75 -0
- package/dist/pipeline/standard-output/auto-exposure/graph.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts +111 -0
- package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts +16 -0
- package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/preset.d.ts +14 -0
- package/dist/pipeline/standard-output/auto-exposure/preset.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/state.d.ts +46 -0
- package/dist/pipeline/standard-output/auto-exposure/state.d.ts.map +1 -0
- package/dist/pipeline/standard-output/color-transform.d.ts +27 -0
- package/dist/pipeline/standard-output/color-transform.d.ts.map +1 -0
- package/dist/pipeline/standard-output/graph.d.ts +15 -0
- package/dist/pipeline/standard-output/graph.d.ts.map +1 -0
- package/dist/pipeline/standard-output/lut-admission.d.ts +29 -0
- package/dist/pipeline/standard-output/lut-admission.d.ts.map +1 -0
- package/dist/pipeline/standard-output/lut-gpu.d.ts +48 -0
- package/dist/pipeline/standard-output/lut-gpu.d.ts.map +1 -0
- package/dist/pipeline/standard-output/lut-state.d.ts +68 -0
- package/dist/pipeline/standard-output/lut-state.d.ts.map +1 -0
- package/dist/pipeline/standard-output/resources.d.ts +10 -0
- package/dist/pipeline/standard-output/resources.d.ts.map +1 -0
- package/dist/pipeline/standard-output/types.d.ts +39 -0
- package/dist/pipeline/standard-output/types.d.ts.map +1 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-post.d.ts +2 -2
- package/dist/pipeline/standard-post.d.ts.map +1 -1
- package/dist/pipeline-builder.d.ts +2 -1
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec-types.d.ts +4 -0
- package/dist/pipeline-spec-types.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts +1 -9
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/points-lines/standard-owner.d.ts +1 -1
- package/dist/points-lines/standard-owner.d.ts.map +1 -1
- package/dist/prepare/prepared-graphics-resolver.d.ts +6 -1
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
- package/dist/record/dynamic-geometry-consumption.d.ts +15 -0
- package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +3 -3
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +106 -5
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame-targets.d.ts.map +1 -1
- package/dist/record/frame.d.ts +39 -4
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +7 -8
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +38 -1
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +2 -10
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +12 -2
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +15 -6
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/prepared-material-bindings.d.ts +19 -0
- package/dist/record/prepared-material-bindings.d.ts.map +1 -0
- package/dist/record/recovery-pipeline.d.ts +2 -9
- package/dist/record/recovery-pipeline.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +74 -26
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts +62 -7
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +1 -1
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +35 -7
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +1 -0
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/recovery/render-system-candidate.d.ts +10 -2
- package/dist/recovery/render-system-candidate.d.ts.map +1 -1
- package/dist/recovery/render-system-roots.d.ts +11 -0
- package/dist/recovery/render-system-roots.d.ts.map +1 -0
- package/dist/recovery/types.d.ts +76 -0
- package/dist/recovery/types.d.ts.map +1 -0
- package/dist/reflection/record-owner.d.ts +0 -2
- package/dist/reflection/record-owner.d.ts.map +1 -1
- package/dist/render-contract.d.ts +173 -30
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts +1 -0
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +64 -5
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts +7 -5
- package/dist/render-system-extract-tail.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +101 -41
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system-projections.d.ts +22 -0
- package/dist/render-system-projections.d.ts.map +1 -0
- package/dist/render-system.d.ts +27 -77
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene-types.d.ts +14 -7
- package/dist/scene/render-scene-types.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +29 -11
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/scene/shadow-visibility.d.ts +5 -0
- package/dist/scene/shadow-visibility.d.ts.map +1 -0
- package/dist/ssr/admission.d.ts +70 -1
- package/dist/ssr/admission.d.ts.map +1 -1
- package/dist/ssr/compose.d.ts +13 -0
- package/dist/ssr/compose.d.ts.map +1 -0
- package/dist/ssr/errors.d.ts +35 -0
- package/dist/ssr/errors.d.ts.map +1 -1
- package/dist/ssr/graph.d.ts +60 -0
- package/dist/ssr/graph.d.ts.map +1 -0
- package/dist/ssr/history.d.ts +97 -0
- package/dist/ssr/history.d.ts.map +1 -0
- package/dist/ssr/hiz.d.ts +37 -0
- package/dist/ssr/hiz.d.ts.map +1 -0
- package/dist/ssr/inspection.d.ts +42 -0
- package/dist/ssr/inspection.d.ts.map +1 -0
- package/dist/ssr/resources.d.ts +58 -0
- package/dist/ssr/resources.d.ts.map +1 -0
- package/dist/ssr/temporal.d.ts +38 -0
- package/dist/ssr/temporal.d.ts.map +1 -0
- package/dist/systems/skin-palette-allocator.d.ts +32 -10
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
- package/dist/systems/skin-palette-types.d.ts +15 -0
- package/dist/systems/skin-palette-types.d.ts.map +1 -1
- package/dist/systems/transparent-dispatch.d.ts +9 -0
- package/dist/systems/transparent-dispatch.d.ts.map +1 -0
- package/dist/targets/material-source.d.ts +7 -0
- package/dist/targets/material-source.d.ts.map +1 -1
- package/dist/temporal/frame-coordinator.d.ts +7 -0
- package/dist/temporal/frame-coordinator.d.ts.map +1 -1
- package/dist/temporal/gpu.d.ts +8 -0
- package/dist/temporal/gpu.d.ts.map +1 -1
- package/dist/temporal/history.d.ts.map +1 -1
- package/dist/temporal/index.mjs +6 -6
- package/dist/temporal/inspection.d.ts.map +1 -1
- package/dist/temporal/standard-scene-data.d.ts +2 -1
- package/dist/temporal/standard-scene-data.d.ts.map +1 -1
- package/dist/temporal/temporal-view.d.ts +2 -0
- package/dist/temporal/temporal-view.d.ts.map +1 -1
- package/dist/typed-render-graph-primitives.d.ts +35 -1
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-passes.d.ts +3 -1
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/dist/volume/temporal.d.ts +6 -0
- package/dist/volume/temporal.d.ts.map +1 -1
- package/package.json +21 -20
- package/src/__tests__/auto-exposure-gpu-evidence.ts +291 -0
- package/src/__tests__/auto-exposure-inspection.unit.test.ts +80 -0
- package/src/__tests__/auto-exposure-transaction.integration.test.ts +99 -0
- package/src/__tests__/auto-exposure.browser.test.ts +33 -0
- package/src/__tests__/auto-exposure.dawn.test.ts +33 -0
- package/src/__tests__/detached-inspection.integration.test.ts +5 -0
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +18 -0
- package/src/__tests__/device-scope-stale-matrix.unit.test.ts +18 -0
- package/src/__tests__/docs-gate-green.unit.test.ts +3 -3
- package/src/__tests__/factory-contract.integration.test.ts +67 -8
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +19 -0
- package/src/__tests__/feature-depth-input.dawn.test.ts +121 -0
- package/src/__tests__/feature-noise.unit.test.ts +38 -0
- package/src/__tests__/fixtures/taa-resolve-pinned-baseline.wgsl +301 -0
- package/src/__tests__/frame-camera-selection.unit.test.ts +131 -0
- package/src/__tests__/frame-plan-contract.unit.test.ts +24 -0
- package/src/__tests__/frame-targets.unit.test.ts +24 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +3 -0
- package/src/__tests__/gpu-driven-baseline.characterization.test.ts +79 -0
- package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +287 -6
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +122 -142
- package/src/__tests__/gpu-driven-indirect-raster.browser.test.ts +10 -1
- package/src/__tests__/gpu-driven-lod-cache.unit.test.ts +264 -0
- package/src/__tests__/gpu-driven-mesh-world-identity.unit.test.ts +349 -0
- package/src/__tests__/gpu-driven-pbr.dawn.test.ts +1417 -0
- package/src/__tests__/gpu-driven-pbr.integration.test.ts +21 -0
- package/src/__tests__/gpu-driven-production-fixture.ts +96 -0
- package/src/__tests__/gpu-driven-production.integration.test.ts +1075 -93
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +1 -3
- package/src/__tests__/gpu-driven-shadow-views.browser.test.ts +63 -0
- package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +294 -0
- package/src/__tests__/gpu-driven-shadow-views.integration.test.ts +97 -0
- package/src/__tests__/gpu-driven-shadow-views.unit.test.ts +168 -0
- package/src/__tests__/gpu-driven-skin-contract.test-d.ts +11 -0
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +72 -20
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +30 -9
- package/src/__tests__/gpu-driven-view.unit.test.ts +159 -52
- package/src/__tests__/gpu-pass-timing.browser.test.ts +6 -1
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +42 -0
- package/src/__tests__/gpu-scene-render-graph-gpu.ts +19 -5
- package/src/__tests__/gpu-scene.dawn.test.ts +40 -13
- package/src/__tests__/gpu-scene.unit.test.ts +559 -33
- package/src/__tests__/instances-culling.integration.test.ts +36 -10
- package/src/__tests__/instances-derived-bounds.unit.test.ts +54 -0
- package/src/__tests__/instances-store.unit.test.ts +242 -39
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +6 -0
- package/src/__tests__/lighting-scene-roundtrip.integration.test.ts +13 -16
- package/src/__tests__/lut-lkg-transaction.integration.test.ts +122 -0
- package/src/__tests__/material-contract-inventory.unit.test.ts +5 -6
- package/src/__tests__/material-dispatch-shader-id.unit.test.ts +51 -0
- package/src/__tests__/material-lane-selection.unit.test.ts +60 -0
- package/src/__tests__/material-numeric-upload.unit.test.ts +53 -0
- package/src/__tests__/material-texture-handles.unit.test.ts +18 -0
- package/src/__tests__/material-texture-source.unit.test.ts +87 -0
- package/src/__tests__/materials-authoring-validation.unit.test.ts +41 -0
- package/src/__tests__/materials-standard-contract.unit.test.ts +52 -2
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +4 -0
- package/src/__tests__/normal-fallback.dawn.test.ts +122 -0
- package/src/__tests__/particle-material-input-layout.unit.test.ts +104 -0
- package/src/__tests__/physical-clearcoat.integration.test.ts +37 -3
- package/src/__tests__/pipeline-texture-specialization.unit.test.ts +138 -0
- package/src/__tests__/point-shadow-inspection.unit.test.ts +2 -0
- package/src/__tests__/prepared-gpu-driven-pbr-contract.test-d.ts +31 -0
- package/src/__tests__/prepared-gpu-driven-pbr-contract.unit.test.ts +39 -0
- package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +35 -4
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +21 -0
- package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +6 -2
- package/src/__tests__/profiler-phase-catalog.test.ts +5 -0
- package/src/__tests__/public-surface.test-d.ts +3 -0
- package/src/__tests__/recovery-candidate-prepare.contract.test.ts +30 -12
- package/src/__tests__/reflection-fallback-async-publication.unit.test.ts +104 -0
- package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +2 -1
- package/src/__tests__/render-error-code-owner.test-d.ts +4 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +22 -0
- package/src/__tests__/render-error-exhaustive.test-d.ts +15 -0
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +285 -2
- package/src/__tests__/render-feature-plan.unit.test.ts +245 -0
- package/src/__tests__/render-feature-shadow-order.unit.test.ts +228 -0
- package/src/__tests__/render-feature-zero-work.unit.test.ts +35 -1
- package/src/__tests__/render-graph-fallback.integration.test.ts +2 -2
- package/src/__tests__/render-owner-cohesion.unit.test.ts +55 -0
- package/src/__tests__/render-scene-mixed-updates.integration.test.ts +426 -0
- package/src/__tests__/render-scene-projection.unit.test.ts +914 -23
- package/src/__tests__/render-scene-resource-updates.integration.test.ts +214 -0
- package/src/__tests__/render-scene-skin-lifecycle.integration.test.ts +173 -0
- package/src/__tests__/render-scene-temporal-retry.unit.test.ts +133 -0
- package/src/__tests__/render-target-material-source.test-d.ts +27 -3
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +60 -0
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +923 -5
- package/src/__tests__/shader-manifest-fixture.ts +39 -0
- package/src/__tests__/skin-motion-regression.unit.test.ts +0 -33
- package/src/__tests__/skin-palette-persistent.integration.test.ts +28 -0
- package/src/__tests__/skin-palette-persistent.unit.test.ts +247 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +118 -14
- package/src/__tests__/specular-environment-scale.dawn.test.ts +156 -0
- package/src/__tests__/ssr-admission-matrix.integration.test.ts +7 -1
- package/src/__tests__/ssr-confidence-compose.unit.test.ts +84 -0
- package/src/__tests__/ssr-coordinate-oracle.unit.test.ts +28 -0
- package/src/__tests__/ssr-format-probe-gating.integration.test.ts +82 -0
- package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +91 -0
- package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +112 -0
- package/src/__tests__/ssr-gpu-dispatch.ts +946 -0
- package/src/__tests__/ssr-graph-topology.unit.test.ts +104 -0
- package/src/__tests__/ssr-history-filter.dawn.test.ts +198 -0
- package/src/__tests__/ssr-hit-color.dawn.test.ts +273 -0
- package/src/__tests__/ssr-hiz-odd-reduction.dawn.test.ts +569 -0
- package/src/__tests__/ssr-hiz-rescue.dawn.test.ts +279 -0
- package/src/__tests__/ssr-hiz.browser.test.ts +150 -0
- package/src/__tests__/ssr-hiz.dawn.test.ts +150 -0
- package/src/__tests__/ssr-hiz.unit.test.ts +56 -0
- package/src/__tests__/ssr-inspection.unit.test.ts +105 -0
- package/src/__tests__/ssr-memory-budget.unit.test.ts +45 -0
- package/src/__tests__/ssr-performance-sequence-aggregation.unit.test.ts +15 -0
- package/src/__tests__/ssr-public-surface.test-d.ts +37 -0
- package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +387 -0
- package/src/__tests__/ssr-reflection-mip-reducer.dawn.test.ts +309 -0
- package/src/__tests__/ssr-reprojection-probe.ts +90 -0
- package/src/__tests__/ssr-roughness-mip.dawn.test.ts +163 -0
- package/src/__tests__/ssr-shader-prewarm.unit.test.ts +59 -0
- package/src/__tests__/ssr-spatial.integration.test.ts +141 -0
- package/src/__tests__/ssr-stable-lattice.dawn.test.ts +475 -0
- package/src/__tests__/ssr-temporal-history.unit.test.ts +202 -0
- package/src/__tests__/ssr-texel-crossing.dawn.test.ts +448 -0
- package/src/__tests__/ssr-zero-work.integration.test.ts +87 -0
- package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +44 -12
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +29 -0
- package/src/__tests__/standard-output-chain-contract.unit.test.ts +99 -0
- package/src/__tests__/standard-output-chain.integration.test.ts +73 -0
- package/src/__tests__/standard-output-gpu-evidence.ts +205 -0
- package/src/__tests__/standard-output.browser.test.ts +15 -0
- package/src/__tests__/standard-output.dawn.test.ts +15 -0
- package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +38 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +320 -3
- package/src/__tests__/standard-profile-oracle.unit.test.ts +22 -0
- package/src/__tests__/standard-surface-lighting.unit.test.ts +41 -0
- package/src/__tests__/standard-texture-specialization.dawn.test.ts +141 -0
- package/src/__tests__/surface-adjacent-regressions.integration.test.ts +6 -3
- package/src/__tests__/taa-coverage-edge.dawn.test.ts +193 -0
- package/src/__tests__/taa-history-clipping.dawn.test.ts +328 -0
- package/src/__tests__/taa-neighborhood-equivalence.dawn.test.ts +778 -0
- package/src/__tests__/taa-stability-feedback.browser.test.ts +23 -0
- package/src/__tests__/taa-stability-feedback.dawn.test.ts +68 -0
- package/src/__tests__/taa-stability-feedback.ts +341 -0
- package/src/__tests__/temporal-history-lifecycle.unit.test.ts +49 -7
- package/src/__tests__/temporal-reset-matrix.unit.test.ts +9 -0
- package/src/__tests__/temporal-transaction.integration.test.ts +28 -0
- package/src/__tests__/texture-usage-surface.unit.test.ts +4 -2
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +109 -4
- package/src/__tests__/typed-scene-pass-material-cache.integration.test.ts +126 -0
- package/src/__tests__/vertex-layouts-ssot.unit.test.ts +47 -0
- package/src/__tests__/visibility-extract.perf.test.ts +20 -8
- package/src/__tests__/visibility-instances.integration.test.ts +19 -7
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +20 -9
- package/src/assembly/atmosphere-shader-prewarm.ts +38 -0
- package/src/assembly/dynamic-geometry-host.ts +48 -0
- package/src/assembly/dynamic-geometry-runtime.ts +71 -0
- package/src/assembly/factory.ts +4 -0
- package/src/assembly/gpu-driven-owner.ts +29 -0
- package/src/assembly/host-contract.ts +10 -0
- package/src/assembly/material/assembly.ts +38 -0
- package/src/assembly/material-shader-policy.ts +71 -28
- package/src/assembly/recovery/failure-location.ts +62 -0
- package/src/assembly/recovery/renderer-recover.ts +19 -17
- package/src/assembly/renderer-facade.ts +12 -0
- package/src/assembly/renderer-feature-inspection.ts +13 -0
- package/src/assembly/renderer-frame-transaction.ts +63 -0
- package/src/assembly/renderer-helpers.ts +26 -0
- package/src/assembly/renderer-inspection.ts +6 -0
- package/src/assembly/shader-prewarm-policy.ts +32 -0
- package/src/assembly/skin-palette-owner.ts +21 -0
- package/src/assembly/ssr-shader-prewarm.ts +41 -0
- package/src/assembly/webgpu-device-loss.ts +75 -0
- package/src/assembly/webgpu-pbr-ready.ts +232 -0
- package/src/assembly/webgpu-ready-mipmap.ts +26 -0
- package/src/assembly/webgpu-ready.ts +142 -121
- package/src/assembly/webgpu-renderer-bootstrap.ts +85 -0
- package/src/assembly/webgpu-renderer-contract.ts +69 -0
- package/src/assembly/webgpu-renderer-guards.ts +32 -0
- package/src/assembly/webgpu-renderer-observation.ts +43 -0
- package/src/assembly/webgpu-renderer-recovery-failure.ts +62 -0
- package/src/assembly/webgpu-renderer.ts +666 -652
- package/src/assembly/webgpu-vertex-layouts.ts +233 -87
- package/src/components/__tests__/camera-exposure.contract.unit.test.ts +153 -0
- package/src/components/camera.ts +287 -7
- package/src/components/index.ts +1 -0
- package/src/components/instances.ts +45 -18
- package/src/components/scene-instance.ts +2 -1
- package/src/components/screen-space-reflection.ts +21 -0
- package/src/components/sprite-animation.ts +2 -2
- package/src/components/sprite-instances.ts +1 -1
- package/src/device/gpu-residency.ts +34 -31
- package/src/environment/background.ts +263 -0
- package/src/errors/gpu-driven.ts +39 -5
- package/src/errors/render.ts +27 -3
- package/src/extract/camera.ts +26 -1
- package/src/extract/gpu-driven.ts +185 -10
- package/src/features/host.ts +237 -19
- package/src/features/noise-texture.ts +91 -0
- package/src/features/plan.ts +553 -24
- package/src/features/prepared-gpu-work.ts +631 -49
- package/src/features/prepared-graphics-store.ts +31 -0
- package/src/features/prepared-graphics.ts +5 -0
- package/src/features/render-graph-compute.ts +41 -8
- package/src/features/render-graph-contribution.ts +141 -3
- package/src/features/render-graph-raster.ts +143 -30
- package/src/features/types.ts +11 -0
- package/src/fullscreen-post-process-pass.ts +3 -0
- package/src/gpu-driven/batch-topology.ts +424 -102
- package/src/gpu-driven/pbr-program.ts +31 -0
- package/src/gpu-driven/prepared-draw.ts +29 -4
- package/src/gpu-driven/production-raster.ts +2267 -694
- package/src/gpu-driven/shadow-views.ts +539 -0
- package/src/gpu-driven/view-gpu.ts +188 -41
- package/src/gpu-scene-schema.ts +52 -11
- package/src/gpu-scene.ts +186 -99
- package/src/gpu-texture-usage.ts +1 -0
- package/src/hdrp-buffers.ts +72 -36
- package/src/ibl/frame-resources.ts +38 -0
- package/src/ibl/skylight-bind-group.ts +5 -4
- package/src/index.ts +109 -1
- package/src/inspection-types.ts +191 -0
- package/src/instances-derived-bounds.ts +258 -34
- package/src/instances.ts +459 -150
- package/src/internal.ts +22 -0
- package/src/lifecycle.ts +2 -0
- package/src/material-row.ts +145 -0
- package/src/materials.ts +44 -8
- package/src/pbr-pipeline.ts +159 -17
- package/src/pipeline/standard-forward-lane.ts +52 -24
- package/src/pipeline/standard-output/__tests__/lut-admission.unit.test.ts +103 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/capability.unit.test.ts +40 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/gpu.contract.unit.test.ts +125 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/graph.contract.unit.test.ts +94 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/oracle.test.ts +108 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/preset.test.ts +26 -0
- package/src/pipeline/standard-output/auto-exposure/capability.ts +38 -0
- package/src/pipeline/standard-output/auto-exposure/gpu.ts +567 -0
- package/src/pipeline/standard-output/auto-exposure/graph.ts +221 -0
- package/src/pipeline/standard-output/auto-exposure/inspection.ts +231 -0
- package/src/pipeline/standard-output/auto-exposure/oracle.ts +291 -0
- package/src/pipeline/standard-output/auto-exposure/preset.ts +28 -0
- package/src/pipeline/standard-output/auto-exposure/state.ts +156 -0
- package/src/pipeline/standard-output/color-transform.ts +124 -0
- package/src/pipeline/standard-output/graph.ts +139 -0
- package/src/pipeline/standard-output/lut-admission.ts +121 -0
- package/src/pipeline/standard-output/lut-gpu.ts +399 -0
- package/src/pipeline/standard-output/lut-state.ts +176 -0
- package/src/pipeline/standard-output/resources.ts +121 -0
- package/src/pipeline/standard-output/types.ts +58 -0
- package/src/pipeline/standard-pipeline.ts +192 -59
- package/src/pipeline/standard-post.ts +186 -27
- package/src/pipeline-builder.ts +16 -6
- package/src/pipeline-spec-types.ts +4 -0
- package/src/pipeline-spec.ts +37 -29
- package/src/points-lines/standard-owner.ts +6 -14
- package/src/prepare/prepared-graphics-resolver.ts +9 -2
- package/src/record/__tests__/material-slot-plan.unit.test.ts +48 -0
- package/src/record/__tests__/mesh-ssbo.unit.test.ts +40 -1
- package/src/record/__tests__/recovery-pipeline.unit.test.ts +2 -29
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +36 -5
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +45 -0
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +5 -0
- package/src/record/dynamic-geometry-consumption.ts +59 -0
- package/src/record/frame-lighting.ts +12 -11
- package/src/record/frame-snapshot.ts +133 -23
- package/src/record/frame-targets.ts +9 -0
- package/src/record/frame.ts +725 -133
- package/src/record/main-pass-geometry.ts +149 -94
- package/src/record/main-pass-material.ts +115 -26
- package/src/record/main-pass-sprite-draws.ts +16 -107
- package/src/record/main-pass.ts +78 -8
- package/src/record/material-uniforms.ts +1 -1
- package/src/record/mesh-ssbo.ts +59 -15
- package/src/record/prepared-material-bindings.ts +234 -0
- package/src/record/recovery-pipeline.ts +59 -136
- package/src/record/render-context.ts +90 -22
- package/src/record/shadow-pass.ts +1231 -209
- package/src/record/skybox-post-pass.ts +14 -3
- package/src/record/typed-frame-graph.ts +1004 -44
- package/src/record/view-ubo.ts +11 -0
- package/src/recovery/render-system-candidate.ts +90 -66
- package/src/recovery/render-system-roots.ts +113 -0
- package/src/recovery/types.ts +77 -0
- package/src/reflection/record-owner.ts +26 -54
- package/src/render-contract.ts +195 -25
- package/src/render-graph-primitives.ts +6 -2
- package/src/render-pipeline.ts +70 -1
- package/src/render-system-extract-tail.ts +409 -160
- package/src/render-system-extract.ts +376 -102
- package/src/render-system-projections.ts +241 -0
- package/src/render-system.ts +681 -822
- package/src/scene/render-scene-types.ts +13 -4
- package/src/scene/render-scene.ts +569 -355
- package/src/scene/shadow-visibility.ts +21 -0
- package/src/ssr/admission.ts +380 -14
- package/src/ssr/compose.ts +144 -0
- package/src/ssr/errors.ts +48 -0
- package/src/ssr/graph.ts +777 -0
- package/src/ssr/history.ts +436 -0
- package/src/ssr/hiz.ts +124 -0
- package/src/ssr/inspection.ts +124 -0
- package/src/ssr/resources.ts +202 -0
- package/src/ssr/temporal.ts +164 -0
- package/src/systems/skin-palette-allocator.ts +495 -148
- package/src/systems/skin-palette-types.ts +17 -0
- package/src/systems/transparent-dispatch.ts +90 -0
- package/src/targets/material-source.ts +34 -0
- package/src/temporal/coverage.ts +1 -1
- package/src/temporal/frame-coordinator.ts +23 -2
- package/src/temporal/gpu.ts +74 -12
- package/src/temporal/history.ts +3 -1
- package/src/temporal/inspection.ts +2 -1
- package/src/temporal/standard-scene-data.ts +3 -1
- package/src/temporal/temporal-view.ts +3 -0
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +204 -139
- package/src/typed-render-graph-primitives.ts +266 -74
- package/src/typed-shadow-passes.ts +122 -12
- package/src/volume/temporal.ts +10 -0
- package/dist/chunk-GE3SDD72.mjs.map +0 -1
- package/dist/chunk-GF523LHF.mjs.map +0 -1
- package/dist/chunk-IQMKJLNU.mjs.map +0 -1
- package/dist/chunk-J52NMQKR.mjs.map +0 -1
- package/dist/chunk-J6KACNOH.mjs.map +0 -1
- package/dist/chunk-JAASCMXA.mjs.map +0 -1
- package/dist/chunk-MBU4ZVE7.mjs.map +0 -1
- package/dist/chunk-RBDBZ5R7.mjs.map +0 -1
- package/dist/chunk-VSL23LZE.mjs.map +0 -1
- package/src/__tests__/instances-world-ownership.integration.test.ts +0 -62
- package/src/scene/__tests__/changed-block-summary.candidate.test.ts +0 -36
|
@@ -36,6 +36,12 @@ export declare function fingerprintNumericArray(values: ArrayLike<number>): numb
|
|
|
36
36
|
* `Instances` row from becoming a synthetic identity draw/bounds candidate.
|
|
37
37
|
*/
|
|
38
38
|
export declare function deriveInstancesUnionBounds(input: DerivedInstancesUnionBoundsInput): Float32Array | undefined;
|
|
39
|
+
export interface InstanceBoundsCacheInspection {
|
|
40
|
+
readonly hits: number;
|
|
41
|
+
readonly misses: number;
|
|
42
|
+
readonly derives: number;
|
|
43
|
+
readonly invalidations: number;
|
|
44
|
+
}
|
|
39
45
|
/**
|
|
40
46
|
* Small renderer-owned per-entity cache. A changed generation replaces the
|
|
41
47
|
* entry atomically; packed-id reuse is safe when its owner supplies a new
|
|
@@ -43,8 +49,13 @@ export declare function deriveInstancesUnionBounds(input: DerivedInstancesUnionB
|
|
|
43
49
|
*/
|
|
44
50
|
export declare class InstanceBoundsCache {
|
|
45
51
|
private readonly entries;
|
|
52
|
+
private hits;
|
|
53
|
+
private misses;
|
|
54
|
+
private derives;
|
|
55
|
+
private invalidations;
|
|
46
56
|
private key;
|
|
47
57
|
get(input: InstanceBoundsCacheInput): Float32Array | undefined;
|
|
48
58
|
invalidate(entityKey?: number, worldId?: number): void;
|
|
59
|
+
inspect(): InstanceBoundsCacheInspection;
|
|
49
60
|
}
|
|
50
61
|
//# sourceMappingURL=instances-derived-bounds.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instances-derived-bounds.d.ts","sourceRoot":"","sources":["../src/instances-derived-bounds.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instances-derived-bounds.d.ts","sourceRoot":"","sources":["../src/instances-derived-bounds.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;CACpD;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,qFAAqF;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,MAAM,wBAAwB,GAAG,sBAAsB,GAAG,gCAAgC,CAAC;AAEjG;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAOzE;AAqPD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,gCAAgC,GACtC,YAAY,GAAG,SAAS,CAkB1B;AAMD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,GAAG;IAIX,GAAG,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,GAAG,SAAS;IAyB9D,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAatD,OAAO,IAAI,6BAA6B;CAQzC"}
|
package/dist/instances.d.ts
CHANGED
|
@@ -1,19 +1,32 @@
|
|
|
1
|
-
import type { World } from '@forgeax/engine-ecs';
|
|
2
1
|
import type { RhiErrorCode } from '@forgeax/engine-rhi';
|
|
2
|
+
import { type Result } from '@forgeax/engine-types';
|
|
3
3
|
export type InstanceCollectionId = number & {
|
|
4
4
|
readonly __forgeaxInstanceCollectionId: unique symbol;
|
|
5
5
|
};
|
|
6
|
-
export interface
|
|
6
|
+
export interface InstanceCollectionData {
|
|
7
7
|
readonly collectionId: InstanceCollectionId;
|
|
8
|
+
}
|
|
9
|
+
export interface InstanceCollectionInfo extends InstanceCollectionData {
|
|
8
10
|
readonly count: number;
|
|
11
|
+
readonly capacity: number;
|
|
9
12
|
readonly revision: number;
|
|
10
13
|
}
|
|
11
|
-
export interface
|
|
14
|
+
export interface InstanceDirtyRange {
|
|
12
15
|
start: number;
|
|
13
16
|
end: number;
|
|
14
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Choose the ranges that initialize one resident GPU allocation.
|
|
20
|
+
*
|
|
21
|
+
* A cache miss is not a delta upload: recovery, reassociation, and any other
|
|
22
|
+
* new resident has uninitialized device memory. The canonical collection must
|
|
23
|
+
* therefore be copied in full even when the current authoring revision only
|
|
24
|
+
* records a partial dirty range. Existing residents keep the narrower ranges.
|
|
25
|
+
*/
|
|
26
|
+
export declare function instanceUploadRangesForResident(activeIsNew: boolean, dirtyRanges: readonly InstanceDirtyRange[], fullRange: InstanceDirtyRange): readonly InstanceDirtyRange[];
|
|
15
27
|
export interface InstanceCollectionSnapshot extends InstanceCollectionInfo {
|
|
16
28
|
readonly transforms: Float32Array;
|
|
29
|
+
readonly dirtyRanges: readonly InstanceDirtyRange[];
|
|
17
30
|
}
|
|
18
31
|
/** The renderer-owned submission lane selected for one collection. */
|
|
19
32
|
export type InstanceSubmissionLane = 'unresident' | 'direct-storage' | 'chunked-storage' | 'direct-uniform' | 'chunked-uniform' | 'unavailable';
|
|
@@ -34,7 +47,8 @@ export interface InstanceCollectionFailureFacts {
|
|
|
34
47
|
export interface InstanceCollectionInspection extends InstanceCollectionInfo {
|
|
35
48
|
readonly residentGeneration: number | undefined;
|
|
36
49
|
readonly lane: InstanceSubmissionLane;
|
|
37
|
-
readonly
|
|
50
|
+
readonly dirtyRanges: readonly InstanceDirtyRange[];
|
|
51
|
+
readonly uploadRanges: readonly InstanceDirtyRange[];
|
|
38
52
|
readonly uploadedBytes: number;
|
|
39
53
|
readonly requestedBytes: number;
|
|
40
54
|
readonly supportedBytes: number | undefined;
|
|
@@ -47,55 +61,86 @@ export interface InstanceCollectionInspection extends InstanceCollectionInfo {
|
|
|
47
61
|
readonly detail: InstanceCollectionFailureFacts;
|
|
48
62
|
} | undefined;
|
|
49
63
|
}
|
|
50
|
-
export interface
|
|
51
|
-
readonly
|
|
52
|
-
readonly residentGeneration: number | undefined;
|
|
53
|
-
readonly lane: InstanceSubmissionLane;
|
|
54
|
-
readonly uploadRanges: readonly InstanceUploadRange[];
|
|
55
|
-
readonly uploadedBytes: number;
|
|
56
|
-
readonly requestedBytes: number;
|
|
57
|
-
readonly supportedBytes: number | undefined;
|
|
58
|
-
readonly backend: InstanceBackendKind;
|
|
59
|
-
readonly error: InstanceCollectionInspection['error'];
|
|
64
|
+
export interface InstanceCollectionCreateInput {
|
|
65
|
+
readonly transforms: Float32Array;
|
|
60
66
|
}
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
export interface InstanceCollectionUpdateInput {
|
|
68
|
+
/** Matrix ordinal of the first matrix to replace. */
|
|
69
|
+
readonly start: number;
|
|
70
|
+
readonly transforms: Float32Array;
|
|
71
|
+
}
|
|
72
|
+
export interface InstanceCollectionInvalidDetail {
|
|
73
|
+
readonly collectionId?: number;
|
|
74
|
+
readonly operation: 'create' | 'replace' | 'update' | 'inspect' | 'release';
|
|
75
|
+
readonly expected: string;
|
|
76
|
+
readonly actual: number | string;
|
|
77
|
+
}
|
|
78
|
+
export type InstanceCollectionErrorCode = 'instance-collection-invalid' | 'instance-collection-not-found' | 'instance-collection-released';
|
|
79
|
+
export declare class InstanceCollectionError extends Error {
|
|
80
|
+
readonly code: InstanceCollectionErrorCode;
|
|
81
|
+
readonly expected: string;
|
|
82
|
+
readonly hint: string;
|
|
83
|
+
readonly detail: InstanceCollectionInvalidDetail | undefined;
|
|
84
|
+
readonly owner: "renderer.instances";
|
|
85
|
+
readonly recovery: string;
|
|
86
|
+
readonly facts: InstanceCollectionFailureFacts;
|
|
87
|
+
constructor(code: InstanceCollectionErrorCode, expected: string, hint: string, detail?: InstanceCollectionInvalidDetail, facts?: InstanceCollectionFailureFacts);
|
|
88
|
+
}
|
|
89
|
+
export type InstanceCollectionResult<T> = Result<T, InstanceCollectionError>;
|
|
90
|
+
/**
|
|
91
|
+
* Renderer-owned canonical storage for explicit instance transforms.
|
|
92
|
+
*
|
|
93
|
+
* ECS carries only `Instances.collectionId`; this owner keeps the copied
|
|
94
|
+
* matrices, revision and dirty intervals independent of archetype capacity.
|
|
95
|
+
* Snapshots are detached before they cross into extraction, so callers cannot
|
|
96
|
+
* mutate the canonical source behind the revision protocol.
|
|
97
|
+
*/
|
|
98
|
+
export declare class InstanceCollectionStore {
|
|
63
99
|
private nextId;
|
|
64
|
-
private
|
|
100
|
+
private epochValue;
|
|
101
|
+
private disposed;
|
|
65
102
|
private readonly records;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
103
|
+
private readonly residency;
|
|
104
|
+
get epoch(): number;
|
|
105
|
+
create(input: InstanceCollectionCreateInput): InstanceCollectionResult<InstanceCollectionInfo>;
|
|
106
|
+
replace(id: InstanceCollectionId, transforms: Float32Array): InstanceCollectionResult<InstanceCollectionInfo>;
|
|
107
|
+
update(id: InstanceCollectionId, input: InstanceCollectionUpdateInput): InstanceCollectionResult<InstanceCollectionInfo>;
|
|
108
|
+
inspect(id: InstanceCollectionId): InstanceCollectionResult<InstanceCollectionInfo>;
|
|
71
109
|
/**
|
|
72
110
|
* Return detached residency facts for every live collection.
|
|
73
111
|
*
|
|
74
|
-
* @internal
|
|
112
|
+
* @internal Record-stage evidence is reported through the two methods below;
|
|
75
113
|
* callers only receive immutable PODs and never GPU handles.
|
|
76
114
|
*/
|
|
77
|
-
_inspections(
|
|
115
|
+
_inspections(): readonly InstanceCollectionInspection[];
|
|
116
|
+
/** @internal Renderer record owner reports the accepted collection lane. */
|
|
117
|
+
_reportResidency(input: {
|
|
118
|
+
readonly collectionId: InstanceCollectionId;
|
|
119
|
+
readonly frameNumber: number;
|
|
120
|
+
readonly residentGeneration: number;
|
|
121
|
+
readonly lane: Exclude<InstanceSubmissionLane, 'unresident' | 'unavailable'>;
|
|
122
|
+
readonly uploadRanges: readonly InstanceDirtyRange[];
|
|
123
|
+
readonly uploadedBytes: number;
|
|
124
|
+
readonly requestedBytes: number;
|
|
125
|
+
readonly supportedBytes: number | undefined;
|
|
126
|
+
readonly backend: InstanceBackendKind;
|
|
127
|
+
}): void;
|
|
128
|
+
/** @internal Renderer record owner reports a typed admission failure. */
|
|
129
|
+
_reportFailure(input: {
|
|
130
|
+
readonly collectionId: InstanceCollectionId;
|
|
131
|
+
readonly code: InstanceCollectionFailureCode;
|
|
132
|
+
readonly expected: string;
|
|
133
|
+
readonly hint: string;
|
|
134
|
+
readonly facts: InstanceCollectionFailureFacts;
|
|
135
|
+
}): void;
|
|
136
|
+
/** @internal A lost device invalidates every renderer-owned GPU resident. */
|
|
137
|
+
_resetResidency(): void;
|
|
138
|
+
snapshot(id: InstanceCollectionId): InstanceCollectionResult<InstanceCollectionSnapshot>;
|
|
139
|
+
release(id: InstanceCollectionId): InstanceCollectionResult<void>;
|
|
140
|
+
/** Drop all canonical matrices during Renderer disposal. */
|
|
141
|
+
dispose(): void;
|
|
142
|
+
private live;
|
|
78
143
|
private info;
|
|
79
144
|
private projectInspection;
|
|
80
145
|
}
|
|
81
|
-
/** @internal Renderer record owner reports the accepted collection lane. */
|
|
82
|
-
export declare function recordInstanceResidency(residency: Map<InstanceCollectionId, InstanceResidency>, input: {
|
|
83
|
-
readonly collectionId: InstanceCollectionId;
|
|
84
|
-
readonly frameNumber: number;
|
|
85
|
-
readonly residentGeneration: number;
|
|
86
|
-
readonly lane: Exclude<InstanceSubmissionLane, 'unresident' | 'unavailable'>;
|
|
87
|
-
readonly uploadRanges: readonly InstanceUploadRange[];
|
|
88
|
-
readonly uploadedBytes: number;
|
|
89
|
-
readonly requestedBytes: number;
|
|
90
|
-
readonly supportedBytes: number | undefined;
|
|
91
|
-
readonly backend: InstanceBackendKind;
|
|
92
|
-
}): void;
|
|
93
|
-
/** @internal Renderer record owner reports a typed admission failure. */
|
|
94
|
-
export declare function recordInstanceFailure(residency: Map<InstanceCollectionId, InstanceResidency>, input: {
|
|
95
|
-
readonly collectionId: InstanceCollectionId;
|
|
96
|
-
readonly code: InstanceCollectionFailureCode;
|
|
97
|
-
readonly expected: string;
|
|
98
|
-
readonly hint: string;
|
|
99
|
-
readonly facts: InstanceCollectionFailureFacts;
|
|
100
|
-
}): void;
|
|
101
146
|
//# sourceMappingURL=instances.d.ts.map
|
package/dist/instances.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../src/instances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../src/instances.ts"],"names":[],"mappings":"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"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -9,5 +9,8 @@ export { buildRectAreaWorldFrame, rectAreaFacesPoint, } from './render-system-ex
|
|
|
9
9
|
export { admitProbeContributors, blendLightProbes, PROBE_MAX_CONTRIBUTORS, scaledProbeWeight, } from './scene/probe-blend';
|
|
10
10
|
export { createVisibilityBudget, type VisibilityBudget, } from './scene/visibility/budget';
|
|
11
11
|
export { type OcclusionRuntimeTestHooks, setOcclusionRuntimeTestHooks, } from './scene/visibility/occlusion-runtime';
|
|
12
|
+
export { createSsrHistoryOwner, SSR_HISTORY_FORMAT, type SsrHistoryCandidate, type SsrHistoryError, type SsrHistoryFailureStage, type SsrHistoryInspection, SsrHistoryOwner, type SsrHistoryResetReason, type SsrHistoryResources, type SsrHistorySlot, type SsrHistoryState, } from './ssr/history';
|
|
13
|
+
export { estimateSsrSpatialMemory } from './ssr/resources';
|
|
14
|
+
export { createSsrTemporalConsumer, type SsrTemporalCandidate, SsrTemporalConsumer, type SsrTemporalError, type SsrTemporalExecutionError, type SsrTemporalInspection, } from './ssr/temporal';
|
|
12
15
|
export { TemporalFrameCoordinator } from './temporal/frame-coordinator';
|
|
13
16
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,gCAAgC,EAChC,2CAA2C,EAC3C,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,+CAA+C,GAChD,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,iCAAiC,EACjC,gCAAgC,EAChC,6BAA6B,GAC9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,oCAAoC,EACzC,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,yBAAyB,EAC9B,4BAA4B,GAC7B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,gCAAgC,EAChC,2CAA2C,EAC3C,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,+CAA+C,GAChD,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,iCAAiC,EACjC,gCAAgC,EAChC,6BAA6B,GAC9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,oCAAoC,EACzC,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,yBAAyB,EAC9B,4BAA4B,GAC7B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/internal.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export { PROBE_MAX_CONTRIBUTORS, admitProbeContributors, blendLightProbes, buildRectAreaWorldFrame, createExtendedLightingState, projectExtendedLightingInspection, promoteExtendedLightingCandidate, recordExtendedLightingFailure, rectAreaFacesPoint, scaledProbeWeight, setOcclusionRuntimeTestHooks } from './chunk-
|
|
1
|
+
export { PROBE_MAX_CONTRIBUTORS, SSR_HISTORY_FORMAT, SsrHistoryOwner, admitProbeContributors, blendLightProbes, buildRectAreaWorldFrame, createExtendedLightingState, createSsrHistoryOwner, estimateSsrSpatialMemory, projectExtendedLightingInspection, promoteExtendedLightingCandidate, recordExtendedLightingFailure, rectAreaFacesPoint, scaledProbeWeight, setOcclusionRuntimeTestHooks } from './chunk-S4DNKQYQ.mjs';
|
|
2
2
|
import './chunk-ILQ5MEZF.mjs';
|
|
3
|
-
|
|
4
|
-
import './chunk-
|
|
5
|
-
export { TemporalFrameCoordinator } from './chunk-
|
|
6
|
-
import { EXTENDED_LIGHTING_TOPOLOGY } from './chunk-
|
|
7
|
-
export { DeviceScope, EXTENDED_LIGHTING_REQUIRED_SAMPLED_TEXTURES, deriveExtendedLightingCapability, extendedLightingSampledTextureCapacityAvailable, validateGraphTargetCaptureReadback } from './chunk-
|
|
8
|
-
export { createLightResourceUnavailable } from './chunk-
|
|
3
|
+
import './chunk-33XZFTQU.mjs';
|
|
4
|
+
import './chunk-PA5DRJNI.mjs';
|
|
5
|
+
export { TemporalFrameCoordinator } from './chunk-NICXSHAT.mjs';
|
|
6
|
+
import { EXTENDED_LIGHTING_TOPOLOGY } from './chunk-BTWH7BP4.mjs';
|
|
7
|
+
export { DeviceScope, EXTENDED_LIGHTING_REQUIRED_SAMPLED_TEXTURES, deriveExtendedLightingCapability, extendedLightingSampledTextureCapacityAvailable, validateGraphTargetCaptureReadback } from './chunk-BTWH7BP4.mjs';
|
|
8
|
+
export { createLightResourceUnavailable, createVisibilityBudget } from './chunk-NRNXBLIJ.mjs';
|
|
9
9
|
export { resolveTilesetRuntime } from '@forgeax/engine-assets-runtime';
|
|
10
10
|
import '@forgeax/engine-shader';
|
|
11
|
-
import '@forgeax/engine-types';
|
|
11
|
+
import { ok, err } from '@forgeax/engine-types';
|
|
12
12
|
|
|
13
13
|
function deriveLtcResourcePlan(input) {
|
|
14
14
|
const admitted = input.ltcAvailable;
|
|
@@ -20,7 +20,115 @@ function deriveLtcResourcePlan(input) {
|
|
|
20
20
|
uploadCount: admitted && input.residentGeneration !== input.scope.generation ? 2 : 0
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
+
function stageFromError(cause) {
|
|
24
|
+
if (typeof cause === "object" && cause !== null && "stage" in cause) {
|
|
25
|
+
const stage = cause.stage;
|
|
26
|
+
if (stage === "build" || stage === "encode" || stage === "finish" || stage === "submit") {
|
|
27
|
+
return stage;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return "submit";
|
|
31
|
+
}
|
|
32
|
+
function coordinatorInput(input) {
|
|
33
|
+
const consumerIds = input.consumerIds?.includes("ssr") ? input.consumerIds : [...input.consumerIds ?? [], "ssr"];
|
|
34
|
+
return { ...input, temporalDemand: true, consumerIds };
|
|
35
|
+
}
|
|
36
|
+
function resetCoordinator(coordinator, reason) {
|
|
37
|
+
switch (reason) {
|
|
38
|
+
case "first-enable":
|
|
39
|
+
case "disable":
|
|
40
|
+
return;
|
|
41
|
+
case "resize":
|
|
42
|
+
coordinator.reset("resize");
|
|
43
|
+
return;
|
|
44
|
+
case "camera-cut":
|
|
45
|
+
coordinator.reset("cut");
|
|
46
|
+
return;
|
|
47
|
+
case "history-version":
|
|
48
|
+
coordinator.reset("camera-switch");
|
|
49
|
+
return;
|
|
50
|
+
case "coverage-loss":
|
|
51
|
+
coordinator.reset("detach");
|
|
52
|
+
return;
|
|
53
|
+
case "reflection-generation":
|
|
54
|
+
case "device-recovery":
|
|
55
|
+
coordinator.reset("device-generation");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
var SsrTemporalConsumer = class {
|
|
60
|
+
constructor(coordinator, history) {
|
|
61
|
+
this.coordinator = coordinator;
|
|
62
|
+
this.history = history;
|
|
63
|
+
}
|
|
64
|
+
coordinator;
|
|
65
|
+
history;
|
|
66
|
+
begin(input) {
|
|
67
|
+
const history = this.history.beginFrame();
|
|
68
|
+
if (!history.ok) return history;
|
|
69
|
+
const temporal = this.coordinator.begin(coordinatorInput(input));
|
|
70
|
+
if (!temporal.ok) {
|
|
71
|
+
this.history.abortFrame(history.value, "build");
|
|
72
|
+
return temporal;
|
|
73
|
+
}
|
|
74
|
+
return ok({ temporal: temporal.value, history: history.value });
|
|
75
|
+
}
|
|
76
|
+
commit(candidate) {
|
|
77
|
+
const committed = this.coordinator.commit(candidate.temporal);
|
|
78
|
+
if (!committed.ok) {
|
|
79
|
+
this.history.abortFrame(candidate.history, "submit");
|
|
80
|
+
return committed;
|
|
81
|
+
}
|
|
82
|
+
const history = this.history.commitFrame(candidate.history);
|
|
83
|
+
if (!history.ok) return history;
|
|
84
|
+
return committed;
|
|
85
|
+
}
|
|
86
|
+
abort(candidate, stage) {
|
|
87
|
+
this.history.abortFrame(candidate.history, stage);
|
|
88
|
+
this.coordinator.abort(candidate.temporal, stage);
|
|
89
|
+
}
|
|
90
|
+
run(input, phases) {
|
|
91
|
+
const started = this.begin(input);
|
|
92
|
+
if (!started.ok) return started;
|
|
93
|
+
const candidate = started.value;
|
|
94
|
+
try {
|
|
95
|
+
const built = phases.build();
|
|
96
|
+
phases.encode(built);
|
|
97
|
+
phases.finish();
|
|
98
|
+
phases.submit();
|
|
99
|
+
} catch (cause) {
|
|
100
|
+
const stage = stageFromError(cause);
|
|
101
|
+
this.abort(candidate, stage);
|
|
102
|
+
return err({
|
|
103
|
+
code: "ssr-temporal-stage-failed",
|
|
104
|
+
expected: `SSR temporal ${stage} succeeds before commit`,
|
|
105
|
+
hint: "inspect the owned stage failure and retry without promoting the candidate",
|
|
106
|
+
detail: { stage, cause }
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return this.commit(candidate);
|
|
110
|
+
}
|
|
111
|
+
reset(reason) {
|
|
112
|
+
this.history.reset(reason);
|
|
113
|
+
resetCoordinator(this.coordinator, reason);
|
|
114
|
+
}
|
|
115
|
+
retireAfterFence(queue, onFailure) {
|
|
116
|
+
this.history.retireAfterFence(queue, onFailure);
|
|
117
|
+
}
|
|
118
|
+
inspect() {
|
|
119
|
+
const temporal = this.coordinator.inspect();
|
|
120
|
+
return Object.freeze({
|
|
121
|
+
sharedEpoch: temporal.epoch,
|
|
122
|
+
consumerIds: temporal.consumerIds,
|
|
123
|
+
coordinatorAttempt: temporal.attempt,
|
|
124
|
+
history: this.history.inspect()
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
function createSsrTemporalConsumer(coordinator, history) {
|
|
129
|
+
return new SsrTemporalConsumer(coordinator, history);
|
|
130
|
+
}
|
|
23
131
|
|
|
24
|
-
export { deriveLtcResourcePlan };
|
|
132
|
+
export { SsrTemporalConsumer, createSsrTemporalConsumer, deriveLtcResourcePlan };
|
|
25
133
|
//# sourceMappingURL=internal.mjs.map
|
|
26
134
|
//# sourceMappingURL=internal.mjs.map
|
package/dist/internal.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/prepare/extended-lighting/ltc-resources.ts"],"names":[],"mappings":";;;;;;;;;;;;AAoCO,SAAS,sBAAsB,KAAA,EAA8C;AAClF,EAAA,MAAM,WAAW,KAAA,CAAM,YAAA;AACvB,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,0BAAA;AAAA,IACV,UAAA,EAAY,MAAM,KAAA,CAAM,UAAA;AAAA,IACxB,aAAA,EAAe,WAAW,UAAA,GAAa,SAAA;AAAA,IACvC,UAAA,EAAY,WAAW,CAAA,GAAI,CAAA;AAAA,IAC3B,aAAa,QAAA,IAAY,KAAA,CAAM,uBAAuB,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,GAAI;AAAA,GACrF;AACF","file":"internal.mjs","sourcesContent":["// @forgeax/engine-render - DeviceScope-owned RectArea LTC resources.\n\nimport type { Result, RhiDevice, RhiError, Texture } from '@forgeax/engine-rhi';\nimport { LTC_TABLE_HEIGHT, LTC_TABLE_WIDTH, LTC_TABLES } from '@forgeax/engine-shader';\nimport { err, ok } from '@forgeax/engine-types';\nimport { type DeviceScope, LifecycleTransaction } from '../../device/device-scope';\nimport {\n GPU_TEXTURE_USAGE_COPY_DST,\n GPU_TEXTURE_USAGE_TEXTURE_BINDING,\n} from '../../gpu-texture-usage';\nimport { deriveExtendedLightingCapability, EXTENDED_LIGHTING_TOPOLOGY } from './resources';\n\nexport interface LtcResourcePlanInput {\n readonly scope: DeviceScope;\n readonly ltcAvailable: boolean;\n readonly residentGeneration?: number;\n}\n\nexport interface LtcResourcePlan {\n readonly topology: typeof EXTENDED_LIGHTING_TOPOLOGY;\n readonly generation: number;\n readonly rectAdmission: 'admitted' | 'omitted';\n readonly tableCount: number;\n readonly uploadCount: number;\n}\n\nexport interface LtcResourceCandidate {\n readonly topology: typeof EXTENDED_LIGHTING_TOPOLOGY;\n readonly generation: number;\n readonly scope: DeviceScope;\n readonly lambertTexture: Texture;\n readonly ggxTexture: Texture;\n readonly tableCount: 2;\n readonly uploadCount: 2;\n}\n\nexport function deriveLtcResourcePlan(input: LtcResourcePlanInput): LtcResourcePlan {\n const admitted = input.ltcAvailable;\n return {\n topology: EXTENDED_LIGHTING_TOPOLOGY,\n generation: input.scope.generation,\n rectAdmission: admitted ? 'admitted' : 'omitted',\n tableCount: admitted ? 2 : 0,\n uploadCount: admitted && input.residentGeneration !== input.scope.generation ? 2 : 0,\n };\n}\n\nfunction failure(expected: string, actual: string): Result<never, RhiError> {\n return err({\n code: 'webgpu-runtime-error',\n expected,\n hint: 'inspect device capabilities and retry the extendedLighting candidate',\n detail: { error: { code: 'ltc-resource', message: actual } },\n } as RhiError);\n}\n\nfunction textureBytes(table: Uint16Array): Uint8Array {\n return new Uint8Array(table.buffer, table.byteOffset, table.byteLength);\n}\n\n/** Create both tracked tables atomically; unavailable LTC only omits Rect. */\nexport async function createLtcResourceCandidate(input: {\n readonly device: RhiDevice | undefined;\n readonly scope: DeviceScope;\n}): Promise<Result<LtcResourceCandidate | undefined, RhiError>> {\n if (input.device === undefined) return ok(undefined);\n if (!deriveExtendedLightingCapability(input.device).admitted) return ok(undefined);\n const device = input.device;\n\n const transaction = new LifecycleTransaction(input.scope);\n let lambertTexture: Texture | undefined;\n let ggxTexture: Texture | undefined;\n const createTable = (label: string, table: Uint16Array): Texture => {\n const texture = device.createTexture({\n label,\n size: { width: LTC_TABLE_WIDTH, height: LTC_TABLE_HEIGHT, depthOrArrayLayers: 1 },\n mipLevelCount: 1,\n sampleCount: 1,\n dimension: '2d',\n format: 'rgba16float',\n usage: GPU_TEXTURE_USAGE_COPY_DST | GPU_TEXTURE_USAGE_TEXTURE_BINDING,\n viewFormats: [],\n textureBindingViewDimension: undefined,\n });\n if (texture === undefined || !texture.ok) {\n throw texture?.error ?? new Error('LTC texture creation returned no result');\n }\n const write = device.queue.writeTexture(\n { texture: texture.value, mipLevel: 0, origin: { x: 0, y: 0, z: 0 } },\n textureBytes(table),\n { offset: 0, bytesPerRow: LTC_TABLE_WIDTH * 8, rowsPerImage: LTC_TABLE_HEIGHT },\n { width: LTC_TABLE_WIDTH, height: LTC_TABLE_HEIGHT, depthOrArrayLayers: 1 },\n );\n if (!write.ok) throw write.error;\n return texture.value;\n };\n\n transaction.add({\n kind: 'texture',\n create: () => {\n lambertTexture = createTable('extended-lighting-ltc-lambert', LTC_TABLES.lambert);\n return lambertTexture;\n },\n cleanup: (value) => {\n const destroyed = input.device?.destroyTexture(value);\n if (destroyed !== undefined && !destroyed.ok) throw destroyed.error;\n },\n });\n transaction.add({\n kind: 'texture',\n create: () => {\n ggxTexture = createTable('extended-lighting-ltc-ggx', LTC_TABLES.ggx);\n return ggxTexture;\n },\n cleanup: (value) => {\n const destroyed = input.device?.destroyTexture(value);\n if (destroyed !== undefined && !destroyed.ok) throw destroyed.error;\n },\n });\n\n const committed = await transaction.commit();\n if (!committed.ok)\n return failure(committed.error.primary.expected, committed.error.primary.message);\n if (lambertTexture === undefined || ggxTexture === undefined) {\n return failure('two LTC textures', 'the transaction committed without both tables');\n }\n return ok({\n topology: EXTENDED_LIGHTING_TOPOLOGY,\n generation: input.scope.generation,\n scope: input.scope,\n lambertTexture,\n ggxTexture,\n tableCount: 2,\n uploadCount: 2,\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/prepare/extended-lighting/ltc-resources.ts","../src/ssr/temporal.ts"],"names":["ok","err"],"mappings":"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","file":"internal.mjs","sourcesContent":["// @forgeax/engine-render - DeviceScope-owned RectArea LTC resources.\n\nimport type { Result, RhiDevice, RhiError, Texture } from '@forgeax/engine-rhi';\nimport { LTC_TABLE_HEIGHT, LTC_TABLE_WIDTH, LTC_TABLES } from '@forgeax/engine-shader';\nimport { err, ok } from '@forgeax/engine-types';\nimport { type DeviceScope, LifecycleTransaction } from '../../device/device-scope';\nimport {\n GPU_TEXTURE_USAGE_COPY_DST,\n GPU_TEXTURE_USAGE_TEXTURE_BINDING,\n} from '../../gpu-texture-usage';\nimport { deriveExtendedLightingCapability, EXTENDED_LIGHTING_TOPOLOGY } from './resources';\n\nexport interface LtcResourcePlanInput {\n readonly scope: DeviceScope;\n readonly ltcAvailable: boolean;\n readonly residentGeneration?: number;\n}\n\nexport interface LtcResourcePlan {\n readonly topology: typeof EXTENDED_LIGHTING_TOPOLOGY;\n readonly generation: number;\n readonly rectAdmission: 'admitted' | 'omitted';\n readonly tableCount: number;\n readonly uploadCount: number;\n}\n\nexport interface LtcResourceCandidate {\n readonly topology: typeof EXTENDED_LIGHTING_TOPOLOGY;\n readonly generation: number;\n readonly scope: DeviceScope;\n readonly lambertTexture: Texture;\n readonly ggxTexture: Texture;\n readonly tableCount: 2;\n readonly uploadCount: 2;\n}\n\nexport function deriveLtcResourcePlan(input: LtcResourcePlanInput): LtcResourcePlan {\n const admitted = input.ltcAvailable;\n return {\n topology: EXTENDED_LIGHTING_TOPOLOGY,\n generation: input.scope.generation,\n rectAdmission: admitted ? 'admitted' : 'omitted',\n tableCount: admitted ? 2 : 0,\n uploadCount: admitted && input.residentGeneration !== input.scope.generation ? 2 : 0,\n };\n}\n\nfunction failure(expected: string, actual: string): Result<never, RhiError> {\n return err({\n code: 'webgpu-runtime-error',\n expected,\n hint: 'inspect device capabilities and retry the extendedLighting candidate',\n detail: { error: { code: 'ltc-resource', message: actual } },\n } as RhiError);\n}\n\nfunction textureBytes(table: Uint16Array): Uint8Array {\n return new Uint8Array(table.buffer, table.byteOffset, table.byteLength);\n}\n\n/** Create both tracked tables atomically; unavailable LTC only omits Rect. */\nexport async function createLtcResourceCandidate(input: {\n readonly device: RhiDevice | undefined;\n readonly scope: DeviceScope;\n}): Promise<Result<LtcResourceCandidate | undefined, RhiError>> {\n if (input.device === undefined) return ok(undefined);\n if (!deriveExtendedLightingCapability(input.device).admitted) return ok(undefined);\n const device = input.device;\n\n const transaction = new LifecycleTransaction(input.scope);\n let lambertTexture: Texture | undefined;\n let ggxTexture: Texture | undefined;\n const createTable = (label: string, table: Uint16Array): Texture => {\n const texture = device.createTexture({\n label,\n size: { width: LTC_TABLE_WIDTH, height: LTC_TABLE_HEIGHT, depthOrArrayLayers: 1 },\n mipLevelCount: 1,\n sampleCount: 1,\n dimension: '2d',\n format: 'rgba16float',\n usage: GPU_TEXTURE_USAGE_COPY_DST | GPU_TEXTURE_USAGE_TEXTURE_BINDING,\n viewFormats: [],\n textureBindingViewDimension: undefined,\n });\n if (texture === undefined || !texture.ok) {\n throw texture?.error ?? new Error('LTC texture creation returned no result');\n }\n const write = device.queue.writeTexture(\n { texture: texture.value, mipLevel: 0, origin: { x: 0, y: 0, z: 0 } },\n textureBytes(table),\n { offset: 0, bytesPerRow: LTC_TABLE_WIDTH * 8, rowsPerImage: LTC_TABLE_HEIGHT },\n { width: LTC_TABLE_WIDTH, height: LTC_TABLE_HEIGHT, depthOrArrayLayers: 1 },\n );\n if (!write.ok) throw write.error;\n return texture.value;\n };\n\n transaction.add({\n kind: 'texture',\n create: () => {\n lambertTexture = createTable('extended-lighting-ltc-lambert', LTC_TABLES.lambert);\n return lambertTexture;\n },\n cleanup: (value) => {\n const destroyed = input.device?.destroyTexture(value);\n if (destroyed !== undefined && !destroyed.ok) throw destroyed.error;\n },\n });\n transaction.add({\n kind: 'texture',\n create: () => {\n ggxTexture = createTable('extended-lighting-ltc-ggx', LTC_TABLES.ggx);\n return ggxTexture;\n },\n cleanup: (value) => {\n const destroyed = input.device?.destroyTexture(value);\n if (destroyed !== undefined && !destroyed.ok) throw destroyed.error;\n },\n });\n\n const committed = await transaction.commit();\n if (!committed.ok)\n return failure(committed.error.primary.expected, committed.error.primary.message);\n if (lambertTexture === undefined || ggxTexture === undefined) {\n return failure('two LTC textures', 'the transaction committed without both tables');\n }\n return ok({\n topology: EXTENDED_LIGHTING_TOPOLOGY,\n generation: input.scope.generation,\n scope: input.scope,\n lambertTexture,\n ggxTexture,\n tableCount: 2,\n uploadCount: 2,\n });\n}\n","import { err, ok, type Result } from '@forgeax/engine-types';\nimport type {\n TemporalFrameBeginInput,\n TemporalFrameCandidate,\n TemporalFrameConsumerId,\n TemporalFrameCoordinator,\n TemporalFrameError,\n TemporalFramePhases,\n TemporalFrameReceipt,\n TemporalFrameStage,\n} from '../temporal/frame-coordinator';\nimport type {\n SsrHistoryCandidate,\n SsrHistoryError,\n SsrHistoryFailureStage,\n SsrHistoryInspection,\n SsrHistoryOwner,\n SsrHistoryResetReason,\n} from './history';\n\nexport interface SsrTemporalCandidate<T> {\n readonly temporal: TemporalFrameCandidate<T>;\n readonly history: SsrHistoryCandidate;\n}\nexport interface SsrTemporalExecutionError {\n readonly code: 'ssr-temporal-stage-failed';\n readonly expected: string;\n readonly hint: string;\n readonly detail: Readonly<{ readonly stage: TemporalFrameStage; readonly cause: unknown }>;\n}\nexport interface SsrTemporalInspection {\n readonly sharedEpoch: number;\n readonly consumerIds: readonly TemporalFrameConsumerId[];\n readonly coordinatorAttempt: 'none' | 'active' | 'committed' | 'aborted';\n readonly history: SsrHistoryInspection;\n}\nexport type SsrTemporalError = TemporalFrameError | SsrHistoryError | SsrTemporalExecutionError;\n\nfunction stageFromError(cause: unknown): TemporalFrameStage {\n if (typeof cause === 'object' && cause !== null && 'stage' in cause) {\n const stage = (cause as { readonly stage?: unknown }).stage;\n if (stage === 'build' || stage === 'encode' || stage === 'finish' || stage === 'submit') {\n return stage;\n }\n }\n return 'submit';\n}\nfunction coordinatorInput<T>(input: TemporalFrameBeginInput<T>): TemporalFrameBeginInput<T> {\n const consumerIds = input.consumerIds?.includes('ssr')\n ? input.consumerIds\n : [...(input.consumerIds ?? []), 'ssr' as const];\n return { ...input, temporalDemand: true, consumerIds };\n}\nfunction resetCoordinator<T>(\n coordinator: TemporalFrameCoordinator<T>,\n reason: SsrHistoryResetReason,\n): void {\n switch (reason) {\n case 'first-enable':\n case 'disable':\n return;\n case 'resize':\n coordinator.reset('resize');\n return;\n case 'camera-cut':\n coordinator.reset('cut');\n return;\n case 'history-version':\n coordinator.reset('camera-switch');\n return;\n case 'coverage-loss':\n coordinator.reset('detach');\n return;\n case 'reflection-generation':\n case 'device-recovery':\n coordinator.reset('device-generation');\n return;\n }\n}\n\n/** Stages SSR history beside the shared renderer transaction without owning submit or epochs. */\nexport class SsrTemporalConsumer<T = unknown> {\n constructor(\n private readonly coordinator: TemporalFrameCoordinator<T>,\n readonly history: SsrHistoryOwner,\n ) {}\n begin(\n input: TemporalFrameBeginInput<T>,\n ): Result<SsrTemporalCandidate<T>, TemporalFrameError | SsrHistoryError> {\n const history = this.history.beginFrame();\n if (!history.ok) return history;\n const temporal = this.coordinator.begin(coordinatorInput(input));\n if (!temporal.ok) {\n this.history.abortFrame(history.value, 'build');\n return temporal;\n }\n return ok({ temporal: temporal.value, history: history.value });\n }\n commit(\n candidate: SsrTemporalCandidate<T>,\n ): Result<TemporalFrameReceipt<T>, TemporalFrameError | SsrHistoryError> {\n const committed = this.coordinator.commit(candidate.temporal);\n if (!committed.ok) {\n this.history.abortFrame(candidate.history, 'submit');\n return committed;\n }\n const history = this.history.commitFrame(candidate.history);\n if (!history.ok) return history;\n return committed;\n }\n abort(candidate: SsrTemporalCandidate<T>, stage: SsrHistoryFailureStage): void {\n this.history.abortFrame(candidate.history, stage);\n this.coordinator.abort(candidate.temporal, stage);\n }\n run(\n input: TemporalFrameBeginInput<T>,\n phases: TemporalFramePhases<T>,\n ): Result<TemporalFrameReceipt<T>, SsrTemporalError> {\n const started = this.begin(input);\n if (!started.ok) return started;\n const candidate = started.value;\n try {\n const built = phases.build();\n phases.encode(built);\n phases.finish();\n phases.submit();\n } catch (cause) {\n const stage = stageFromError(cause);\n this.abort(candidate, stage);\n return err({\n code: 'ssr-temporal-stage-failed',\n expected: `SSR temporal ${stage} succeeds before commit`,\n hint: 'inspect the owned stage failure and retry without promoting the candidate',\n detail: { stage, cause },\n });\n }\n return this.commit(candidate);\n }\n reset(reason: SsrHistoryResetReason): void {\n this.history.reset(reason);\n resetCoordinator(this.coordinator, reason);\n }\n retireAfterFence(\n queue: Parameters<SsrHistoryOwner['retireAfterFence']>[0],\n onFailure: Parameters<SsrHistoryOwner['retireAfterFence']>[1],\n ): void {\n this.history.retireAfterFence(queue, onFailure);\n }\n inspect(): SsrTemporalInspection {\n const temporal = this.coordinator.inspect();\n return Object.freeze({\n sharedEpoch: temporal.epoch,\n consumerIds: temporal.consumerIds,\n coordinatorAttempt: temporal.attempt,\n history: this.history.inspect(),\n });\n }\n}\nexport function createSsrTemporalConsumer<T>(\n coordinator: TemporalFrameCoordinator<T>,\n history: SsrHistoryOwner,\n): SsrTemporalConsumer<T> {\n return new SsrTemporalConsumer(coordinator, history);\n}\n"]}
|
package/dist/lifecycle.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { RenderGraphError } from '@forgeax/engine-render-graph';
|
|
|
3
3
|
import type { RhiError } from '@forgeax/engine-rhi';
|
|
4
4
|
import type { SkinError } from '@forgeax/engine-skinning';
|
|
5
5
|
import type { ImageError } from '@forgeax/engine-types';
|
|
6
|
+
import type { GpuDrivenPreparationError } from './errors/gpu-driven';
|
|
6
7
|
import type { RenderError } from './errors/render';
|
|
7
8
|
import type { PostProcessError } from './post-process-errors';
|
|
8
9
|
export interface RendererLostInfo {
|
|
@@ -10,7 +11,7 @@ export interface RendererLostInfo {
|
|
|
10
11
|
readonly message: string;
|
|
11
12
|
}
|
|
12
13
|
export type RendererLostListener = (info: RendererLostInfo) => void;
|
|
13
|
-
export type RendererError = RhiError | RenderGraphError | ImageError | RenderError | AssetRuntimeError | SkinError | PostProcessError;
|
|
14
|
+
export type RendererError = RhiError | RenderGraphError | ImageError | RenderError | GpuDrivenPreparationError | AssetRuntimeError | SkinError | PostProcessError;
|
|
14
15
|
export type RendererErrorListener = (error: RendererError) => void;
|
|
15
16
|
export type HealthReason = 'alive' | 'device-lost' | 'internal-fault';
|
|
16
17
|
export interface HealthDetailDeviceLost {
|
package/dist/lifecycle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type MaterialShaderArtifactReceipt } from '@forgeax/engine-shader';
|
|
2
|
+
import type { MaterialSnapshot } from './render-system-extract';
|
|
3
|
+
/** Pack the producer receipt's numeric Standard PBR row into the GPU Scene table. */
|
|
4
|
+
export declare function packStandardPbrMaterialRow(receipt: MaterialShaderArtifactReceipt, material: MaterialSnapshot): Uint8Array;
|
|
5
|
+
//# sourceMappingURL=material-row.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"material-row.d.ts","sourceRoot":"","sources":["../src/material-row.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,6BAA6B,EAEnC,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA8GhE,qFAAqF;AACrF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,6BAA6B,EACtC,QAAQ,EAAE,gBAAgB,GACzB,UAAU,CAwBZ"}
|
package/dist/materials.d.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import type { MaterialAsset, MaterialColorSpace, MaterialParameter, MaterialRenderState, MaterialValue } from '@forgeax/engine-types';
|
|
2
2
|
export type MaterialTransmissionValidationReason = 'non-finite' | 'range' | 'shape' | 'blend' | 'depth-write';
|
|
3
|
+
export type MaterialAuthoringValidationReason = 'non-finite' | 'range';
|
|
4
|
+
/** Structured authoring failure for a built-in Standard material parameter. */
|
|
5
|
+
export declare class MaterialAuthoringContractError extends Error {
|
|
6
|
+
readonly code: "material-authoring-contract-invalid";
|
|
7
|
+
readonly expected = "Standard material authoring values are finite and within their declared ranges";
|
|
8
|
+
readonly hint = "repair the named Standard material parameter alphaCutoff before publishing the material";
|
|
9
|
+
readonly detail: {
|
|
10
|
+
readonly code: 'material-authoring-contract-invalid';
|
|
11
|
+
readonly material: 'Standard';
|
|
12
|
+
readonly parameter: 'alphaCutoff';
|
|
13
|
+
readonly reason: MaterialAuthoringValidationReason;
|
|
14
|
+
readonly actual?: unknown;
|
|
15
|
+
};
|
|
16
|
+
constructor(reason: MaterialAuthoringValidationReason, actual?: unknown);
|
|
17
|
+
}
|
|
3
18
|
/** Structured authoring failure for the Standard transmission contract. */
|
|
4
19
|
export declare class MaterialTransmissionContractError extends Error {
|
|
5
20
|
readonly code: "material-transmission-contract-invalid";
|
package/dist/materials.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materials.d.ts","sourceRoot":"","sources":["../src/materials.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EAEjB,mBAAmB,EACnB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAO/B,MAAM,MAAM,oCAAoC,GAC5C,YAAY,GACZ,OAAO,GACP,OAAO,GACP,OAAO,GACP,aAAa,CAAC;AAElB,2EAA2E;AAC3E,qBAAa,iCAAkC,SAAQ,KAAK;IAC1D,QAAQ,CAAC,IAAI,EAAG,wCAAwC,CAAU;IAClE,QAAQ,CAAC,QAAQ,gFAAgF;IACjG,QAAQ,CAAC,IAAI,sFACwE;IACrF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,wCAAwC,CAAC;QACxD,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC9B,QAAQ,CAAC,SAAS,EACd,cAAc,GACd,KAAK,GACL,WAAW,GACX,kBAAkB,GAClB,qBAAqB,CAAC;QAC1B,QAAQ,CAAC,MAAM,EAAE,oCAAoC,CAAC;QACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;gBAGA,SAAS,EAAE,CAAC,OAAO,iCAAiC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EACnF,MAAM,EAAE,oCAAoC,EAC5C,MAAM,CAAC,EAAE,OAAO;CAYnB;AAED,eAAO,MAAM,gCAAgC,EAAE,aAG9C,CAAC;AAGF,QAAA,MAAM,aAAa,6BAA6B,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5E,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AACxE,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AA0BxE,oFAAoF;AACpF,wBAAgB,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAAC;AACtE,wBAAgB,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"materials.d.ts","sourceRoot":"","sources":["../src/materials.ts"],"names":[],"mappings":"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"}
|
package/dist/pbr-pipeline.d.ts
CHANGED
|
@@ -97,7 +97,7 @@ export declare const INJECTION_KIND_LENGTHS: {
|
|
|
97
97
|
transmission: number;
|
|
98
98
|
};
|
|
99
99
|
export declare function physicalTextureFields(paramSchema: readonly ParamSchemaEntry[]): readonly string[];
|
|
100
|
-
export declare function appendTextureInjection(
|
|
100
|
+
export declare function appendTextureInjection(_bgl: readonly GPUBindGroupLayoutEntry[], fields: readonly string[]): GPUBindGroupLayoutEntry[];
|
|
101
101
|
/**
|
|
102
102
|
* Return the stable identity of the merged material bind-group layout.
|
|
103
103
|
*
|
|
@@ -139,7 +139,7 @@ export interface PbrCaps {
|
|
|
139
139
|
* fragment-only). feat-20260612-point-light-shadows-urp-hdrp Round-2 F-1.
|
|
140
140
|
* binding 6 = point shadow params UBO (`array<vec4<f32>, 4>`, 64 B;
|
|
141
141
|
* fragment-only). One lane per shadow-casting point light slot
|
|
142
|
-
* (shadowAtlasLayer in [0, 4)) carrying `(near, far,
|
|
142
|
+
* (shadowAtlasLayer in [0, 4)) carrying `(near, far, depthBias, normalBias)`.
|
|
143
143
|
* binding 7 = shadowCasterCascade UBO (16 B; vertex + fragment). Per-pass
|
|
144
144
|
* cascade-index uniform consumed exclusively by `shadow_caster.wgsl` to
|
|
145
145
|
* pick `view.lightViewProj_X` for the cascade currently being rasterized
|
|
@@ -197,7 +197,7 @@ export declare function buildPbrPipelineLayouts(device: PbrPipelineDevice, caps:
|
|
|
197
197
|
export declare const SKIN_MATERIAL_SHADER_ID: "forgeax::pbr-skin";
|
|
198
198
|
export declare const SHADOW_CASTER_SHADER_ID: "forgeax::default-shadow-caster";
|
|
199
199
|
export declare function isStandardPbrSkinMaterialShader(shaderId: string | undefined): boolean;
|
|
200
|
-
export declare function shadowCasterVariantSet(storageBuffer: boolean, skinned: boolean): string;
|
|
200
|
+
export declare function shadowCasterVariantSet(storageBuffer: boolean, skinned: boolean, gpuDrivenSceneIndex?: boolean, alphaMask?: boolean): string;
|
|
201
201
|
export declare function isSkinnedShadowCasterVariant(materialShaderId: string | undefined, variantSet: string | undefined): boolean;
|
|
202
202
|
export type PipelineGroup2Contract = 'mesh' | 'skin' | 'cluster' | 'skin-cluster';
|
|
203
203
|
/** Resolve group(2) from the composed WGSL artifact used to build the PSO. */
|
|
@@ -224,6 +224,20 @@ export declare function isCanonicalStandardPbrMaterialShader(shaderId: string |
|
|
|
224
224
|
* to fold the throw into the structured error pipe.
|
|
225
225
|
*/
|
|
226
226
|
export declare function buildPbrSkinLayouts(device: PbrPipelineDevice, caps: PbrCaps, pbr: PbrPipelineLayoutBundle): PbrPipelineLayoutBundle;
|
|
227
|
+
/**
|
|
228
|
+
* Build the dedicated slot-3 layout used by scene-index GPU-driven draws.
|
|
229
|
+
*
|
|
230
|
+
* Direct material draws deliberately keep `pbr-instances-bgl` at binding(0),
|
|
231
|
+
* and ProbeBlend deliberately owns binding(1). The scene-index stream is
|
|
232
|
+
* therefore a separate BGL at binding(2), rather than an optional entry added
|
|
233
|
+
* to the direct layout. This keeps every bind group complete for its shader
|
|
234
|
+
* and prevents a direct draw from having to bind a dummy visible stream.
|
|
235
|
+
*/
|
|
236
|
+
export declare function buildGpuDrivenPbrInstancesBindGroupLayout(device: PbrPipelineDevice, caps: PbrCaps): BindGroupLayout;
|
|
237
|
+
/** Build the four-slot rigid scene-index pipeline layout. */
|
|
238
|
+
export declare function buildGpuDrivenPbrPipelineLayout(device: PbrPipelineDevice, pbr: PbrPipelineLayoutBundle, gpuDrivenInstancesBgl: BindGroupLayout): PipelineLayout;
|
|
239
|
+
/** Build the four-slot skinned scene-index pipeline layout. */
|
|
240
|
+
export declare function buildGpuDrivenPbrSkinPipelineLayout(device: PbrPipelineDevice, pbrSkin: PbrPipelineLayoutBundle, gpuDrivenInstancesBgl: BindGroupLayout): PipelineLayout;
|
|
227
241
|
/** Project the canonical group(2) resources for a PBR skin draw. */
|
|
228
242
|
export declare function createPbrSkinMeshBindGroupEntries(meshBuffer: Buffer, meshSize: number, paletteBuffer: Buffer, paletteWindowBytes: number): BindGroupEntry[];
|
|
229
243
|
/** Project all dynamic offsets for the canonical PBR skin group(2) shape. */
|
|
@@ -303,7 +317,9 @@ export declare const SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET = "";
|
|
|
303
317
|
* (directional 3/4, point 5/6, cascade 7, spot atlas 8; the former
|
|
304
318
|
* spot lightViewProj matrices moved into the View UBO)
|
|
305
319
|
* - `'pbr-mesh-array'` — 1 entry: per-entity mesh SSBO (dynamic-offset)
|
|
306
|
-
* - `'pbr-instances'` —
|
|
320
|
+
* - `'pbr-instances'` — 2 entries: per-instance SSBO plus the compact
|
|
321
|
+
* visible-item index stream (the second entry is used only by the
|
|
322
|
+
* scene-index vertex entry and shares the frame's instance bind group)
|
|
307
323
|
* - `'pbr-skin-mesh-array'` — 3 entries: meshes + current/previous palette
|
|
308
324
|
* 3. Attachment-driven (fullscreen post-process):
|
|
309
325
|
* - `'fullscreen-post'` — 2 entries: input texture + sampler. The texture
|
|
@@ -318,7 +334,7 @@ export declare const SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET = "";
|
|
|
318
334
|
* - `'fullscreen-post-with-scene-depth-msaa'` — the depth-read layout with
|
|
319
335
|
* `texture.multisampled=true`, selected for a 4-sample scene depth target.
|
|
320
336
|
*/
|
|
321
|
-
export type BglKind = 'pbr-view' | 'pbr-material-merged' | 'pbr-mesh-array' | 'pbr-instances' | 'pbr-skin-mesh-array' | 'unlit-material' | 'hdrp-7-slot' | 'fullscreen-post' | 'fullscreen-post-with-params' | 'fullscreen-post-with-scene-depth' | 'fullscreen-post-with-scene-depth-msaa';
|
|
337
|
+
export type BglKind = 'pbr-view' | 'pbr-material-merged' | 'pbr-mesh-array' | 'pbr-instances' | 'pbr-gpu-driven-instances' | 'pbr-skin-mesh-array' | 'unlit-material' | 'hdrp-7-slot' | 'fullscreen-post' | 'fullscreen-post-with-params' | 'fullscreen-post-with-scene-depth' | 'fullscreen-post-with-scene-depth-msaa';
|
|
322
338
|
/**
|
|
323
339
|
* Output shape of {@link buildBindGroupLayoutDescriptor}: matches the RHI
|
|
324
340
|
* `BindGroupLayoutDescriptor` (label + entries with `ExplicitUndefined`) so
|