@forgeax/engine-render 0.1.23 → 0.1.24
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 +131 -9
- package/dist/assembly/bundler-contract.d.ts +9 -0
- package/dist/assembly/bundler-contract.d.ts.map +1 -0
- package/dist/assembly/device-feature-admission.d.ts +8 -0
- package/dist/assembly/device-feature-admission.d.ts.map +1 -1
- package/dist/assembly/extended-lighting-fallback.d.ts +13 -0
- package/dist/assembly/extended-lighting-fallback.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +7 -243
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/material/assembly.d.ts +3 -2
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/standard-layer-projection.d.ts +10 -0
- package/dist/assembly/material/standard-layer-projection.d.ts.map +1 -0
- package/dist/assembly/material-shader-policy.d.ts +168 -0
- package/dist/assembly/material-shader-policy.d.ts.map +1 -0
- package/dist/assembly/material-shader-prewarm.d.ts +21 -0
- package/dist/assembly/material-shader-prewarm.d.ts.map +1 -0
- package/dist/assembly/mesh-ssbo-grow.d.ts +88 -0
- package/dist/assembly/mesh-ssbo-grow.d.ts.map +1 -0
- package/dist/assembly/recovery/device-loss-fanout.d.ts +14 -0
- package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -0
- package/dist/assembly/recovery/generation.d.ts +46 -0
- package/dist/assembly/recovery/generation.d.ts.map +1 -0
- package/dist/assembly/recovery/recovery-attempt.d.ts +63 -0
- package/dist/assembly/recovery/recovery-attempt.d.ts.map +1 -0
- package/dist/assembly/recovery/renderer-recover.d.ts +115 -0
- package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -0
- package/dist/assembly/renderer-facade.d.ts +10 -0
- package/dist/assembly/renderer-facade.d.ts.map +1 -0
- package/dist/assembly/renderer-frame-transaction.d.ts +17 -0
- package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
- package/dist/assembly/renderer-helpers.d.ts +19 -0
- package/dist/assembly/renderer-helpers.d.ts.map +1 -0
- package/dist/assembly/renderer-lifecycle.d.ts +34 -0
- package/dist/assembly/renderer-lifecycle.d.ts.map +1 -1
- package/dist/assembly/shader-prewarm-policy.d.ts +15 -0
- package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready-contract.d.ts +9 -0
- package/dist/assembly/webgpu-ready-contract.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready.d.ts +55 -0
- package/dist/assembly/webgpu-ready.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer.d.ts +152 -0
- package/dist/assembly/webgpu-renderer.d.ts.map +1 -0
- package/dist/authoring.mjs +1 -1
- package/dist/{chunk-4L3P6DT5.mjs → chunk-GE3SDD72.mjs} +37 -5
- package/dist/chunk-GE3SDD72.mjs.map +1 -0
- package/dist/{chunk-HZUPSYW7.mjs → chunk-KZFTK6DO.mjs} +102 -15
- package/dist/chunk-KZFTK6DO.mjs.map +1 -0
- package/dist/{chunk-FF7K3FSO.mjs → chunk-Q752SHI5.mjs} +89 -89
- package/dist/{chunk-FF7K3FSO.mjs.map → chunk-Q752SHI5.mjs.map} +1 -1
- package/dist/{chunk-QODA5UKU.mjs → chunk-RR5L4SRS.mjs} +2 -2
- package/dist/chunk-RR5L4SRS.mjs.map +1 -0
- package/dist/{chunk-YALPS44A.mjs → chunk-TFH5I7JJ.mjs} +47 -47
- package/dist/chunk-TFH5I7JJ.mjs.map +1 -0
- package/dist/{chunk-FBC4R44J.mjs → chunk-UQYS7FRM.mjs} +57 -57
- package/dist/chunk-UQYS7FRM.mjs.map +1 -0
- package/dist/{chunk-4NPUASZR.mjs → chunk-YKB5DQV7.mjs} +161 -19
- package/dist/chunk-YKB5DQV7.mjs.map +1 -0
- package/dist/{chunk-ZUWKAZ2I.mjs → chunk-YRUYGA4A.mjs} +615 -237
- package/dist/chunk-YRUYGA4A.mjs.map +1 -0
- package/dist/{chunk-DIYW3M5D.mjs → chunk-Z3YYH2MB.mjs} +2210 -2213
- package/dist/chunk-Z3YYH2MB.mjs.map +1 -0
- package/dist/construct-renderer.mjs +19841 -16190
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/device-scope.d.ts +2 -0
- package/dist/device/device-scope.d.ts.map +1 -1
- package/dist/device/gpu-residency.d.ts +24 -4
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/environment/frame.d.ts +5 -0
- package/dist/environment/frame.d.ts.map +1 -1
- package/dist/environment/inspection.d.ts +7 -0
- package/dist/environment/inspection.d.ts.map +1 -1
- package/dist/environment/lifecycle.d.ts +20 -2
- package/dist/environment/lifecycle.d.ts.map +1 -1
- package/dist/errors/recover.d.ts +58 -2
- package/dist/errors/recover.d.ts.map +1 -1
- package/dist/errors/render.d.ts +13 -0
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/contracts.d.ts +899 -0
- package/dist/extract/contracts.d.ts.map +1 -0
- package/dist/features/host.d.ts +2 -0
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +3 -0
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics-store.d.ts +2 -0
- package/dist/features/prepared-graphics-store.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +28 -0
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +1 -0
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/ibl/IblPipelineCache.d.ts +7 -6
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +7 -1
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/internal.mjs +6 -6
- package/dist/light-buffer-layout.d.ts +3 -0
- package/dist/light-buffer-layout.d.ts.map +1 -1
- package/dist/materials.d.ts +34 -10
- package/dist/materials.d.ts.map +1 -1
- package/dist/mesh-material-bindings.d.ts +56 -0
- package/dist/mesh-material-bindings.d.ts.map +1 -1
- package/dist/occlusion-proxy.d.ts +4 -0
- package/dist/occlusion-proxy.d.ts.map +1 -0
- package/dist/pbr-pipeline.d.ts +32 -9
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/points-lines/prepare.d.ts +3 -0
- package/dist/points-lines/prepare.d.ts.map +1 -1
- package/dist/points-lines/standard-owner.d.ts +33 -0
- package/dist/points-lines/standard-owner.d.ts.map +1 -0
- package/dist/record/frame-snapshot.d.ts +5 -0
- 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 +14 -2
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +14 -1
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +7 -17
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +11 -3
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/recovery-pipeline.d.ts +30 -0
- package/dist/record/recovery-pipeline.d.ts.map +1 -0
- package/dist/record/render-context.d.ts +26 -4
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +1 -1
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/recovery/render-system-candidate.d.ts +65 -0
- package/dist/recovery/render-system-candidate.d.ts.map +1 -0
- package/dist/render-contract.d.ts +64 -7
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts +12 -0
- package/dist/render-system-extract-tail.d.ts.map +1 -0
- package/dist/render-system-extract.d.ts +156 -22
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +128 -4
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +19 -0
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/temporal/frame-coordinator.d.ts.map +1 -1
- package/dist/temporal/index.mjs +6 -6
- package/dist/temporal/taa-history-store.d.ts +15 -1
- package/dist/temporal/taa-history-store.d.ts.map +1 -1
- package/dist/temporal/transaction.d.ts +5 -0
- package/dist/temporal/transaction.d.ts.map +1 -1
- package/package.json +20 -20
- package/src/__tests__/device-feature-admission.unit.test.ts +6 -0
- package/src/__tests__/device-loss-fanout.unit.test.ts +107 -0
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +21 -0
- package/src/__tests__/environment-generation.integration.test.ts +23 -0
- package/src/__tests__/expose-renderer-errors.unit.test.ts +34 -0
- package/src/__tests__/factory-contract.integration.test.ts +122 -7
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +4 -1
- package/src/__tests__/ibl/face-uniforms.unit.test.ts +2 -0
- package/src/__tests__/ibl-residency-publication.unit.test.ts +113 -0
- package/src/__tests__/material-contract-inventory.unit.test.ts +24 -9
- package/src/__tests__/material-cooked-projection.unit.test.ts +19 -1
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +29 -0
- package/src/__tests__/material-stride-surface.unit.test.ts +7 -3
- package/src/__tests__/materials-standard-contract.unit.test.ts +104 -0
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +1 -1
- package/src/__tests__/physical-clearcoat.integration.test.ts +89 -0
- package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +1 -1
- package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +1 -1
- package/src/__tests__/recover-error-policy-owner.unit.test.ts +6 -3
- package/src/__tests__/recovery-candidate-prepare.contract.test.ts +140 -0
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +85 -18
- package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +47 -0
- package/src/__tests__/renderer-generation-assembly.unit.test.ts +77 -0
- package/src/__tests__/renderer-generation-failure.unit.test.ts +108 -0
- package/src/__tests__/renderer-producer-root-matrix.integration.test.ts +33 -0
- package/src/__tests__/renderer-recovery-capability-matrix.unit.test.ts +59 -0
- package/src/__tests__/renderer-recovery-contract.unit.test.ts +73 -0
- package/src/__tests__/renderer-recovery-lifecycle.unit.test.ts +216 -0
- package/src/__tests__/renderer-target-history-recovery.integration.test.ts +80 -0
- package/src/__tests__/shader-manifest-fixture.ts +13 -16
- package/src/__tests__/shader-stage-surface.unit.test.ts +1 -1
- package/src/__tests__/standard-layer-projection.unit.test.ts +23 -0
- package/src/__tests__/transmission-prewarm.unit.test.ts +95 -85
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +3 -1
- package/src/assembly/bundler-contract.ts +9 -0
- package/src/assembly/device-feature-admission.ts +15 -5
- package/src/assembly/extended-lighting-fallback.ts +216 -0
- package/src/assembly/factory.ts +81 -10088
- package/src/assembly/material/assembly.ts +18 -2
- package/src/assembly/material/standard-layer-projection.ts +16 -0
- package/src/assembly/material-shader-policy.ts +854 -0
- package/src/assembly/material-shader-prewarm.ts +88 -0
- package/src/assembly/mesh-ssbo-grow.ts +270 -0
- package/src/assembly/recovery/device-loss-fanout.ts +89 -0
- package/src/assembly/recovery/generation.ts +141 -0
- package/src/assembly/recovery/recovery-attempt.ts +800 -0
- package/src/assembly/recovery/renderer-recover.ts +906 -0
- package/src/assembly/renderer-facade.ts +342 -0
- package/src/assembly/renderer-frame-transaction.ts +45 -0
- package/src/assembly/renderer-helpers.ts +99 -0
- package/src/assembly/renderer-lifecycle.ts +159 -0
- package/src/assembly/shader-prewarm-policy.ts +157 -0
- package/src/assembly/webgpu-ready-contract.ts +14 -0
- package/src/assembly/webgpu-ready.ts +4079 -0
- package/src/assembly/webgpu-renderer.ts +4095 -0
- package/src/components/camera.ts +1 -1
- package/src/debug-draw-glue.ts +1 -1
- package/src/device/device-scope.ts +35 -6
- package/src/device/gpu-residency.ts +194 -26
- package/src/environment/frame.ts +6 -0
- package/src/environment/inspection.ts +10 -0
- package/src/environment/lifecycle.ts +114 -8
- package/src/errors/recover.ts +76 -5
- package/src/errors/render.ts +17 -0
- package/src/extract/contracts.ts +974 -0
- package/src/features/host.ts +16 -0
- package/src/features/prepared-gpu-work.ts +20 -2
- package/src/features/prepared-graphics-store.ts +17 -0
- package/src/gpu-driven/production-raster.ts +97 -2
- package/src/gpu-scene.ts +3 -2
- package/src/ibl/IblPipelineCache.ts +134 -50
- package/src/ibl/skylight-bind-group.ts +26 -0
- package/src/index.ts +9 -1
- package/src/light-buffer-layout.ts +3 -0
- package/src/materials.ts +262 -45
- package/src/mesh-material-bindings.ts +59 -0
- package/src/occlusion-proxy.ts +64 -0
- package/src/pbr-pipeline.ts +139 -15
- package/src/points-lines/__tests__/cache-recovery.unit.test.ts +22 -0
- package/src/points-lines/prepare.ts +9 -0
- package/src/points-lines/standard-owner.ts +403 -0
- package/src/record/__tests__/frame-targets-recovery.unit.test.ts +60 -0
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +26 -1
- package/src/record/__tests__/mesh-ssbo.unit.test.ts +38 -0
- package/src/record/__tests__/recovery-pipeline.unit.test.ts +124 -0
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +28 -13
- package/src/record/__tests__/standard-pbr-ubo-layout.unit.test.ts +47 -4
- package/src/record/__tests__/temporal-payload.unit.test.ts +22 -43
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +1 -1
- package/src/record/frame-snapshot.ts +15 -0
- package/src/record/frame-targets.ts +11 -1
- package/src/record/frame.ts +6 -2
- package/src/record/helpers.ts +1 -1
- package/src/record/main-pass-geometry.ts +230 -5
- package/src/record/main-pass-material.ts +316 -209
- package/src/record/main-pass-sprite-draws.ts +6 -7
- package/src/record/main-pass.ts +94 -6
- package/src/record/mesh-ssbo.ts +32 -10
- package/src/record/recovery-pipeline.ts +695 -0
- package/src/record/render-context.ts +35 -4
- package/src/record/typed-frame-graph.ts +45 -1
- package/src/record/view-ubo.ts +3 -3
- package/src/recovery/render-system-candidate.ts +839 -0
- package/src/render-contract.ts +65 -7
- package/src/render-system-extract-tail.ts +2983 -0
- package/src/render-system-extract.ts +124 -2977
- package/src/render-system.ts +868 -659
- package/src/scene/render-scene.ts +124 -1
- package/src/temporal/frame-coordinator.ts +4 -1
- package/src/temporal/taa-history-store.ts +46 -2
- package/src/temporal/temporal-view.ts +1 -1
- package/src/temporal/transaction.ts +9 -0
- package/src/tilemap-chunk-extract-system.ts +1 -1
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +19 -12
- package/dist/chunk-4L3P6DT5.mjs.map +0 -1
- package/dist/chunk-4NPUASZR.mjs.map +0 -1
- package/dist/chunk-DIYW3M5D.mjs.map +0 -1
- package/dist/chunk-FBC4R44J.mjs.map +0 -1
- package/dist/chunk-HZUPSYW7.mjs.map +0 -1
- package/dist/chunk-QODA5UKU.mjs.map +0 -1
- package/dist/chunk-YALPS44A.mjs.map +0 -1
- package/dist/chunk-ZUWKAZ2I.mjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { LifecycleConstructionError, RenderTargetDescriptorInvalidError } from './chunk-
|
|
1
|
+
import { LifecycleConstructionError, RenderTargetDescriptorInvalidError } from './chunk-RR5L4SRS.mjs';
|
|
2
2
|
import { ok, err, derive } from '@forgeax/engine-types';
|
|
3
3
|
import '@forgeax/engine-rhi';
|
|
4
4
|
import { vec3 } from '@forgeax/engine-math';
|
|
5
|
-
import {
|
|
5
|
+
import { STANDARD_PIPELINE_PARAM_SCHEMA, standardPhysicalTextureFields } from '@forgeax/engine-shader';
|
|
6
6
|
|
|
7
7
|
var DeviceResourceRef = class {
|
|
8
8
|
kind;
|
|
@@ -22,6 +22,14 @@ var DeviceResourceRef = class {
|
|
|
22
22
|
return !this.isCurrent(scope);
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
|
+
function idempotentCleanup(cleanup) {
|
|
26
|
+
let cleaned = false;
|
|
27
|
+
return (value) => {
|
|
28
|
+
if (cleaned) return;
|
|
29
|
+
cleaned = true;
|
|
30
|
+
return cleanup(value);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
25
33
|
var DeviceScope = class _DeviceScope {
|
|
26
34
|
generation;
|
|
27
35
|
owner;
|
|
@@ -75,7 +83,7 @@ var DeviceScope = class _DeviceScope {
|
|
|
75
83
|
const ref = new DeviceResourceRef(kind, this.owner, this.generation, value);
|
|
76
84
|
this.resources.push({
|
|
77
85
|
ref,
|
|
78
|
-
cleanup
|
|
86
|
+
cleanup: idempotentCleanup(cleanup)
|
|
79
87
|
});
|
|
80
88
|
return ref;
|
|
81
89
|
}
|
|
@@ -95,20 +103,32 @@ var DeviceScope = class _DeviceScope {
|
|
|
95
103
|
beginRetire() {
|
|
96
104
|
if (this.lifecycleState === "active") this.lifecycleState = "retiring";
|
|
97
105
|
}
|
|
106
|
+
clearChildren() {
|
|
107
|
+
for (const child of [...this.children].reverse()) {
|
|
108
|
+
child.retire();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
detachChild(child) {
|
|
112
|
+
const index = this.children.indexOf(child);
|
|
113
|
+
if (index >= 0) this.children.splice(index, 1);
|
|
114
|
+
}
|
|
98
115
|
retire() {
|
|
99
116
|
if (this.lifecycleState !== "active" && this.lifecycleState !== "retiring") return;
|
|
100
117
|
this.lifecycleState = "retiring";
|
|
118
|
+
this.clearChildren();
|
|
101
119
|
this._clearResources();
|
|
102
120
|
this.lifecycleState = "retired";
|
|
103
121
|
}
|
|
104
122
|
abandon() {
|
|
105
123
|
if (this.lifecycleState !== "active") return;
|
|
106
124
|
this.lifecycleState = "abandoned";
|
|
125
|
+
this.clearChildren();
|
|
107
126
|
this._clearResources();
|
|
108
127
|
}
|
|
109
128
|
dispose() {
|
|
110
129
|
if (this.lifecycleState === "disposed") return;
|
|
111
130
|
this.lifecycleState = "disposed";
|
|
131
|
+
this.clearChildren();
|
|
112
132
|
this._clearResources();
|
|
113
133
|
}
|
|
114
134
|
async replace(generation, resources) {
|
|
@@ -124,6 +144,7 @@ var DeviceScope = class _DeviceScope {
|
|
|
124
144
|
replacement.dispose();
|
|
125
145
|
return transaction.failure("dispose");
|
|
126
146
|
}
|
|
147
|
+
this.detachChild(replacement);
|
|
127
148
|
this.retire();
|
|
128
149
|
return ok(replacement);
|
|
129
150
|
}
|
|
@@ -163,10 +184,10 @@ var LifecycleTransaction = class {
|
|
|
163
184
|
}
|
|
164
185
|
const value = await spec.create();
|
|
165
186
|
if (!this.scope.isAlive()) {
|
|
166
|
-
await this.cleanupOne(
|
|
187
|
+
await this.cleanupOne(value, created, idempotentCleanup(spec.cleanup));
|
|
167
188
|
return this.failure("dispose");
|
|
168
189
|
}
|
|
169
|
-
created.push({ spec, value });
|
|
190
|
+
created.push({ spec, value, cleanup: idempotentCleanup(spec.cleanup) });
|
|
170
191
|
} catch (cause) {
|
|
171
192
|
const cleanupFailures = await this.cleanupCreated(created);
|
|
172
193
|
return this.failure("create", spec.kind, cleanupFailures, cause);
|
|
@@ -200,17 +221,17 @@ var LifecycleTransaction = class {
|
|
|
200
221
|
const item = created[index];
|
|
201
222
|
if (item === void 0) continue;
|
|
202
223
|
try {
|
|
203
|
-
await item.
|
|
224
|
+
await item.cleanup(item.value);
|
|
204
225
|
} catch (cause) {
|
|
205
226
|
failures.push({ resourceKind: item.spec.kind, cause });
|
|
206
227
|
}
|
|
207
228
|
}
|
|
208
229
|
return failures;
|
|
209
230
|
}
|
|
210
|
-
async cleanupOne(
|
|
231
|
+
async cleanupOne(value, created, cleanup) {
|
|
211
232
|
await this.cleanupCreated(created);
|
|
212
233
|
try {
|
|
213
|
-
await
|
|
234
|
+
await cleanup(value);
|
|
214
235
|
} catch {
|
|
215
236
|
}
|
|
216
237
|
}
|
|
@@ -279,6 +300,15 @@ function worldEntityKey(worldId, entityKey) {
|
|
|
279
300
|
var ZERO_CAMERA_CLEAR_FALLBACK = [0, 0, 0, 1];
|
|
280
301
|
var textureIdentities = /* @__PURE__ */ new WeakMap();
|
|
281
302
|
var nextTextureIdentity = 1;
|
|
303
|
+
var opaqueResourceIdentities = /* @__PURE__ */ new WeakMap();
|
|
304
|
+
var nextOpaqueResourceIdentity = 1;
|
|
305
|
+
function getOpaqueResourceIdentity(resource) {
|
|
306
|
+
const existing = opaqueResourceIdentities.get(resource);
|
|
307
|
+
if (existing !== void 0) return existing;
|
|
308
|
+
const identity = nextOpaqueResourceIdentity++;
|
|
309
|
+
opaqueResourceIdentities.set(resource, identity);
|
|
310
|
+
return identity;
|
|
311
|
+
}
|
|
282
312
|
function getTextureIdentity(texture) {
|
|
283
313
|
const object = texture;
|
|
284
314
|
const existing = textureIdentities.get(object);
|
|
@@ -346,8 +376,14 @@ var BGL_ONLY_SPEC_STUB = Object.freeze({
|
|
|
346
376
|
geometry: { topology: "triangle-list", vertexLayout: {} },
|
|
347
377
|
renderState: void 0
|
|
348
378
|
});
|
|
349
|
-
function buildPbrMaterialUserRegionEntries(paramSchema =
|
|
350
|
-
const
|
|
379
|
+
function buildPbrMaterialUserRegionEntries(paramSchema = STANDARD_PIPELINE_PARAM_SCHEMA, excludedTextureFields = []) {
|
|
380
|
+
const excluded = new Set(excludedTextureFields);
|
|
381
|
+
for (const field of standardPhysicalTextureFields(paramSchema)) excluded.add(field);
|
|
382
|
+
const derived = derive(
|
|
383
|
+
excluded.size === 0 ? paramSchema : paramSchema.filter(
|
|
384
|
+
(entry) => !excluded.has(entry.name) || !entry.type.startsWith("texture")
|
|
385
|
+
)
|
|
386
|
+
);
|
|
351
387
|
const entries = derived.bglEntries.map(
|
|
352
388
|
(entry) => ({
|
|
353
389
|
binding: entry.binding,
|
|
@@ -469,6 +505,43 @@ function appendInjection(bgl, kind) {
|
|
|
469
505
|
];
|
|
470
506
|
}
|
|
471
507
|
}
|
|
508
|
+
function physicalTextureFields(paramSchema) {
|
|
509
|
+
return standardPhysicalTextureFields(paramSchema);
|
|
510
|
+
}
|
|
511
|
+
function appendTextureInjection(bgl, fields) {
|
|
512
|
+
const start = bgl.length;
|
|
513
|
+
const fieldSet = new Set(fields);
|
|
514
|
+
return standardPhysicalTextureFields(
|
|
515
|
+
fields.map((name) => ({ name, type: "texture2d" }))
|
|
516
|
+
).flatMap((field, index) => {
|
|
517
|
+
if (!fieldSet.has(field)) return [];
|
|
518
|
+
const binding = start + index * 2;
|
|
519
|
+
return [
|
|
520
|
+
{
|
|
521
|
+
binding,
|
|
522
|
+
visibility: GPU_SHADER_STAGE_FRAGMENT,
|
|
523
|
+
sampler: { type: "filtering" }
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
binding: binding + 1,
|
|
527
|
+
visibility: GPU_SHADER_STAGE_FRAGMENT,
|
|
528
|
+
texture: { sampleType: "float", viewDimension: "2d" }
|
|
529
|
+
}
|
|
530
|
+
];
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
function materialBindGroupLayoutIdentity(shaderId, paramSchema) {
|
|
534
|
+
const descriptor = buildBindGroupLayoutDescriptor(
|
|
535
|
+
{
|
|
536
|
+
shader: { id: shaderId, passKind: "forward", variantSet: void 0 },
|
|
537
|
+
attachments: { colorFormats: [], depthFormat: void 0, sampleCount: 1 }},
|
|
538
|
+
{ kind: "pbr-material-merged", materialParamSchema: paramSchema }
|
|
539
|
+
);
|
|
540
|
+
return JSON.stringify({
|
|
541
|
+
entries: descriptor.entries,
|
|
542
|
+
physicalTextureFields: physicalTextureFields(paramSchema)
|
|
543
|
+
});
|
|
544
|
+
}
|
|
472
545
|
function buildPbrViewBglEntries(caps) {
|
|
473
546
|
const entries = [
|
|
474
547
|
{
|
|
@@ -672,6 +745,10 @@ function buildPbrPipelineLayouts(device, caps) {
|
|
|
672
745
|
}
|
|
673
746
|
var SKIN_MATERIAL_SHADER_ID = "forgeax::pbr-skin";
|
|
674
747
|
var SHADOW_CASTER_SHADER_ID = "forgeax::default-shadow-caster";
|
|
748
|
+
var AUTHORED_STANDARD_ID_RE = /::(?:standard|pbr-skin)(?:-|$)/;
|
|
749
|
+
function isStandardPbrSkinMaterialShader(shaderId) {
|
|
750
|
+
return shaderId === SKIN_MATERIAL_SHADER_ID || shaderId === "forgeax::default-standard-pbr-skin" || shaderId !== void 0 && /::pbr-skin(?:-|$)/.test(shaderId);
|
|
751
|
+
}
|
|
675
752
|
function shadowCasterVariantSet(storageBuffer, skinned) {
|
|
676
753
|
const skinningDisabled = !skinned;
|
|
677
754
|
if (storageBuffer && skinningDisabled) return "";
|
|
@@ -690,6 +767,9 @@ function resolvePipelineGroup2Contract(source) {
|
|
|
690
767
|
return "mesh";
|
|
691
768
|
}
|
|
692
769
|
function isStandardPbrMaterialShader(shaderId) {
|
|
770
|
+
return shaderId === "forgeax::default-standard-pbr" || shaderId === SKIN_MATERIAL_SHADER_ID || shaderId === "forgeax::default-standard-pbr-skin" || shaderId !== void 0 && AUTHORED_STANDARD_ID_RE.test(shaderId);
|
|
771
|
+
}
|
|
772
|
+
function isCanonicalStandardPbrMaterialShader(shaderId) {
|
|
693
773
|
return shaderId === "forgeax::default-standard-pbr" || shaderId === SKIN_MATERIAL_SHADER_ID || shaderId === "forgeax::default-standard-pbr-skin";
|
|
694
774
|
}
|
|
695
775
|
function buildPbrSkinLayouts(device, caps, pbr) {
|
|
@@ -917,9 +997,16 @@ function buildBindGroupLayoutDescriptor(spec, options) {
|
|
|
917
997
|
}
|
|
918
998
|
case "pbr-material-merged": {
|
|
919
999
|
const resolvedSchema = resolveMaterialParamSchema(spec, options);
|
|
920
|
-
const
|
|
1000
|
+
const effectiveSchema = resolvedSchema ?? STANDARD_PIPELINE_PARAM_SCHEMA;
|
|
1001
|
+
const physicalFields = physicalTextureFields(effectiveSchema);
|
|
1002
|
+
const userRegionSchema = isCanonicalStandardPbrMaterialShader(spec.shader.id) ? STANDARD_PIPELINE_PARAM_SCHEMA : effectiveSchema;
|
|
1003
|
+
const userRegion = buildPbrMaterialUserRegionEntries(userRegionSchema);
|
|
921
1004
|
const afterIbl = [...userRegion, ...appendInjection(userRegion, "ibl")];
|
|
922
|
-
const
|
|
1005
|
+
const afterTransmission = [...afterIbl, ...appendInjection(afterIbl, "transmission")];
|
|
1006
|
+
const merged = [
|
|
1007
|
+
...afterTransmission,
|
|
1008
|
+
...appendTextureInjection(afterTransmission, physicalFields)
|
|
1009
|
+
];
|
|
923
1010
|
return {
|
|
924
1011
|
label: "pbr-material-skylight-bgl",
|
|
925
1012
|
entries: merged
|
|
@@ -1099,6 +1186,6 @@ function selectPasses(passes, selector) {
|
|
|
1099
1186
|
);
|
|
1100
1187
|
}
|
|
1101
1188
|
|
|
1102
|
-
export { COOKIE_MATRIX_BYTES, COOKIE_SLICE_CAPACITY, COOKIE_SLICE_SIZE, DeviceScope, EXTENDED_LIGHTING_REQUIRED_SAMPLED_TEXTURES, EXTENDED_LIGHTING_TOPOLOGY, GPU_BUFFER_USAGE_COPY_DST, GPU_BUFFER_USAGE_COPY_SRC, GPU_BUFFER_USAGE_INDEX, GPU_BUFFER_USAGE_INDIRECT, GPU_BUFFER_USAGE_MAP_READ, GPU_BUFFER_USAGE_QUERY_RESOLVE, GPU_BUFFER_USAGE_STORAGE, GPU_BUFFER_USAGE_UNIFORM, GPU_BUFFER_USAGE_VERTEX, GPU_SHADER_STAGE_COMPUTE, GPU_SHADER_STAGE_FRAGMENT, GPU_SHADER_STAGE_VERTEX, IES_SLICE_CAPACITY, IES_SLICE_HEIGHT, IES_SLICE_WIDTH, PROBE_BLEND_RECORD_BYTE_SIZE, PROBE_BLEND_RECORD_CAPACITY, PROBE_BLEND_RECORD_STRIDE, SHADOW_CASTER_SHADER_ID, SKIN_MATERIAL_SHADER_ID, SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET, buildBindGroupLayoutDescriptor, buildPbrMaterialUserRegionEntries, buildPbrPipelineLayouts, buildPbrSkinLayouts, createHdrpBindGroupLayoutDescriptor, createHdrpSkinBindGroupLayoutDescriptor, createPbrSkinMeshBindGroupEntries, createRenderTargetMaterialSource, deriveExtendedLightingCapability, extendedLightingSampledTextureCapacityAvailable, getTextureIdentity, isStandardPbrMaterialShader, makeZeroCameraFallbackSnapshot, matchPass, pbrSkinMeshDynamicOffsets, probeBlendRecordOffset, resolvePipelineGroup2Contract, resolveRenderTargetMaterialSource, selectPasses, shadowCasterVariantSet, validateGraphTargetCaptureReadback, worldEntityKey };
|
|
1103
|
-
//# sourceMappingURL=chunk-
|
|
1104
|
-
//# sourceMappingURL=chunk-
|
|
1189
|
+
export { COOKIE_MATRIX_BYTES, COOKIE_SLICE_CAPACITY, COOKIE_SLICE_SIZE, DeviceScope, EXTENDED_LIGHTING_REQUIRED_SAMPLED_TEXTURES, EXTENDED_LIGHTING_TOPOLOGY, GPU_BUFFER_USAGE_COPY_DST, GPU_BUFFER_USAGE_COPY_SRC, GPU_BUFFER_USAGE_INDEX, GPU_BUFFER_USAGE_INDIRECT, GPU_BUFFER_USAGE_MAP_READ, GPU_BUFFER_USAGE_QUERY_RESOLVE, GPU_BUFFER_USAGE_STORAGE, GPU_BUFFER_USAGE_UNIFORM, GPU_BUFFER_USAGE_VERTEX, GPU_SHADER_STAGE_COMPUTE, GPU_SHADER_STAGE_FRAGMENT, GPU_SHADER_STAGE_VERTEX, IES_SLICE_CAPACITY, IES_SLICE_HEIGHT, IES_SLICE_WIDTH, LifecycleTransaction, PROBE_BLEND_RECORD_BYTE_SIZE, PROBE_BLEND_RECORD_CAPACITY, PROBE_BLEND_RECORD_STRIDE, SHADOW_CASTER_SHADER_ID, SKIN_MATERIAL_SHADER_ID, SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET, buildBindGroupLayoutDescriptor, buildPbrMaterialUserRegionEntries, buildPbrPipelineLayouts, buildPbrSkinLayouts, createHdrpBindGroupLayoutDescriptor, createHdrpSkinBindGroupLayoutDescriptor, createPbrSkinMeshBindGroupEntries, createRenderTargetMaterialSource, deriveExtendedLightingCapability, extendedLightingSampledTextureCapacityAvailable, getOpaqueResourceIdentity, getTextureIdentity, isCanonicalStandardPbrMaterialShader, isStandardPbrMaterialShader, isStandardPbrSkinMaterialShader, makeZeroCameraFallbackSnapshot, matchPass, materialBindGroupLayoutIdentity, pbrSkinMeshDynamicOffsets, physicalTextureFields, probeBlendRecordOffset, resolvePipelineGroup2Contract, resolveRenderTargetMaterialSource, selectPasses, shadowCasterVariantSet, validateGraphTargetCaptureReadback, worldEntityKey };
|
|
1190
|
+
//# sourceMappingURL=chunk-KZFTK6DO.mjs.map
|
|
1191
|
+
//# sourceMappingURL=chunk-KZFTK6DO.mjs.map
|