@flighthq/render-gl 0.3.0-next.1543.f490ae8 → 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/glMaterialRegistry.d.ts.map +1 -1
- package/dist/glMaterialRegistry.js +12 -10
- package/dist/glMaterialRegistry.js.map +1 -1
- package/dist/glTextureResolver.d.ts.map +1 -1
- package/dist/glTextureResolver.js +2 -2
- package/dist/glTextureResolver.js.map +1 -1
- package/package.json +10 -10
- package/src/glMaterialRegistry.test.ts +42 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glMaterialRegistry.d.ts","sourceRoot":"","sources":["../src/glMaterialRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAKlG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAEjG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAG/G;AAMD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"glMaterialRegistry.d.ts","sourceRoot":"","sources":["../src/glMaterialRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAKlG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAEjG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAG/G;AAMD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAYpH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StandardMaterialKind } from '@flighthq/types/contract';
|
|
1
|
+
import { RenderRegistry, StandardMaterialKind } from '@flighthq/types/contract';
|
|
2
2
|
import { getGlRenderStateRuntime } from './glRenderState';
|
|
3
3
|
export function getGlMaterialRenderer(state, kind) {
|
|
4
4
|
return getGlRenderStateRuntime(state).materialRendererMap?.get(kind) ?? null;
|
|
@@ -12,14 +12,16 @@ export function registerGlMaterialRenderer(state, kind, renderer) {
|
|
|
12
12
|
// exist — every material (including the default) enters only through user registration, and an
|
|
13
13
|
// unresolved material is a no-op (the node does not render), never a built-in fallback.
|
|
14
14
|
export function resolveGlMaterialRenderer(state, material) {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
16
|
+
const map = runtime.materialRendererMap;
|
|
17
|
+
const kind = material?.kind ?? StandardMaterialKind;
|
|
18
|
+
const renderer = map?.get(kind) ?? null;
|
|
19
|
+
if (renderer !== null)
|
|
20
|
+
return renderer;
|
|
21
|
+
// The requested kind is absent. StandardMaterialKind still stands in where it is registered, but the
|
|
22
|
+
// miss is reported either way — substituting a different shading family is as much worth knowing as
|
|
23
|
+
// drawing nothing, and the seam records one miss per kind, so neither case repeats.
|
|
24
|
+
runtime.registryMiss?.(RenderRegistry.MaterialRenderer, kind);
|
|
25
|
+
return kind === StandardMaterialKind ? null : (map?.get(StandardMaterialKind) ?? null);
|
|
24
26
|
}
|
|
25
27
|
//# sourceMappingURL=glMaterialRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glMaterialRegistry.js","sourceRoot":"","sources":["../src/glMaterialRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glMaterialRegistry.js","sourceRoot":"","sources":["../src/glMaterialRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,UAAU,qBAAqB,CAAC,KAAoB,EAAE,IAAU;IACpE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAoB,EAAE,IAAU,EAAE,QAA4B;IACvG,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,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,yBAAyB,CAAC,KAAoB,EAAE,QAAyB;IACvF,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,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":"glTextureResolver.d.ts","sourceRoot":"","sources":["../src/glTextureResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EAGtB,aAAa,EACb,iBAAiB,EAIjB,iBAAiB,EACjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glTextureResolver.d.ts","sourceRoot":"","sources":["../src/glTextureResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EAGtB,aAAa,EACb,iBAAiB,EAIjB,iBAAiB,EACjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAalC,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE1E;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEnF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEzE;AAGD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE1E;AAID,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GACjC,IAAI,CAKN;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAI7E;AAWD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,WAAW,UAAQ,EACnB,iBAAiB,GAAE,sBAAiC,GACnD,YAAY,GAAG,IAAI,CAUrB"}
|
|
@@ -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 { bindGlBitmapTexture, bindGlCompressedImageTexture, bindGlImageResourceTexture } from './glDraw';
|
|
4
4
|
import { getGlRenderStateRuntime } from './glRenderState';
|
|
5
5
|
import { bindGlRenderTexture } from './glRenderTexture';
|
|
@@ -47,7 +47,7 @@ export function resolveGlTexture(state, texture, premultiply = false, workingCol
|
|
|
47
47
|
const runtime = getGlRenderStateRuntime(state);
|
|
48
48
|
const resolver = runtime.glTextureResolverRegistry?.get(sourceKind);
|
|
49
49
|
if (resolver === undefined) {
|
|
50
|
-
runtime.registryMiss?.(
|
|
50
|
+
runtime.registryMiss?.(RenderRegistry.TextureResolver, sourceKind);
|
|
51
51
|
return null;
|
|
52
52
|
}
|
|
53
53
|
return resolver(state, texture, premultiply, getTextureSampleColorSpace(texture.colorSpace, workingColorSpace));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glTextureResolver.js","sourceRoot":"","sources":["../src/glTextureResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAahH,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,UAAU,+BAA+B,CAAC,KAAoB;IAClE,yBAAyB,CAAC,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,wCAAwC,CAAC,KAAoB;IAC3E,yBAAyB,CAAC,KAAK,EAAE,gCAAgC,EAAE,+BAA+B,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAAoB;IACjE,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;AAClF,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,+BAA+B,CAAC,KAAoB;IAClE,yBAAyB,CAAC,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,CAAC,CAAC;AAC1F,CAAC;AAED,2FAA2F;AAC3F,kGAAkG;AAClG,MAAM,UAAU,yBAAyB,CACvC,KAAoB,EACpB,UAA6B,EAC7B,QAAkC;IAElC,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,yBAAyB,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACnE,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,MAAM,UAAU,kCAAkC,CAAC,KAAoB;IACrE,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACtC,+BAA+B,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,qGAAqG;AACrG,wGAAwG;AACxG,oGAAoG;AACpG,qGAAqG;AACrG,wFAAwF;AACxF,mGAAmG;AACnG,uGAAuG;AACvG,sGAAsG;AACtG,uGAAuG;AACvG,MAAM,UAAU,gBAAgB,CAC9B,KAAoB,EACpB,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,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACpE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"glTextureResolver.js","sourceRoot":"","sources":["../src/glTextureResolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/render-gl",
|
|
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,15 +36,15 @@
|
|
|
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/log": "0.3.0-next.
|
|
42
|
-
"@flighthq/scene2d": "0.3.0-next.
|
|
43
|
-
"@flighthq/geometry": "0.3.0-next.
|
|
44
|
-
"@flighthq/render": "0.3.0-next.
|
|
45
|
-
"@flighthq/signals": "0.3.0-next.
|
|
46
|
-
"@flighthq/texture": "0.3.0-next.
|
|
47
|
-
"@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/log": "0.3.0-next.1560.03a2b36",
|
|
42
|
+
"@flighthq/scene2d": "0.3.0-next.1560.03a2b36",
|
|
43
|
+
"@flighthq/geometry": "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/texture": "0.3.0-next.1560.03a2b36",
|
|
47
|
+
"@flighthq/types": "0.3.0-next.1560.03a2b36"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"typescript": "^5.3.0"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { enableRenderRegistryGuards, explainRenderRegistryMisses } from '@flighthq/render/contract';
|
|
1
2
|
import type { GlMaterialRenderer, Material } from '@flighthq/types/contract';
|
|
2
|
-
import { StandardMaterialKind } from '@flighthq/types/contract';
|
|
3
|
+
import { RenderRegistry, StandardMaterialKind } from '@flighthq/types/contract';
|
|
3
4
|
|
|
4
5
|
import { getGlMaterialRenderer, registerGlMaterialRenderer, resolveGlMaterialRenderer } from './glMaterialRegistry';
|
|
5
6
|
import { createGlState } from './glTestHelper';
|
|
@@ -45,4 +46,44 @@ describe('resolveGlMaterialRenderer', () => {
|
|
|
45
46
|
expect(resolveGlMaterialRenderer(state, makeMaterial('Other'))).toBe(testRenderer);
|
|
46
47
|
expect(resolveGlMaterialRenderer(state, null)).toBe(testRenderer);
|
|
47
48
|
});
|
|
49
|
+
|
|
50
|
+
it('reports the missing kind, so an unresolved material is not an invisible node with clean logs', () => {
|
|
51
|
+
const { state } = createGlState();
|
|
52
|
+
enableRenderRegistryGuards(state);
|
|
53
|
+
|
|
54
|
+
resolveGlMaterialRenderer(state, makeMaterial(TestKind));
|
|
55
|
+
resolveGlMaterialRenderer(state, null);
|
|
56
|
+
|
|
57
|
+
expect(explainRenderRegistryMisses(state)).toEqual({
|
|
58
|
+
misses: [
|
|
59
|
+
{ kind: TestKind, registry: RenderRegistry.MaterialRenderer },
|
|
60
|
+
{ kind: StandardMaterialKind, registry: RenderRegistry.MaterialRenderer },
|
|
61
|
+
],
|
|
62
|
+
status: 'misses-recorded',
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('reports a kind that StandardMaterialKind silently stood in for', () => {
|
|
67
|
+
const { state } = createGlState();
|
|
68
|
+
enableRenderRegistryGuards(state);
|
|
69
|
+
registerGlMaterialRenderer(state, StandardMaterialKind, testRenderer);
|
|
70
|
+
|
|
71
|
+
// Substituting a different shading family draws something, but not what was asked for, so it is
|
|
72
|
+
// reported even though the node is visible.
|
|
73
|
+
expect(resolveGlMaterialRenderer(state, makeMaterial('Other'))).toBe(testRenderer);
|
|
74
|
+
|
|
75
|
+
expect(explainRenderRegistryMisses(state).misses).toEqual([
|
|
76
|
+
{ kind: 'Other', registry: RenderRegistry.MaterialRenderer },
|
|
77
|
+
]);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('records nothing once the kind resolves', () => {
|
|
81
|
+
const { state } = createGlState();
|
|
82
|
+
enableRenderRegistryGuards(state);
|
|
83
|
+
registerGlMaterialRenderer(state, TestKind, testRenderer);
|
|
84
|
+
|
|
85
|
+
resolveGlMaterialRenderer(state, makeMaterial(TestKind));
|
|
86
|
+
|
|
87
|
+
expect(explainRenderRegistryMisses(state)).toEqual({ misses: [], status: 'complete' });
|
|
88
|
+
});
|
|
48
89
|
});
|