@flighthq/scene3d-wgpu 0.3.0 → 0.3.1-next.1050.9114695
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/dist/customShaderWgpuMeshMaterialRenderer.d.ts.map +1 -1
- package/dist/customShaderWgpuMeshMaterialRenderer.js +6 -9
- package/dist/customShaderWgpuMeshMaterialRenderer.js.map +1 -1
- package/dist/drawWgpuScene3D.d.ts.map +1 -1
- package/dist/drawWgpuScene3D.js +4 -2
- package/dist/drawWgpuScene3D.js.map +1 -1
- package/dist/explainWgpuScene3DCoverage.d.ts +2 -2
- package/dist/explainWgpuScene3DCoverage.d.ts.map +1 -1
- package/dist/explainWgpuScene3DCoverage.js +62 -26
- package/dist/explainWgpuScene3DCoverage.js.map +1 -1
- package/dist/wgpuClassicPrelude.js +2 -2
- package/dist/wgpuClassicPrelude.js.map +1 -1
- package/dist/wgpuMeshMaterialRegistry.d.ts.map +1 -1
- package/dist/wgpuMeshMaterialRegistry.js +15 -11
- package/dist/wgpuMeshMaterialRegistry.js.map +1 -1
- package/dist/wgpuMeshPipeline.d.ts.map +1 -1
- package/dist/wgpuMeshPipeline.js +38 -16
- package/dist/wgpuMeshPipeline.js.map +1 -1
- package/dist/wgpuMeshUpload.d.ts +1 -1
- package/dist/wgpuMeshUpload.d.ts.map +1 -1
- package/dist/wgpuMeshUpload.js +37 -12
- package/dist/wgpuMeshUpload.js.map +1 -1
- package/dist/wgpuParticleEmitter3D.d.ts.map +1 -1
- package/dist/wgpuParticleEmitter3D.js +9 -6
- package/dist/wgpuParticleEmitter3D.js.map +1 -1
- package/dist/wgpuPbrPipelineCache.d.ts.map +1 -1
- package/dist/wgpuPbrPipelineCache.js +2 -2
- package/dist/wgpuPbrPipelineCache.js.map +1 -1
- package/dist/wgpuScene3DRuntime.d.ts.map +1 -1
- package/dist/wgpuScene3DRuntime.js +18 -10
- package/dist/wgpuScene3DRuntime.js.map +1 -1
- package/dist/wgpuScene3DTestHelper.d.ts.map +1 -1
- package/dist/wgpuScene3DTestHelper.js +126 -6
- package/dist/wgpuScene3DTestHelper.js.map +1 -1
- package/dist/wgpuShadedModifierSnippet.d.ts.map +1 -1
- package/dist/wgpuShadedModifierSnippet.js +8 -11
- package/dist/wgpuShadedModifierSnippet.js.map +1 -1
- package/dist/wgpuShadedPrelude.d.ts +5 -3
- package/dist/wgpuShadedPrelude.d.ts.map +1 -1
- package/dist/wgpuShadedPrelude.js +34 -13
- package/dist/wgpuShadedPrelude.js.map +1 -1
- package/dist/wgpuShadowMap.d.ts.map +1 -1
- package/dist/wgpuShadowMap.js +22 -6
- package/dist/wgpuShadowMap.js.map +1 -1
- package/dist/wgpuSkinPalette.d.ts +4 -1
- package/dist/wgpuSkinPalette.d.ts.map +1 -1
- package/dist/wgpuSkinPalette.js +227 -27
- package/dist/wgpuSkinPalette.js.map +1 -1
- package/dist/wgpuWireframeUpload.d.ts.map +1 -1
- package/dist/wgpuWireframeUpload.js +12 -6
- package/dist/wgpuWireframeUpload.js.map +1 -1
- package/package.json +20 -15
- package/src/customShaderWgpuMeshMaterialRenderer.test.ts +25 -1
- package/src/explainWgpuScene3DCoverage.test.ts +44 -10
- package/src/wgpuMeshMaterialRegistry.test.ts +22 -0
- package/src/wgpuMeshPipeline.test.ts +34 -1
- package/src/wgpuMeshUpload.test.ts +65 -3
- package/src/wgpuParticleEmitter3D.test.ts +23 -0
- package/src/wgpuScene3DRuntime.test.ts +8 -4
- package/src/wgpuScene3DTestHelper.test.ts +84 -0
- package/src/wgpuShadedModifierSnippet.test.ts +20 -6
- package/src/wgpuShadedPrelude.test.ts +6 -6
- package/src/wgpuShadowMap.test.ts +30 -0
- package/src/wgpuSkinPalette.test.ts +134 -19
- package/src/wgpuWireframeUpload.test.ts +29 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customShaderWgpuMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/customShaderWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"customShaderWgpuMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/customShaderWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAOV,8BAA8B,EAC9B,wBAAwB,EAExB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAmBlC,OAAO,EAAE,mCAAmC,EAAE,qCAAqC,EAAE,MAAM,yBAAyB,CAAC;AAmBrH,eAAO,MAAM,oCAAoC,EAAE,wBAuDlD,CAAC;AAGF,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,GAChB,8BAA8B,GAAG,IAAI,CAGvC;AAqBD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,8BAA8B,GACzC,IAAI,CAON;AAGD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAI7E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { withRegistryTableEntry } from '@flighthq/registry/contract';
|
|
1
2
|
import { getWgpuRenderStateRuntime, registerWgpuBitmapTextureResolver, registerWgpuImageTextureResolver, } from '@flighthq/render-wgpu/contract';
|
|
2
|
-
import { CustomShaderMaterialKind } from '@flighthq/types/contract';
|
|
3
|
+
import { CustomShaderMaterialKind, RegistryEntryState } from '@flighthq/types/contract';
|
|
3
4
|
import { WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY, WGPU_CUSTOM_SHADER_USER_VEC4_CAPACITY } from './wgpuCustomMaterialAbi';
|
|
4
5
|
import { registerWgpuMeshMaterialRenderer } from './wgpuMeshMaterialRegistry';
|
|
5
6
|
import { beginWgpuMeshDraw, createWgpuMeshPipeline, drawWgpuMeshSubset, ensureWgpuPlaceholderTextureView, ensureWgpuScene3DPipeline, getWgpuMaterialSampler, isWgpuTextureReady, resolveWgpuMaterialTextureView, stashWgpuUvTransform, writeWgpuFrameUniform, } from './wgpuMeshPipeline';
|
|
@@ -50,7 +51,8 @@ export const customShaderWgpuMeshMaterialRenderer = {
|
|
|
50
51
|
};
|
|
51
52
|
// Returns the WGSL module registered under `shaderKey`, or null when the material should skip drawing.
|
|
52
53
|
export function getWgpuCustomMaterialShaderSource(state, shaderKey) {
|
|
53
|
-
|
|
54
|
+
const entry = getWgpuRenderStateRuntime(state).registries.customMaterialShaders.entries.get(shaderKey);
|
|
55
|
+
return entry?.state === RegistryEntryState.Bound ? entry.value : null;
|
|
54
56
|
}
|
|
55
57
|
// Registers a complete WGSL module for a CustomShaderMaterial shaderKey.
|
|
56
58
|
//
|
|
@@ -72,12 +74,8 @@ export function getWgpuCustomMaterialShaderSource(state, shaderKey) {
|
|
|
72
74
|
// registry follows the GL lifetime rule: last source write wins before compilation, while an already
|
|
73
75
|
// compiled shaderKey remains cached; use a new key to compile edited WGSL.
|
|
74
76
|
export function registerWgpuCustomMaterialShader(state, shaderKey, wgslSource) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
registry = new Map();
|
|
78
|
-
_customMaterialShaders.set(state, registry);
|
|
79
|
-
}
|
|
80
|
-
registry.set(shaderKey, wgslSource);
|
|
77
|
+
const runtime = getWgpuRenderStateRuntime(state);
|
|
78
|
+
runtime.registries.customMaterialShaders = withRegistryTableEntry(runtime.registries.customMaterialShaders, shaderKey, wgslSource);
|
|
81
79
|
}
|
|
82
80
|
// Installs CustomShaderMaterialKind in this state's WGPU mesh-material registry.
|
|
83
81
|
export function registerWgpuCustomShaderMaterial(state) {
|
|
@@ -222,7 +220,6 @@ function overwriteCache(cache, source) {
|
|
|
222
220
|
for (let i = 0; i < source.length; i++)
|
|
223
221
|
cache[i] = source[i];
|
|
224
222
|
}
|
|
225
|
-
const _customMaterialShaders = new WeakMap();
|
|
226
223
|
const _customMaterialLayouts = new WeakMap();
|
|
227
224
|
const _customMaterialBindings = new WeakMap();
|
|
228
225
|
const _uniformScratch = new Float32Array(WGPU_CUSTOM_SHADER_USER_VEC4_CAPACITY * 4);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customShaderWgpuMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/customShaderWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,GACjC,MAAM,gCAAgC,CAAC;AAaxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"customShaderWgpuMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/customShaderWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawWgpuScene3D.d.ts","sourceRoot":"","sources":["../src/drawWgpuScene3D.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drawWgpuScene3D.d.ts","sourceRoot":"","sources":["../src/drawWgpuScene3D.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,QAAQ,EAKR,IAAI,EAGJ,iBAAiB,EACjB,MAAM,EAIN,eAAe,EAEf,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AA0BlC,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACnC,aAAa,CAAC,EAAE,QAAQ,CAAC,2BAA2B,CAAC,GACpD,IAAI,CAoEN;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAG1F"}
|
package/dist/drawWgpuScene3D.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createMatrix3, createMatrix4, setMatrix3NormalFromMatrix4 } from '@flighthq/geometry/contract';
|
|
2
2
|
import { getNodeWorldMatrix4 } from '@flighthq/node/contract';
|
|
3
|
-
import { declareWgpuRenderTargetColorSpace,
|
|
3
|
+
import { declareWgpuRenderTargetColorSpace, getWgpuColorAdjustmentMaterialFeature, } from '@flighthq/render-wgpu/contract';
|
|
4
4
|
import { prepareScene3DRender } from '@flighthq/render/contract';
|
|
5
5
|
import { getNode3DRuntime, getNode3DWorldAlpha } from '@flighthq/scene3d/contract';
|
|
6
6
|
import { BlendMode, StandardMaterialKind, MAX_FORWARD_LIGHTS } from '@flighthq/types/contract';
|
|
@@ -104,7 +104,7 @@ function drawEntries(state, entries, camera, blended) {
|
|
|
104
104
|
let boundSkinned;
|
|
105
105
|
let boundColorAdjustment;
|
|
106
106
|
let boundColorMatrix;
|
|
107
|
-
const colorAdjustmentFeatureEnabled =
|
|
107
|
+
const colorAdjustmentFeatureEnabled = getWgpuColorAdjustmentMaterialFeature(state) !== null;
|
|
108
108
|
for (let i = 0; i < entries.length; i++) {
|
|
109
109
|
const entry = entries[i];
|
|
110
110
|
runtime.activeBlendMode = blended ? getMaterialBlendMode(entry.material) : null;
|
|
@@ -134,6 +134,7 @@ function drawEntries(state, entries, camera, blended) {
|
|
|
134
134
|
proxy.colorScaleBias = colorAdjusted ? entry.colorScaleBias : null;
|
|
135
135
|
proxy.colorMatrix = colorAdjusted ? entry.colorMatrix : null;
|
|
136
136
|
proxy.jointMatrices = skinned ? entry.mesh.skin.skeleton.jointMatrices : null;
|
|
137
|
+
proxy.normalMatrices = skinned ? entry.mesh.skin.skeleton.normalMatrices : null;
|
|
137
138
|
proxy.material = entry.material;
|
|
138
139
|
proxy.normalMatrix = scratchNormalMatrix;
|
|
139
140
|
proxy.subset = entry.subset;
|
|
@@ -194,6 +195,7 @@ const proxy = {
|
|
|
194
195
|
colorMatrix: null,
|
|
195
196
|
colorScaleBias: null,
|
|
196
197
|
jointMatrices: null,
|
|
198
|
+
normalMatrices: null,
|
|
197
199
|
material: { kind: StandardMaterialKind },
|
|
198
200
|
normalMatrix: createMatrix3(),
|
|
199
201
|
subset: { indexCount: 0, indexOffset: 0 },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawWgpuScene3D.js","sourceRoot":"","sources":["../src/drawWgpuScene3D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AACxG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"drawWgpuScene3D.js","sourceRoot":"","sources":["../src/drawWgpuScene3D.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Scene3DKindUsage, SceneCoverageEntry, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
|
-
export declare function explainWgpuScene3DCoverage(out: SceneCoverageEntry[], state: WgpuRenderState, usage: Readonly<Scene3DKindUsage
|
|
1
|
+
import type { Scene3DKindUsage, SceneCoverageCatalog, SceneCoverageEntry, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
|
+
export declare function explainWgpuScene3DCoverage(out: SceneCoverageEntry[], state: WgpuRenderState, usage: Readonly<Scene3DKindUsage>, catalog: SceneCoverageCatalog): void;
|
|
3
3
|
export declare function hasWgpuScene3DCoverage(state: WgpuRenderState, usage: Readonly<Scene3DKindUsage>): boolean;
|
|
4
4
|
//# sourceMappingURL=explainWgpuScene3DCoverage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explainWgpuScene3DCoverage.d.ts","sourceRoot":"","sources":["../src/explainWgpuScene3DCoverage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"explainWgpuScene3DCoverage.d.ts","sourceRoot":"","sources":["../src/explainWgpuScene3DCoverage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAkBlC,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACjC,OAAO,EAAE,oBAAoB,GAC5B,IAAI,CAGN;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAEzG"}
|
|
@@ -1,75 +1,86 @@
|
|
|
1
1
|
import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu/contract';
|
|
2
|
-
import {
|
|
3
|
-
import { RenderRegistry, SceneCoverage, StandardMaterialKind } from '@flighthq/types/contract';
|
|
4
|
-
import { getWgpuScene3DRuntime } from './wgpuScene3DRuntime';
|
|
2
|
+
import { RegistryEntryState, RenderRegistry, RequirementFacet, SceneCoverage, StandardMaterialKind, } from '@flighthq/types/contract';
|
|
5
3
|
// Clears `out`, then reports every kind in `usage` with how well this state is wired for it — satisfied
|
|
6
4
|
// ones included, so one call is a complete manifest. The WebGPU twin of explainGlScene3DCoverage, and
|
|
7
5
|
// the answering half of the scene↔render seam: @flighthq/scene3d says what a document uses, and this —
|
|
8
|
-
// the package that owns the WebGPU registries — says which of those it can serve.
|
|
6
|
+
// the package that owns the WebGPU registries — says which of those it can serve. The verdict reads the
|
|
7
|
+
// live registry; `catalog`, the caller's complete WebGPU inventory, supplies the primary remedy only
|
|
8
|
+
// for a shortfall.
|
|
9
9
|
//
|
|
10
10
|
// Proactive, unlike explainRenderRegistryMisses, which reports what already missed during a frame. Ask
|
|
11
11
|
// this after loading a document and before the first draw, while the answer is still actionable.
|
|
12
|
-
export function explainWgpuScene3DCoverage(out, state, usage) {
|
|
12
|
+
export function explainWgpuScene3DCoverage(out, state, usage, catalog) {
|
|
13
13
|
out.length = 0;
|
|
14
|
-
collectWgpuScene3DCoverageGaps(out, state, usage, false);
|
|
14
|
+
collectWgpuScene3DCoverageGaps(out, state, usage, false, catalog);
|
|
15
15
|
}
|
|
16
16
|
// Whether this state can draw every kind `usage` names, counting a fallback as a shortfall — the
|
|
17
17
|
// authored material is not what would appear. Stops at the first shortfall and never allocates.
|
|
18
18
|
export function hasWgpuScene3DCoverage(state, usage) {
|
|
19
|
-
return !collectWgpuScene3DCoverageGaps(null, state, usage, true);
|
|
19
|
+
return !collectWgpuScene3DCoverageGaps(null, state, usage, true, null);
|
|
20
20
|
}
|
|
21
21
|
// The single implementation both tiers read, so the boolean can never disagree with the explanation.
|
|
22
22
|
// `found` counts only real shortfalls, so appending satisfied entries never flips the predicate.
|
|
23
|
-
function collectWgpuScene3DCoverageGaps(out, state, usage, stopAtFirst) {
|
|
23
|
+
function collectWgpuScene3DCoverageGaps(out, state, usage, stopAtFirst, catalog) {
|
|
24
24
|
let found = false;
|
|
25
25
|
// drawScene3D resolves a subset's material by kind, then falls back to whatever is registered for
|
|
26
26
|
// StandardMaterialKind, then skips the subset. So an unregistered kind may still draw — as the
|
|
27
27
|
// standard material — which is a downgrade worth naming rather than a silence.
|
|
28
|
-
const materials =
|
|
29
|
-
const hasStandard = materials.
|
|
28
|
+
const materials = getWgpuRenderStateRuntime(state).registries.meshMaterialRenderers.entries;
|
|
29
|
+
const hasStandard = materials.get(StandardMaterialKind)?.state === RegistryEntryState.Bound;
|
|
30
30
|
for (let i = 0; i < usage.materialKinds.length; i++) {
|
|
31
31
|
const kind = usage.materialKinds[i];
|
|
32
|
-
if (materials.
|
|
33
|
-
out?.push({
|
|
32
|
+
if (materials.get(kind)?.state === RegistryEntryState.Bound) {
|
|
33
|
+
out?.push({
|
|
34
|
+
coverage: SceneCoverage.Satisfied,
|
|
35
|
+
facet: RequirementFacet.SceneMaterialKind,
|
|
36
|
+
kind,
|
|
37
|
+
registry: RenderRegistry.MaterialRenderer,
|
|
38
|
+
});
|
|
34
39
|
continue;
|
|
35
40
|
}
|
|
36
41
|
found = true;
|
|
37
42
|
if (stopAtFirst)
|
|
38
43
|
return true;
|
|
39
|
-
out?.push(
|
|
40
|
-
coverage: hasStandard ? SceneCoverage.Fallback : SceneCoverage.Missing,
|
|
41
|
-
kind,
|
|
42
|
-
registry: RenderRegistry.MaterialRenderer,
|
|
43
|
-
});
|
|
44
|
+
out?.push(createShortfallEntry(catalog, hasStandard, RequirementFacet.SceneMaterialKind, kind, RenderRegistry.MaterialRenderer));
|
|
44
45
|
}
|
|
45
46
|
// A texture whose source kind has no resolver samples nothing, so the map is simply absent from the
|
|
46
47
|
// draw — the untextured-model failure this seam exists to surface before it reaches a frame.
|
|
47
|
-
const resolvers = getWgpuRenderStateRuntime(state).
|
|
48
|
+
const resolvers = getWgpuRenderStateRuntime(state).registries.textureResolvers;
|
|
48
49
|
for (let i = 0; i < usage.textureSourceKinds.length; i++) {
|
|
49
50
|
const kind = usage.textureSourceKinds[i];
|
|
50
|
-
if (resolvers
|
|
51
|
-
out?.push({
|
|
51
|
+
if (resolvers.entries.get(kind)?.state === RegistryEntryState.Bound) {
|
|
52
|
+
out?.push({
|
|
53
|
+
coverage: SceneCoverage.Satisfied,
|
|
54
|
+
facet: RequirementFacet.SceneTextureSourceKind,
|
|
55
|
+
kind,
|
|
56
|
+
registry: RenderRegistry.TextureResolver,
|
|
57
|
+
});
|
|
52
58
|
continue;
|
|
53
59
|
}
|
|
54
60
|
found = true;
|
|
55
61
|
if (stopAtFirst)
|
|
56
62
|
return true;
|
|
57
|
-
out?.push(
|
|
63
|
+
out?.push(createShortfallEntry(catalog, false, RequirementFacet.SceneTextureSourceKind, kind, RenderRegistry.TextureResolver));
|
|
58
64
|
}
|
|
59
65
|
// The shaded compiler assembles base + ordered modifiers into ONE program, so an unregistered snippet
|
|
60
66
|
// does not fail a single lookup — it fails the whole material. A modifier kind is therefore always
|
|
61
|
-
//
|
|
62
|
-
const snippets =
|
|
67
|
+
// a total absence, never a fallback.
|
|
68
|
+
const snippets = getWgpuRenderStateRuntime(state).registries.modifierSnippets.entries;
|
|
63
69
|
for (let i = 0; i < usage.modifierKinds.length; i++) {
|
|
64
70
|
const kind = usage.modifierKinds[i];
|
|
65
|
-
if (snippets
|
|
66
|
-
out?.push({
|
|
71
|
+
if (snippets.get(kind)?.state === RegistryEntryState.Bound) {
|
|
72
|
+
out?.push({
|
|
73
|
+
coverage: SceneCoverage.Satisfied,
|
|
74
|
+
facet: RequirementFacet.SceneModifierKind,
|
|
75
|
+
kind,
|
|
76
|
+
registry: RenderRegistry.ModifierSnippet,
|
|
77
|
+
});
|
|
67
78
|
continue;
|
|
68
79
|
}
|
|
69
80
|
found = true;
|
|
70
81
|
if (stopAtFirst)
|
|
71
82
|
return true;
|
|
72
|
-
out?.push(
|
|
83
|
+
out?.push(createShortfallEntry(catalog, false, RequirementFacet.SceneModifierKind, kind, RenderRegistry.ModifierSnippet));
|
|
73
84
|
}
|
|
74
85
|
// usage.nodeKinds is deliberately NOT checked. The 3D pipeline collects meshes structurally
|
|
75
86
|
// (`geometry != null` in collectVisibleMeshes) rather than through the node-renderer registry, so no
|
|
@@ -78,4 +89,29 @@ function collectWgpuScene3DCoverageGaps(out, state, usage, stopAtFirst) {
|
|
|
78
89
|
// need nothing is this layer's call, not the scene's.
|
|
79
90
|
return found;
|
|
80
91
|
}
|
|
92
|
+
function createShortfallEntry(catalog, fallback, facet, kind, registry) {
|
|
93
|
+
const registration = findCatalogRegistration(catalog, kind, registry);
|
|
94
|
+
const base = { facet, kind, registry };
|
|
95
|
+
if (registration === null) {
|
|
96
|
+
return {
|
|
97
|
+
...base,
|
|
98
|
+
coverage: fallback ? SceneCoverage.FallbackUnavailable : SceneCoverage.Unavailable,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
...base,
|
|
103
|
+
coverage: fallback ? SceneCoverage.FallbackRemediable : SceneCoverage.Unregistered,
|
|
104
|
+
module: registration.module,
|
|
105
|
+
registrar: registration.registrar,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function findCatalogRegistration(catalog, kind, registry) {
|
|
109
|
+
if (catalog === null)
|
|
110
|
+
return null;
|
|
111
|
+
for (const entry of catalog) {
|
|
112
|
+
if (entry.kind === kind && entry.registry === registry)
|
|
113
|
+
return entry.registrations[0] ?? null;
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
81
117
|
//# sourceMappingURL=explainWgpuScene3DCoverage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explainWgpuScene3DCoverage.js","sourceRoot":"","sources":["../src/explainWgpuScene3DCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"explainWgpuScene3DCoverage.js","sourceRoot":"","sources":["../src/explainWgpuScene3DCoverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getWgpuColorAdjustmentMaterialFeature } from '@flighthq/render-wgpu/contract';
|
|
2
2
|
import { WGPU_MESH_FRAGMENT_TAIL } from './wgpuMeshFragmentTail';
|
|
3
3
|
import { createWgpuMeshPipeline, ensureWgpuPerMapMaterialBinding, ensureWgpuScene3DPipeline, ensureWgpuShadowSampleLayout, getWgpuMeshPreludeWgsl, getWgpuMaterialSampler, resolveWgpuMaterialTextureView, spliceWgpuColorAdjustmentPrelude, stashWgpuUvTransform, WGPU_DIRECTIONAL_SHADOW_WGSL, } from './wgpuMeshPipeline';
|
|
4
4
|
import { getWgpuScene3DRuntime, getWgpuSkinningAdapter } from './wgpuScene3DRuntime';
|
|
@@ -90,7 +90,7 @@ export function ensureWgpuClassicPipeline(state, key, format) {
|
|
|
90
90
|
hasColorAdjustment: getWgpuScene3DRuntime(state).activeColorAdjustmentRun,
|
|
91
91
|
hasColorMatrix: getWgpuScene3DRuntime(state).activeColorMatrixRun,
|
|
92
92
|
};
|
|
93
|
-
return ensureWgpuScene3DPipeline(state, `classic:${format}|${buildWgpuClassicDefineKey(fullKey)}`, (blended, skinned) => compileWgpuClassicPipeline(state, fullKey, format, blended, skinned,
|
|
93
|
+
return ensureWgpuScene3DPipeline(state, `classic:${format}|${buildWgpuClassicDefineKey(fullKey)}`, (blended, skinned) => compileWgpuClassicPipeline(state, fullKey, format, blended, skinned, getWgpuColorAdjustmentMaterialFeature(state)));
|
|
94
94
|
}
|
|
95
95
|
// The full WGSL module source for a define key: the const-flag block (lighting model first) + the
|
|
96
96
|
// shared mesh prelude (Frame/Draw/vs_main) + the classic material block + fs_main.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuClassicPrelude.js","sourceRoot":"","sources":["../src/wgpuClassicPrelude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"wgpuClassicPrelude.js","sourceRoot":"","sources":["../src/wgpuClassicPrelude.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuMeshMaterialRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuMeshMaterialRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuMeshMaterialRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuMeshMaterialRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAM1G,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,wBAAwB,GAAG,IAAI,CAG/G;AAMD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,wBAAwB,GACjC,IAAI,CAON;AAMD,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,GAClC,wBAAwB,GAAG,IAAI,CAQjC"}
|
|
@@ -1,29 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { withRegistryTableEntry } from '@flighthq/registry/contract';
|
|
2
|
+
import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu/contract';
|
|
3
|
+
import { RegistryEntryState, StandardMaterialKind } from '@flighthq/types/contract';
|
|
3
4
|
// Returns the 3D mesh-material renderer registered for a kind on this state, or null. The 3D scene
|
|
4
|
-
// analog of getWgpuMaterialRenderer; reads scene-wgpu's own per-state registry
|
|
5
|
-
//
|
|
5
|
+
// analog of getWgpuMaterialRenderer; reads scene-wgpu's own per-state persistent registry table,
|
|
6
|
+
// distinct from the 2D material-renderer table.
|
|
6
7
|
export function getWgpuMeshMaterialRenderer(state, kind) {
|
|
7
|
-
|
|
8
|
+
const entry = getWgpuRenderStateRuntime(state).registries.meshMaterialRenderers.entries.get(kind);
|
|
9
|
+
return entry?.state === RegistryEntryState.Bound ? entry.value : null;
|
|
8
10
|
}
|
|
9
11
|
// Registers a 3D mesh-material renderer against a material kind on this state. Opt-in: drawScene3D only
|
|
10
12
|
// draws subsets whose material kind (or StandardMaterialKind) has a renderer here. Call
|
|
11
13
|
// registerWgpuStandardPbrMaterial for the built-in StandardPbr path. Mirrors registerWgpuMaterialRenderer
|
|
12
14
|
// but writes scene-wgpu's separate 3D registry.
|
|
13
15
|
export function registerWgpuMeshMaterialRenderer(state, kind, renderer) {
|
|
14
|
-
|
|
16
|
+
const runtime = getWgpuRenderStateRuntime(state);
|
|
17
|
+
runtime.registries.meshMaterialRenderers = withRegistryTableEntry(runtime.registries.meshMaterialRenderers, kind, renderer);
|
|
15
18
|
}
|
|
16
19
|
// Resolves a mesh subset's material to its registered 3D renderer: by the material's kind, else the
|
|
17
20
|
// renderer registered for StandardMaterialKind, else null. drawScene3D skips a subset whose material
|
|
18
21
|
// resolves to null (no built-in fallback — every material, including the default, enters only through
|
|
19
22
|
// registration). Mirrors resolveWgpuMaterialRenderer over the 3D registry.
|
|
20
23
|
export function resolveWgpuMeshMaterialRenderer(state, material) {
|
|
21
|
-
const
|
|
24
|
+
const entries = getWgpuRenderStateRuntime(state).registries.meshMaterialRenderers.entries;
|
|
22
25
|
if (material !== null) {
|
|
23
|
-
const
|
|
24
|
-
if (
|
|
25
|
-
return
|
|
26
|
+
const entry = entries.get(material.kind);
|
|
27
|
+
if (entry?.state === RegistryEntryState.Bound)
|
|
28
|
+
return entry.value;
|
|
26
29
|
}
|
|
27
|
-
|
|
30
|
+
const fallback = entries.get(StandardMaterialKind);
|
|
31
|
+
return fallback?.state === RegistryEntryState.Bound ? fallback.value : null;
|
|
28
32
|
}
|
|
29
33
|
//# sourceMappingURL=wgpuMeshMaterialRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuMeshMaterialRegistry.js","sourceRoot":"","sources":["../src/wgpuMeshMaterialRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuMeshMaterialRegistry.js","sourceRoot":"","sources":["../src/wgpuMeshMaterialRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,mGAAmG;AACnG,iGAAiG;AACjG,gDAAgD;AAChD,MAAM,UAAU,2BAA2B,CAAC,KAAsB,EAAE,IAAU;IAC5E,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClG,OAAO,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,CAAC;AAED,wGAAwG;AACxG,wFAAwF;AACxF,0GAA0G;AAC1G,gDAAgD;AAChD,MAAM,UAAU,gCAAgC,CAC9C,KAAsB,EACtB,IAAU,EACV,QAAkC;IAElC,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,UAAU,CAAC,qBAAqB,GAAG,sBAAsB,CAC/D,OAAO,CAAC,UAAU,CAAC,qBAAqB,EACxC,IAAI,EACJ,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,qGAAqG;AACrG,sGAAsG;AACtG,2EAA2E;AAC3E,MAAM,UAAU,+BAA+B,CAC7C,KAAsB,EACtB,QAAmC;IAEnC,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC1F,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IACpE,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACnD,OAAO,QAAQ,EAAE,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuMeshPipeline.d.ts","sourceRoot":"","sources":["../src/wgpuMeshPipeline.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAGV,mBAAmB,EACnB,gBAAgB,EAChB,kCAAkC,EAClC,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAYlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAOpE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAoBpG;AAKD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,SAAS,cAAc,EAAE,GAC/B,YAAY,CAOd;AAKD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,KAAK,EAAE,SAAS,cAAc,EAAE,GAC/B,YAAY,CAMd;AAUD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;IAC1C,MAAM,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,uBAAuB,EAAE,kBAAkB,CAAC;IAC5C,MAAM,EAAE,eAAe,CAAC;IACxB,wBAAwB,CAAC,EAAE,kBAAkB,CAAC;IAC9C,qBAAqB,CAAC,EAAE,kBAAkB,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC,CAAC,GACD,gBAAgB,CAuDlB;AAaD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACnC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC/B,IAAI,
|
|
1
|
+
{"version":3,"file":"wgpuMeshPipeline.d.ts","sourceRoot":"","sources":["../src/wgpuMeshPipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/wgpuMeshPipeline.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getCamera3DViewProjectionMatrix4 } from '@flighthq/camera/contract';
|
|
2
|
-
import { createMatrix3, createMatrix4
|
|
1
|
+
import { getCamera3DPosition, getCamera3DViewProjectionMatrix4 } from '@flighthq/camera/contract';
|
|
2
|
+
import { createMatrix3, createMatrix4 } from '@flighthq/geometry/contract';
|
|
3
3
|
import { getWgpuBlendState, getWgpuRenderStateRuntime, getWgpuSampler, resolveWgpuTexture, } from '@flighthq/render-wgpu/contract';
|
|
4
4
|
import { getTextureUvMatrix, hasTextureSource, hasTextureUvTransform } from '@flighthq/texture/contract';
|
|
5
5
|
import { BlendMode, MAX_DIRECTIONAL_SHADOW_PCF_RADIUS, MAX_FORWARD_LIGHTS, SCENE_LIGHT_HEMISPHERE_OFFSET, SCENE_LIGHT_HEMISPHERE_STRIDE, SCENE_LIGHT_POINT_OFFSET, SCENE_LIGHT_POINT_STRIDE, SCENE_LIGHT_SPOT_OFFSET, SCENE_LIGHT_SPOT_STRIDE, } from '@flighthq/types/contract';
|
|
@@ -71,7 +71,7 @@ export function createWgpuMeshPipeline(state, options) {
|
|
|
71
71
|
const blendMode = options.blended ? (sceneRuntime.activeBlendMode ?? BlendMode.Normal) : null;
|
|
72
72
|
const bindGroupLayouts = [
|
|
73
73
|
layouts.frameBindGroupLayout,
|
|
74
|
-
options.skinned && skinning !== null ? skinning.
|
|
74
|
+
options.skinned && skinning !== null ? skinning.getMeshDrawLayout(state) : layouts.drawBindGroupLayout,
|
|
75
75
|
options.materialBindGroupLayout,
|
|
76
76
|
];
|
|
77
77
|
if (options.extraBindGroupLayout !== undefined) {
|
|
@@ -142,20 +142,35 @@ export function drawWgpuMeshSubset(state, proxy, geometry) {
|
|
|
142
142
|
if (subset.indexCount === 0)
|
|
143
143
|
return;
|
|
144
144
|
const upload = ensureWgpuMeshUpload(state, geometry, scene.activeMeshPipeline.skinned);
|
|
145
|
-
if (upload === null || upload.indexBuffer === null)
|
|
146
|
-
return;
|
|
147
|
-
const drawBindGroup = writeWgpuDrawUniform(state, proxy);
|
|
148
145
|
const activePipeline = scene.activeMeshPipeline;
|
|
149
146
|
const jointMatrices = proxy.jointMatrices ?? null;
|
|
147
|
+
const normalMatrices = proxy.normalMatrices ?? null;
|
|
150
148
|
const skinning = scene.skinningAdapter;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
149
|
+
// The mesh path binds the layout carrying BOTH palettes, so it must supply both. Requiring the normal
|
|
150
|
+
// palette here as well keeps a half-supplied bind group from ever being built — a bind group must
|
|
151
|
+
// satisfy every binding its layout declares, so one missing palette is a validation failure, not a
|
|
152
|
+
// degraded draw.
|
|
153
|
+
//
|
|
154
|
+
// Both palettes are claimed BEFORE the Draw uniform is written: each returns the arena base its region
|
|
155
|
+
// starts at, and those bases ride in that uniform. Writing first would publish a base for a region this
|
|
156
|
+
// draw has not been given yet.
|
|
157
|
+
const skinDrawBindGroup = activePipeline.skinned && jointMatrices !== null && normalMatrices !== null && skinning !== null
|
|
158
|
+
? skinning.getMeshDrawBindGroup(state, jointMatrices, normalMatrices)
|
|
159
|
+
: null;
|
|
160
|
+
const drawBindGroup = writeWgpuDrawUniform(state, proxy);
|
|
161
|
+
const boundDrawGroup = skinDrawBindGroup ?? drawBindGroup;
|
|
154
162
|
_dynamicOffsets[0] = scene.pendingDrawOffset;
|
|
155
163
|
pass.setBindGroup(1, boundDrawGroup, _dynamicOffsets);
|
|
156
164
|
pass.setVertexBuffer(0, upload.vertexBuffer);
|
|
157
|
-
|
|
158
|
-
|
|
165
|
+
// Non-indexed geometry draws the vertex range directly, matching glMeshProgram's drawElements /
|
|
166
|
+
// drawArrays split. The subset's indexCount/indexOffset address vertices in that case.
|
|
167
|
+
if (upload.indexBuffer === null) {
|
|
168
|
+
pass.draw(subset.indexCount, 1, subset.indexOffset, 0);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
pass.setIndexBuffer(upload.indexBuffer, upload.indexFormat);
|
|
172
|
+
pass.drawIndexed(subset.indexCount, 1, subset.indexOffset, 0, 0);
|
|
173
|
+
}
|
|
159
174
|
}
|
|
160
175
|
// Resolves the shared Frame bind group, creating it from the shared Frame layout + Frame buffer on
|
|
161
176
|
// first use. Every family pipeline declares the same group(0) layout, so this one bind group is valid
|
|
@@ -774,8 +789,13 @@ export function writeWgpuDrawUniform(state, proxy) {
|
|
|
774
789
|
// the material's alpha and 'mask' resolves fully opaque at its cutoff. The tail reads it so the
|
|
775
790
|
// premultiply cannot darken a surface nothing is compositing. Mirrors scene-gl's u_alphaIsCoverage.
|
|
776
791
|
u[floatOffset + 41] = isWgpuMeshAlphaCoverage(proxy.material) ? 1 : 0;
|
|
777
|
-
|
|
778
|
-
|
|
792
|
+
// z and w publish this draw's skin arena base texel indices — pose and normal. The palette upload sets
|
|
793
|
+
// them; consuming them here and clearing them back to zero is what stops a rigid draw that follows a
|
|
794
|
+
// skinned one from inheriting a base and sampling another skeleton's region.
|
|
795
|
+
u[floatOffset + 42] = scene.pendingSkinPaletteBase;
|
|
796
|
+
u[floatOffset + 43] = scene.pendingSkinNormalPaletteBase;
|
|
797
|
+
scene.pendingSkinPaletteBase = 0;
|
|
798
|
+
scene.pendingSkinNormalPaletteBase = 0;
|
|
779
799
|
// The registered adjustment feature reuses the otherwise 256-byte-aligned Draw ring slot: a
|
|
780
800
|
// promoted shader widens its Draw struct by these two vec4s, while an untinted draw performs no
|
|
781
801
|
// writes and its lean shader does not declare or read them.
|
|
@@ -921,8 +941,11 @@ export function writeWgpuFrameUniform(state, camera, lights) {
|
|
|
921
941
|
const vp = webGpuVp;
|
|
922
942
|
for (let i = 0; i < 16; i++)
|
|
923
943
|
f[i] = vp[i];
|
|
924
|
-
|
|
925
|
-
|
|
944
|
+
// Delegates to the canonical eye-position primitive instead of inverting the view here. A view matrix
|
|
945
|
+
// is orthonormal by contract, so the eye is -(Rᵀ·t) — a transpose, with no determinant and no
|
|
946
|
+
// division, which cannot fail. Inverting a 4x4 to read three numbers out of it was both the slower
|
|
947
|
+
// way and the only reason this write had a failure mode to report.
|
|
948
|
+
getCamera3DPosition(scratchCameraPosition, camera);
|
|
926
949
|
f[16] = scratchCameraPosition.x;
|
|
927
950
|
f[17] = scratchCameraPosition.y;
|
|
928
951
|
f[18] = scratchCameraPosition.z;
|
|
@@ -1086,7 +1109,6 @@ const VERTEX_BUFFER_LAYOUTS = [
|
|
|
1086
1109
|
];
|
|
1087
1110
|
const scratchViewProjection = createMatrix4();
|
|
1088
1111
|
const scratchWebGpuViewProjection = createMatrix4();
|
|
1089
|
-
const scratchInverseView = createMatrix4();
|
|
1090
1112
|
const scratchCameraPosition = { x: 0, y: 0, z: 0 };
|
|
1091
1113
|
const _frameScratch = new Float32Array(FRAME_UNIFORM_BYTES / 4);
|
|
1092
1114
|
const _dynamicOffsets = new Uint32Array(1);
|