@forgeax/engine-render 0.1.4 → 0.1.6
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 +130 -641
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +1 -1
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +6 -0
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +1 -1
- package/dist/{gpu-driven/view-reference.d.ts → __tests__/gpu-driven-view-reference.d.ts} +4 -4
- package/dist/__tests__/gpu-driven-view-reference.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +1 -1
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +2 -0
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +1 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts +2 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts +2 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +1 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +1 -0
- package/dist/{renderer/backend-selection.d.ts → assembly/backend-contract.d.ts} +15 -4
- package/dist/assembly/backend-contract.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +207 -0
- package/dist/assembly/factory.d.ts.map +1 -0
- package/dist/assembly/host-contract.d.ts +84 -0
- package/dist/assembly/host-contract.d.ts.map +1 -0
- package/dist/{renderer → assembly}/material/assembly.d.ts +0 -1
- package/dist/{renderer → assembly}/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/pipeline-projection.d.ts +30 -0
- package/dist/assembly/material/pipeline-projection.d.ts.map +1 -0
- package/dist/authoring.d.ts +10 -11
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.mjs +25 -3
- package/dist/authoring.mjs.map +1 -1
- package/dist/chunk-CQXZC5XI.mjs +182 -0
- package/dist/chunk-CQXZC5XI.mjs.map +1 -0
- package/dist/chunk-QC4VW3XJ.mjs +79 -0
- package/dist/chunk-QC4VW3XJ.mjs.map +1 -0
- package/dist/chunk-SCRSAK5B.mjs +480 -0
- package/dist/chunk-SCRSAK5B.mjs.map +1 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts +2 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +1 -0
- package/dist/components/glyph-text.d.ts +1 -1
- package/dist/components/glyph-text.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/instances.d.ts +1 -1
- package/dist/components/instances.d.ts.map +1 -1
- package/dist/components/light-helpers.d.ts +1 -1
- package/dist/components/light-helpers.d.ts.map +1 -1
- package/dist/components/mesh-filter.d.ts +7 -7
- package/dist/components/mesh-filter.d.ts.map +1 -1
- package/dist/components/scene-instance.d.ts +11 -11
- package/dist/components/skybox-background.d.ts +56 -0
- package/dist/components/skybox-background.d.ts.map +1 -0
- package/dist/components/skylight.d.ts +55 -0
- package/dist/components/skylight.d.ts.map +1 -0
- package/dist/components/sprite-animation.d.ts +2 -3
- package/dist/components/sprite-animation.d.ts.map +1 -1
- package/dist/components/sprite-instances.d.ts +1 -1
- package/dist/components/sprite-playback-mode.d.ts +6 -1
- package/dist/components/sprite-playback-mode.d.ts.map +1 -1
- package/dist/components/sprite-region-override.d.ts +2 -3
- package/dist/components/sprite-region-override.d.ts.map +1 -1
- package/dist/components/tile-layer.d.ts +5 -0
- package/dist/components/tile-layer.d.ts.map +1 -1
- package/dist/construct-renderer.d.ts +18 -1
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +27008 -4
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/debug-draw-glue.d.ts +2 -53
- package/dist/debug-draw-glue.d.ts.map +1 -1
- package/dist/device/device-scope.d.ts +83 -0
- package/dist/device/device-scope.d.ts.map +1 -0
- package/dist/{gpu-resource-store.d.ts → device/gpu-residency.d.ts} +91 -48
- package/dist/device/gpu-residency.d.ts.map +1 -0
- package/dist/device/resource-types.d.ts +8 -0
- package/dist/device/resource-types.d.ts.map +1 -0
- package/dist/engine-metrics.d.ts +2 -2
- package/dist/engine-metrics.d.ts.map +1 -1
- package/dist/errors/recover.d.ts +28 -1
- package/dist/errors/recover.d.ts.map +1 -1
- package/dist/errors/render.d.ts +249 -258
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/features/fullscreen.d.ts +19 -0
- package/dist/features/fullscreen.d.ts.map +1 -0
- package/dist/features/host.d.ts +32 -26
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/morph/morph-feature.d.ts +39 -5
- package/dist/features/morph/morph-feature.d.ts.map +1 -1
- package/dist/features/plan.d.ts +182 -0
- package/dist/features/plan.d.ts.map +1 -0
- package/dist/features/prepared-gpu-work.d.ts +21 -17
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics-store.d.ts +2 -1
- package/dist/features/prepared-graphics-store.d.ts.map +1 -1
- package/dist/features/prepared-graphics.d.ts +11 -21
- package/dist/features/prepared-graphics.d.ts.map +1 -1
- package/dist/features/render-graph-compute.d.ts +2 -2
- package/dist/features/render-graph-compute.d.ts.map +1 -1
- package/dist/features/render-graph-contribution.d.ts +4 -7
- package/dist/features/render-graph-contribution.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +2 -2
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/render-graph-resources.d.ts +6 -6
- package/dist/features/render-graph-resources.d.ts.map +1 -1
- package/dist/features/targets.d.ts +5 -5
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +11 -190
- package/dist/features/types.d.ts.map +1 -1
- package/dist/features/vocabulary.d.ts +14 -0
- package/dist/features/vocabulary.d.ts.map +1 -0
- package/dist/fullscreen-post-process-pass.d.ts +4 -25
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/glyph-text-layout-system.d.ts +3 -2
- package/dist/glyph-text-layout-system.d.ts.map +1 -1
- package/dist/gpu-driven/batch-topology.d.ts +6 -75
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +13 -112
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/view-gpu.d.ts +10 -66
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-resource.d.ts +3 -3
- package/dist/gpu-scene-schema.d.ts +1 -94
- package/dist/gpu-scene-schema.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +7 -33
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +3 -53
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/IblPipelineCache.d.ts +74 -180
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +1 -1
- package/dist/index.d.ts +13 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +165 -3
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +69 -0
- package/dist/inspection-types.d.ts.map +1 -0
- package/dist/instance-buffer-cache.d.ts +1 -4
- package/dist/instance-buffer-cache.d.ts.map +1 -1
- package/dist/internal.d.ts +1 -73
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +1 -43
- package/dist/internal.mjs.map +1 -1
- package/dist/lifecycle.d.ts +36 -2
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/materials.d.ts +0 -3
- package/dist/materials.d.ts.map +1 -1
- package/dist/mesh-material-bindings.d.ts +0 -1
- package/dist/mesh-material-bindings.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +75 -29
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts +5 -0
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -0
- package/dist/pipeline/standard-pipeline.d.ts +31 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -0
- package/dist/pipeline/standard-profile.d.ts +40 -0
- package/dist/pipeline/standard-profile.d.ts.map +1 -0
- package/dist/pipeline-builder.d.ts +3 -3
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec-types.d.ts +24 -0
- package/dist/pipeline-spec-types.d.ts.map +1 -0
- package/dist/pipeline-spec.d.ts +16 -155
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts +1 -14
- package/dist/plugin.d.ts.map +1 -1
- package/dist/post-process-errors.d.ts +18 -18
- package/dist/post-process-errors.d.ts.map +1 -1
- package/dist/prepare/prepared-graphics-resolver.d.ts +2 -5
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +2 -0
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +7 -73
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +44 -44
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame-targets.d.ts +5 -38
- package/dist/record/frame-targets.d.ts.map +1 -1
- package/dist/record/frame.d.ts +64 -52
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/helpers.d.ts +3 -2
- package/dist/record/helpers.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +5 -4
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +90 -59
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +28 -3
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +1 -1
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +276 -3
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +235 -0
- package/dist/record/render-context.d.ts.map +1 -0
- package/dist/record/shadow-pass.d.ts +15 -88
- 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 +29 -7
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +3 -3
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/render-contract.d.ts +416 -0
- package/dist/render-contract.d.ts.map +1 -0
- package/dist/render-data.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts +14 -362
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +25 -64
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +107 -338
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +21 -713
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene-types.d.ts +58 -0
- package/dist/scene/render-scene-types.d.ts.map +1 -0
- package/dist/scene/render-scene.d.ts +105 -0
- package/dist/scene/render-scene.d.ts.map +1 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts +2 -5
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -1
- package/dist/ssao-buffers.d.ts +22 -3
- package/dist/ssao-buffers.d.ts.map +1 -1
- package/dist/systems/skin-palette-allocator.d.ts +2 -4
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
- package/dist/systems/skin-palette-types.d.ts +14 -0
- package/dist/systems/skin-palette-types.d.ts.map +1 -0
- package/dist/systems/transparent-sort-config.d.ts +23 -2
- package/dist/systems/transparent-sort-config.d.ts.map +1 -1
- package/dist/tilemap-chunk-extract-system.d.ts +4 -3
- package/dist/tilemap-chunk-extract-system.d.ts.map +1 -1
- package/dist/typed-render-graph-primitives.d.ts +2 -4
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-passes.d.ts +3 -3
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/package.json +23 -23
- package/src/__tests__/backend-selection-rhi-capture.test-d.ts +1 -1
- package/src/__tests__/callback-inference.test-d.ts +6 -3
- package/src/__tests__/cluster-grid-default-surface.unit.test.ts +7 -4
- package/src/__tests__/construct-renderer-identity.unit.test.ts +15 -2
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +151 -0
- package/src/__tests__/device-scope-stale-matrix.unit.test.ts +42 -0
- package/src/__tests__/direct-extract-consumer-contract.test-d.ts +8 -19
- package/src/__tests__/direct-light-snapshot.unit.test.ts +3 -13
- package/src/__tests__/factory-contract.integration.test.ts +158 -209
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +1 -4
- package/src/__tests__/frame-observation.contract.test.ts +17 -8
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +32 -0
- package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +6 -11
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +9 -16
- package/src/__tests__/gpu-driven-production.integration.test.ts +32 -205
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +4 -7
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +87 -8
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +170 -8
- package/src/{gpu-driven/view-reference.ts → __tests__/gpu-driven-view-reference.ts} +4 -3
- package/src/__tests__/gpu-driven-view.browser.test.ts +12 -1
- package/src/__tests__/gpu-driven-view.dawn.test.ts +12 -1
- package/src/__tests__/gpu-driven-view.unit.test.ts +11 -267
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +3 -3
- package/src/__tests__/gpu-scene-render-graph-gpu.ts +2 -3
- package/src/__tests__/gpu-scene.dawn.test.ts +2 -6
- package/src/__tests__/gpu-scene.unit.test.ts +10 -24
- package/src/__tests__/ibl/face-uniforms.unit.test.ts +46 -0
- package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +34 -66
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +14 -5
- package/src/__tests__/light-buffer-layout.unit.test.ts +4 -49
- package/src/__tests__/material-cooked-projection.unit.test.ts +2 -51
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +10 -15
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +4 -23
- package/src/__tests__/material-stride-surface.unit.test.ts +2 -2
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +7 -8
- package/src/__tests__/morph-culling-reentry.dawn.test.ts +29 -38
- package/src/__tests__/morph-feature-gpu-work.integration.test.ts +45 -43
- package/src/__tests__/morph-feature-plan.unit.test.ts +53 -0
- package/src/__tests__/morph-visual-evidence.integration.test.ts +47 -33
- package/src/__tests__/nineslice-handle-surface.unit.test.ts +11 -6
- package/src/__tests__/post-process-error-policy-owner.unit.test.ts +6 -13
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +6 -81
- package/src/__tests__/prepared-graphics-generation.unit.test.ts +3 -17
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +6 -74
- package/src/__tests__/prepared-graphics-resolver.unit.test.ts +1 -3
- package/src/__tests__/prepared-graphics-snapshot.unit.test.ts +2 -2
- package/src/__tests__/profiler-default-off.test.ts +1 -1
- package/src/__tests__/profiler-phase-catalog.test.ts +2 -2
- package/src/__tests__/profiler-phase-integration.test.ts +5 -13
- package/src/__tests__/profiler-phase-token.test.ts +3 -8
- package/src/__tests__/public-surface.test-d.ts +65 -3
- package/src/__tests__/recover-error-policy-owner.unit.test.ts +1 -21
- package/src/__tests__/render-error-code-owner.test-d.ts +18 -23
- package/src/__tests__/render-error-detail-ssot.test-d.ts +0 -95
- package/src/__tests__/render-error-exhaustive.test-d.ts +8 -1
- package/src/__tests__/render-feature-assembly.test-d.ts +8 -16
- package/src/__tests__/render-feature-context.test-d.ts +16 -40
- package/src/__tests__/render-feature-contract.test-d.ts +9 -18
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +6 -8
- package/src/__tests__/render-feature-docs.unit.test.ts +8 -7
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +14 -75
- package/src/__tests__/render-feature-plan.test-d.ts +161 -0
- package/src/__tests__/render-feature-plan.unit.test.ts +170 -0
- package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +8 -19
- package/src/__tests__/render-feature-prepared-errors.test-d.ts +3 -6
- package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +10 -71
- package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +11 -61
- package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +20 -43
- package/src/__tests__/render-feature-prepared-graphics.test-d.ts +56 -78
- package/src/__tests__/render-feature-public-surface.test-d.ts +6 -24
- package/src/__tests__/render-feature-retry.unit.test.ts +7 -48
- package/src/__tests__/render-feature-scheduling.unit.test.ts +15 -27
- package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +0 -9
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +19 -109
- package/src/__tests__/render-feature-visibility-context.test-d.ts +1 -6
- package/src/__tests__/render-feature-visibility-context.unit.test.ts +1 -2
- package/src/__tests__/render-feature-zero-work.unit.test.ts +14 -20
- package/src/__tests__/render-scene-projection.unit.test.ts +73 -111
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +44 -95
- package/src/__tests__/renderer-lifecycle.integration.test.ts +49 -1
- package/src/__tests__/shader-stage-surface.unit.test.ts +14 -9
- package/src/__tests__/ssao-config.unit.test.ts +36 -0
- package/src/__tests__/ssao-kernel-surface.unit.test.ts +4 -5
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +28 -0
- package/src/__tests__/standard-descriptors.test-d.ts +22 -0
- package/src/__tests__/standard-pipeline.dawn.test.ts +61 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +124 -0
- package/src/__tests__/standard-profile-oracle.unit.test.ts +62 -0
- package/src/__tests__/surface-configuration.unit.test.ts +1 -2
- package/src/__tests__/texture-usage-surface.unit.test.ts +3 -6
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +40 -206
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +1 -11
- package/src/__tests__/urp-pipeline.unit.test.ts +2 -2
- package/src/__tests__/vertex-color-pipeline.unit.test.ts +10 -2
- package/src/__tests__/vertex-layout-consumer.unit.test.ts +1 -1
- package/src/__tests__/visibility-diagnostics.integration.test.ts +7 -11
- package/src/__tests__/visibility-extract.integration.test.ts +20 -11
- package/src/__tests__/visibility-extract.perf.test.ts +66 -32
- package/src/__tests__/visibility-feature-dedup.integration.test.ts +2 -4
- package/src/__tests__/visibility-hidden-report.unit.test.ts +1 -2
- package/src/__tests__/visibility-instances.integration.test.ts +7 -11
- package/src/__tests__/visibility-multi-world.integration.test.ts +38 -6
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +18 -41
- package/src/__tests__/visibility-public-surface.test-d.ts +10 -9
- package/src/__tests__/visibility-resolver.unit.test.ts +2 -1
- package/src/__tests__/visibility-resource-short-circuit.unit.test.ts +80 -0
- package/src/__tests__/visibility-snapshot-contract.unit.test.ts +2 -1
- package/src/__tests__/vocabulary.unit.test.ts +1 -1
- package/src/assembly/backend-contract.ts +57 -0
- package/src/{renderer/renderer-factory.ts → assembly/factory.ts} +1663 -2690
- package/src/assembly/host-contract.ts +101 -0
- package/src/{renderer → assembly}/material/assembly.ts +0 -2
- package/src/assembly/material/pipeline-projection.ts +63 -0
- package/src/authoring.ts +14 -22
- package/src/components/__tests__/schema-contract.unit.test.ts +10 -0
- package/src/components/glyph-text.ts +3 -2
- package/src/components/index.ts +7 -9
- package/src/components/instances.ts +4 -5
- package/src/components/light-helpers.ts +1 -1
- package/src/components/mesh-filter.ts +11 -10
- package/src/components/post-process-params.ts +3 -3
- package/src/components/scene-instance.ts +12 -12
- package/src/components/skybox-background.ts +103 -0
- package/src/components/{environment.ts → skylight.ts} +2 -110
- package/src/components/sprite-animation.ts +3 -4
- package/src/components/sprite-instances.ts +2 -2
- package/src/components/sprite-playback-mode.ts +7 -1
- package/src/components/sprite-region-override.ts +2 -3
- package/src/components/tile-layer.ts +8 -2
- package/src/construct-renderer.ts +67 -4
- package/src/debug-draw-glue.ts +8 -129
- package/src/device/device-scope.ts +306 -0
- package/src/{gpu-resource-store.ts → device/gpu-residency.ts} +540 -639
- package/src/device/resource-types.ts +20 -0
- package/src/engine-metrics.ts +12 -19
- package/src/errors/recover.ts +45 -3
- package/src/errors/render.ts +357 -460
- package/src/features/fullscreen.ts +46 -0
- package/src/features/host.ts +575 -309
- package/src/features/morph/morph-feature.ts +195 -105
- package/src/features/plan.ts +447 -0
- package/src/features/prepared-gpu-work.ts +72 -15
- package/src/features/prepared-graphics-store.ts +20 -6
- package/src/features/prepared-graphics.ts +12 -71
- package/src/features/render-graph-compute.ts +14 -5
- package/src/features/render-graph-contribution.ts +43 -63
- package/src/features/render-graph-raster.ts +11 -6
- package/src/features/render-graph-resources.ts +25 -23
- package/src/features/targets.ts +8 -21
- package/src/features/types.ts +39 -227
- package/src/features/vocabulary.ts +24 -0
- package/src/fullscreen-post-process-pass.ts +14 -57
- package/src/glyph-text-layout-system.ts +70 -96
- package/src/gpu-driven/batch-topology.ts +24 -202
- package/src/gpu-driven/production-raster.ts +93 -1108
- package/src/gpu-driven/view-gpu.ts +46 -192
- package/src/gpu-resource.ts +4 -4
- package/src/gpu-scene-schema.ts +11 -99
- package/src/gpu-scene.ts +231 -364
- package/src/hdrp-buffers.ts +12 -221
- package/src/ibl/IblPipelineCache.ts +471 -711
- package/src/ibl/skylight-bind-group.ts +4 -4
- package/src/index.ts +58 -217
- package/src/inspection-types.ts +76 -0
- package/src/instance-buffer-cache.ts +1 -29
- package/src/internal.ts +6 -85
- package/src/lifecycle.ts +64 -19
- package/src/materials.ts +7 -29
- package/src/mesh-material-bindings.ts +0 -1
- package/src/pbr-pipeline.ts +434 -53
- package/src/{urp-pipeline.ts → pipeline/standard-forward-lane.ts} +38 -149
- package/src/{hdrp-pipeline.ts → pipeline/standard-pipeline.ts} +221 -191
- package/src/pipeline/standard-profile.ts +65 -0
- package/src/pipeline-builder.ts +60 -64
- package/src/pipeline-spec-types.ts +28 -0
- package/src/pipeline-spec.ts +72 -609
- package/src/plugin.ts +3 -75
- package/src/post-process-errors.ts +31 -33
- package/src/prepare/prepared-graphics-resolver.ts +5 -4
- package/src/record/__tests__/material-slot-plan.unit.test.ts +1 -33
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +41 -0
- package/src/record/__tests__/video-texture-view.unit.test.ts +1 -1
- package/src/record/frame-lighting.ts +74 -195
- package/src/record/frame-snapshot.ts +45 -60
- package/src/record/frame-targets.ts +8 -243
- package/src/record/frame.ts +509 -796
- package/src/record/helpers.ts +6 -11
- package/src/record/main-pass-geometry.ts +106 -147
- package/src/record/main-pass-material.ts +517 -190
- package/src/record/main-pass-sprite-draws.ts +198 -117
- package/src/record/main-pass.ts +162 -143
- package/src/record/mesh-ssbo.ts +517 -38
- package/src/record/render-context.ts +364 -0
- package/src/record/shadow-pass.ts +138 -1838
- package/src/record/skybox-post-pass.ts +12 -14
- package/src/record/typed-frame-graph.ts +215 -254
- package/src/record/view-ubo.ts +6 -37
- package/src/render-contract.ts +571 -0
- package/src/render-data.ts +3 -3
- package/src/render-graph-primitives.ts +76 -851
- package/src/render-pipeline.ts +104 -188
- package/src/render-system-extract.ts +1048 -1729
- package/src/render-system.ts +330 -1957
- package/src/scene/render-scene-types.ts +64 -0
- package/src/scene/render-scene.ts +1032 -0
- package/src/scene-instances/post-spawn-resolve-joints.ts +4 -7
- package/src/ssao-buffers.ts +167 -8
- package/src/systems/skin-palette-allocator.ts +21 -64
- package/src/systems/skin-palette-types.ts +14 -0
- package/src/systems/transparent-sort-config.ts +25 -3
- package/src/tilemap-chunk-extract-system.ts +53 -70
- package/src/typed-render-graph-primitives.ts +35 -24
- package/src/typed-shadow-passes.ts +26 -56
- package/dist/__tests__/analytic-sky-contract.test.d.ts +0 -2
- package/dist/__tests__/analytic-sky-contract.test.d.ts.map +0 -1
- package/dist/__tests__/analytic-sky-falsify.test.d.ts +0 -2
- package/dist/__tests__/analytic-sky-falsify.test.d.ts.map +0 -1
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts +0 -2
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts.map +0 -1
- package/dist/__tests__/backend-selection.integration.test.d.ts +0 -2
- package/dist/__tests__/backend-selection.integration.test.d.ts.map +0 -1
- package/dist/__tests__/camera-temporal.test-d.d.ts +0 -2
- package/dist/__tests__/camera-temporal.test-d.d.ts.map +0 -1
- package/dist/__tests__/camera-temporal.test.d.ts +0 -2
- package/dist/__tests__/camera-temporal.test.d.ts.map +0 -1
- package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts +0 -2
- package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts.map +0 -1
- package/dist/__tests__/environment-inspection.test.d.ts +0 -2
- package/dist/__tests__/environment-inspection.test.d.ts.map +0 -1
- package/dist/__tests__/fog-ai-user.fixture.d.ts +0 -2
- package/dist/__tests__/fog-ai-user.fixture.d.ts.map +0 -1
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts +0 -16
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts.map +0 -1
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-inspection.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-inspection.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-owner-state.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-owner-state.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-public-surface.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-public-surface.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-source-absence.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-source-absence.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-temporal.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-temporal.integration.test.d.ts.map +0 -1
- package/dist/__tests__/frame-chain.unit.test.d.ts +0 -2
- package/dist/__tests__/frame-chain.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts +0 -2
- package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/hdrp-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/hdrp-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts +0 -2
- package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts +0 -2
- package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts.map +0 -1
- package/dist/__tests__/material-derived-payload.integration.test.d.ts +0 -2
- package/dist/__tests__/material-derived-payload.integration.test.d.ts.map +0 -1
- package/dist/__tests__/materials.unit.test.d.ts +0 -2
- package/dist/__tests__/materials.unit.test.d.ts.map +0 -1
- package/dist/__tests__/param-schema-projection-census.unit.test.d.ts +0 -2
- package/dist/__tests__/param-schema-projection-census.unit.test.d.ts.map +0 -1
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts +0 -2
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-pass-trace.test.d.ts +0 -2
- package/dist/__tests__/pipeline-pass-trace.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts +0 -2
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/plugin.test.d.ts +0 -2
- package/dist/__tests__/plugin.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts.map +0 -1
- package/dist/__tests__/public-pipeline-id.test-d.d.ts +0 -2
- package/dist/__tests__/public-pipeline-id.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-dispatch-membership.unit.test.d.ts +0 -2
- package/dist/__tests__/render-dispatch-membership.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-construction.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-construction.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-graph.integration.test.d.ts +0 -2
- package/dist/__tests__/render-feature-graph.integration.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-order.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-order.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-staging.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-staging.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-render-scene-public.test-d.d.ts +0 -2
- package/dist/__tests__/renderer-render-scene-public.test-d.d.ts.map +0 -1
- package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts +0 -2
- package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts.map +0 -1
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts +0 -2
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts.map +0 -1
- package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/taa-history-store.unit.test.d.ts +0 -2
- package/dist/__tests__/taa-history-store.unit.test.d.ts.map +0 -1
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts +0 -2
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts.map +0 -1
- package/dist/__tests__/temporal-inspection.unit.test.d.ts +0 -2
- package/dist/__tests__/temporal-inspection.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/asset-decoders.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/asset-decoders.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts.map +0 -1
- package/dist/chunk-DJIMFYX6.mjs +0 -1439
- package/dist/chunk-DJIMFYX6.mjs.map +0 -1
- package/dist/chunk-F2SIOCRM.mjs +0 -7423
- package/dist/chunk-F2SIOCRM.mjs.map +0 -1
- package/dist/chunk-JMSB7AR4.mjs +0 -3
- package/dist/chunk-JMSB7AR4.mjs.map +0 -1
- package/dist/chunk-KHI6K4C6.mjs +0 -659
- package/dist/chunk-KHI6K4C6.mjs.map +0 -1
- package/dist/chunk-PORZOL2V.mjs +0 -569
- package/dist/chunk-PORZOL2V.mjs.map +0 -1
- package/dist/chunk-UOJGMDGP.mjs +0 -29913
- package/dist/chunk-UOJGMDGP.mjs.map +0 -1
- package/dist/components/__tests__/atmosphere-red.test.d.ts +0 -2
- package/dist/components/__tests__/atmosphere-red.test.d.ts.map +0 -1
- package/dist/components/__tests__/atmosphere.test.d.ts +0 -2
- package/dist/components/__tests__/atmosphere.test.d.ts.map +0 -1
- package/dist/components/__tests__/fog.test-d.d.ts +0 -2
- package/dist/components/__tests__/fog.test-d.d.ts.map +0 -1
- package/dist/components/__tests__/fog.test.d.ts +0 -2
- package/dist/components/__tests__/fog.test.d.ts.map +0 -1
- package/dist/components/atmosphere.d.ts +0 -18
- package/dist/components/atmosphere.d.ts.map +0 -1
- package/dist/components/environment.d.ts +0 -115
- package/dist/components/environment.d.ts.map +0 -1
- package/dist/deferred-lighting.d.ts +0 -13
- package/dist/deferred-lighting.d.ts.map +0 -1
- package/dist/dynamic-texture-store.d.ts +0 -42
- package/dist/dynamic-texture-store.d.ts.map +0 -1
- package/dist/environment/__tests__/failure-injection.test.d.ts +0 -2
- package/dist/environment/__tests__/failure-injection.test.d.ts.map +0 -1
- package/dist/environment/__tests__/generation-red.test.d.ts +0 -2
- package/dist/environment/__tests__/generation-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/generation.test.d.ts +0 -2
- package/dist/environment/__tests__/generation.test.d.ts.map +0 -1
- package/dist/environment/__tests__/graph-transaction.test.d.ts +0 -2
- package/dist/environment/__tests__/graph-transaction.test.d.ts.map +0 -1
- package/dist/environment/__tests__/inspection-red.test.d.ts +0 -2
- package/dist/environment/__tests__/inspection-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts +0 -2
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts.map +0 -1
- package/dist/environment/__tests__/pipeline-topology.test.d.ts +0 -2
- package/dist/environment/__tests__/pipeline-topology.test.d.ts.map +0 -1
- package/dist/environment/__tests__/readiness.test.d.ts +0 -2
- package/dist/environment/__tests__/readiness.test.d.ts.map +0 -1
- package/dist/environment/__tests__/recovery.test.d.ts +0 -2
- package/dist/environment/__tests__/recovery.test.d.ts.map +0 -1
- package/dist/environment/__tests__/resize-dispose.test.d.ts +0 -2
- package/dist/environment/__tests__/resize-dispose.test.d.ts.map +0 -1
- package/dist/environment/__tests__/signature-red.test.d.ts +0 -2
- package/dist/environment/__tests__/signature-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/signature.test.d.ts +0 -2
- package/dist/environment/__tests__/signature.test.d.ts.map +0 -1
- package/dist/environment/descriptors.d.ts +0 -2
- package/dist/environment/descriptors.d.ts.map +0 -1
- package/dist/environment/extracted-environment.d.ts +0 -53
- package/dist/environment/extracted-environment.d.ts.map +0 -1
- package/dist/environment/generation.d.ts +0 -62
- package/dist/environment/generation.d.ts.map +0 -1
- package/dist/environment/gpu-bundle.d.ts +0 -23
- package/dist/environment/gpu-bundle.d.ts.map +0 -1
- package/dist/environment/graph.d.ts +0 -108
- package/dist/environment/graph.d.ts.map +0 -1
- package/dist/environment/inspection.d.ts +0 -48
- package/dist/environment/inspection.d.ts.map +0 -1
- package/dist/environment/lifecycle.d.ts +0 -22
- package/dist/environment/lifecycle.d.ts.map +0 -1
- package/dist/environment/readiness.d.ts +0 -29
- package/dist/environment/readiness.d.ts.map +0 -1
- package/dist/environment/signature.d.ts +0 -70
- package/dist/environment/signature.d.ts.map +0 -1
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts +0 -2
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts.map +0 -1
- package/dist/extract/__tests__/environment-source.test.d.ts +0 -2
- package/dist/extract/__tests__/environment-source.test.d.ts.map +0 -1
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts +0 -2
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts.map +0 -1
- package/dist/extract/directional-csm.d.ts +0 -129
- package/dist/extract/directional-csm.d.ts.map +0 -1
- package/dist/extract/index.d.ts +0 -5
- package/dist/extract/index.d.ts.map +0 -1
- package/dist/extract/material-interface.d.ts +0 -56
- package/dist/extract/material-interface.d.ts.map +0 -1
- package/dist/extract/schema-readers.d.ts +0 -20
- package/dist/extract/schema-readers.d.ts.map +0 -1
- package/dist/features/graph-contribution.d.ts +0 -64
- package/dist/features/graph-contribution.d.ts.map +0 -1
- package/dist/features/index.d.ts +0 -21
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/morph/index.d.ts +0 -3
- package/dist/features/morph/index.d.ts.map +0 -1
- package/dist/features/morph/morph-bounds.d.ts +0 -42
- package/dist/features/morph/morph-bounds.d.ts.map +0 -1
- package/dist/features/scene-temporal.d.ts +0 -45
- package/dist/features/scene-temporal.d.ts.map +0 -1
- package/dist/features/taa-resolve.d.ts +0 -21
- package/dist/features/taa-resolve.d.ts.map +0 -1
- package/dist/frame-chain.d.ts +0 -14
- package/dist/frame-chain.d.ts.map +0 -1
- package/dist/gpu-driven/view-reference.d.ts.map +0 -1
- package/dist/gpu-resource-store.d.ts.map +0 -1
- package/dist/hdrp-cluster-membership.d.ts +0 -2
- package/dist/hdrp-cluster-membership.d.ts.map +0 -1
- package/dist/hdrp-pipeline.d.ts +0 -36
- package/dist/hdrp-pipeline.d.ts.map +0 -1
- package/dist/ibl/cubemap-projection.d.ts +0 -23
- package/dist/ibl/cubemap-projection.d.ts.map +0 -1
- package/dist/ibl/face-uniforms.d.ts +0 -65
- package/dist/ibl/face-uniforms.d.ts.map +0 -1
- package/dist/mesh-update-errors.d.ts +0 -71
- package/dist/mesh-update-errors.d.ts.map +0 -1
- package/dist/mipmap-generator.d.ts +0 -39
- package/dist/mipmap-generator.d.ts.map +0 -1
- package/dist/param-schema-projection-census.d.ts +0 -18
- package/dist/param-schema-projection-census.d.ts.map +0 -1
- package/dist/persistent-render-scene.d.ts +0 -158
- package/dist/persistent-render-scene.d.ts.map +0 -1
- package/dist/pipeline/index.d.ts +0 -11
- package/dist/pipeline/index.d.ts.map +0 -1
- package/dist/pipeline-errors.d.ts +0 -110
- package/dist/pipeline-errors.d.ts.map +0 -1
- package/dist/prepare/__tests__/schema-readers.unit.test.d.ts +0 -2
- package/dist/prepare/__tests__/schema-readers.unit.test.d.ts.map +0 -1
- package/dist/prepare/index.d.ts +0 -4
- package/dist/prepare/index.d.ts.map +0 -1
- package/dist/prepare/schema-readers.d.ts +0 -11
- package/dist/prepare/schema-readers.d.ts.map +0 -1
- package/dist/record/__tests__/environment-record.test.d.ts +0 -2
- package/dist/record/__tests__/environment-record.test.d.ts.map +0 -1
- package/dist/record/__tests__/frame-targets.unit.test.d.ts +0 -2
- package/dist/record/__tests__/frame-targets.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/membership-timing.unit.test.d.ts +0 -2
- package/dist/record/__tests__/membership-timing.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/render-submission.integration.test.d.ts +0 -2
- package/dist/record/__tests__/render-submission.integration.test.d.ts.map +0 -1
- package/dist/record/__tests__/render-submission.perf.test.d.ts +0 -2
- package/dist/record/__tests__/render-submission.perf.test.d.ts.map +0 -1
- package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts +0 -2
- package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts +0 -2
- package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts.map +0 -1
- package/dist/record/frame-observation.d.ts +0 -38
- package/dist/record/frame-observation.d.ts.map +0 -1
- package/dist/record/index.d.ts +0 -15
- package/dist/record/index.d.ts.map +0 -1
- package/dist/record/main-pass-skin.d.ts +0 -46
- package/dist/record/main-pass-skin.d.ts.map +0 -1
- package/dist/record/main-pass-sprite.d.ts +0 -69
- package/dist/record/main-pass-sprite.d.ts.map +0 -1
- package/dist/record/material-payload.d.ts +0 -43
- package/dist/record/material-payload.d.ts.map +0 -1
- package/dist/record/material-slot-plan.d.ts +0 -26
- package/dist/record/material-slot-plan.d.ts.map +0 -1
- package/dist/record/membership-timing.d.ts +0 -232
- package/dist/record/membership-timing.d.ts.map +0 -1
- package/dist/record/shadow-caster-uniform.d.ts +0 -8
- package/dist/record/shadow-caster-uniform.d.ts.map +0 -1
- package/dist/record/shadow-submit-mode.d.ts +0 -66
- package/dist/record/shadow-submit-mode.d.ts.map +0 -1
- package/dist/render-dispatch-membership.d.ts +0 -47
- package/dist/render-dispatch-membership.d.ts.map +0 -1
- package/dist/render-pipeline-context.d.ts +0 -289
- package/dist/render-pipeline-context.d.ts.map +0 -1
- package/dist/render-pipeline-target.d.ts +0 -16
- package/dist/render-pipeline-target.d.ts.map +0 -1
- package/dist/render-scene-projection.d.ts +0 -174
- package/dist/render-scene-projection.d.ts.map +0 -1
- package/dist/render-system-fold.d.ts +0 -266
- package/dist/render-system-fold.d.ts.map +0 -1
- package/dist/renderer/asset-service.d.ts +0 -10
- package/dist/renderer/asset-service.d.ts.map +0 -1
- package/dist/renderer/backend-selection.d.ts.map +0 -1
- package/dist/renderer/environment-classify.d.ts +0 -6
- package/dist/renderer/environment-classify.d.ts.map +0 -1
- package/dist/renderer/environment-error.d.ts +0 -13
- package/dist/renderer/environment-error.d.ts.map +0 -1
- package/dist/renderer/material/pipeline-projection.d.ts +0 -91
- package/dist/renderer/material/pipeline-projection.d.ts.map +0 -1
- package/dist/renderer/renderer-factory.d.ts +0 -289
- package/dist/renderer/renderer-factory.d.ts.map +0 -1
- package/dist/renderer.d.ts +0 -771
- package/dist/renderer.d.ts.map +0 -1
- package/dist/scene-utils/collect-subtree.d.ts +0 -11
- package/dist/scene-utils/collect-subtree.d.ts.map +0 -1
- package/dist/ssao-data.d.ts +0 -34
- package/dist/ssao-data.d.ts.map +0 -1
- package/dist/surface-format.d.ts +0 -10
- package/dist/surface-format.d.ts.map +0 -1
- package/dist/taa-history-store.d.ts +0 -88
- package/dist/taa-history-store.d.ts.map +0 -1
- package/dist/temporal-coverage.d.ts +0 -35
- package/dist/temporal-coverage.d.ts.map +0 -1
- package/dist/temporal-frame-transaction.d.ts +0 -92
- package/dist/temporal-frame-transaction.d.ts.map +0 -1
- package/dist/temporal-inspection.d.ts +0 -57
- package/dist/temporal-inspection.d.ts.map +0 -1
- package/dist/temporal-view.d.ts +0 -43
- package/dist/temporal-view.d.ts.map +0 -1
- package/dist/tilemap/resolve-tileset-runtime.d.ts +0 -23
- package/dist/tilemap/resolve-tileset-runtime.d.ts.map +0 -1
- package/dist/urp-pipeline.d.ts +0 -4
- package/dist/urp-pipeline.d.ts.map +0 -1
- package/src/__tests__/analytic-sky-contract.test.ts +0 -27
- package/src/__tests__/analytic-sky-falsify-carriers.mjs +0 -43
- package/src/__tests__/analytic-sky-falsify.test.ts +0 -94
- package/src/__tests__/assets-runtime-handoff.integration.test.ts +0 -36
- package/src/__tests__/backend-selection.integration.test.ts +0 -11
- package/src/__tests__/camera-temporal.test-d.ts +0 -8
- package/src/__tests__/camera-temporal.test.ts +0 -188
- package/src/__tests__/directional-shadow-probe-atlas-layout.unit.test.ts +0 -18
- package/src/__tests__/environment-inspection.test.ts +0 -45
- package/src/__tests__/fog-ai-user.fixture.ts +0 -350
- package/src/__tests__/fog-custom-render-feature.fixture.ts +0 -33
- package/src/__tests__/fog-custom-render-feature.integration.test.ts +0 -76
- package/src/__tests__/fog-inspection.integration.test.ts +0 -127
- package/src/__tests__/fog-owner-state.integration.test.ts +0 -112
- package/src/__tests__/fog-pipeline-topology.integration.test.ts +0 -93
- package/src/__tests__/fog-public-surface.integration.test.ts +0 -60
- package/src/__tests__/fog-ray-contract.integration.test.ts +0 -73
- package/src/__tests__/fog-source-absence.integration.test.ts +0 -51
- package/src/__tests__/fog-temporal.integration.test.ts +0 -115
- package/src/__tests__/frame-chain.unit.test.ts +0 -26
- package/src/__tests__/gpu-scene-field-type-owner.test-d.ts +0 -27
- package/src/__tests__/hdrp-pipeline.unit.test.ts +0 -100
- package/src/__tests__/ibl/ibl-fallback.unit.test.ts +0 -23
- package/src/__tests__/material-derived-error-stop-draw.integration.test.ts +0 -69
- package/src/__tests__/material-derived-payload.integration.test.ts +0 -164
- package/src/__tests__/materials.unit.test.ts +0 -25
- package/src/__tests__/param-schema-projection-census.unit.test.ts +0 -40
- package/src/__tests__/persistent-render-scene.unit.test.ts +0 -1311
- package/src/__tests__/pipeline-error-policy-owner.unit.test.ts +0 -167
- package/src/__tests__/pipeline-pass-trace.test.ts +0 -92
- package/src/__tests__/pipeline-stage-owner.test-d.ts +0 -13
- package/src/__tests__/plugin.test.ts +0 -25
- package/src/__tests__/prepared-graphics-backend-matrix.unit.test.ts +0 -129
- package/src/__tests__/prepared-graphics-resolver-recording.unit.test.ts +0 -180
- package/src/__tests__/public-pipeline-id.test-d.ts +0 -6
- package/src/__tests__/render-dispatch-membership.unit.test.ts +0 -117
- package/src/__tests__/render-feature-construction.unit.test.ts +0 -124
- package/src/__tests__/render-feature-error-code-owner.test-d.ts +0 -27
- package/src/__tests__/render-feature-gpu-buffer-usage-owner.test-d.ts +0 -46
- package/src/__tests__/render-feature-graph.integration.test.ts +0 -205
- package/src/__tests__/render-feature-graphics-staging.unit.test.ts +0 -200
- package/src/__tests__/render-feature-order.unit.test.ts +0 -66
- package/src/__tests__/render-feature-prepared-graphics-recording.unit.test.ts +0 -107
- package/src/__tests__/render-feature-staging.unit.test.ts +0 -94
- package/src/__tests__/renderer-render-scene-public.test-d.ts +0 -27
- package/src/__tests__/scene-temporal-coverage.unit.test.ts +0 -259
- package/src/__tests__/sun-snapshot-consumers.test.ts +0 -35
- package/src/__tests__/surface-backend-kind-owner.test-d.ts +0 -42
- package/src/__tests__/taa-history-store.unit.test.ts +0 -196
- package/src/__tests__/temporal-frame-transaction.integration.test.ts +0 -537
- package/src/__tests__/temporal-inspection.unit.test.ts +0 -138
- package/src/assets/__tests__/asset-decoders.unit.test.ts +0 -92
- package/src/assets/__tests__/mipmap-generator.unit.test.ts +0 -52
- package/src/assets/__tests__/render-asset-port.unit.test.ts +0 -54
- package/src/assets/__tests__/resolve-render-asset.unit.test.ts +0 -47
- package/src/components/__tests__/atmosphere-red.test.ts +0 -51
- package/src/components/__tests__/atmosphere.test.ts +0 -79
- package/src/components/__tests__/fog.test-d.ts +0 -49
- package/src/components/__tests__/fog.test.ts +0 -60
- package/src/components/atmosphere.ts +0 -64
- package/src/deferred-lighting.ts +0 -92
- package/src/dynamic-texture-store.ts +0 -111
- package/src/environment/README.md +0 -76
- package/src/environment/__tests__/failure-injection.test.ts +0 -50
- package/src/environment/__tests__/generation-red.test.ts +0 -64
- package/src/environment/__tests__/generation.test.ts +0 -37
- package/src/environment/__tests__/graph-transaction.test.ts +0 -85
- package/src/environment/__tests__/inspection-red.test.ts +0 -53
- package/src/environment/__tests__/lifecycle-evidence.test.ts +0 -40
- package/src/environment/__tests__/pipeline-topology.test.ts +0 -33
- package/src/environment/__tests__/readiness.test.ts +0 -42
- package/src/environment/__tests__/recovery.test.ts +0 -62
- package/src/environment/__tests__/resize-dispose.test.ts +0 -30
- package/src/environment/__tests__/signature-red.test.ts +0 -45
- package/src/environment/__tests__/signature.test.ts +0 -60
- package/src/environment/descriptors.ts +0 -7
- package/src/environment/extracted-environment.ts +0 -239
- package/src/environment/generation.ts +0 -158
- package/src/environment/gpu-bundle.ts +0 -144
- package/src/environment/graph.ts +0 -588
- package/src/environment/inspection.ts +0 -107
- package/src/environment/lifecycle.ts +0 -124
- package/src/environment/readiness.ts +0 -76
- package/src/environment/signature.ts +0 -185
- package/src/extract/__tests__/directional-csm-domain.unit.test.ts +0 -391
- package/src/extract/__tests__/environment-source.test.ts +0 -105
- package/src/extract/__tests__/schema-readers.unit.test.ts +0 -16
- package/src/extract/directional-csm.ts +0 -959
- package/src/extract/index.ts +0 -10
- package/src/extract/material-interface.ts +0 -604
- package/src/extract/schema-readers.ts +0 -27
- package/src/features/graph-contribution.ts +0 -577
- package/src/features/index.ts +0 -100
- package/src/features/morph/index.ts +0 -24
- package/src/features/morph/morph-bounds.ts +0 -123
- package/src/features/scene-temporal.ts +0 -274
- package/src/features/taa-resolve.ts +0 -244
- package/src/frame-chain.ts +0 -21
- package/src/hdrp-cluster-membership.ts +0 -70
- package/src/ibl/cubemap-projection.ts +0 -60
- package/src/ibl/face-uniforms.ts +0 -150
- package/src/mesh-update-errors.ts +0 -113
- package/src/mipmap-generator.ts +0 -244
- package/src/param-schema-projection-census.ts +0 -73
- package/src/persistent-render-scene.ts +0 -1752
- package/src/pipeline/index.ts +0 -40
- package/src/pipeline-errors.ts +0 -172
- package/src/prepare/__tests__/schema-readers.unit.test.ts +0 -16
- package/src/prepare/index.ts +0 -8
- package/src/prepare/schema-readers.ts +0 -20
- package/src/record/__tests__/environment-record.test.ts +0 -35
- package/src/record/__tests__/frame-targets.unit.test.ts +0 -54
- package/src/record/__tests__/membership-timing.unit.test.ts +0 -524
- package/src/record/__tests__/render-submission.integration.test.ts +0 -76
- package/src/record/__tests__/render-submission.perf.test.ts +0 -141
- package/src/record/__tests__/shadow-submit-mode.unit.test.ts +0 -88
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +0 -101
- package/src/record/frame-observation.ts +0 -122
- package/src/record/index.ts +0 -15
- package/src/record/main-pass-skin.ts +0 -51
- package/src/record/main-pass-sprite.ts +0 -166
- package/src/record/material-payload.ts +0 -292
- package/src/record/material-slot-plan.ts +0 -68
- package/src/record/membership-timing.ts +0 -1012
- package/src/record/shadow-caster-uniform.ts +0 -37
- package/src/record/shadow-submit-mode.ts +0 -277
- package/src/render-dispatch-membership.ts +0 -155
- package/src/render-pipeline-context.ts +0 -332
- package/src/render-pipeline-target.ts +0 -96
- package/src/render-scene-projection.ts +0 -1738
- package/src/render-system-fold.ts +0 -531
- package/src/renderer/asset-service.ts +0 -32
- package/src/renderer/backend-selection.ts +0 -121
- package/src/renderer/environment-classify.ts +0 -30
- package/src/renderer/environment-error.ts +0 -19
- package/src/renderer/material/pipeline-projection.ts +0 -140
- package/src/renderer.ts +0 -940
- package/src/scene-utils/collect-subtree.ts +0 -40
- package/src/ssao-data.ts +0 -106
- package/src/surface-format.ts +0 -37
- package/src/taa-history-store.ts +0 -429
- package/src/temporal-coverage.ts +0 -106
- package/src/temporal-frame-transaction.ts +0 -301
- package/src/temporal-inspection.ts +0 -194
- package/src/temporal-view.ts +0 -174
- package/src/tilemap/resolve-tileset-runtime.ts +0 -72
package/src/record/helpers.ts
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
// @forgeax/engine-runtime - RenderSystem record stage: helpers.
|
|
2
2
|
// Extracted from render-system-record.ts (feat-20260704 M3/w17, pure move).
|
|
3
3
|
|
|
4
|
+
import { resolveAssetHandle } from '@forgeax/engine-assets-runtime';
|
|
4
5
|
import type { World } from '@forgeax/engine-ecs';
|
|
5
6
|
import { type Mat4, mat4 } from '@forgeax/engine-math';
|
|
6
7
|
import type { EquirectAsset } from '@forgeax/engine-types';
|
|
7
8
|
import { toShared } from '@forgeax/engine-types';
|
|
8
|
-
import { resolveRenderAsset } from '../assets/resolve-render-asset';
|
|
9
9
|
import { EquirectProjectionFailedError } from '../errors/render';
|
|
10
10
|
import { isStandardPbrMaterialShader } from '../pbr-pipeline';
|
|
11
|
-
import type {
|
|
12
|
-
import type {
|
|
13
|
-
CameraSnapshot,
|
|
14
|
-
MaterialSnapshot,
|
|
15
|
-
SkyboxSnapshot,
|
|
16
|
-
SkylightSnapshot,
|
|
17
|
-
} from '../render-system-extract';
|
|
11
|
+
import type { CameraSnapshot } from '../render-contract';
|
|
12
|
+
import type { MaterialSnapshot, SkyboxSnapshot, SkylightSnapshot } from '../render-system-extract';
|
|
18
13
|
import type { RenderFrameState } from './frame-snapshot';
|
|
14
|
+
import type { RenderSystemInternals } from './render-context';
|
|
19
15
|
|
|
20
16
|
/** Convert pass-owned shader definitions into the manifest's canonical variant key. */
|
|
21
17
|
export function variantSetFromDefines(
|
|
@@ -225,7 +221,7 @@ export function driveLazyEquirectProjection(
|
|
|
225
221
|
if (status !== undefined) return;
|
|
226
222
|
|
|
227
223
|
// First sight: resolve the equirect POD and fire-and-forget the projection.
|
|
228
|
-
const podRes =
|
|
224
|
+
const podRes = resolveAssetHandle<EquirectAsset>(world, handle);
|
|
229
225
|
if (!podRes.ok || podRes.value.kind !== 'equirect') {
|
|
230
226
|
// The handle does not resolve to a live equirect POD (stale / wrong kind).
|
|
231
227
|
// Launch nothing; the store stays empty and the white fallback holds. The
|
|
@@ -261,8 +257,7 @@ export function computeViewMatrix(camera: CameraSnapshot): Mat4 {
|
|
|
261
257
|
// world mat4 (propagateTransforms output) is read straight off the snapshot;
|
|
262
258
|
// no recompose from decomposed TRS.
|
|
263
259
|
const cameraFromWorld = mat4.create();
|
|
264
|
-
|
|
265
|
-
mat4.invert(cameraFromWorld, camera.world as unknown as Mat4);
|
|
260
|
+
mat4.invert(cameraFromWorld, camera.world);
|
|
266
261
|
return cameraFromWorld;
|
|
267
262
|
}
|
|
268
263
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// feat-20260704 M5/w31: further-split from main-pass.ts (AC-05 <=1500 lines/file).
|
|
3
3
|
// recordGeometryDraws + resolveGeometryInstanceBuffer, moved verbatim.
|
|
4
4
|
|
|
5
|
+
import type { World } from '@forgeax/engine-ecs';
|
|
5
6
|
import {
|
|
6
7
|
type BindGroup,
|
|
7
8
|
type Buffer,
|
|
@@ -16,22 +17,18 @@ import {
|
|
|
16
17
|
GPU_BUFFER_USAGE_STORAGE,
|
|
17
18
|
GPU_BUFFER_USAGE_UNIFORM,
|
|
18
19
|
} from '../gpu-usage';
|
|
19
|
-
import {
|
|
20
|
-
type InstanceBufferCacheEntry,
|
|
21
|
-
packTemporalInstanceTransforms,
|
|
22
|
-
} from '../instance-buffer-cache';
|
|
20
|
+
import type { InstanceBufferCacheEntry } from '../instance-buffer-cache';
|
|
23
21
|
import { SPRITE_PREMULTIPLIED_ALPHA_BLEND } from '../materials';
|
|
24
22
|
import { SKIN_MATERIAL_SHADER_ID } from '../pbr-pipeline';
|
|
25
|
-
import { variantSetFromVertexLayoutProjection } from '../pipeline';
|
|
26
|
-
import {
|
|
27
|
-
import type { _InternalRenderPipelineContext } from '../render-pipeline-context';
|
|
28
|
-
import { MATERIAL_PER_ENTITY_STRIDE } from '../render-system';
|
|
23
|
+
import { renderStateHash, variantSetFromVertexLayoutProjection } from '../pipeline-spec';
|
|
24
|
+
import type { RenderRecordPhase } from '../render-contract';
|
|
29
25
|
import type { MaterialSnapshot } from '../render-system-extract';
|
|
30
|
-
import
|
|
31
|
-
import {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
import { worldEntityKey } from './frame-snapshot';
|
|
27
|
+
import {
|
|
28
|
+
geometryRenderStateForTopology,
|
|
29
|
+
isEntityFullyTransparent,
|
|
30
|
+
selectGeometryPipeline,
|
|
31
|
+
} from './main-pass-material';
|
|
35
32
|
import {
|
|
36
33
|
getOrCreateFromChain,
|
|
37
34
|
INSTANCE_UBO_FULL_ARRAY_BYTES,
|
|
@@ -39,7 +36,10 @@ import {
|
|
|
39
36
|
MESH_PER_ENTITY_STRIDE,
|
|
40
37
|
MESH_SSBO_BYTES,
|
|
41
38
|
MESH_UBO_FULL_ARRAY_BYTES,
|
|
39
|
+
packInstanceStorageBuffer,
|
|
42
40
|
} from './mesh-ssbo';
|
|
41
|
+
import type { _InternalRenderPipelineContext } from './render-context';
|
|
42
|
+
import { MATERIAL_PER_ENTITY_STRIDE } from './render-context';
|
|
43
43
|
|
|
44
44
|
type GeometryInstanceDraw = {
|
|
45
45
|
readonly instanceBuffer: Buffer;
|
|
@@ -72,8 +72,7 @@ function geometryRecordPhase(
|
|
|
72
72
|
passKind: PassKind,
|
|
73
73
|
segment: GeometryRecordProfileSegment,
|
|
74
74
|
): RenderRecordPhase {
|
|
75
|
-
const pass =
|
|
76
|
-
passKind === 'deferred' ? 'g-buffer' : passKind === 'temporal' ? 'scene-temporal' : 'forward';
|
|
75
|
+
const pass = passKind === 'deferred' ? 'g-buffer' : 'forward';
|
|
77
76
|
return `record/graph-execute/${pass}/${segment}` as RenderRecordPhase;
|
|
78
77
|
}
|
|
79
78
|
|
|
@@ -125,22 +124,24 @@ function submitSubmeshDraws(
|
|
|
125
124
|
* transparent entities are skipped here (drawn in the LDR blend sub-pass);
|
|
126
125
|
* mixed meshes draw their opaque submeshes here and skip transparent submeshes.
|
|
127
126
|
* The pass-selector match set, per-entity material-slot start table, MSAA sample
|
|
128
|
-
* count, group(2) bind group,
|
|
129
|
-
* threaded in explicitly.
|
|
127
|
+
* count, Standard group(2) bind group, fallback mesh group(2) bind group, and
|
|
128
|
+
* the shared per-submesh material BG builder are threaded in explicitly.
|
|
130
129
|
*
|
|
131
130
|
* @internal
|
|
132
131
|
*/
|
|
133
132
|
export function recordGeometryDraws(
|
|
134
133
|
c: _InternalRenderPipelineContext,
|
|
135
134
|
pass: RhiRenderPassEncoder,
|
|
136
|
-
|
|
135
|
+
matchedMaterials: ReadonlyMap<number, ReadonlySet<number>> | null,
|
|
137
136
|
materialSlotIndices: readonly (readonly number[])[],
|
|
138
137
|
sampleCount: number,
|
|
139
138
|
meshGroup2: BindGroup | null,
|
|
139
|
+
meshBindGroup: BindGroup | null,
|
|
140
140
|
resolveMaterialBindGroup: (
|
|
141
141
|
materialSlot: number,
|
|
142
142
|
submeshMaterial: MaterialSnapshot,
|
|
143
143
|
entityKey: number,
|
|
144
|
+
materialWorld: World,
|
|
144
145
|
) => BindGroup,
|
|
145
146
|
passKind: PassKind = 'forward',
|
|
146
147
|
): void {
|
|
@@ -173,7 +174,7 @@ export function recordGeometryDraws(
|
|
|
173
174
|
const profilePhase = c.profilePhase;
|
|
174
175
|
const materialGroup1DynamicOffsets = new Uint32Array(1);
|
|
175
176
|
const meshGroup2DynamicOffsets = [0];
|
|
176
|
-
const skinGroup2DynamicOffsets = [0, 0
|
|
177
|
+
const skinGroup2DynamicOffsets = [0, 0];
|
|
177
178
|
let lastStencilReference: number | null = null;
|
|
178
179
|
// feat-20260625-refactor-sprite-as-transparent-mesh M3 / w14 (D-7):
|
|
179
180
|
// sprite PSO selection no longer maintains a dedicated tag — the
|
|
@@ -197,7 +198,6 @@ export function recordGeometryDraws(
|
|
|
197
198
|
variantSet: string | undefined,
|
|
198
199
|
colorFormat: GPUTextureFormat | undefined,
|
|
199
200
|
layoutProjection: import('@forgeax/engine-geometry').VertexLayoutProjection,
|
|
200
|
-
materialGuid?: string,
|
|
201
201
|
): RenderPipeline | null => {
|
|
202
202
|
const renderStateKey = renderStateHash(renderState);
|
|
203
203
|
const shaderLookupCache = materialPipelineLookupCache.get(materialShaderId);
|
|
@@ -243,8 +243,6 @@ export function recordGeometryDraws(
|
|
|
243
243
|
undefined,
|
|
244
244
|
undefined,
|
|
245
245
|
undefined,
|
|
246
|
-
materialGuid,
|
|
247
|
-
undefined,
|
|
248
246
|
layoutProjection,
|
|
249
247
|
) ?? null;
|
|
250
248
|
const handle =
|
|
@@ -257,7 +255,7 @@ export function recordGeometryDraws(
|
|
|
257
255
|
renderStateKey,
|
|
258
256
|
topology,
|
|
259
257
|
indexFormat,
|
|
260
|
-
variantSet
|
|
258
|
+
variantSet,
|
|
261
259
|
passKind,
|
|
262
260
|
layoutProjection,
|
|
263
261
|
sampleCount,
|
|
@@ -278,8 +276,15 @@ export function recordGeometryDraws(
|
|
|
278
276
|
const entry = validatedOrdered[i];
|
|
279
277
|
if (entry === undefined) continue;
|
|
280
278
|
|
|
279
|
+
if (
|
|
280
|
+
passKind === 'forward' &&
|
|
281
|
+
c.gpuDrivenEntityKeys.has(worldEntityKey(entry.source.worldId, entry.source.entityKey))
|
|
282
|
+
) {
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
|
|
281
286
|
// feat-20260609 M2: skip entities that don't match the pass selector.
|
|
282
|
-
if (
|
|
287
|
+
if (matchedMaterials !== null && !matchedMaterials.has(entry.renderableIndex)) continue;
|
|
283
288
|
|
|
284
289
|
// D-2 generalised feat-20260625 M2 / w7: transparent entities are
|
|
285
290
|
// dispatched in the separate sub-pass (bgra8unorm unorm view,
|
|
@@ -297,8 +302,7 @@ export function recordGeometryDraws(
|
|
|
297
302
|
// decal submesh) is NOT skipped at the entity level; its opaque submeshes
|
|
298
303
|
// draw here and the per-submesh loop below skips the transparent ones
|
|
299
304
|
// (they are drawn in the blend sub-pass instead).
|
|
300
|
-
if (
|
|
301
|
-
continue;
|
|
305
|
+
if (splitLdrSprite && isEntityFullyTransparent(entry.source)) continue;
|
|
302
306
|
|
|
303
307
|
const pipelineTag: 'unlit' = 'unlit';
|
|
304
308
|
|
|
@@ -338,11 +342,11 @@ export function recordGeometryDraws(
|
|
|
338
342
|
const instanceDraws = resolveGeometryInstanceBuffer(c, entry, identityInstanceDraws);
|
|
339
343
|
if (instanceDraws === null) continue;
|
|
340
344
|
|
|
341
|
-
// feat-20260611 R2 / M8 / w28 (IS-14): skin entries need a
|
|
342
|
-
// group(2) BG matching `pbr-skin-pl` (binding 0 mesh-array UBO
|
|
343
|
-
//
|
|
345
|
+
// feat-20260611 R2 / M8 / w28 (IS-14): skin entries need a 2-binding
|
|
346
|
+
// group(2) BG matching `pbr-skin-pl` (binding 0 mesh-array UBO +
|
|
347
|
+
// binding 1 palette UBO). Building this here -- not in the
|
|
344
348
|
// `meshBindGroup` factory above -- because the binding-shape
|
|
345
|
-
// (1-entry vs
|
|
349
|
+
// (1-entry vs 2-entry) is per-entry, not per-frame. URP / HDRP
|
|
346
350
|
// entries keep using `meshGroup2` (1-entry mesh-array or HDRP
|
|
347
351
|
// unified). The skin-variant cache key includes both buffer
|
|
348
352
|
// identities so a future allocator-driven palette buffer rotation
|
|
@@ -359,7 +363,7 @@ export function recordGeometryDraws(
|
|
|
359
363
|
// captured. Mirrors the uniform null skip-draw pattern (M6-T1).
|
|
360
364
|
let group2BindGroup: BindGroup = meshGroup2 as BindGroup;
|
|
361
365
|
// feat-20260612-skin-palette-per-frame-upload M3 / m3-2: dyn-offset
|
|
362
|
-
// tuple
|
|
366
|
+
// tuple follows the skin group2 offset contract. Defaults to the
|
|
363
367
|
// length-1 non-skin shape; the skin branch below re-computes with the
|
|
364
368
|
// per-entity `entry.source.skin.byteOffset` cursor.
|
|
365
369
|
meshGroup2DynamicOffsets[0] = i * MESH_PER_ENTITY_STRIDE;
|
|
@@ -389,12 +393,11 @@ export function recordGeometryDraws(
|
|
|
389
393
|
? {
|
|
390
394
|
meshArrayBgl: pipelineState.pbrSkinMeshBindGroupLayout,
|
|
391
395
|
paletteBuffer: skinSlice.buffer,
|
|
392
|
-
previousPaletteBuffer: skinSlice.previousBuffer ?? skinSlice.buffer,
|
|
393
396
|
paletteBindingWindowBytes: skinAllocator.bindingWindowBytes,
|
|
394
397
|
}
|
|
395
398
|
: null;
|
|
396
399
|
// Probe the skin PSO cache up front so we can decide whether to swap
|
|
397
|
-
// to the
|
|
400
|
+
// to the 2-binding skin BG. The same probe + selector is repeated in
|
|
398
401
|
// the per-submesh loop below (the loop's variantSet derivation is
|
|
399
402
|
// identical -- skin shader registers a single all-true variant so
|
|
400
403
|
// the canonical empty-key rule applies on HDRP and the URP key is
|
|
@@ -423,8 +426,6 @@ export function recordGeometryDraws(
|
|
|
423
426
|
undefined,
|
|
424
427
|
undefined,
|
|
425
428
|
undefined,
|
|
426
|
-
undefined,
|
|
427
|
-
undefined,
|
|
428
429
|
entry.mesh.layoutProjection,
|
|
429
430
|
) ?? null)
|
|
430
431
|
: null;
|
|
@@ -446,11 +447,7 @@ export function recordGeometryDraws(
|
|
|
446
447
|
const skinMissesBefore = bindGroupCounts.createBindGroup;
|
|
447
448
|
const skinBindGroup: BindGroup = getOrCreateFromChain(
|
|
448
449
|
frameState.meshBindGroupCache,
|
|
449
|
-
[
|
|
450
|
-
pipelineState.meshStorageBuffer.buffer,
|
|
451
|
-
skinResources.paletteBuffer,
|
|
452
|
-
skinResources.previousPaletteBuffer,
|
|
453
|
-
],
|
|
450
|
+
[pipelineState.meshStorageBuffer.buffer, skinResources.paletteBuffer],
|
|
454
451
|
'pbr-skin-mesh',
|
|
455
452
|
() => {
|
|
456
453
|
const result = runtime.device.createBindGroup({
|
|
@@ -488,17 +485,6 @@ export function recordGeometryDraws(
|
|
|
488
485
|
},
|
|
489
486
|
},
|
|
490
487
|
},
|
|
491
|
-
{
|
|
492
|
-
binding: 2,
|
|
493
|
-
resource: {
|
|
494
|
-
kind: 'buffer',
|
|
495
|
-
value: {
|
|
496
|
-
buffer: skinResources.previousPaletteBuffer,
|
|
497
|
-
offset: 0,
|
|
498
|
-
size: skinResources.paletteBindingWindowBytes,
|
|
499
|
-
},
|
|
500
|
-
},
|
|
501
|
-
},
|
|
502
488
|
],
|
|
503
489
|
});
|
|
504
490
|
if (!result.ok) throw result.error;
|
|
@@ -511,14 +497,13 @@ export function recordGeometryDraws(
|
|
|
511
497
|
else skinStats.hit += 1;
|
|
512
498
|
}
|
|
513
499
|
group2BindGroup = skinBindGroup;
|
|
514
|
-
// m3-2: dyn-offset tuple
|
|
515
|
-
//
|
|
500
|
+
// m3-2: dyn-offset tuple uses the per-entity palette cursor M2 m2-6
|
|
501
|
+
// wrote at the extract stage.
|
|
516
502
|
// Replaces the prior PR #353 hard-coded `0` second slot -- every
|
|
517
503
|
// skin entry now points the palette window at its own slice while
|
|
518
504
|
// sharing the worst-case BG entry size above.
|
|
519
505
|
skinGroup2DynamicOffsets[0] = i * MESH_PER_ENTITY_STRIDE;
|
|
520
506
|
skinGroup2DynamicOffsets[1] = entry.source.skin?.byteOffset ?? 0;
|
|
521
|
-
skinGroup2DynamicOffsets[2] = entry.source.skin?.byteOffset ?? 0;
|
|
522
507
|
group2DynamicOffsets = skinGroup2DynamicOffsets;
|
|
523
508
|
} else if (isSkinEntry) {
|
|
524
509
|
// Skin entry but skin PSO not ready (cache miss / async build pending,
|
|
@@ -530,8 +515,6 @@ export function recordGeometryDraws(
|
|
|
530
515
|
// null skip-draw shape (M6-T1, charter P3 explicit failure).
|
|
531
516
|
continue;
|
|
532
517
|
}
|
|
533
|
-
pass.setBindGroup(2, group2BindGroup, group2DynamicOffsets);
|
|
534
|
-
|
|
535
518
|
// feat-20260520-2d-sprite-layer-mvp M-3 / w25 (@fallback sprite
|
|
536
519
|
// bucket): sprite entries get a per-entity material BindGroup so
|
|
537
520
|
// each sprite carries its own texture binding at @group(1) @binding(2).
|
|
@@ -582,31 +565,19 @@ export function recordGeometryDraws(
|
|
|
582
565
|
for (let smIdx = 0; smIdx < entry.mesh.submeshes.length; smIdx++) {
|
|
583
566
|
const sm = entry.mesh.submeshes[smIdx];
|
|
584
567
|
if (sm === undefined) continue;
|
|
585
|
-
const gpuDrivenDraw = entry.source.gpuDrivenDraws?.find(
|
|
586
|
-
(draw) => draw.submeshIndex === smIdx,
|
|
587
|
-
);
|
|
588
|
-
if (
|
|
589
|
-
passKind === 'forward' &&
|
|
590
|
-
gpuDrivenDraw !== undefined &&
|
|
591
|
-
c.gpuDrivenItemKeys.has(
|
|
592
|
-
rasterItemKey(
|
|
593
|
-
entry.source.worldId,
|
|
594
|
-
entry.source.entityKey,
|
|
595
|
-
gpuDrivenDraw.submeshIndex,
|
|
596
|
-
gpuDrivenDraw.passIndex,
|
|
597
|
-
),
|
|
598
|
-
)
|
|
599
|
-
) {
|
|
600
|
-
continue;
|
|
601
|
-
}
|
|
602
568
|
const matSlotIdx = sm.materialSlot;
|
|
603
569
|
const submeshMaterial = matsForRebind[matSlotIdx] ?? entry.source.material;
|
|
570
|
+
if (matchedMaterials !== null) {
|
|
571
|
+
const materialHandles = matchedMaterials.get(entry.renderableIndex);
|
|
572
|
+
const materialHandle = submeshMaterial.materialHandle ?? 0;
|
|
573
|
+
if (materialHandles === undefined || !materialHandles.has(materialHandle)) continue;
|
|
574
|
+
}
|
|
604
575
|
// feat-city-glb Bug 5 (per-submesh transparency): in the LDR split, a
|
|
605
576
|
// transparent submesh is drawn in the blend sub-pass (non-sRGB view),
|
|
606
577
|
// NOT here in the sRGB geometry pass. Skip it. Opaque submeshes of the
|
|
607
578
|
// same (mixed) mesh still draw here. Single-material / fully-opaque
|
|
608
579
|
// meshes are unaffected (their submesh materials are not transparent).
|
|
609
|
-
if (
|
|
580
|
+
if (splitLdrSprite && submeshMaterial.transparent === true) {
|
|
610
581
|
continue;
|
|
611
582
|
}
|
|
612
583
|
// bug-20260610 layer 7d: per-submesh BG construction. Texture
|
|
@@ -632,15 +603,25 @@ export function recordGeometryDraws(
|
|
|
632
603
|
// feat-city-glb Bug 5: per-submesh material BG assembly extracted to
|
|
633
604
|
// the shared `buildPerSubmeshMaterialBg` closure (also called by the
|
|
634
605
|
// LDR blend sub-pass). Resolves the shader's user-region textures
|
|
635
|
-
// (baseColor/MR/normal +
|
|
606
|
+
// (baseColor/MR/normal + a custom Nth texture), emissive/occlusion
|
|
636
607
|
// injection, and Skylight merge; deduped cross-entity via the
|
|
637
608
|
// shaderId-outer `materialBgShared` cache.
|
|
638
609
|
const materialSlot = materialSlotIndices[i]?.[matSlotIdx] ?? materialSlotIndices[i]?.[0] ?? 0;
|
|
639
610
|
perSubmeshBg =
|
|
640
611
|
profilePhase === undefined
|
|
641
|
-
? resolveMaterialBindGroup(
|
|
612
|
+
? resolveMaterialBindGroup(
|
|
613
|
+
materialSlot,
|
|
614
|
+
submeshMaterial,
|
|
615
|
+
entry.source.entityKey,
|
|
616
|
+
entry.world ?? c.world,
|
|
617
|
+
)
|
|
642
618
|
: profileGeometrySegment(c, passKind, 'material-bind-groups', () =>
|
|
643
|
-
resolveMaterialBindGroup(
|
|
619
|
+
resolveMaterialBindGroup(
|
|
620
|
+
materialSlot,
|
|
621
|
+
submeshMaterial,
|
|
622
|
+
entry.source.entityKey,
|
|
623
|
+
entry.world ?? c.world,
|
|
624
|
+
),
|
|
644
625
|
);
|
|
645
626
|
materialGroup1DynamicOffsets[0] = materialSlot * MATERIAL_PER_ENTITY_STRIDE;
|
|
646
627
|
pass.setBindGroup(1, perSubmeshBg, materialGroup1DynamicOffsets, 0, 1);
|
|
@@ -649,58 +630,20 @@ export function recordGeometryDraws(
|
|
|
649
630
|
entry.source.skin !== undefined
|
|
650
631
|
? SKIN_MATERIAL_SHADER_ID
|
|
651
632
|
: submeshMaterial.materialShaderId;
|
|
652
|
-
let materialReadyGuid: string | undefined;
|
|
653
|
-
if (
|
|
654
|
-
submeshMaterial.materialGuid !== undefined &&
|
|
655
|
-
runtime.getMaterialReadiness !== undefined
|
|
656
|
-
) {
|
|
657
|
-
const readiness = runtime.getMaterialReadiness(submeshMaterial.materialGuid);
|
|
658
|
-
if (readiness !== undefined) {
|
|
659
|
-
const readinessRoute = routeMaterialReadiness({
|
|
660
|
-
readiness,
|
|
661
|
-
reportedDiagnosticKeys: frameState.reportedMaterialDiagnosticKeys,
|
|
662
|
-
});
|
|
663
|
-
if (readinessRoute.kind === 'skip') {
|
|
664
|
-
if (readinessRoute.diagnostic !== undefined) {
|
|
665
|
-
runtime.errorRegistry.fire(
|
|
666
|
-
new RhiError({
|
|
667
|
-
code: 'webgpu-runtime-error',
|
|
668
|
-
expected: readinessRoute.diagnostic.expected,
|
|
669
|
-
hint: `${readinessRoute.diagnostic.hint} [materialGuid=${readinessRoute.diagnostic.materialGuid}; specializationKey=${readinessRoute.diagnostic.specializationKey}]`,
|
|
670
|
-
}),
|
|
671
|
-
);
|
|
672
|
-
}
|
|
673
|
-
continue;
|
|
674
|
-
}
|
|
675
|
-
materialReadyGuid = readinessRoute.readiness.materialGuid;
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
633
|
const isSpriteShader =
|
|
679
634
|
smMaterialShaderId === 'forgeax::sprite' || smMaterialShaderId === 'forgeax::sprite-lit';
|
|
680
635
|
// Preserve the dedicated sprite-pass state when the linear-LDR graph
|
|
681
636
|
// routes a sprite through this generic geometry path. Negative scale
|
|
682
637
|
// flips winding, so back-face culling would erase the quad.
|
|
683
|
-
const
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
})();
|
|
693
|
-
const pipelineRenderState =
|
|
694
|
-
temporalRenderState ??
|
|
695
|
-
(isSpriteShader
|
|
696
|
-
? {
|
|
697
|
-
...submeshMaterial.renderState,
|
|
698
|
-
depthWriteEnabled: false,
|
|
699
|
-
depthCompare: 'less-equal' as const,
|
|
700
|
-
cullMode: 'none' as const,
|
|
701
|
-
blend: submeshMaterial.renderState?.blend ?? SPRITE_PREMULTIPLIED_ALPHA_BLEND,
|
|
702
|
-
}
|
|
703
|
-
: submeshMaterial.renderState);
|
|
638
|
+
const pipelineRenderState = isSpriteShader
|
|
639
|
+
? {
|
|
640
|
+
...submeshMaterial.renderState,
|
|
641
|
+
depthWriteEnabled: false,
|
|
642
|
+
depthCompare: 'less-equal' as const,
|
|
643
|
+
cullMode: 'none' as const,
|
|
644
|
+
blend: submeshMaterial.renderState?.blend ?? SPRITE_PREMULTIPLIED_ALPHA_BLEND,
|
|
645
|
+
}
|
|
646
|
+
: geometryRenderStateForTopology(smTopology, submeshMaterial.renderState);
|
|
704
647
|
let smPipelineHandle: typeof pipelineState.unlitPipeline;
|
|
705
648
|
if (smMaterialShaderId === undefined || smMaterialShaderId === 'forgeax::default-unlit') {
|
|
706
649
|
const unlitShaderId = smMaterialShaderId ?? 'forgeax::default-unlit';
|
|
@@ -724,7 +667,6 @@ export function recordGeometryDraws(
|
|
|
724
667
|
unlitVariantSet,
|
|
725
668
|
colorFormatOverride,
|
|
726
669
|
entry.mesh.layoutProjection,
|
|
727
|
-
materialReadyGuid,
|
|
728
670
|
);
|
|
729
671
|
smPipelineHandle =
|
|
730
672
|
unlitRsp ??
|
|
@@ -746,8 +688,18 @@ export function recordGeometryDraws(
|
|
|
746
688
|
// variant's manifest definesKey IS that exact non-empty string
|
|
747
689
|
// (CLUSTER_FORWARD_AVAILABLE=false+STORAGE_BUFFER_AVAILABLE=true)
|
|
748
690
|
// -- the canonical-empty rule only applies to the all-true case.
|
|
691
|
+
const hasVertexColor = entry.mesh.layoutProjection.attributes.some(
|
|
692
|
+
(attribute) => attribute.key === 'color',
|
|
693
|
+
);
|
|
694
|
+
// The all-true HDRP variant uses the canonical empty key only when
|
|
695
|
+
// every variant axis is true. A plain mesh adds the geometry-owned
|
|
696
|
+
// VERTEX_COLOR_AVAILABLE=false axis, so retain the two capability
|
|
697
|
+
// axes explicitly or the selector would silently choose the URP
|
|
698
|
+
// group(2) layout for an HDRP cluster bind group.
|
|
749
699
|
const capabilityVariantSet = frameState.isHdrpActive
|
|
750
|
-
?
|
|
700
|
+
? hasVertexColor
|
|
701
|
+
? ''
|
|
702
|
+
: 'CLUSTER_FORWARD_AVAILABLE=true+STORAGE_BUFFER_AVAILABLE=true'
|
|
751
703
|
: 'CLUSTER_FORWARD_AVAILABLE=false+STORAGE_BUFFER_AVAILABLE=true';
|
|
752
704
|
const authoredVariantSet =
|
|
753
705
|
isSpriteShader && entry.source.spriteInstances !== undefined ? '' : entry.variantSet;
|
|
@@ -765,16 +717,14 @@ export function recordGeometryDraws(
|
|
|
765
717
|
runtime.errorRegistry.fire(projectionVariantSetResult.error);
|
|
766
718
|
continue;
|
|
767
719
|
}
|
|
768
|
-
const projectionVariantSet = projectionVariantSetResult.value;
|
|
769
720
|
const cachedPipeline = resolveMaterialPipeline(
|
|
770
721
|
smMaterialShaderId,
|
|
771
722
|
pipelineRenderState,
|
|
772
723
|
smTopology,
|
|
773
724
|
entry.mesh.indexFormat,
|
|
774
|
-
|
|
725
|
+
projectionVariantSetResult.value,
|
|
775
726
|
colorFormatOverride,
|
|
776
727
|
entry.mesh.layoutProjection,
|
|
777
|
-
materialReadyGuid,
|
|
778
728
|
);
|
|
779
729
|
// feat-20260615-pipeline-spec-ssot M6-T1: cache miss resolves to
|
|
780
730
|
// null uniformly across URP / HDRP / skin shaders. Charter P3
|
|
@@ -797,6 +747,23 @@ export function recordGeometryDraws(
|
|
|
797
747
|
if (smPipelineHandle === null) {
|
|
798
748
|
continue;
|
|
799
749
|
}
|
|
750
|
+
// Standard clustered PBR variants declare the unified cluster/SSAO
|
|
751
|
+
// group(2) layout. Unlit and other URP-layout materials must bind the
|
|
752
|
+
// ordinary mesh group instead; choosing one group for the whole pass
|
|
753
|
+
// makes Dawn reject an otherwise valid unlit pipeline and invalidates
|
|
754
|
+
// the command buffer before it reaches the surface.
|
|
755
|
+
const usesStandardClusterBindings = smMaterialShaderId === 'forgeax::default-standard-pbr';
|
|
756
|
+
if (!isSkinEntry) {
|
|
757
|
+
if (usesStandardClusterBindings) {
|
|
758
|
+
if (meshGroup2 === null) continue;
|
|
759
|
+
group2BindGroup = meshGroup2;
|
|
760
|
+
} else {
|
|
761
|
+
const fallbackGroup = meshBindGroup ?? meshGroup2;
|
|
762
|
+
if (fallbackGroup === null) continue;
|
|
763
|
+
group2BindGroup = fallbackGroup;
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
pass.setBindGroup(2, group2BindGroup, group2DynamicOffsets);
|
|
800
767
|
|
|
801
768
|
if (profilePhase === undefined) {
|
|
802
769
|
submitSubmeshDraws(
|
|
@@ -838,9 +805,8 @@ function resolveGeometryInstanceBuffer(
|
|
|
838
805
|
identityInstanceDraws: readonly GeometryInstanceDraw[],
|
|
839
806
|
): readonly GeometryInstanceDraw[] | null {
|
|
840
807
|
const { runtime, pipelineState, frameState } = c;
|
|
841
|
-
const inst = entry.source.instances
|
|
808
|
+
const inst = entry.source.instances;
|
|
842
809
|
if (inst === undefined) return identityInstanceDraws;
|
|
843
|
-
const spriteInstances = entry.source.spriteInstances;
|
|
844
810
|
let instanceBuffer: Buffer = pipelineState.identityInstanceBuffer;
|
|
845
811
|
let instanceCount = 1;
|
|
846
812
|
{
|
|
@@ -891,21 +857,10 @@ function resolveGeometryInstanceBuffer(
|
|
|
891
857
|
{
|
|
892
858
|
// Cap-gate (LimitExceededDetail single emit point — feat-20260514
|
|
893
859
|
// M3 / w15 anchor): `requestedBytes <= maxStorageBufferBindingSize`.
|
|
894
|
-
const
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
: packTemporalInstanceTransforms(
|
|
899
|
-
inst.transforms,
|
|
900
|
-
entry.source.temporal?.previousInstances?.transforms,
|
|
901
|
-
)
|
|
902
|
-
: interleaveSpriteInstanceBuffer(
|
|
903
|
-
spriteInstances.transforms,
|
|
904
|
-
spriteInstances.regions,
|
|
905
|
-
undefined,
|
|
906
|
-
!uniformFallback,
|
|
907
|
-
);
|
|
908
|
-
const requestedBytes = upload.byteLength;
|
|
860
|
+
const instancePayload = uniformFallback
|
|
861
|
+
? inst.transforms
|
|
862
|
+
: packInstanceStorageBuffer(inst.transforms);
|
|
863
|
+
const requestedBytes = instancePayload.byteLength;
|
|
909
864
|
const cap = runtime.device.limits.maxStorageBufferBindingSize;
|
|
910
865
|
if (!uniformFallback && typeof cap === 'number' && cap > 0 && requestedBytes > cap) {
|
|
911
866
|
runtime.errorRegistry.fire(
|
|
@@ -961,7 +916,11 @@ function resolveGeometryInstanceBuffer(
|
|
|
961
916
|
}
|
|
962
917
|
}
|
|
963
918
|
if (active !== null) {
|
|
964
|
-
const writeRes = runtime.device.queue.writeBuffer(
|
|
919
|
+
const writeRes = runtime.device.queue.writeBuffer(
|
|
920
|
+
active.buffer.handle,
|
|
921
|
+
0,
|
|
922
|
+
instancePayload,
|
|
923
|
+
);
|
|
965
924
|
if (!writeRes.ok) {
|
|
966
925
|
runtime.errorRegistry.fire(writeRes.error);
|
|
967
926
|
} else {
|