@forgeax/engine-render 0.1.6 → 0.1.19
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 +279 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/assembly/backend-contract.d.ts +12 -0
- package/dist/assembly/backend-contract.d.ts.map +1 -1
- package/dist/assembly/factory.d.ts +19 -2
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/host-contract.d.ts +4 -0
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- package/dist/assembly/renderer-frame-transaction.d.ts +39 -0
- package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -0
- package/dist/assembly/renderer-inspection.d.ts +22 -0
- package/dist/assembly/renderer-inspection.d.ts.map +1 -0
- package/dist/assembly/renderer-lifecycle.d.ts +4 -0
- package/dist/assembly/renderer-lifecycle.d.ts.map +1 -0
- package/dist/authoring.d.ts +1 -0
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.mjs +4 -2
- package/dist/authoring.mjs.map +1 -1
- package/dist/chunk-FJ6P52EE.mjs +46 -0
- package/dist/chunk-FJ6P52EE.mjs.map +1 -0
- package/dist/chunk-IPXCABEP.mjs +73 -0
- package/dist/chunk-IPXCABEP.mjs.map +1 -0
- package/dist/chunk-JDWARUOI.mjs +44 -0
- package/dist/chunk-JDWARUOI.mjs.map +1 -0
- package/dist/chunk-LOSO4CTV.mjs +901 -0
- package/dist/chunk-LOSO4CTV.mjs.map +1 -0
- package/dist/chunk-PCHBPYML.mjs +385 -0
- package/dist/chunk-PCHBPYML.mjs.map +1 -0
- package/dist/chunk-RJRUS55L.mjs +9323 -0
- package/dist/chunk-RJRUS55L.mjs.map +1 -0
- package/dist/{chunk-QC4VW3XJ.mjs → chunk-RXZ3RGOU.mjs} +4 -30
- package/dist/chunk-RXZ3RGOU.mjs.map +1 -0
- package/dist/{chunk-CQXZC5XI.mjs → chunk-VFPLTKCU.mjs} +79 -69
- package/dist/chunk-VFPLTKCU.mjs.map +1 -0
- package/dist/{chunk-SCRSAK5B.mjs → chunk-YTQ5C7YQ.mjs} +231 -127
- package/dist/chunk-YTQ5C7YQ.mjs.map +1 -0
- package/dist/components/atmosphere.d.ts +9 -0
- package/dist/components/atmosphere.d.ts.map +1 -0
- package/dist/components/camera.d.ts +2 -1
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/fog.d.ts +8 -0
- package/dist/components/fog.d.ts.map +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/lines.d.ts +5 -0
- package/dist/components/lines.d.ts.map +1 -0
- package/dist/components/motion-blur.d.ts +7 -0
- package/dist/components/motion-blur.d.ts.map +1 -0
- package/dist/components/points.d.ts +15 -0
- package/dist/components/points.d.ts.map +1 -0
- package/dist/construct-renderer.d.ts +2 -2
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +11419 -16442
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/device-scope.d.ts +4 -0
- package/dist/device/device-scope.d.ts.map +1 -1
- package/dist/environment/frame.d.ts +60 -0
- package/dist/environment/frame.d.ts.map +1 -0
- package/dist/environment/generation.d.ts +21 -0
- package/dist/environment/generation.d.ts.map +1 -0
- package/dist/environment/graph.d.ts +4 -0
- package/dist/environment/graph.d.ts.map +1 -0
- package/dist/environment/inspection.d.ts +48 -0
- package/dist/environment/inspection.d.ts.map +1 -0
- package/dist/environment/lifecycle.d.ts +39 -0
- package/dist/environment/lifecycle.d.ts.map +1 -0
- package/dist/environment/signature.d.ts +25 -0
- package/dist/environment/signature.d.ts.map +1 -0
- package/dist/errors/render.d.ts +217 -1
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/camera.d.ts +5 -0
- package/dist/extract/camera.d.ts.map +1 -0
- package/dist/extract/environment.d.ts +74 -0
- package/dist/extract/environment.d.ts.map +1 -0
- package/dist/extract/visibility.d.ts +1 -1
- package/dist/extract/visibility.d.ts.map +1 -1
- package/dist/features/host.d.ts +9 -2
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-feature.d.ts +16 -0
- package/dist/features/motion-blur/motion-blur-feature.d.ts.map +1 -0
- package/dist/features/motion-blur/motion-blur-params.d.ts +25 -0
- package/dist/features/motion-blur/motion-blur-params.d.ts.map +1 -0
- package/dist/features/plan.d.ts +17 -2
- package/dist/features/plan.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +3 -1
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics.d.ts +2 -1
- package/dist/features/prepared-graphics.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +7 -2
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/targets.d.ts +3 -0
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +12 -0
- package/dist/features/types.d.ts.map +1 -1
- package/dist/fullscreen-post-process-pass.d.ts +7 -1
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +2 -0
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +5 -6
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +21 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +8 -4
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +46 -1
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +2 -0
- package/dist/materials.d.ts +22 -0
- package/dist/materials.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +12 -6
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-pipeline.d.ts +3 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-post.d.ts +48 -0
- package/dist/pipeline/standard-post.d.ts.map +1 -0
- package/dist/pipeline/standard-profile.d.ts +3 -6
- package/dist/pipeline/standard-profile.d.ts.map +1 -1
- package/dist/pipeline-builder.d.ts +18 -0
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/points-lines/admission.d.ts +36 -0
- package/dist/points-lines/admission.d.ts.map +1 -0
- package/dist/points-lines/bounds.d.ts +8 -0
- package/dist/points-lines/bounds.d.ts.map +1 -0
- package/dist/points-lines/expansion-cache.d.ts +28 -0
- package/dist/points-lines/expansion-cache.d.ts.map +1 -0
- package/dist/points-lines/inspection.d.ts +53 -0
- package/dist/points-lines/inspection.d.ts.map +1 -0
- package/dist/points-lines/prepare.d.ts +67 -0
- package/dist/points-lines/prepare.d.ts.map +1 -0
- package/dist/points-lines/record.d.ts +60 -0
- package/dist/points-lines/record.d.ts.map +1 -0
- package/dist/points-lines/snapshot.d.ts +49 -0
- package/dist/points-lines/snapshot.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +100 -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 +4 -2
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +18 -0
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +8 -5
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +8 -1
- package/dist/record/main-pass-sprite-draws.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/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +93 -18
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +1 -11
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +26 -2
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +10 -1
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/render-contract.d.ts +102 -10
- 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 +50 -6
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +32 -5
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +27 -5
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene-types.d.ts +3 -0
- package/dist/scene/render-scene-types.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +43 -2
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/temporal/coverage.d.ts +42 -0
- package/dist/temporal/coverage.d.ts.map +1 -0
- package/dist/temporal/frame-coordinator.d.ts +99 -0
- package/dist/temporal/frame-coordinator.d.ts.map +1 -0
- package/dist/temporal/gpu.d.ts +39 -0
- package/dist/temporal/gpu.d.ts.map +1 -0
- package/dist/temporal/history.d.ts +37 -0
- package/dist/temporal/history.d.ts.map +1 -0
- package/dist/temporal/index.d.ts +7 -0
- package/dist/temporal/index.d.ts.map +1 -0
- package/dist/temporal/index.mjs +8 -0
- package/dist/temporal/index.mjs.map +1 -0
- package/dist/temporal/inspection.d.ts +36 -0
- package/dist/temporal/inspection.d.ts.map +1 -0
- package/dist/temporal/scene-data-catalog.d.ts +48 -0
- package/dist/temporal/scene-data-catalog.d.ts.map +1 -0
- package/dist/temporal/scene-data.d.ts +43 -0
- package/dist/temporal/scene-data.d.ts.map +1 -0
- package/dist/temporal/standard-scene-data.d.ts +61 -0
- package/dist/temporal/standard-scene-data.d.ts.map +1 -0
- package/dist/temporal/taa-history-resources.d.ts +22 -0
- package/dist/temporal/taa-history-resources.d.ts.map +1 -0
- package/dist/temporal/taa-history-store.d.ts +27 -0
- package/dist/temporal/taa-history-store.d.ts.map +1 -0
- package/dist/temporal/taa-resolve.d.ts +15 -0
- package/dist/temporal/taa-resolve.d.ts.map +1 -0
- package/dist/temporal/temporal-view.d.ts +40 -0
- package/dist/temporal/temporal-view.d.ts.map +1 -0
- package/dist/temporal/transaction.d.ts +9 -0
- package/dist/temporal/transaction.d.ts.map +1 -0
- package/dist/temporal/view.d.ts +56 -0
- package/dist/temporal/view.d.ts.map +1 -0
- package/dist/transmission/backdrop.d.ts +147 -0
- package/dist/transmission/backdrop.d.ts.map +1 -0
- package/dist/transmission/inspection.d.ts +57 -0
- package/dist/transmission/inspection.d.ts.map +1 -0
- package/dist/transmission/oracle.d.ts +42 -0
- package/dist/transmission/oracle.d.ts.map +1 -0
- package/dist/transmission/projection.d.ts +37 -0
- package/dist/transmission/projection.d.ts.map +1 -0
- package/dist/typed-render-graph-primitives.d.ts +25 -2
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/package.json +24 -19
- package/src/__tests__/ai-user-cold-start.integration.test.ts +59 -0
- package/src/__tests__/ai-user-public-surface.test-d.ts +45 -0
- package/src/__tests__/authoring-path.unit.test.ts +9 -0
- package/src/__tests__/bloom-exact-zero.unit.test.ts +202 -0
- package/src/__tests__/bloom-lifecycle.integration.test.ts +125 -0
- package/src/__tests__/construct-renderer-identity.unit.test.ts +4 -3
- package/src/__tests__/detached-inspection.integration.test.ts +177 -0
- package/src/__tests__/environment-fog-lanes.integration.test.ts +219 -0
- package/src/__tests__/environment-generation.integration.test.ts +141 -0
- package/src/__tests__/environment-selection.unit.test.ts +245 -0
- package/src/__tests__/factory-contract.integration.test.ts +1380 -9
- package/src/__tests__/frame-plan-contract.unit.test.ts +90 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +7 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +12 -2
- package/src/__tests__/gpu-driven-production.integration.test.ts +74 -22
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +37 -0
- package/src/__tests__/gpu-scene.unit.test.ts +10 -0
- package/src/__tests__/injection-kind-owner.test-d.ts +2 -1
- package/src/__tests__/material-contract-inventory.unit.test.ts +62 -0
- package/src/__tests__/material-cooked-projection.unit.test.ts +18 -124
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +28 -28
- package/src/__tests__/materials-transmission-validation.unit.test.ts +36 -0
- package/src/__tests__/morph-feature-plan.unit.test.ts +7 -0
- package/src/__tests__/motion-blur.pixel.integration.test.ts +121 -0
- package/src/__tests__/public-surface.test-d.ts +15 -1
- package/src/__tests__/render-error-code-owner.test-d.ts +15 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +11 -2
- package/src/__tests__/render-error-exhaustive.test-d.ts +22 -0
- package/src/__tests__/render-feature-errors.unit.test.ts +33 -3
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +44 -0
- package/src/__tests__/render-feature-plan.test-d.ts +22 -89
- package/src/__tests__/render-scene-projection.unit.test.ts +28 -0
- package/src/__tests__/render-temporal-environment-consumer.browser.test.ts +26 -0
- package/src/__tests__/render-temporal-environment-consumer.dawn.test.ts +21 -0
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +433 -1
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +405 -0
- package/src/__tests__/renderer-lifecycle.integration.test.ts +22 -0
- package/src/__tests__/scene-data-catalog.unit.test.ts +59 -0
- package/src/__tests__/scene-data-consumer.integration.test.ts +67 -0
- package/src/__tests__/scene-data-contract.test-d.ts +35 -0
- package/src/__tests__/scene-data-inspection.unit.test.ts +41 -0
- package/src/__tests__/scene-data-public-surface.test-d.ts +34 -0
- package/src/__tests__/shader-manifest-fixture.ts +111 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +102 -0
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +24 -3
- package/src/__tests__/standard-pipeline.dawn.test.ts +15 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +543 -1
- package/src/__tests__/standard-profile-oracle.unit.test.ts +10 -2
- package/src/__tests__/standard-temporal-producer.integration.test.ts +35 -0
- package/src/__tests__/surface-configuration.unit.test.ts +211 -12
- package/src/__tests__/taa-transaction.integration.test.ts +30 -0
- package/src/__tests__/temporal-admission.integration.test.ts +40 -0
- package/src/__tests__/temporal-coverage.unit.test.ts +35 -0
- package/src/__tests__/temporal-demand.unit.test.ts +44 -0
- package/src/__tests__/temporal-frame-coordinator.unit.test.ts +64 -0
- package/src/__tests__/temporal-graph-topology.unit.test.ts +51 -0
- package/src/__tests__/temporal-history-lifecycle.unit.test.ts +170 -0
- package/src/__tests__/temporal-performance.integration.test.ts +615 -0
- package/src/__tests__/temporal-reset-matrix.unit.test.ts +97 -0
- package/src/__tests__/temporal-transaction.integration.test.ts +60 -0
- package/src/__tests__/temporal-view.unit.test.ts +152 -0
- package/src/__tests__/transmission-prewarm.unit.test.ts +93 -0
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +230 -1
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +25 -1
- package/src/__tests__/urp-pipeline.unit.test.ts +4 -3
- package/src/__tests__/visibility-extract.integration.test.ts +27 -1
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +10 -0
- package/src/assembly/backend-contract.ts +47 -1
- package/src/assembly/factory.ts +1295 -507
- package/src/assembly/host-contract.ts +4 -0
- package/src/assembly/material/assembly.ts +2 -5
- package/src/assembly/renderer-frame-transaction.ts +75 -0
- package/src/assembly/renderer-inspection.ts +112 -0
- package/src/assembly/renderer-lifecycle.ts +6 -0
- package/src/authoring.ts +1 -0
- package/src/components/__tests__/motion-blur.unit.test.ts +14 -0
- package/src/components/__tests__/points-lines-admission.unit.test.ts +219 -0
- package/src/components/__tests__/points-lines-schema.unit.test.ts +56 -0
- package/src/components/__tests__/schema-contract.unit.test.ts +6 -1
- package/src/components/atmosphere.ts +10 -0
- package/src/components/camera.ts +2 -1
- package/src/components/fog.ts +9 -0
- package/src/components/index.ts +10 -0
- package/src/components/lines.ts +18 -0
- package/src/components/motion-blur.ts +8 -0
- package/src/components/points.ts +40 -0
- package/src/construct-renderer.ts +40 -3
- package/src/device/device-scope.ts +15 -1
- package/src/environment/frame.ts +185 -0
- package/src/environment/generation.ts +23 -0
- package/src/environment/graph.ts +9 -0
- package/src/environment/inspection.ts +87 -0
- package/src/environment/lifecycle.ts +250 -0
- package/src/environment/signature.ts +55 -0
- package/src/errors/render.ts +429 -1
- package/src/extract/camera.ts +78 -0
- package/src/extract/environment.ts +171 -0
- package/src/extract/visibility.ts +38 -19
- package/src/features/host.ts +36 -5
- package/src/features/motion-blur/__tests__/motion-blur-feature.unit.test.ts +67 -0
- package/src/features/motion-blur/__tests__/motion-blur-params.unit.test.ts +53 -0
- package/src/features/motion-blur/motion-blur-feature.ts +119 -0
- package/src/features/motion-blur/motion-blur-params.ts +89 -0
- package/src/features/plan.ts +32 -3
- package/src/features/prepared-gpu-work.ts +21 -6
- package/src/features/prepared-graphics.ts +2 -1
- package/src/features/render-graph-raster.ts +24 -4
- package/src/features/targets.ts +24 -2
- package/src/features/types.ts +13 -0
- package/src/fullscreen-post-process-pass.ts +34 -4
- package/src/gpu-driven/production-raster.ts +6 -1
- package/src/gpu-scene.ts +24 -0
- package/src/ibl/skylight-bind-group.ts +30 -38
- package/src/index.ts +83 -6
- package/src/inspection-types.ts +52 -0
- package/src/internal.ts +5 -0
- package/src/materials.ts +119 -24
- package/src/pbr-pipeline.ts +66 -20
- package/src/pipeline/standard-forward-lane.ts +158 -101
- package/src/pipeline/standard-pipeline.ts +156 -105
- package/src/pipeline/standard-post.ts +373 -0
- package/src/pipeline/standard-profile.ts +11 -11
- package/src/pipeline-builder.ts +102 -12
- package/src/pipeline-spec.ts +9 -0
- package/src/plugin.ts +6 -0
- package/src/points-lines/__tests__/bounds.unit.test.ts +21 -0
- package/src/points-lines/__tests__/cache-recovery.unit.test.ts +157 -0
- package/src/points-lines/__tests__/inspection-lanes.integration.test.ts +146 -0
- package/src/points-lines/__tests__/inspection.unit.test.ts +173 -0
- package/src/points-lines/__tests__/lane-structural.integration.test.ts +122 -0
- package/src/points-lines/__tests__/points-lines.bench.ts +400 -0
- package/src/points-lines/__tests__/raster-lane.integration.test.ts +44 -0
- package/src/points-lines/__tests__/snapshot.unit.test.ts +101 -0
- package/src/points-lines/__tests__/view-ubo.unit.test.ts +73 -0
- package/src/points-lines/admission.ts +238 -0
- package/src/points-lines/bounds.ts +23 -0
- package/src/points-lines/expansion-cache.ts +215 -0
- package/src/points-lines/inspection.ts +97 -0
- package/src/points-lines/prepare.ts +177 -0
- package/src/points-lines/record.ts +125 -0
- package/src/points-lines/snapshot.ts +130 -0
- package/src/record/__tests__/fullscreen-temporal-routing.unit.test.ts +25 -0
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +47 -0
- package/src/record/__tests__/material-bg-cache.unit.test.ts +12 -1
- package/src/record/__tests__/material-pipeline-pending-cache.unit.test.ts +22 -0
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +75 -0
- package/src/record/__tests__/standard-pbr-ubo-layout.unit.test.ts +67 -0
- package/src/record/__tests__/temporal-payload.unit.test.ts +164 -0
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +127 -0
- package/src/record/frame-lighting.ts +14 -2
- package/src/record/frame-snapshot.ts +129 -5
- package/src/record/frame-targets.ts +15 -6
- package/src/record/frame.ts +119 -4
- package/src/record/main-pass-geometry.ts +178 -40
- package/src/record/main-pass-material.ts +114 -66
- package/src/record/main-pass-sprite-draws.ts +79 -102
- package/src/record/main-pass.ts +83 -7
- package/src/record/mesh-ssbo.ts +22 -3
- package/src/record/render-context.ts +209 -23
- package/src/record/shadow-pass.ts +129 -28
- package/src/record/skybox-post-pass.ts +99 -42
- package/src/record/typed-frame-graph.ts +582 -42
- package/src/record/view-ubo.ts +99 -4
- package/src/render-contract.ts +121 -7
- package/src/render-graph-primitives.ts +18 -1
- package/src/render-pipeline.ts +100 -27
- package/src/render-system-extract.ts +264 -77
- package/src/render-system.ts +786 -43
- package/src/scene/render-scene-types.ts +3 -0
- package/src/scene/render-scene.ts +307 -9
- package/src/temporal/__tests__/taa-history-resources.unit.test.ts +45 -0
- package/src/temporal/coverage.ts +76 -0
- package/src/temporal/frame-coordinator.ts +311 -0
- package/src/temporal/gpu.ts +287 -0
- package/src/temporal/history.ts +92 -0
- package/src/temporal/index.ts +6 -0
- package/src/temporal/inspection.ts +97 -0
- package/src/temporal/scene-data-catalog.ts +200 -0
- package/src/temporal/scene-data.ts +149 -0
- package/src/temporal/standard-scene-data.ts +182 -0
- package/src/temporal/taa-history-resources.ts +128 -0
- package/src/temporal/taa-history-store.ts +79 -0
- package/src/temporal/taa-resolve.ts +34 -0
- package/src/temporal/temporal-view.ts +169 -0
- package/src/temporal/transaction.ts +17 -0
- package/src/temporal/view.ts +161 -0
- package/src/transmission/__tests__/capability.unit.test.ts +83 -0
- package/src/transmission/__tests__/composition.integration.test.ts +161 -0
- package/src/transmission/__tests__/inspection.unit.test.ts +241 -0
- package/src/transmission/__tests__/lifecycle.integration.test.ts +96 -0
- package/src/transmission/__tests__/oracle.unit.test.ts +131 -0
- package/src/transmission/__tests__/projection.unit.test.ts +71 -0
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +438 -0
- package/src/transmission/__tests__/transmission-backdrop-topology.unit.test.ts +109 -0
- package/src/transmission/__tests__/transmission-backdrop.dawn.test.ts +105 -0
- package/src/transmission/backdrop.ts +572 -0
- package/src/transmission/inspection.ts +190 -0
- package/src/transmission/oracle.ts +141 -0
- package/src/transmission/projection.ts +83 -0
- package/src/typed-render-graph-primitives.ts +162 -9
- package/dist/__tests__/authoring-path.unit.test.d.ts +0 -2
- package/dist/__tests__/authoring-path.unit.test.d.ts.map +0 -1
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts +0 -2
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts.map +0 -1
- package/dist/__tests__/callback-inference.test-d.d.ts +0 -2
- package/dist/__tests__/callback-inference.test-d.d.ts.map +0 -1
- package/dist/__tests__/cluster-binner.test.d.ts +0 -2
- package/dist/__tests__/cluster-binner.test.d.ts.map +0 -1
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts +0 -2
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts.map +0 -1
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +0 -2
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +0 -1
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts +0 -2
- package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts.map +0 -1
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts +0 -2
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts.map +0 -1
- package/dist/__tests__/factory-contract.integration.test.d.ts +0 -2
- package/dist/__tests__/factory-contract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/frame-observation.contract.test.d.ts +0 -2
- package/dist/__tests__/frame-observation.contract.test.d.ts.map +0 -1
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts +0 -2
- package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts +0 -6
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +0 -18
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view-reference.d.ts +0 -15
- package/dist/__tests__/gpu-driven-view-reference.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts +0 -7
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +0 -2
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +0 -1
- package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts +0 -2
- package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts.map +0 -1
- package/dist/__tests__/injection-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/injection-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts +0 -2
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts +0 -2
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts +0 -2
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts +0 -2
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts +0 -2
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts.map +0 -1
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts +0 -2
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-stride-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/material-stride-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts +0 -2
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts +0 -2
- package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts.map +0 -1
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/morph-visual-evidence.integration.test.d.ts +0 -2
- package/dist/__tests__/morph-visual-evidence.integration.test.d.ts.map +0 -1
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-default-off.test.d.ts +0 -2
- package/dist/__tests__/profiler-default-off.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-phase-catalog.test.d.ts +0 -2
- package/dist/__tests__/profiler-phase-catalog.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-phase-integration.test.d.ts +0 -2
- package/dist/__tests__/profiler-phase-integration.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-phase-token.test.d.ts +0 -2
- package/dist/__tests__/profiler-phase-token.test.d.ts.map +0 -1
- package/dist/__tests__/public-surface.test-d.d.ts +0 -2
- package/dist/__tests__/public-surface.test-d.d.ts.map +0 -1
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-error-code-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-error-code-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts +0 -2
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts +0 -2
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-assembly.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-assembly.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-context.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-context.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-contract.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-contract.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-docs.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-docs.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-errors.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-errors.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts +0 -2
- package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-plan.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-plan.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-retry.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-retry.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts +0 -7
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts.map +0 -1
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts +0 -2
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-hzb-gpu.d.ts +0 -7
- package/dist/__tests__/render-graph-hzb-gpu.d.ts.map +0 -1
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts +0 -2
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts +0 -2
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts +0 -12
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts.map +0 -1
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts +0 -2
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-scene-projection.unit.test.d.ts +0 -2
- package/dist/__tests__/render-scene-projection.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts +0 -2
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts +0 -2
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts.map +0 -1
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts +0 -2
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts.map +0 -1
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts +0 -2
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts.map +0 -1
- package/dist/__tests__/shader-stage-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/shader-stage-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ssao-config.unit.test.d.ts +0 -2
- package/dist/__tests__/ssao-config.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/standard-descriptors.test-d.d.ts +0 -2
- package/dist/__tests__/standard-descriptors.test-d.d.ts.map +0 -1
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts +0 -2
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/standard-pipeline.integration.test.d.ts +0 -2
- package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +0 -1
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +0 -2
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +0 -1
- package/dist/__tests__/surface-configuration.unit.test.d.ts +0 -2
- package/dist/__tests__/surface-configuration.unit.test.d.ts.map +0 -1
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts +0 -2
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts.map +0 -1
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts +0 -2
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts.map +0 -1
- package/dist/__tests__/urp-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/urp-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts +0 -2
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-extract.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-extract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-extract.perf.test.d.ts +0 -2
- package/dist/__tests__/visibility-extract.perf.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-instances.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-instances.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-public-surface.test-d.d.ts +0 -2
- package/dist/__tests__/visibility-public-surface.test-d.d.ts.map +0 -1
- package/dist/__tests__/visibility-resolver.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-resolver.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts.map +0 -1
- package/dist/__tests__/vocabulary.unit.test.d.ts +0 -2
- package/dist/__tests__/vocabulary.unit.test.d.ts.map +0 -1
- package/dist/chunk-CQXZC5XI.mjs.map +0 -1
- package/dist/chunk-QC4VW3XJ.mjs.map +0 -1
- package/dist/chunk-SCRSAK5B.mjs.map +0 -1
- package/dist/components/__tests__/schema-contract.unit.test.d.ts +0 -2
- package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +0 -1
- package/dist/components/__tests__/schema-parity.unit.test.d.ts +0 -2
- package/dist/components/__tests__/schema-parity.unit.test.d.ts.map +0 -1
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts +0 -2
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts +0 -2
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts +0 -2
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +0 -2
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/video-texture-view.unit.test.d.ts +0 -2
- package/dist/record/__tests__/video-texture-view.unit.test.d.ts.map +0 -1
package/src/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @forgeax/engine-render — AI-facing render vocabulary.
|
|
2
2
|
//
|
|
3
3
|
// The root is deliberately small: ECS render components, grouped closed
|
|
4
|
-
// values, the renderer lifecycle/receipt contract, and
|
|
5
|
-
// RenderFeature plan. Graph builders, prepared GPU state, pipeline
|
|
4
|
+
// values, immutable frame facts, the renderer lifecycle/receipt contract, and
|
|
5
|
+
// the declarative RenderFeature plan. Graph builders, prepared GPU state, pipeline
|
|
6
6
|
// implementations, builtin feature factories, and diagnostic class names are
|
|
7
7
|
// owner-local implementation details.
|
|
8
8
|
|
|
@@ -11,13 +11,20 @@ export {
|
|
|
11
11
|
renderPipelineContribution,
|
|
12
12
|
samplerContribution,
|
|
13
13
|
} from './assets/asset-decoders';
|
|
14
|
-
|
|
14
|
+
export { Atmosphere } from './components/atmosphere';
|
|
15
15
|
// ECS render vocabulary and grouped closed values.
|
|
16
|
-
export type {
|
|
16
|
+
export type {
|
|
17
|
+
Antialias,
|
|
18
|
+
BloomEnabled,
|
|
19
|
+
CameraData,
|
|
20
|
+
CameraProjection,
|
|
21
|
+
Tonemap,
|
|
22
|
+
} from './components/camera';
|
|
17
23
|
export {
|
|
18
24
|
ANTIALIAS_FXAA,
|
|
19
25
|
ANTIALIAS_MSAA,
|
|
20
26
|
ANTIALIAS_NONE,
|
|
27
|
+
ANTIALIAS_TAA,
|
|
21
28
|
BLOOM_DISABLED,
|
|
22
29
|
BLOOM_ENABLED,
|
|
23
30
|
CAMERA_PROJECTION_ORTHOGRAPHIC,
|
|
@@ -36,12 +43,21 @@ export {
|
|
|
36
43
|
TONEMAP_REINHARD_EXTENDED,
|
|
37
44
|
} from './components/camera';
|
|
38
45
|
export * from './components/directional-light';
|
|
46
|
+
export { Fog } from './components/fog';
|
|
39
47
|
export { Instances, type InstancesData } from './components/instances';
|
|
40
48
|
export { Layer } from './components/layer';
|
|
49
|
+
export { Lines } from './components/lines';
|
|
41
50
|
export * from './components/mesh-filter';
|
|
42
51
|
export * from './components/mesh-renderer';
|
|
52
|
+
export { MotionBlur } from './components/motion-blur';
|
|
43
53
|
export { PointLight } from './components/point-light';
|
|
44
54
|
export { PointLightShadow } from './components/point-light-shadow';
|
|
55
|
+
export {
|
|
56
|
+
type PointShape,
|
|
57
|
+
PointShapeValue,
|
|
58
|
+
Points,
|
|
59
|
+
pointShapeFromU32,
|
|
60
|
+
} from './components/points';
|
|
45
61
|
export { PostProcessParams } from './components/post-process-params';
|
|
46
62
|
export { SceneInstance } from './components/scene-instance';
|
|
47
63
|
export {
|
|
@@ -58,9 +74,35 @@ export {
|
|
|
58
74
|
VisibilityStateValue,
|
|
59
75
|
visibilityStateFromU32,
|
|
60
76
|
} from './components/visibility';
|
|
77
|
+
export type {
|
|
78
|
+
EnvironmentInspection,
|
|
79
|
+
EnvironmentInspectionFailure,
|
|
80
|
+
EnvironmentInspectionGeneration,
|
|
81
|
+
EnvironmentInspectionStatus,
|
|
82
|
+
} from './environment/inspection';
|
|
61
83
|
// Public structured operation failure union. Concrete error classes stay
|
|
62
84
|
// behind the Renderer Result/event boundary.
|
|
63
|
-
export type {
|
|
85
|
+
export type {
|
|
86
|
+
RenderError,
|
|
87
|
+
RenderErrorCode,
|
|
88
|
+
SceneDataUnavailableDetail,
|
|
89
|
+
SceneDataUnavailableReason,
|
|
90
|
+
} from './errors/render';
|
|
91
|
+
export {
|
|
92
|
+
AtmosphereInvalidParameterError,
|
|
93
|
+
EnvironmentGenerationFailedError,
|
|
94
|
+
EnvironmentSourceConflictError,
|
|
95
|
+
FogCardinalityError,
|
|
96
|
+
OwnerStageFailedError,
|
|
97
|
+
SceneDataUnavailableError,
|
|
98
|
+
TaaCapsInsufficientError,
|
|
99
|
+
} from './errors/render';
|
|
100
|
+
export type {
|
|
101
|
+
EnvironmentFrame,
|
|
102
|
+
EnvironmentSource,
|
|
103
|
+
FogFrame,
|
|
104
|
+
FramePlan,
|
|
105
|
+
} from './extract/environment';
|
|
64
106
|
export {
|
|
65
107
|
resolveVisibility,
|
|
66
108
|
type VisibilityResolution,
|
|
@@ -68,6 +110,7 @@ export {
|
|
|
68
110
|
} from './extract/visibility';
|
|
69
111
|
export type {
|
|
70
112
|
RenderFeatureLogicalTarget,
|
|
113
|
+
RenderFeatureMaterialShaderBindingContract,
|
|
71
114
|
RenderFeaturePassDeclaration,
|
|
72
115
|
RenderFeaturePlan,
|
|
73
116
|
RenderFeaturePlanContext,
|
|
@@ -83,14 +126,31 @@ export type {
|
|
|
83
126
|
RenderFeatureErrorDescriptor,
|
|
84
127
|
RenderFeatureExtractContext,
|
|
85
128
|
RenderFeatureHiddenEntityReport,
|
|
129
|
+
RenderFeatureShaderModuleMode,
|
|
86
130
|
RenderFeatureStatus,
|
|
87
131
|
RenderFeatureWorldVisibilitySnapshot,
|
|
88
132
|
} from './features/types';
|
|
89
|
-
export {
|
|
133
|
+
export type {
|
|
134
|
+
BloomInspection,
|
|
135
|
+
MotionBlurInspection,
|
|
136
|
+
MotionBlurInspectionStatus,
|
|
137
|
+
TransmissionInspection,
|
|
138
|
+
} from './inspection-types';
|
|
139
|
+
export { Materials, MaterialTransmissionContractError } from './materials';
|
|
90
140
|
// The host-facing default is a stable profile value; implementation-only
|
|
91
141
|
// pipeline helpers remain behind the package boundary.
|
|
92
142
|
export { DEFAULT_STANDARD_PROFILE } from './pipeline/standard-profile';
|
|
93
143
|
export { renderComponentsPlugin } from './plugin';
|
|
144
|
+
export {
|
|
145
|
+
admitPointsLines,
|
|
146
|
+
type LinesStyleInput,
|
|
147
|
+
type PointsLinesAdmission,
|
|
148
|
+
type PointsLinesAdmissionError,
|
|
149
|
+
type PointsLinesAdmissionInput,
|
|
150
|
+
type PointsLinesAdmissionLimits,
|
|
151
|
+
type PointsStyleInput,
|
|
152
|
+
} from './points-lines/admission';
|
|
153
|
+
export type { PointsLinesInspection } from './points-lines/inspection';
|
|
94
154
|
// Runtime contract: leases, frame receipts, detached inspection, profile,
|
|
95
155
|
// lifecycle state, and the single renderer event stream.
|
|
96
156
|
export type {
|
|
@@ -110,3 +170,20 @@ export type {
|
|
|
110
170
|
RenderWorldLease,
|
|
111
171
|
} from './render-contract';
|
|
112
172
|
export { RENDER_PHASE_CATALOG } from './render-contract';
|
|
173
|
+
export type { TemporalInspection, TemporalResourceInspection } from './temporal/inspection';
|
|
174
|
+
export {
|
|
175
|
+
SCENE_DATA_TEMPORAL_V1_DESCRIPTOR,
|
|
176
|
+
SCENE_DATA_TEMPORAL_V1_SCHEMA,
|
|
177
|
+
type SceneDataLane,
|
|
178
|
+
type SceneDataSchemaId,
|
|
179
|
+
type SceneDataTarget,
|
|
180
|
+
type SceneDataTemporalV1Descriptor,
|
|
181
|
+
} from './temporal/scene-data';
|
|
182
|
+
export {
|
|
183
|
+
createSceneDataCatalog,
|
|
184
|
+
type SceneDataAvailability,
|
|
185
|
+
type SceneDataCatalog,
|
|
186
|
+
type SceneDataCatalogOptions,
|
|
187
|
+
type SceneDataInspection,
|
|
188
|
+
} from './temporal/scene-data-catalog';
|
|
189
|
+
export type { TemporalView } from './temporal/view';
|
package/src/inspection-types.ts
CHANGED
|
@@ -4,6 +4,26 @@
|
|
|
4
4
|
* extract/record dependency graph.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import type { PointsLinesInspection } from './points-lines/inspection';
|
|
8
|
+
|
|
9
|
+
export type BloomGraphStatus = 'empty' | 'valid' | 'invalid';
|
|
10
|
+
|
|
11
|
+
export interface BloomInspection {
|
|
12
|
+
readonly graphStatus: BloomGraphStatus;
|
|
13
|
+
readonly enabled: boolean;
|
|
14
|
+
readonly targetCount: number;
|
|
15
|
+
readonly targetBytes: number;
|
|
16
|
+
readonly resourceCount: number;
|
|
17
|
+
readonly passCount: number;
|
|
18
|
+
readonly encodeCount: number;
|
|
19
|
+
readonly bindGroupCount: number;
|
|
20
|
+
readonly uploadCount: number;
|
|
21
|
+
readonly residentChildBytes: number;
|
|
22
|
+
readonly generation: number;
|
|
23
|
+
readonly state: 'off' | 'active' | 'retiring';
|
|
24
|
+
}
|
|
25
|
+
export type { TransmissionInspection } from './transmission/inspection';
|
|
26
|
+
|
|
7
27
|
export interface BatchTopologyInspection {
|
|
8
28
|
readonly revision: number;
|
|
9
29
|
readonly batchCount: number;
|
|
@@ -45,6 +65,36 @@ export interface GpuDrivenProductionInspection {
|
|
|
45
65
|
readonly cpuFallbackDrawItems: number;
|
|
46
66
|
}
|
|
47
67
|
|
|
68
|
+
/** Detached semantic descriptor for the Standard scene-temporal producer. */
|
|
69
|
+
export interface TemporalTargetInspection {
|
|
70
|
+
readonly identity: 'standard-scene-temporal';
|
|
71
|
+
readonly producerId: 'forgeax::standard::scene-data';
|
|
72
|
+
readonly schema: 'forgeax::scene-data::temporal-v1';
|
|
73
|
+
readonly targetCount: 1;
|
|
74
|
+
readonly descriptor: {
|
|
75
|
+
readonly format: 'rgba16float';
|
|
76
|
+
readonly width: number;
|
|
77
|
+
readonly height: number;
|
|
78
|
+
readonly sampleCount: 1;
|
|
79
|
+
readonly bytes: number;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** Detached, bounded Motion Blur facts; no graph, device, target, or history handle. */
|
|
84
|
+
export type MotionBlurInspectionStatus = 'off' | 'active' | 'reset' | 'invalid';
|
|
85
|
+
|
|
86
|
+
export interface MotionBlurInspection {
|
|
87
|
+
readonly enabled: boolean;
|
|
88
|
+
readonly status: MotionBlurInspectionStatus;
|
|
89
|
+
readonly shutterAngle: number;
|
|
90
|
+
readonly maxRadiusPixels: number;
|
|
91
|
+
readonly sampleCount: number;
|
|
92
|
+
readonly temporalDemand: 'none' | 'scene-data-temporal-v1';
|
|
93
|
+
readonly passName: 'motion-blur';
|
|
94
|
+
readonly historyWrites: 0;
|
|
95
|
+
readonly lastFailure?: 'invalid-params' | 'scene-data-unavailable';
|
|
96
|
+
}
|
|
97
|
+
|
|
48
98
|
export type RenderSceneResyncReason =
|
|
49
99
|
| 'attach'
|
|
50
100
|
| 'asset-catalog-changed'
|
|
@@ -69,6 +119,8 @@ export interface PersistentRenderSceneInspection {
|
|
|
69
119
|
| ({ readonly status: 'resident' } & GpuSceneInspection)
|
|
70
120
|
| { readonly status: 'rebuild-pending' }
|
|
71
121
|
| { readonly status: 'error' };
|
|
122
|
+
/** Bounded retained authoring observations; no graph or backend handles. */
|
|
123
|
+
readonly pointsLines: readonly PointsLinesInspection[];
|
|
72
124
|
}
|
|
73
125
|
|
|
74
126
|
export type RenderSceneInspection = PersistentRenderSceneInspection & {
|
package/src/internal.ts
CHANGED
|
@@ -7,3 +7,8 @@ export {
|
|
|
7
7
|
type TilesetRuntimeError,
|
|
8
8
|
type TilesetRuntimeErrorCode,
|
|
9
9
|
} from '@forgeax/engine-assets-runtime';
|
|
10
|
+
export {
|
|
11
|
+
type GraphTargetCaptureReadbackValidation,
|
|
12
|
+
validateGraphTargetCaptureReadback,
|
|
13
|
+
} from './record/frame-snapshot';
|
|
14
|
+
export { TemporalFrameCoordinator } from './temporal/frame-coordinator';
|
package/src/materials.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_STANDARD_PBR_PARAM_SCHEMA } from '@forgeax/engine-shader';
|
|
1
2
|
import type {
|
|
2
3
|
MaterialAsset,
|
|
3
4
|
MaterialColorSpace,
|
|
@@ -7,6 +8,49 @@ import type {
|
|
|
7
8
|
MaterialValue,
|
|
8
9
|
} from '@forgeax/engine-types';
|
|
9
10
|
|
|
11
|
+
export type MaterialTransmissionValidationReason =
|
|
12
|
+
| 'non-finite'
|
|
13
|
+
| 'range'
|
|
14
|
+
| 'shape'
|
|
15
|
+
| 'blend'
|
|
16
|
+
| 'depth-write';
|
|
17
|
+
|
|
18
|
+
/** Structured authoring failure for the Standard transmission contract. */
|
|
19
|
+
export class MaterialTransmissionContractError extends Error {
|
|
20
|
+
readonly code = 'material-transmission-contract-invalid' as const;
|
|
21
|
+
readonly expected = 'transmission material values satisfy finite ranges and Forward depth rules';
|
|
22
|
+
readonly hint =
|
|
23
|
+
'repair the named transmission value or pass state before publishing the material';
|
|
24
|
+
readonly detail: {
|
|
25
|
+
readonly code: 'material-transmission-contract-invalid';
|
|
26
|
+
readonly material: 'Standard';
|
|
27
|
+
readonly parameter:
|
|
28
|
+
| 'transmission'
|
|
29
|
+
| 'ior'
|
|
30
|
+
| 'thickness'
|
|
31
|
+
| 'attenuationColor'
|
|
32
|
+
| 'attenuationDistance';
|
|
33
|
+
readonly reason: MaterialTransmissionValidationReason;
|
|
34
|
+
readonly actual?: unknown;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
constructor(
|
|
38
|
+
parameter: (typeof MaterialTransmissionContractError.prototype.detail)['parameter'],
|
|
39
|
+
reason: MaterialTransmissionValidationReason,
|
|
40
|
+
actual?: unknown,
|
|
41
|
+
) {
|
|
42
|
+
super(`Materials.standard: ${parameter} violates the transmission contract (${reason})`);
|
|
43
|
+
this.name = 'MaterialTransmissionContractError';
|
|
44
|
+
this.detail = {
|
|
45
|
+
code: 'material-transmission-contract-invalid',
|
|
46
|
+
material: 'Standard',
|
|
47
|
+
parameter,
|
|
48
|
+
reason,
|
|
49
|
+
...(actual === undefined ? {} : { actual }),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
10
54
|
export const SPRITE_PREMULTIPLIED_ALPHA_BLEND: GPUBlendState = {
|
|
11
55
|
color: { srcFactor: 'one', dstFactor: 'one-minus-src-alpha', operation: 'add' },
|
|
12
56
|
alpha: { srcFactor: 'one', dstFactor: 'one-minus-src-alpha', operation: 'add' },
|
|
@@ -31,28 +75,26 @@ function authoredColorParameter(
|
|
|
31
75
|
}
|
|
32
76
|
|
|
33
77
|
function standardParameters(colorSpace: MaterialColorSpace): readonly MaterialParameter[] {
|
|
34
|
-
return
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
{
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
{ name: 'occlusionTexture', type: 'texture', optional: true },
|
|
55
|
-
];
|
|
78
|
+
return DEFAULT_STANDARD_PBR_PARAM_SCHEMA.map((entry) => {
|
|
79
|
+
const type = entry.type.startsWith('texture') ? 'texture' : entry.type;
|
|
80
|
+
const isRequired =
|
|
81
|
+
entry.name === 'baseColor' || entry.name === 'metallic' || entry.name === 'roughness';
|
|
82
|
+
const authoredColor =
|
|
83
|
+
entry.type === 'color' || (entry.type === 'vec3' && entry.name !== 'attenuationColor');
|
|
84
|
+
const schemaColorSpace = 'colorSpace' in entry ? entry.colorSpace : undefined;
|
|
85
|
+
const colorSpaceProjection: { colorSpace?: MaterialColorSpace } = {};
|
|
86
|
+
if (authoredColor && !(type === 'color' && colorSpace === 'srgb')) {
|
|
87
|
+
colorSpaceProjection.colorSpace = colorSpace;
|
|
88
|
+
} else if (!authoredColor && schemaColorSpace !== undefined) {
|
|
89
|
+
colorSpaceProjection.colorSpace = schemaColorSpace;
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
name: entry.name,
|
|
93
|
+
type,
|
|
94
|
+
...colorSpaceProjection,
|
|
95
|
+
...(isRequired ? {} : { optional: true }),
|
|
96
|
+
} as MaterialParameter;
|
|
97
|
+
});
|
|
56
98
|
}
|
|
57
99
|
|
|
58
100
|
function unlitParameters(colorSpace: MaterialColorSpace): readonly MaterialParameter[] {
|
|
@@ -143,6 +185,13 @@ interface StandardOpts {
|
|
|
143
185
|
readonly occlusionTexture?: MaterialValue;
|
|
144
186
|
readonly occlusionStrength?: number;
|
|
145
187
|
readonly alphaCutoff?: number;
|
|
188
|
+
readonly transmission?: number;
|
|
189
|
+
readonly transmissionTexture?: MaterialValue;
|
|
190
|
+
readonly ior?: number;
|
|
191
|
+
readonly thickness?: number;
|
|
192
|
+
readonly thicknessTexture?: MaterialValue;
|
|
193
|
+
readonly attenuationColor?: readonly [number, number, number];
|
|
194
|
+
readonly attenuationDistance?: number;
|
|
146
195
|
readonly renderState?: MaterialRenderState;
|
|
147
196
|
readonly castShadow?: boolean;
|
|
148
197
|
readonly queue?: number;
|
|
@@ -157,6 +206,21 @@ function validateChannel(
|
|
|
157
206
|
}
|
|
158
207
|
}
|
|
159
208
|
|
|
209
|
+
function validateFiniteRange(
|
|
210
|
+
name: 'transmission' | 'ior' | 'thickness' | 'attenuationDistance',
|
|
211
|
+
value: number | undefined,
|
|
212
|
+
minimum: number,
|
|
213
|
+
maximum?: number,
|
|
214
|
+
): void {
|
|
215
|
+
if (value === undefined || !Number.isFinite(value)) {
|
|
216
|
+
if (value === undefined) return;
|
|
217
|
+
throw new MaterialTransmissionContractError(name, 'non-finite', value);
|
|
218
|
+
}
|
|
219
|
+
if (value < minimum || (maximum !== undefined && value > maximum)) {
|
|
220
|
+
throw new MaterialTransmissionContractError(name, 'range', value);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
160
224
|
function standard(opts: StandardOpts): MaterialAsset {
|
|
161
225
|
const occlusionStrength = opts.occlusionStrength ?? 1;
|
|
162
226
|
if (occlusionStrength < 0 || occlusionStrength > 1) {
|
|
@@ -169,12 +233,36 @@ function standard(opts: StandardOpts): MaterialAsset {
|
|
|
169
233
|
}
|
|
170
234
|
validateChannel('metallicChannel', opts.metallicChannel);
|
|
171
235
|
validateChannel('roughnessChannel', opts.roughnessChannel);
|
|
236
|
+
const transmission = opts.transmission ?? 0;
|
|
237
|
+
const ior = opts.ior ?? 1.5;
|
|
238
|
+
const thickness = opts.thickness ?? 0;
|
|
239
|
+
const attenuationColor = opts.attenuationColor ?? [1, 1, 1];
|
|
240
|
+
validateFiniteRange('transmission', transmission, 0, 1);
|
|
241
|
+
validateFiniteRange('ior', ior, 1);
|
|
242
|
+
validateFiniteRange('thickness', thickness, 0);
|
|
243
|
+
validateFiniteRange('attenuationDistance', opts.attenuationDistance, Number.MIN_VALUE);
|
|
244
|
+
if (
|
|
245
|
+
attenuationColor.length !== 3 ||
|
|
246
|
+
attenuationColor.some((value) => !Number.isFinite(value) || value < 0 || value > 1)
|
|
247
|
+
) {
|
|
248
|
+
throw new MaterialTransmissionContractError('attenuationColor', 'shape', attenuationColor);
|
|
249
|
+
}
|
|
250
|
+
if (transmission > 0 && opts.renderState?.blend !== undefined) {
|
|
251
|
+
throw new MaterialTransmissionContractError('transmission', 'blend', opts.renderState.blend);
|
|
252
|
+
}
|
|
253
|
+
if (transmission > 0 && opts.renderState?.depthWriteEnabled === true) {
|
|
254
|
+
throw new MaterialTransmissionContractError('transmission', 'depth-write', true);
|
|
255
|
+
}
|
|
172
256
|
const values: Record<string, MaterialValue> = {
|
|
173
257
|
baseColor: opts.baseColor,
|
|
174
258
|
metallic: opts.metallic ?? 0,
|
|
175
259
|
roughness: opts.roughness ?? 0.5,
|
|
176
260
|
occlusionStrength,
|
|
177
261
|
specularTint: opts.specularTint ?? [1, 1, 1],
|
|
262
|
+
transmission,
|
|
263
|
+
ior,
|
|
264
|
+
thickness,
|
|
265
|
+
attenuationColor,
|
|
178
266
|
};
|
|
179
267
|
if (opts.metallicChannel !== undefined) values.metallicChannel = opts.metallicChannel;
|
|
180
268
|
if (opts.roughnessChannel !== undefined) values.roughnessChannel = opts.roughnessChannel;
|
|
@@ -193,10 +281,17 @@ function standard(opts: StandardOpts): MaterialAsset {
|
|
|
193
281
|
values.specularTintTexture = opts.specularTintTexture;
|
|
194
282
|
}
|
|
195
283
|
if (opts.alphaCutoff !== undefined) values.alphaCutoff = opts.alphaCutoff;
|
|
284
|
+
if (opts.transmissionTexture !== undefined) values.transmissionTexture = opts.transmissionTexture;
|
|
285
|
+
if (opts.thicknessTexture !== undefined) values.thicknessTexture = opts.thicknessTexture;
|
|
286
|
+
if (opts.attenuationDistance !== undefined) values.attenuationDistance = opts.attenuationDistance;
|
|
287
|
+
const forwardRenderState =
|
|
288
|
+
transmission > 0 ? { ...(opts.renderState ?? {}), depthWriteEnabled: false } : opts.renderState;
|
|
196
289
|
const passes: [MaterialPass, ...MaterialPass[]] = [
|
|
197
|
-
pass('forward', STANDARD_MODULE,
|
|
198
|
-
pass('deferred', STANDARD_MODULE, opts.renderState, 'fs_gbuffer', opts.queue),
|
|
290
|
+
pass('forward', STANDARD_MODULE, forwardRenderState, 'fs_main', opts.queue),
|
|
199
291
|
];
|
|
292
|
+
if (transmission === 0) {
|
|
293
|
+
passes.push(pass('deferred', STANDARD_MODULE, opts.renderState, 'fs_gbuffer', opts.queue));
|
|
294
|
+
}
|
|
200
295
|
if (opts.castShadow !== false) passes.push(pass('shadow-caster', STANDARD_MODULE, undefined));
|
|
201
296
|
return {
|
|
202
297
|
kind: 'material',
|
package/src/pbr-pipeline.ts
CHANGED
|
@@ -65,7 +65,7 @@ export interface PbrPipelineLayoutBundle {
|
|
|
65
65
|
readonly viewBgl: BindGroupLayout;
|
|
66
66
|
/**
|
|
67
67
|
* PBR material BindGroupLayout (slot 1) -- derived user-region entries plus
|
|
68
|
-
* Skylight and
|
|
68
|
+
* Skylight and transmission injection.
|
|
69
69
|
*/
|
|
70
70
|
readonly materialBgl: BindGroupLayout;
|
|
71
71
|
/** Per-entity mesh BindGroupLayout (slot 2). */
|
|
@@ -89,7 +89,7 @@ export interface PbrPipelineLayoutBundle {
|
|
|
89
89
|
/**
|
|
90
90
|
* The built-in standard-PBR material paramSchema's texture/user-region shape,
|
|
91
91
|
* used as the fallback when the material BGL is built without a registry
|
|
92
|
-
* (the caps-driven `buildPbrPipelineLayouts` seam). Declares the
|
|
92
|
+
* (the caps-driven `buildPbrPipelineLayouts` seam). Declares the 8 Standard
|
|
93
93
|
* user-region textures + a numeric UBO run; `derive()` collapses the numerics
|
|
94
94
|
* into binding 0 and emits sampler/texture pairs at 1..6 — byte-equivalent to
|
|
95
95
|
* the legacy fixed base-7. The shared PBR parameter contract comes from the
|
|
@@ -99,13 +99,13 @@ export interface PbrPipelineLayoutBundle {
|
|
|
99
99
|
* Build the PBR material BGL **user-region** from a paramSchema via the
|
|
100
100
|
* `derive()` SSOT (D-1). The user-region is binding 0 (the run-merged material
|
|
101
101
|
* UBO) followed by one sampler/texture pair per declared texture. Engine
|
|
102
|
-
* injection (IBL +
|
|
102
|
+
* injection (IBL + transmission) is appended AFTER this region by the caller via
|
|
103
103
|
* `appendInjection`, with start binding = `userRegion.length` — so a 4-texture
|
|
104
104
|
* custom schema (e.g. parallax + heightTexture) shifts the injection region by
|
|
105
105
|
* one sampler/texture pair automatically.
|
|
106
106
|
*
|
|
107
|
-
* The built-in `default-standard-pbr` paramSchema declares exactly
|
|
108
|
-
* so this derives to binding 0 UBO +
|
|
107
|
+
* The built-in `default-standard-pbr` paramSchema declares exactly 8 textures,
|
|
108
|
+
* so this derives to binding 0 UBO + 8 pairs = 17 entries. Injection is appended
|
|
109
109
|
* after that derived region.
|
|
110
110
|
*
|
|
111
111
|
* One material-UBO convention is layered on top of the pure `derive()` output:
|
|
@@ -178,11 +178,16 @@ export function buildPbrMaterialUserRegionEntries(
|
|
|
178
178
|
// keep that meaning under the generic 'lightmap' label
|
|
179
179
|
// (per-surface secondary-lighting injection) so future
|
|
180
180
|
// lightmap support lands without renaming the kind.
|
|
181
|
+
// - 'transmission' the engine-owned sampler + backdrop texture pair. The
|
|
182
|
+
// record stage supplies a real backdrop only for the active
|
|
183
|
+
// transmission pass; all other variants bind layout-safe
|
|
184
|
+
// placeholders because their shaders do not read these slots.
|
|
181
185
|
export type InjectionKind = keyof typeof INJECTION_KIND_LENGTHS;
|
|
182
186
|
|
|
183
187
|
const IBL_INJECTION_LENGTH = 7;
|
|
184
188
|
const LIGHTMAP_INJECTION_LENGTH = 4;
|
|
185
189
|
const SHADOW_INJECTION_LENGTH = 2;
|
|
190
|
+
const TRANSMISSION_INJECTION_LENGTH = 2;
|
|
186
191
|
|
|
187
192
|
/**
|
|
188
193
|
* Append the engine-injection BGL entries for the given `kind` after the
|
|
@@ -289,6 +294,19 @@ export function appendInjection(
|
|
|
289
294
|
texture: { sampleType: 'depth', viewDimension: '2d' },
|
|
290
295
|
},
|
|
291
296
|
];
|
|
297
|
+
case 'transmission':
|
|
298
|
+
return [
|
|
299
|
+
{
|
|
300
|
+
binding: start,
|
|
301
|
+
visibility: GPU_SHADER_STAGE_FRAGMENT,
|
|
302
|
+
sampler: { type: 'filtering' },
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
binding: start + 1,
|
|
306
|
+
visibility: GPU_SHADER_STAGE_FRAGMENT,
|
|
307
|
+
texture: { sampleType: 'float', viewDimension: '2d' },
|
|
308
|
+
},
|
|
309
|
+
];
|
|
292
310
|
}
|
|
293
311
|
}
|
|
294
312
|
|
|
@@ -297,6 +315,7 @@ export const INJECTION_KIND_LENGTHS = {
|
|
|
297
315
|
shadow: SHADOW_INJECTION_LENGTH,
|
|
298
316
|
ibl: IBL_INJECTION_LENGTH,
|
|
299
317
|
lightmap: LIGHTMAP_INJECTION_LENGTH,
|
|
318
|
+
transmission: TRANSMISSION_INJECTION_LENGTH,
|
|
300
319
|
};
|
|
301
320
|
|
|
302
321
|
/**
|
|
@@ -347,6 +366,8 @@ export interface PbrCaps {
|
|
|
347
366
|
* (always-on bindings 5/6 paired with the unconditional `POINT_SHADOW_AVAILABLE`
|
|
348
367
|
* define registered in vite-plugin-shader) +
|
|
349
368
|
* feat-20260613-csm-cascaded-shadow-maps M5 / w28 (binding 7 cascade UBO).
|
|
369
|
+
* binding 10 (Points/Lines viewport UBO; always bound for the shared view
|
|
370
|
+
* layout and consumed only by the dedicated points-lines shader).
|
|
350
371
|
* Isolated here so M4 round-4 tests can recreate the layout.
|
|
351
372
|
*
|
|
352
373
|
* feat-20260526-pbr-uniform-fallback-no-storage-buffer M3 / w9:
|
|
@@ -448,6 +469,11 @@ export function buildPbrViewBglEntries(caps: PbrCaps): GPUBindGroupLayoutEntry[]
|
|
|
448
469
|
visibility: GPU_SHADER_STAGE_FRAGMENT,
|
|
449
470
|
texture: { sampleType: 'depth', viewDimension: '2d' },
|
|
450
471
|
},
|
|
472
|
+
{
|
|
473
|
+
binding: 10,
|
|
474
|
+
visibility: GPU_SHADER_STAGE_VERTEX,
|
|
475
|
+
buffer: { type: 'uniform', hasDynamicOffset: true },
|
|
476
|
+
},
|
|
451
477
|
];
|
|
452
478
|
}
|
|
453
479
|
|
|
@@ -472,17 +498,16 @@ export function buildPbrPipelineLayouts(
|
|
|
472
498
|
// D-13 round-2: 4 BGLs route through buildBindGroupLayoutDescriptor.
|
|
473
499
|
// The dispatcher reads kind + caps; spec content is unused without a
|
|
474
500
|
// registry (no shader-axis reflection at this seam — the 4 BGLs are
|
|
475
|
-
// caps-driven literals + the deterministic Skylight +
|
|
501
|
+
// caps-driven literals + the deterministic Skylight + transmission merge
|
|
476
502
|
// sequence that has no dependency on shader.id).
|
|
477
503
|
const viewBglRes = device.createBindGroupLayout(
|
|
478
504
|
buildBindGroupLayoutDescriptor(BGL_ONLY_SPEC_STUB, { kind: 'pbr-view', caps }),
|
|
479
505
|
);
|
|
480
506
|
if (!viewBglRes.ok) throw viewBglRes.error;
|
|
481
507
|
|
|
482
|
-
// Material BGL: derived user region + Skylight +
|
|
483
|
-
//
|
|
484
|
-
//
|
|
485
|
-
// skylight BGL length (= 14) directly inside appendInjection.
|
|
508
|
+
// Material BGL: derived user region + Skylight + transmission injection.
|
|
509
|
+
// The transmission start binding is computed from the post-Skylight BGL
|
|
510
|
+
// length (= 24 for the built-in Standard schema) by appendInjection.
|
|
486
511
|
const materialBglRes = device.createBindGroupLayout(
|
|
487
512
|
buildBindGroupLayoutDescriptor(BGL_ONLY_SPEC_STUB, { kind: 'pbr-material-merged' }),
|
|
488
513
|
);
|
|
@@ -535,6 +560,23 @@ export function buildPbrPipelineLayouts(
|
|
|
535
560
|
* `LayoutKind = 'pbr-skin'` upstream.
|
|
536
561
|
*/
|
|
537
562
|
export const SKIN_MATERIAL_SHADER_ID = 'forgeax::pbr-skin' as const;
|
|
563
|
+
export const SHADOW_CASTER_SHADER_ID = 'forgeax::default-shadow-caster' as const;
|
|
564
|
+
|
|
565
|
+
export function shadowCasterVariantSet(storageBuffer: boolean, skinned: boolean): string {
|
|
566
|
+
const skinningDisabled = !skinned;
|
|
567
|
+
if (storageBuffer && skinningDisabled) return '';
|
|
568
|
+
return `SKINNING_DISABLED=${String(skinningDisabled)}+STORAGE_BUFFER_AVAILABLE=${String(storageBuffer)}`;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
export function isSkinnedShadowCasterVariant(
|
|
572
|
+
materialShaderId: string | undefined,
|
|
573
|
+
variantSet: string | undefined,
|
|
574
|
+
): boolean {
|
|
575
|
+
return (
|
|
576
|
+
materialShaderId === SHADOW_CASTER_SHADER_ID &&
|
|
577
|
+
variantSet?.includes('SKINNING_DISABLED=false') === true
|
|
578
|
+
);
|
|
579
|
+
}
|
|
538
580
|
|
|
539
581
|
/** Returns true for the engine-shipped standard-PBR material shader family. */
|
|
540
582
|
export function isStandardPbrMaterialShader(shaderId: string | undefined): boolean {
|
|
@@ -738,7 +780,7 @@ export const SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET = '';
|
|
|
738
780
|
*
|
|
739
781
|
* Three groups by derivation source:
|
|
740
782
|
* 1. Shader-derived (paramSchema reflection + injection chain):
|
|
741
|
-
* - `'pbr-material-merged'` — derived user region + Skylight 7 +
|
|
783
|
+
* - `'pbr-material-merged'` — derived user region + Skylight 7 + transmission 2
|
|
742
784
|
* - `'unlit-material'` — 7 entries: base PBR material only (no inject)
|
|
743
785
|
* - `'hdrp-7-slot'` — 7 entries (binding 0 + 3..8): HDRP cluster + SSAO group(2) BGL
|
|
744
786
|
* 2. Caps-driven literal shapes (no shader):
|
|
@@ -845,7 +887,7 @@ export function createHdrpBindGroupLayoutDescriptor(
|
|
|
845
887
|
* Shader-derived kinds (`'pbr-material-merged'` / `'unlit-material'` /
|
|
846
888
|
* `'hdrp-7-slot'`) require `options.registry` to look up the shader entry
|
|
847
889
|
* and reflect its `paramSchema` via {@link deriveBglShapeFromShader}; they
|
|
848
|
-
* compose the per-entry injection chain (Skylight +
|
|
890
|
+
* compose the per-entry injection chain (Skylight + transmission for material;
|
|
849
891
|
* HDRP variantSet for cluster-forward).
|
|
850
892
|
*
|
|
851
893
|
* Caps-driven kinds (`'pbr-view'` / `'pbr-mesh-array'` / `'pbr-instances'` /
|
|
@@ -944,7 +986,11 @@ export function buildBindGroupLayoutDescriptor(
|
|
|
944
986
|
entries: [
|
|
945
987
|
{
|
|
946
988
|
binding: 0,
|
|
947
|
-
|
|
989
|
+
// Standard transmission reads the same per-instance transform in
|
|
990
|
+
// fs_main to convert glTF unit-space thickness into world metres.
|
|
991
|
+
// Keep one shared instances BGL and widen its visibility instead
|
|
992
|
+
// of introducing a second transform upload or six new varyings.
|
|
993
|
+
visibility: GPU_SHADER_STAGE_VERTEX | GPU_SHADER_STAGE_FRAGMENT,
|
|
948
994
|
buffer: { type: meshBufType, hasDynamicOffset: false },
|
|
949
995
|
},
|
|
950
996
|
],
|
|
@@ -973,24 +1019,24 @@ export function buildBindGroupLayoutDescriptor(
|
|
|
973
1019
|
}
|
|
974
1020
|
case 'pbr-material-merged': {
|
|
975
1021
|
// Material BGL: per-shader user-region (derive(paramSchema).bglEntries)
|
|
976
|
-
// + IBL injection (7) +
|
|
977
|
-
// the only variable; injection start = userRegion.length so a
|
|
978
|
-
// custom schema shifts IBL/
|
|
979
|
-
//
|
|
1022
|
+
// + IBL injection (7) + transmission injection (2). The user-region
|
|
1023
|
+
// size is the only variable; injection start = userRegion.length so a
|
|
1024
|
+
// custom schema shifts IBL/transmission by its sampler/texture pairs.
|
|
1025
|
+
// The built-in 8-texture standard-PBR schema is 17 + 7 + 2 = 26 entries.
|
|
980
1026
|
//
|
|
981
1027
|
// Schema source priority (D-1): explicit materialParamSchema option >
|
|
982
1028
|
// registry lookup of spec.shader.id > built-in standard-PBR fallback.
|
|
983
1029
|
const resolvedSchema = resolveMaterialParamSchema(spec, options);
|
|
984
1030
|
const userRegion = buildPbrMaterialUserRegionEntries(resolvedSchema);
|
|
985
1031
|
const afterIbl = [...userRegion, ...appendInjection(userRegion, 'ibl')];
|
|
986
|
-
const merged = [...afterIbl, ...appendInjection(afterIbl, '
|
|
1032
|
+
const merged = [...afterIbl, ...appendInjection(afterIbl, 'transmission')];
|
|
987
1033
|
return {
|
|
988
1034
|
label: 'pbr-material-skylight-bgl',
|
|
989
1035
|
entries: merged,
|
|
990
1036
|
};
|
|
991
1037
|
}
|
|
992
1038
|
case 'unlit-material': {
|
|
993
|
-
// Unlit material BGL: per-shader user-region only. No IBL/
|
|
1039
|
+
// Unlit material BGL: per-shader user-region only. No IBL/transmission
|
|
994
1040
|
// injection (D-5 round-4: unlit demos do not pay for IBL state).
|
|
995
1041
|
const resolvedSchema = resolveMaterialParamSchema(spec, options);
|
|
996
1042
|
return {
|
|
@@ -1005,7 +1051,7 @@ export function buildBindGroupLayoutDescriptor(
|
|
|
1005
1051
|
const desc = createHdrpBindGroupLayoutDescriptor(caps.storageBuffer);
|
|
1006
1052
|
return {
|
|
1007
1053
|
label: desc.label ?? 'hdrp-unified-bgl-group2',
|
|
1008
|
-
entries: desc.entries ?? [],
|
|
1054
|
+
entries: [...(desc.entries ?? [])],
|
|
1009
1055
|
};
|
|
1010
1056
|
}
|
|
1011
1057
|
case 'fullscreen-post': {
|