@flighthq/render-wgpu 0.3.0-next.1530.70058bd → 0.3.0-next.1560.03a2b36
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/wgpuMaterialRegistry.d.ts.map +1 -1
- package/dist/wgpuMaterialRegistry.js +10 -9
- package/dist/wgpuMaterialRegistry.js.map +1 -1
- package/dist/wgpuTextureResolver.d.ts.map +1 -1
- package/dist/wgpuTextureResolver.js +2 -2
- package/dist/wgpuTextureResolver.js.map +1 -1
- package/package.json +11 -11
- package/src/wgpuMaterialRegistry.test.ts +28 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuMaterialRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuMaterialRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAKtG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,oBAAoB,GAAG,IAAI,CAGvG;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAGrH;AAMD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,GAAG,IAAI,GACxB,oBAAoB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"wgpuMaterialRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuMaterialRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAKtG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,oBAAoB,GAAG,IAAI,CAGvG;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAGrH;AAMD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,GAAG,IAAI,GACxB,oBAAoB,GAAG,IAAI,CAY7B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StandardMaterialKind } from '@flighthq/types/contract';
|
|
1
|
+
import { RenderRegistry, StandardMaterialKind } from '@flighthq/types/contract';
|
|
2
2
|
import { getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
3
3
|
export function getWgpuMaterialRenderer(state, kind) {
|
|
4
4
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
@@ -15,13 +15,14 @@ export function registerWgpuMaterialRenderer(state, kind, renderer) {
|
|
|
15
15
|
export function resolveWgpuMaterialRenderer(state, material) {
|
|
16
16
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
17
17
|
const map = runtime.materialRendererMap;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
const kind = material?.kind ?? StandardMaterialKind;
|
|
19
|
+
const renderer = map?.get(kind) ?? null;
|
|
20
|
+
if (renderer !== null)
|
|
21
|
+
return renderer;
|
|
22
|
+
// The requested kind is absent. StandardMaterialKind still stands in where it is registered, but the
|
|
23
|
+
// miss is reported either way — substituting a different shading family is as much worth knowing as
|
|
24
|
+
// drawing nothing, and the seam records one miss per kind, so neither case repeats.
|
|
25
|
+
runtime.registryMiss?.(RenderRegistry.MaterialRenderer, kind);
|
|
26
|
+
return kind === StandardMaterialKind ? null : (map?.get(StandardMaterialKind) ?? null);
|
|
26
27
|
}
|
|
27
28
|
//# sourceMappingURL=wgpuMaterialRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuMaterialRegistry.js","sourceRoot":"","sources":["../src/wgpuMaterialRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuMaterialRegistry.js","sourceRoot":"","sources":["../src/wgpuMaterialRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,UAAU,uBAAuB,CAAC,KAAsB,EAAE,IAAU;IACxE,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAsB,EAAE,IAAU,EAAE,QAA8B;IAC7G,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,mGAAmG;AACnG,sGAAsG;AACtG,+FAA+F;AAC/F,wFAAwF;AACxF,MAAM,UAAU,2BAA2B,CACzC,KAAsB,EACtB,QAAyB;IAEzB,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC;IACxC,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,oBAAoB,CAAC;IACpD,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACxC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IAEvC,qGAAqG;IACrG,oGAAoG;IACpG,oFAAoF;IACpF,OAAO,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,CAAC;AACzF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuTextureResolver.d.ts","sourceRoot":"","sources":["../src/wgpuTextureResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EAMtB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuTextureResolver.d.ts","sourceRoot":"","sources":["../src/wgpuTextureResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EAMtB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAalC,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAIjF;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE9E;AAED,wBAAgB,0CAA0C,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEvF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE7E;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE9E;AAID,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GACnC,IAAI,CAKN;AAKD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,WAAW,UAAQ,EACnB,iBAAiB,GAAE,sBAAiC,GACnD,gBAAgB,GAAG,IAAI,CAUzB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getTextureSampleColorSpace, getTextureSource, getTextureSourceKind } from '@flighthq/texture/contract';
|
|
2
|
-
import { BitmapTextureSourceKind, CompressedImageTextureSourceKind, ImageTextureSourceKind, RenderTargetTextureSourceKind, } from '@flighthq/types/contract';
|
|
2
|
+
import { BitmapTextureSourceKind, CompressedImageTextureSourceKind, ImageTextureSourceKind, RenderRegistry, RenderTargetTextureSourceKind, } from '@flighthq/types/contract';
|
|
3
3
|
import { bindWgpuBitmapTexture, bindWgpuCompressedImageTexture, bindWgpuImageResourceTexture } from './wgpuDraw';
|
|
4
4
|
import { getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
5
5
|
import { bindWgpuRenderTexture } from './wgpuRenderTexture';
|
|
@@ -40,7 +40,7 @@ export function resolveWgpuTexture(state, texture, premultiply = false, workingC
|
|
|
40
40
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
41
41
|
const resolver = runtime.wgpuTextureResolverRegistry?.get(sourceKind);
|
|
42
42
|
if (resolver === undefined) {
|
|
43
|
-
runtime.registryMiss?.(
|
|
43
|
+
runtime.registryMiss?.(RenderRegistry.TextureResolver, sourceKind);
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
46
|
return resolver(state, texture, premultiply, getTextureSampleColorSpace(texture.colorSpace, workingColorSpace));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuTextureResolver.js","sourceRoot":"","sources":["../src/wgpuTextureResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAchH,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AACjH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,UAAU,oCAAoC,CAAC,KAAsB;IACzE,iCAAiC,CAAC,KAAK,CAAC,CAAC;IACzC,gCAAgC,CAAC,KAAK,CAAC,CAAC;IACxC,iCAAiC,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAAsB;IACtE,2BAA2B,CAAC,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,0CAA0C,CAAC,KAAsB;IAC/E,2BAA2B,CAAC,KAAK,EAAE,gCAAgC,EAAE,iCAAiC,CAAC,CAAC;AAC1G,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAAsB;IACrE,2BAA2B,CAAC,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAAsB;IACtE,2BAA2B,CAAC,KAAK,EAAE,6BAA6B,EAAE,wBAAwB,CAAC,CAAC;AAC9F,CAAC;AAED,2FAA2F;AAC3F,iDAAiD;AACjD,MAAM,UAAU,2BAA2B,CACzC,KAAsB,EACtB,UAA6B,EAC7B,QAAoC;IAEpC,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,2BAA2B,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACrE,IAAI,QAAQ,KAAK,IAAI;QAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;QAC9C,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,sGAAsG;AACtG,uGAAuG;AACvG,+CAA+C;AAC/C,MAAM,UAAU,kBAAkB,CAChC,KAAsB,EACtB,OAA8B,EAC9B,WAAW,GAAG,KAAK,EACnB,oBAA4C,QAAQ;IAEpD,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,2BAA2B,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACtE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuTextureResolver.js","sourceRoot":"","sources":["../src/wgpuTextureResolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/render-wgpu",
|
|
3
|
-
"version": "0.3.0-next.
|
|
3
|
+
"version": "0.3.0-next.1560.03a2b36",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -36,16 +36,16 @@
|
|
|
36
36
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@flighthq/color": "0.3.0-next.
|
|
40
|
-
"@flighthq/entity": "0.3.0-next.
|
|
41
|
-
"@flighthq/scene2d": "0.3.0-next.
|
|
42
|
-
"@flighthq/geometry": "0.3.0-next.
|
|
43
|
-
"@flighthq/log": "0.3.0-next.
|
|
44
|
-
"@flighthq/render": "0.3.0-next.
|
|
45
|
-
"@flighthq/signals": "0.3.0-next.
|
|
46
|
-
"@flighthq/bitmap": "0.3.0-next.
|
|
47
|
-
"@flighthq/texture": "0.3.0-next.
|
|
48
|
-
"@flighthq/types": "0.3.0-next.
|
|
39
|
+
"@flighthq/color": "0.3.0-next.1560.03a2b36",
|
|
40
|
+
"@flighthq/entity": "0.3.0-next.1560.03a2b36",
|
|
41
|
+
"@flighthq/scene2d": "0.3.0-next.1560.03a2b36",
|
|
42
|
+
"@flighthq/geometry": "0.3.0-next.1560.03a2b36",
|
|
43
|
+
"@flighthq/log": "0.3.0-next.1560.03a2b36",
|
|
44
|
+
"@flighthq/render": "0.3.0-next.1560.03a2b36",
|
|
45
|
+
"@flighthq/signals": "0.3.0-next.1560.03a2b36",
|
|
46
|
+
"@flighthq/bitmap": "0.3.0-next.1560.03a2b36",
|
|
47
|
+
"@flighthq/texture": "0.3.0-next.1560.03a2b36",
|
|
48
|
+
"@flighthq/types": "0.3.0-next.1560.03a2b36"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@webgpu/types": "*",
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { addLogSink, createMemoryLogSink, getMemoryLogSinkEntries, removeLogSink } from '@flighthq/log/contract';
|
|
2
|
+
import { enableRenderRegistryGuards, explainRenderRegistryMisses } from '@flighthq/render/contract';
|
|
1
3
|
import type { Material, WgpuMaterialRenderer, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
|
-
import { StandardMaterialKind, EntityRuntimeKey } from '@flighthq/types/contract';
|
|
4
|
+
import { StandardMaterialKind, EntityRuntimeKey, RenderRegistry } from '@flighthq/types/contract';
|
|
3
5
|
|
|
4
6
|
import {
|
|
5
7
|
getWgpuMaterialRenderer,
|
|
@@ -12,7 +14,8 @@ const TestKind = 'TestMaterial';
|
|
|
12
14
|
const testRenderer: WgpuMaterialRenderer = { instanceFloatCount: 0, getShaderModule: () => ({}) as GPUShaderModule };
|
|
13
15
|
|
|
14
16
|
function makeState(): WgpuRenderState {
|
|
15
|
-
|
|
17
|
+
// `device` is what the guard's message table dispatches on to name the wgpu registrar.
|
|
18
|
+
const state = { device: {} } as WgpuRenderState;
|
|
16
19
|
state[EntityRuntimeKey] = createWgpuRenderStateRuntime();
|
|
17
20
|
return state;
|
|
18
21
|
}
|
|
@@ -53,4 +56,27 @@ describe('resolveWgpuMaterialRenderer', () => {
|
|
|
53
56
|
expect(resolveWgpuMaterialRenderer(state, makeMaterial('Other'))).toBe(testRenderer);
|
|
54
57
|
expect(resolveWgpuMaterialRenderer(state, null)).toBe(testRenderer);
|
|
55
58
|
});
|
|
59
|
+
|
|
60
|
+
it('reports the missing kind against the wgpu registrar, not the gl one', () => {
|
|
61
|
+
const state = makeState();
|
|
62
|
+
enableRenderRegistryGuards(state);
|
|
63
|
+
const sink = createMemoryLogSink(4);
|
|
64
|
+
addLogSink(sink.sink);
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
resolveWgpuMaterialRenderer(state, makeMaterial(TestKind));
|
|
68
|
+
|
|
69
|
+
expect(explainRenderRegistryMisses(state).misses).toEqual([
|
|
70
|
+
{ kind: TestKind, registry: RenderRegistry.MaterialRenderer },
|
|
71
|
+
]);
|
|
72
|
+
expect(getMemoryLogSinkEntries(sink)[0]?.data).toMatchObject({
|
|
73
|
+
kind: TestKind,
|
|
74
|
+
message:
|
|
75
|
+
'resolveWgpuMaterialRenderer: material kind has no registered renderer, so nodes using it do not draw — call registerWgpuMaterialRenderer(state, kind, renderer)',
|
|
76
|
+
registry: RenderRegistry.MaterialRenderer,
|
|
77
|
+
});
|
|
78
|
+
} finally {
|
|
79
|
+
removeLogSink(sink.sink);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
56
82
|
});
|