@flighthq/render 0.3.0-next.906.07cea63 → 0.3.0
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/contract.d.ts +6 -1
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +6 -1
- package/dist/contract.js.map +1 -1
- package/dist/enableColorAdjustmentGuards.js +6 -6
- package/dist/enableColorAdjustmentGuards.js.map +1 -1
- package/dist/enableColorAdjustments.d.ts +4 -0
- package/dist/enableColorAdjustments.d.ts.map +1 -0
- package/dist/enableColorAdjustments.js +110 -0
- package/dist/enableColorAdjustments.js.map +1 -0
- package/dist/enableSceneRenderGuards.d.ts +22 -0
- package/dist/enableSceneRenderGuards.d.ts.map +1 -0
- package/dist/enableSceneRenderGuards.js +36 -0
- package/dist/enableSceneRenderGuards.js.map +1 -0
- package/dist/explainScene2DCoverage.d.ts +4 -0
- package/dist/explainScene2DCoverage.d.ts.map +1 -0
- package/dist/explainScene2DCoverage.js +57 -0
- package/dist/explainScene2DCoverage.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/renderProxy.d.ts.map +1 -1
- package/dist/renderProxy.js +34 -9
- package/dist/renderProxy.js.map +1 -1
- package/dist/renderRegistryGuards.d.ts +5 -0
- package/dist/renderRegistryGuards.d.ts.map +1 -0
- package/dist/renderRegistryGuards.js +87 -0
- package/dist/renderRegistryGuards.js.map +1 -0
- package/dist/renderRegistrySignals.d.ts +3 -0
- package/dist/renderRegistrySignals.d.ts.map +1 -0
- package/dist/renderRegistrySignals.js +19 -0
- package/dist/renderRegistrySignals.js.map +1 -0
- package/dist/renderState.d.ts +1 -0
- package/dist/renderState.d.ts.map +1 -1
- package/dist/renderState.js +26 -0
- package/dist/renderState.js.map +1 -1
- package/dist/renderTarget.d.ts +4 -2
- package/dist/renderTarget.d.ts.map +1 -1
- package/dist/renderTarget.js +52 -2
- package/dist/renderTarget.js.map +1 -1
- package/dist/renderTransform2d.d.ts.map +1 -1
- package/dist/renderTransform2d.js +4 -1
- package/dist/renderTransform2d.js.map +1 -1
- package/dist/renderer.d.ts +1 -0
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +16 -0
- package/dist/renderer.js.map +1 -1
- package/dist/scene2dWorkingColorSpace.d.ts +3 -0
- package/dist/scene2dWorkingColorSpace.d.ts.map +1 -0
- package/dist/scene2dWorkingColorSpace.js +19 -0
- package/dist/scene2dWorkingColorSpace.js.map +1 -0
- package/dist/sceneRender.d.ts +6 -2
- package/dist/sceneRender.d.ts.map +1 -1
- package/dist/sceneRender.js +47 -13
- package/dist/sceneRender.js.map +1 -1
- package/package.json +15 -12
- package/src/enableColorAdjustmentGuards.test.ts +6 -4
- package/src/enableColorAdjustments.test.ts +233 -0
- package/src/enableSceneRenderGuards.test.ts +96 -0
- package/src/explainScene2DCoverage.test.ts +113 -0
- package/src/renderProxy.test.ts +142 -11
- package/src/renderQueue.test.ts +1 -1
- package/src/renderRegistryGuards.test.ts +94 -0
- package/src/renderRegistrySignals.test.ts +15 -0
- package/src/renderState.test.ts +16 -1
- package/src/renderTarget.test.ts +113 -5
- package/src/renderTransform2d.test.ts +15 -1
- package/src/renderViewport.test.ts +1 -1
- package/src/renderer.test.ts +44 -1
- package/src/scene2dWorkingColorSpace.test.ts +11 -0
- package/src/sceneRender.test.ts +75 -2
- package/dist/renderColorScaleBias.d.ts +0 -3
- package/dist/renderColorScaleBias.d.ts.map +0 -1
- package/dist/renderColorScaleBias.js +0 -21
- package/dist/renderColorScaleBias.js.map +0 -1
- package/src/renderColorScaleBias.test.ts +0 -53
package/dist/contract.d.ts
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
|
+
export * from './enableSceneRenderGuards';
|
|
1
2
|
export * from './enableColorAdjustmentGuards';
|
|
3
|
+
export * from './enableColorAdjustments';
|
|
2
4
|
export * from './explainScene2DRender';
|
|
3
5
|
export * from './renderAppearance';
|
|
4
6
|
export * from './renderCache';
|
|
5
7
|
export * from './renderColor';
|
|
6
|
-
export * from './renderColorScaleBias';
|
|
7
8
|
export * from './renderer';
|
|
8
9
|
export * from './renderMaterial';
|
|
9
10
|
export * from './renderProxy';
|
|
10
11
|
export * from './renderProxyAdapter';
|
|
11
12
|
export * from './renderQueue';
|
|
13
|
+
export * from './explainScene2DCoverage';
|
|
14
|
+
export * from './renderRegistryGuards';
|
|
15
|
+
export * from './renderRegistrySignals';
|
|
12
16
|
export * from './renderState';
|
|
13
17
|
export * from './renderTarget';
|
|
14
18
|
export * from './renderTransform2d';
|
|
15
19
|
export * from './renderViewport';
|
|
16
20
|
export * from './sceneRender';
|
|
21
|
+
export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
|
|
17
22
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
|
+
export * from './enableSceneRenderGuards';
|
|
1
2
|
export * from './enableColorAdjustmentGuards';
|
|
3
|
+
export * from './enableColorAdjustments';
|
|
2
4
|
export * from './explainScene2DRender';
|
|
3
5
|
export * from './renderAppearance';
|
|
4
6
|
export * from './renderCache';
|
|
5
7
|
export * from './renderColor';
|
|
6
|
-
export * from './renderColorScaleBias';
|
|
7
8
|
export * from './renderer';
|
|
8
9
|
export * from './renderMaterial';
|
|
9
10
|
export * from './renderProxy';
|
|
10
11
|
export * from './renderProxyAdapter';
|
|
11
12
|
export * from './renderQueue';
|
|
13
|
+
export * from './explainScene2DCoverage';
|
|
14
|
+
export * from './renderRegistryGuards';
|
|
15
|
+
export * from './renderRegistrySignals';
|
|
12
16
|
export * from './renderState';
|
|
13
17
|
export * from './renderTarget';
|
|
14
18
|
export * from './renderTransform2d';
|
|
15
19
|
export * from './renderViewport';
|
|
16
20
|
export * from './sceneRender';
|
|
21
|
+
export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
|
|
17
22
|
//# sourceMappingURL=contract.js.map
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -5,17 +5,17 @@ import { getRenderStateRuntime } from './renderState';
|
|
|
5
5
|
export function areColorAdjustmentGuardsEnabled(state) {
|
|
6
6
|
return getRenderStateRuntime(state).colorAdjustmentUnsupportedGuard != null;
|
|
7
7
|
}
|
|
8
|
-
// Installs the shakeable color-adjustment
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
8
|
+
// Installs only the shakeable color-adjustment diagnostic on `state`: when enableColorAdjustments is
|
|
9
|
+
// also installed and a node's stack contains a non-matrix operation that neither the compact affine
|
|
10
|
+
// path nor the full 4×5 path can represent, the resolver reaches this guard through its independent
|
|
11
|
+
// nullable runtime slot and warns once. This does not enable accumulation or backend realization.
|
|
12
|
+
// Idempotent.
|
|
13
13
|
export function enableColorAdjustmentGuards(state) {
|
|
14
14
|
getRenderStateRuntime(state).colorAdjustmentUnsupportedGuard = warnUnsupportedColorAdjustment;
|
|
15
15
|
}
|
|
16
16
|
function warnUnsupportedColorAdjustment() {
|
|
17
17
|
logOnce('render:unsupported-color-adjustment', LogLevel.Warn, {
|
|
18
|
-
message: '
|
|
18
|
+
message: 'enableColorAdjustments: a per-object color adjustment is not inline-able because it has no 4×5 matrix representation. Use an Effect pass for the unsupported operation.',
|
|
19
19
|
}, 'render');
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=enableColorAdjustmentGuards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enableColorAdjustmentGuards.js","sourceRoot":"","sources":["../src/enableColorAdjustmentGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAAC,KAAkB;IAChE,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,+BAA+B,IAAI,IAAI,CAAC;AAC9E,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"enableColorAdjustmentGuards.js","sourceRoot":"","sources":["../src/enableColorAdjustmentGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAAC,KAAkB;IAChE,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,+BAA+B,IAAI,IAAI,CAAC;AAC9E,CAAC;AAED,qGAAqG;AACrG,oGAAoG;AACpG,oGAAoG;AACpG,kGAAkG;AAClG,cAAc;AACd,MAAM,UAAU,2BAA2B,CAAC,KAAkB;IAC5D,qBAAqB,CAAC,KAAK,CAAC,CAAC,+BAA+B,GAAG,8BAA8B,CAAC;AAChG,CAAC;AAED,SAAS,8BAA8B;IACrC,OAAO,CACL,qCAAqC,EACrC,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EACL,yKAAyK;KAC5K,EACD,QAAQ,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RenderState } from '@flighthq/types/contract';
|
|
2
|
+
export declare function areColorAdjustmentsEnabled(state: RenderState): boolean;
|
|
3
|
+
export declare function enableColorAdjustments(state: RenderState): void;
|
|
4
|
+
//# sourceMappingURL=enableColorAdjustments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableColorAdjustments.d.ts","sourceRoot":"","sources":["../src/enableColorAdjustments.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAMV,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAEtE;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAE/D"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { multiplyColorMatrix } from '@flighthq/adjustments/contract';
|
|
2
|
+
import { concatColorScaleBias, createColorScaleBias } from '@flighthq/materials/contract';
|
|
3
|
+
import { getNodeRuntime } from '@flighthq/node/contract';
|
|
4
|
+
import { getRenderStateRuntime } from './renderState';
|
|
5
|
+
// Returns whether color-adjustment accumulation is installed on `state`.
|
|
6
|
+
export function areColorAdjustmentsEnabled(state) {
|
|
7
|
+
return getRenderStateRuntime(state).colorAdjustmentResolver != null;
|
|
8
|
+
}
|
|
9
|
+
// Installs color-adjustment accumulation on `state`. The base render walk reaches this module only
|
|
10
|
+
// through a nullable runtime callback, so states that do not opt in retain one null check and do not
|
|
11
|
+
// pull @flighthq/adjustments or @flighthq/materials into their bundle. Backend feature registrars that
|
|
12
|
+
// can realize these values call this as part of their own opt-in. Idempotent.
|
|
13
|
+
export function enableColorAdjustments(state) {
|
|
14
|
+
getRenderStateRuntime(state).colorAdjustmentResolver = updateRenderProxyColorScaleBias;
|
|
15
|
+
}
|
|
16
|
+
// Hands the node's resolved color adjustment to the render node. A node's color-adjustment stack
|
|
17
|
+
// (NodeRuntime.colorAdjustments) is fused once into the affine `resolvedColorScaleBias` cache by the
|
|
18
|
+
// set-accessors on change — never per frame. The render walk then applies the local value first and its
|
|
19
|
+
// parent's inherited value second, matching the appearance and alpha axes: a transform on a container
|
|
20
|
+
// must reach every renderer-bearing descendant. Null and single-adjustment paths remain reference-only;
|
|
21
|
+
// only a node with both local and inherited adjustments performs composition. The result is the
|
|
22
|
+
// Adjustment-tier fold input; it is not a material and does not key the batch.
|
|
23
|
+
//
|
|
24
|
+
// Matrix-tier channel mixing travels through `resolvedColorMatrix`. A non-matrix operation that cannot
|
|
25
|
+
// be represented by either path leaves `colorAdjustmentsUnsupported` set, invoking the shakeable guard
|
|
26
|
+
// so unsupported adjustment data is reported rather than silently discarded.
|
|
27
|
+
function updateRenderProxyColorScaleBias(state, data, parentData) {
|
|
28
|
+
const runtime = getNodeRuntime(data.source);
|
|
29
|
+
const localColorScaleBias = runtime.resolvedColorScaleBias ?? null;
|
|
30
|
+
const localColorMatrix = runtime.resolvedColorMatrix ?? null;
|
|
31
|
+
const parentColorScaleBias = parentData?.colorScaleBias ?? null;
|
|
32
|
+
const parentColorMatrix = parentData?.colorMatrix ?? null;
|
|
33
|
+
if (localColorMatrix !== null || parentColorMatrix !== null) {
|
|
34
|
+
data.colorMatrix = resolveInheritedColorMatrix(data.colorMatrix, parentColorMatrix, parentColorScaleBias, localColorMatrix, localColorScaleBias);
|
|
35
|
+
data.colorScaleBias = null;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
data.colorMatrix = null;
|
|
39
|
+
data.colorScaleBias = resolveInheritedColorScaleBias(data.colorScaleBias, parentColorScaleBias, localColorScaleBias);
|
|
40
|
+
}
|
|
41
|
+
if (runtime.colorAdjustmentsUnsupported) {
|
|
42
|
+
getRenderStateRuntime(state).colorAdjustmentUnsupportedGuard?.(state, data.source);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function resolveInheritedColorScaleBias(previous, parent, local) {
|
|
46
|
+
if (parent === null)
|
|
47
|
+
return local;
|
|
48
|
+
if (local === null)
|
|
49
|
+
return parent;
|
|
50
|
+
const out = previous !== parent && previous !== local && previous !== null && inheritedColorScaleBiases.has(previous)
|
|
51
|
+
? previous
|
|
52
|
+
: createInheritedColorScaleBias();
|
|
53
|
+
// SWF and scene-graph semantics apply the local adjustment first, then the parent's adjustment.
|
|
54
|
+
concatColorScaleBias(out, parent, local);
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
function resolveInheritedColorMatrix(previous, parentMatrix, parentColorScaleBias, localMatrix, localColorScaleBias) {
|
|
58
|
+
if (parentMatrix === null && parentColorScaleBias === null)
|
|
59
|
+
return localMatrix;
|
|
60
|
+
if (localMatrix === null && localColorScaleBias === null)
|
|
61
|
+
return parentMatrix;
|
|
62
|
+
const parent = parentMatrix ?? writeColorScaleBiasMatrix(parentColorMatrixScratch, parentColorScaleBias);
|
|
63
|
+
const local = localMatrix ?? writeColorScaleBiasMatrix(localColorMatrixScratch, localColorScaleBias);
|
|
64
|
+
const out = previous !== parentMatrix &&
|
|
65
|
+
previous !== localMatrix &&
|
|
66
|
+
previous !== null &&
|
|
67
|
+
previous !== undefined &&
|
|
68
|
+
inheritedColorMatrices.has(previous)
|
|
69
|
+
? previous
|
|
70
|
+
: createInheritedColorMatrix();
|
|
71
|
+
return multiplyColorMatrix(parent, local, out);
|
|
72
|
+
}
|
|
73
|
+
function writeColorScaleBiasMatrix(out, value) {
|
|
74
|
+
out[0] = value.redScale;
|
|
75
|
+
out[1] = 0;
|
|
76
|
+
out[2] = 0;
|
|
77
|
+
out[3] = 0;
|
|
78
|
+
out[4] = value.redBias;
|
|
79
|
+
out[5] = 0;
|
|
80
|
+
out[6] = value.greenScale;
|
|
81
|
+
out[7] = 0;
|
|
82
|
+
out[8] = 0;
|
|
83
|
+
out[9] = value.greenBias;
|
|
84
|
+
out[10] = 0;
|
|
85
|
+
out[11] = 0;
|
|
86
|
+
out[12] = value.blueScale;
|
|
87
|
+
out[13] = 0;
|
|
88
|
+
out[14] = value.blueBias;
|
|
89
|
+
out[15] = 0;
|
|
90
|
+
out[16] = 0;
|
|
91
|
+
out[17] = 0;
|
|
92
|
+
out[18] = value.alphaScale;
|
|
93
|
+
out[19] = value.alphaBias;
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
function createInheritedColorScaleBias() {
|
|
97
|
+
const value = createColorScaleBias();
|
|
98
|
+
inheritedColorScaleBiases.add(value);
|
|
99
|
+
return value;
|
|
100
|
+
}
|
|
101
|
+
function createInheritedColorMatrix() {
|
|
102
|
+
const value = new Array(20);
|
|
103
|
+
inheritedColorMatrices.add(value);
|
|
104
|
+
return value;
|
|
105
|
+
}
|
|
106
|
+
const inheritedColorScaleBiases = new WeakSet();
|
|
107
|
+
const inheritedColorMatrices = new WeakSet();
|
|
108
|
+
const parentColorMatrixScratch = new Array(20);
|
|
109
|
+
const localColorMatrixScratch = new Array(20);
|
|
110
|
+
//# sourceMappingURL=enableColorAdjustments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableColorAdjustments.js","sourceRoot":"","sources":["../src/enableColorAdjustments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Uninstalls the guards installed by `enableSceneRenderGuards`. */
|
|
2
|
+
export declare function disableSceneRenderGuards(): void;
|
|
3
|
+
/**
|
|
4
|
+
* Installs the caller-facing scene-render guards (opt-in, dev-only). It warns once — through
|
|
5
|
+
* `@flighthq/log` — when a skinned mesh reaches frustum culling with no posed bounds, meaning the
|
|
6
|
+
* deform pass `prepareScene3DRender` documents as a precondition never ran.
|
|
7
|
+
*
|
|
8
|
+
* That is worth a message because the failure is invisible at the point of the mistake. A GPU-skinned
|
|
9
|
+
* mesh deforms in the shader, so its geometry bounds stay bind pose; without the deform pass, culling
|
|
10
|
+
* tests a swung limb against the box the character occupied in bind pose and removes it from the frame.
|
|
11
|
+
* The symptom is a limb or a whole character flickering out at certain angles, which reads as a
|
|
12
|
+
* culling bug or a camera bug — anything except a missing call in the frame loop.
|
|
13
|
+
*
|
|
14
|
+
* `prepareScene3DRender` cannot simply run the deform pass itself: that would make `@flighthq/render`
|
|
15
|
+
* depend on `@flighthq/skeleton3d` and bundle skinning into every rigid and 2D consumer. So the
|
|
16
|
+
* precondition is real and the guard is how it becomes discoverable.
|
|
17
|
+
*
|
|
18
|
+
* Not importing this module costs production nothing: the message and the `@flighthq/log` dependency
|
|
19
|
+
* live only here.
|
|
20
|
+
*/
|
|
21
|
+
export declare function enableSceneRenderGuards(): void;
|
|
22
|
+
//# sourceMappingURL=enableSceneRenderGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableSceneRenderGuards.d.ts","sourceRoot":"","sources":["../src/enableSceneRenderGuards.ts"],"names":[],"mappings":"AAMA,oEAAoE;AACpE,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { logOnce } from '@flighthq/log/contract';
|
|
2
|
+
import { LogLevel } from '@flighthq/types/contract';
|
|
3
|
+
import { setSkinnedMeshBoundsGuard } from './sceneRender';
|
|
4
|
+
/** Uninstalls the guards installed by `enableSceneRenderGuards`. */
|
|
5
|
+
export function disableSceneRenderGuards() {
|
|
6
|
+
setSkinnedMeshBoundsGuard(null);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Installs the caller-facing scene-render guards (opt-in, dev-only). It warns once — through
|
|
10
|
+
* `@flighthq/log` — when a skinned mesh reaches frustum culling with no posed bounds, meaning the
|
|
11
|
+
* deform pass `prepareScene3DRender` documents as a precondition never ran.
|
|
12
|
+
*
|
|
13
|
+
* That is worth a message because the failure is invisible at the point of the mistake. A GPU-skinned
|
|
14
|
+
* mesh deforms in the shader, so its geometry bounds stay bind pose; without the deform pass, culling
|
|
15
|
+
* tests a swung limb against the box the character occupied in bind pose and removes it from the frame.
|
|
16
|
+
* The symptom is a limb or a whole character flickering out at certain angles, which reads as a
|
|
17
|
+
* culling bug or a camera bug — anything except a missing call in the frame loop.
|
|
18
|
+
*
|
|
19
|
+
* `prepareScene3DRender` cannot simply run the deform pass itself: that would make `@flighthq/render`
|
|
20
|
+
* depend on `@flighthq/skeleton3d` and bundle skinning into every rigid and 2D consumer. So the
|
|
21
|
+
* precondition is real and the guard is how it becomes discoverable.
|
|
22
|
+
*
|
|
23
|
+
* Not importing this module costs production nothing: the message and the `@flighthq/log` dependency
|
|
24
|
+
* live only here.
|
|
25
|
+
*/
|
|
26
|
+
export function enableSceneRenderGuards() {
|
|
27
|
+
setSkinnedMeshBoundsGuard(warnOnUnposedSkinnedMesh);
|
|
28
|
+
}
|
|
29
|
+
function warnOnUnposedSkinnedMesh(_mesh) {
|
|
30
|
+
logOnce('render:skinned-mesh-without-deformed-bounds', LogLevel.Warn, {
|
|
31
|
+
message: 'prepareScene3DRender: a skinned mesh has no posed bounds, so culling is testing it against its ' +
|
|
32
|
+
'BIND POSE box and a deformed limb can be wrongly culled. Call prepareScene3DSkinning ' +
|
|
33
|
+
'(@flighthq/skeleton3d) before prepareScene3DRender each frame.',
|
|
34
|
+
}, 'render');
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=enableSceneRenderGuards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableSceneRenderGuards.js","sourceRoot":"","sources":["../src/enableSceneRenderGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,oEAAoE;AACpE,MAAM,UAAU,wBAAwB;IACtC,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,uBAAuB;IACrC,yBAAyB,CAAC,wBAAwB,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAqB;IACrD,OAAO,CACL,6CAA6C,EAC7C,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EACL,iGAAiG;YACjG,uFAAuF;YACvF,gEAAgE;KACnE,EACD,QAAQ,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RenderState, Scene2DKindUsage, SceneCoverageEntry } from '@flighthq/types/contract';
|
|
2
|
+
export declare function explainScene2DCoverage(out: SceneCoverageEntry[], state: RenderState, usage: Readonly<Scene2DKindUsage>): void;
|
|
3
|
+
export declare function hasScene2DCoverage(state: RenderState, usage: Readonly<Scene2DKindUsage>): boolean;
|
|
4
|
+
//# sourceMappingURL=explainScene2DCoverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainScene2DCoverage.d.ts","sourceRoot":"","sources":["../src/explainScene2DCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAelG,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAChC,IAAI,CAGN;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAEjG"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { RenderRegistry, SceneCoverage } from '@flighthq/types/contract';
|
|
2
|
+
import { getRenderStateRuntime } from './renderState';
|
|
3
|
+
// Clears `out`, then reports every requirement in `usage` that any 2D backend answers the same way,
|
|
4
|
+
// with how well this state is wired for it — satisfied entries included, so one call is a manifest.
|
|
5
|
+
//
|
|
6
|
+
// This covers the two registries that live on the BASE render-state runtime and so mean the same thing
|
|
7
|
+
// on Canvas, DOM, GL and WebGPU: the node-renderer map every backend dispatches through, and the shape
|
|
8
|
+
// command set every backend replays through when it rasterizes. A backend adds its own specifics — GL
|
|
9
|
+
// blend realizations, per-backend material renderers — on top of this, rather than restating it.
|
|
10
|
+
//
|
|
11
|
+
// Unlike the 3D seam, node kinds ARE a requirement here: the 2D pipeline resolves every node through
|
|
12
|
+
// `registerRenderer(state, kind, renderer)`, where the 3D pipeline collects meshes structurally.
|
|
13
|
+
export function explainScene2DCoverage(out, state, usage) {
|
|
14
|
+
out.length = 0;
|
|
15
|
+
collectScene2DCoverageGaps(out, state, usage, false);
|
|
16
|
+
}
|
|
17
|
+
// Whether this state can serve every node kind and shape command `usage` names. Stops at the first
|
|
18
|
+
// shortfall and never allocates. Use the explain form to find out WHICH requirement and how badly.
|
|
19
|
+
export function hasScene2DCoverage(state, usage) {
|
|
20
|
+
return !collectScene2DCoverageGaps(null, state, usage, true);
|
|
21
|
+
}
|
|
22
|
+
// The single implementation both tiers read, so the boolean can never disagree with the explanation.
|
|
23
|
+
// `found` counts only real shortfalls, so appending satisfied entries to `out` never flips the predicate.
|
|
24
|
+
function collectScene2DCoverageGaps(out, state, usage, stopAtFirst) {
|
|
25
|
+
let found = false;
|
|
26
|
+
const runtime = getRenderStateRuntime(state);
|
|
27
|
+
// A node kind with no renderer produces no render proxy, so the node and its whole subtree are
|
|
28
|
+
// absent from the frame — the loudest failure in this seam and the one worth asking about first.
|
|
29
|
+
for (let i = 0; i < usage.nodeKinds.length; i++) {
|
|
30
|
+
const kind = usage.nodeKinds[i];
|
|
31
|
+
if (runtime.rendererMap.has(kind)) {
|
|
32
|
+
out?.push({ coverage: SceneCoverage.Satisfied, kind, registry: RenderRegistry.NodeRenderer });
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
found = true;
|
|
36
|
+
if (stopAtFirst)
|
|
37
|
+
return true;
|
|
38
|
+
out?.push({ coverage: SceneCoverage.Missing, kind, registry: RenderRegistry.NodeRenderer });
|
|
39
|
+
}
|
|
40
|
+
// Only meaningful for a state that rasterizes shapes. A GL or WebGPU state drawing every shape
|
|
41
|
+
// through the mesh path never replays a command, so these entries are reported and simply not acted
|
|
42
|
+
// on — the same shape as reporting 3D node kinds a backend collects structurally.
|
|
43
|
+
const commands = runtime.canvasShapeCommandRegistry;
|
|
44
|
+
for (let i = 0; i < usage.shapeCommandKeys.length; i++) {
|
|
45
|
+
const kind = usage.shapeCommandKeys[i];
|
|
46
|
+
if (commands?.has(kind) === true) {
|
|
47
|
+
out?.push({ coverage: SceneCoverage.Satisfied, kind, registry: RenderRegistry.ShapeCommandHandler });
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
found = true;
|
|
51
|
+
if (stopAtFirst)
|
|
52
|
+
return true;
|
|
53
|
+
out?.push({ coverage: SceneCoverage.Missing, kind, registry: RenderRegistry.ShapeCommandHandler });
|
|
54
|
+
}
|
|
55
|
+
return found;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=explainScene2DCoverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainScene2DCoverage.js","sourceRoot":"","sources":["../src/explainScene2DCoverage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,oGAAoG;AACpG,oGAAoG;AACpG,EAAE;AACF,uGAAuG;AACvG,uGAAuG;AACvG,sGAAsG;AACtG,iGAAiG;AACjG,EAAE;AACF,qGAAqG;AACrG,iGAAiG;AACjG,MAAM,UAAU,sBAAsB,CACpC,GAAyB,EACzB,KAAkB,EAClB,KAAiC;IAEjC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACf,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,mGAAmG;AACnG,mGAAmG;AACnG,MAAM,UAAU,kBAAkB,CAAC,KAAkB,EAAE,KAAiC;IACtF,OAAO,CAAC,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,qGAAqG;AACrG,0GAA0G;AAC1G,SAAS,0BAA0B,CACjC,GAAgC,EAChC,KAAkB,EAClB,KAAiC,EACjC,WAAoB;IAEpB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAE7C,+FAA+F;IAC/F,iGAAiG;IACjG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;YAC9F,SAAS;QACX,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;QACb,IAAI,WAAW;YAAE,OAAO,IAAI,CAAC;QAC7B,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,+FAA+F;IAC/F,oGAAoG;IACpG,kFAAkF;IAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,0BAA0B,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACjC,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACrG,SAAS;QACX,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;QACb,IAAI,WAAW;YAAE,OAAO,IAAI,CAAC;QAC7B,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export { createRenderCache, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
|
|
1
|
+
export { areColorAdjustmentsEnabled, disableSceneRenderGuards, enableColorAdjustments, enableSceneRenderGuards, createRenderCache, destroyRenderState, disposeScene2DRender, enableRenderRegistryGuards, enableRenderRegistrySignals, explainRenderRegistryMisses, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
|
|
2
|
+
export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
|
|
2
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export { createRenderCache, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
|
|
1
|
+
export { areColorAdjustmentsEnabled, disableSceneRenderGuards, enableColorAdjustments, enableSceneRenderGuards, createRenderCache, destroyRenderState, disposeScene2DRender, enableRenderRegistryGuards, enableRenderRegistrySignals, explainRenderRegistryMisses, packScene3DLightBlock, prepareScene2DRender, prepareScene3DRender, registerRenderer, useRenderCache, } from './contract';
|
|
2
|
+
export { SCENE2D_WORKING_COLOR_SPACE } from './scene2dWorkingColorSpace';
|
|
2
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderProxy.d.ts","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderProxy.d.ts","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EAEd,UAAU,EACV,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAQlC,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAEvF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,CA2BrF;AAKD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,kBAAkB,GACvD,aAAa,CAMf;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAQ/E;AASD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAE/E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,CAa9F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAElG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAE9E;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,WAAW,EACjB,UAAU,CAAC,EAAE,WAAW,GACvB,OAAO,CAeT;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEjE;AAOD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAEpF;AAMD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC,IAAI,CAGN;AAID,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC,IAAI,CAmBN;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAWrF;AAaD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAgDjG"}
|
package/dist/renderProxy.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { createEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { createMatrix } from '@flighthq/geometry/contract';
|
|
3
|
-
import { getNodeAppearanceRevision, getNodeLocalContentRevision, getNodeLocalTransformRevision, getNodeParent, getNodeRuntime, } from '@flighthq/node/contract';
|
|
4
|
-
import { BlendMode } from '@flighthq/types/contract';
|
|
3
|
+
import { getNodeAppearanceRevision, getNodeChildrenRevision, getNodeLocalContentRevision, getNodeLocalTransformRevision, getNodeParentReferenceRevision, getNodeParent, getNodeRuntime, } from '@flighthq/node/contract';
|
|
4
|
+
import { BlendMode, RenderRegistry } from '@flighthq/types/contract';
|
|
5
5
|
import { updateRenderProxyAppearance } from './renderAppearance';
|
|
6
|
-
import { updateRenderProxyColorScaleBias } from './renderColorScaleBias';
|
|
7
6
|
import { updateRenderProxyMaterial } from './renderMaterial';
|
|
8
7
|
import { getRenderStateRuntime } from './renderState';
|
|
9
8
|
import { updateRenderProxy2DTransform } from './renderTransform2d';
|
|
10
9
|
export function createRenderProxy(state, source) {
|
|
11
10
|
const runtime = getRenderStateRuntime(state);
|
|
12
|
-
const renderer =
|
|
11
|
+
const renderer = resolveRenderProxyRenderer(state, source.kind);
|
|
13
12
|
return createEntity({
|
|
14
13
|
source: source,
|
|
15
14
|
kind: source.kind,
|
|
@@ -22,8 +21,10 @@ export function createRenderProxy(state, source) {
|
|
|
22
21
|
material: null,
|
|
23
22
|
materialData: null,
|
|
24
23
|
lastAppearanceId: -1,
|
|
24
|
+
lastChildrenId: -1,
|
|
25
25
|
lastLocalContentId: -1,
|
|
26
26
|
lastLocalTransformId: -1,
|
|
27
|
+
lastParentReferenceId: -1,
|
|
27
28
|
name: null,
|
|
28
29
|
renderer: renderer,
|
|
29
30
|
rendererData: renderer?.createData(state, source) ?? null,
|
|
@@ -48,13 +49,15 @@ export function createRenderProxy2D(state, source) {
|
|
|
48
49
|
// renderer's destroyData to free the non-GC GPU resources it owns. Call when a node is removed from
|
|
49
50
|
// rendering for good — otherwise those GPU textures/framebuffers linger until the source is GC'd.
|
|
50
51
|
export function disposeRenderProxy(state, source) {
|
|
51
|
-
const
|
|
52
|
+
const runtime = getRenderStateRuntime(state);
|
|
53
|
+
const renderProxyMap = runtime.renderProxyMap;
|
|
52
54
|
const node = renderProxyMap.get(source);
|
|
53
55
|
if (node === undefined)
|
|
54
56
|
return;
|
|
55
57
|
if (node.rendererData !== null)
|
|
56
58
|
node.renderer?.destroyData?.(state, node.rendererData);
|
|
57
59
|
renderProxyMap.delete(source);
|
|
60
|
+
runtime.renderProxySources.delete(source);
|
|
58
61
|
}
|
|
59
62
|
// Teardown counterpart to prepareScene2DRender: disposes the render of `root` and every descendant —
|
|
60
63
|
// the render proxies that prepareScene2DRender created. Each disposeRenderProxy cascades to the
|
|
@@ -73,6 +76,7 @@ export function getOrCreateRenderProxy2D(state, source) {
|
|
|
73
76
|
if (!node) {
|
|
74
77
|
node = createRenderProxy2D(state, source);
|
|
75
78
|
renderProxyMap.set(source, node);
|
|
79
|
+
runtime.renderProxySources.add(source);
|
|
76
80
|
}
|
|
77
81
|
if (node.rendererMapId !== runtime.rendererMapId) {
|
|
78
82
|
updateRenderProxyRenderer(state, node);
|
|
@@ -89,11 +93,14 @@ export function isRenderProxyDirty(state, source, data, parentData) {
|
|
|
89
93
|
const currentFrameId = getRenderStateRuntime(state).currentFrameId;
|
|
90
94
|
const parentDirty = parentData !== undefined &&
|
|
91
95
|
(parentData.transformFrameId === currentFrameId || parentData.appearanceFrameId === currentFrameId);
|
|
96
|
+
const rendererDirty = data.renderer?.isDirty?.(state, source, data.rendererData) ?? false;
|
|
97
|
+
const hierarchyDirty = data.lastChildrenId !== getNodeChildrenRevision(source) ||
|
|
98
|
+
data.lastParentReferenceId !== getNodeParentReferenceRevision(source);
|
|
92
99
|
const localDirty = state.sceneGraphSyncPolicy === 'refreshDerivedState' ||
|
|
93
100
|
data.lastLocalTransformId !== getNodeLocalTransformRevision(source) ||
|
|
94
101
|
data.lastAppearanceId !== getNodeAppearanceRevision(source) ||
|
|
95
102
|
data.lastLocalContentId !== getNodeLocalContentRevision(source);
|
|
96
|
-
return parentDirty || localDirty;
|
|
103
|
+
return parentDirty || rendererDirty || hierarchyDirty || localDirty;
|
|
97
104
|
}
|
|
98
105
|
export function isRenderProxyVisible(data) {
|
|
99
106
|
return data.visible && data.alpha > 0 && !(data.transform2D.a === 0 && data.transform2D.d === 0);
|
|
@@ -117,18 +124,28 @@ export function updateNodeClip(_state, source, data, parentData) {
|
|
|
117
124
|
// The one per-node update step for the 2D walk: appearance, transform, material, color adjustment,
|
|
118
125
|
// then the clip nesting depth. Sprites and display objects share this single visitor.
|
|
119
126
|
export function updateRenderProxy2D(state, source, data, parentData) {
|
|
127
|
+
const parentReferenceId = getNodeParentReferenceRevision(source);
|
|
128
|
+
if (data.lastParentReferenceId !== parentReferenceId) {
|
|
129
|
+
// A prepared node may be detached while its eventual parent changes, then reattached to the same
|
|
130
|
+
// parent identity. Force both inherited axes through their existing update paths; comparing only
|
|
131
|
+
// the current parent or its "updated this frame" marker would leave that warm proxy stale.
|
|
132
|
+
data.lastAppearanceId = -1;
|
|
133
|
+
data.lastLocalTransformId = -1;
|
|
134
|
+
}
|
|
120
135
|
updateRenderProxyAppearance(state, data, parentData);
|
|
121
136
|
updateRenderProxy2DTransform(state, data, parentData);
|
|
122
137
|
updateRenderProxyMaterial(state, data, parentData);
|
|
123
|
-
|
|
138
|
+
getRenderStateRuntime(state).colorAdjustmentResolver?.(state, data, parentData);
|
|
124
139
|
updateNodeClip(state, source, data, parentData);
|
|
125
|
-
// Record the
|
|
140
|
+
// Record the local and structural revisions this adaptation consumed.
|
|
141
|
+
data.lastChildrenId = getNodeChildrenRevision(source);
|
|
126
142
|
data.lastLocalContentId = getNodeLocalContentRevision(source);
|
|
143
|
+
data.lastParentReferenceId = parentReferenceId;
|
|
127
144
|
getRenderStateRuntime(state).renderAdaptHook?.(state, source, data);
|
|
128
145
|
}
|
|
129
146
|
export function updateRenderProxyRenderer(state, node) {
|
|
130
147
|
const runtime = getRenderStateRuntime(state);
|
|
131
|
-
const renderer =
|
|
148
|
+
const renderer = resolveRenderProxyRenderer(state, node.kind);
|
|
132
149
|
if (node.renderer !== renderer || node.rendererDataSource !== node.source) {
|
|
133
150
|
// Free the outgoing renderer's GPU resources before replacing the data it owned.
|
|
134
151
|
if (node.rendererData !== null)
|
|
@@ -139,12 +156,20 @@ export function updateRenderProxyRenderer(state, node) {
|
|
|
139
156
|
}
|
|
140
157
|
node.rendererMapId = runtime.rendererMapId;
|
|
141
158
|
}
|
|
159
|
+
function resolveRenderProxyRenderer(state, kind) {
|
|
160
|
+
const runtime = getRenderStateRuntime(state);
|
|
161
|
+
const renderer = runtime.rendererMap.get(kind);
|
|
162
|
+
if (renderer === undefined)
|
|
163
|
+
runtime.registryMiss?.(RenderRegistry.NodeRenderer, kind);
|
|
164
|
+
return renderer ?? null;
|
|
165
|
+
}
|
|
142
166
|
// One generic, dirty-checked pre-order walk over the 2D node graph. `visit` composes the trait
|
|
143
167
|
// update* steps. Sprites and display objects share this single traversal and a single render-node
|
|
144
168
|
// type — what differs is the traits they carry, not the path. Clip is not handled here: it is a
|
|
145
169
|
// trait update step in the visitor (updateNodeClip), realized at draw time by the backend clip hooks.
|
|
146
170
|
export function walkNode(state, root, visit) {
|
|
147
171
|
const runtime = getRenderStateRuntime(state);
|
|
172
|
+
runtime.renderRootGuard?.(state, root);
|
|
148
173
|
++runtime.currentFrameId;
|
|
149
174
|
const tempStack = runtime.tempStack;
|
|
150
175
|
let stackLength = 1;
|
package/dist/renderProxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderProxy.js","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;AAYjC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"renderProxy.js","sourceRoot":"","sources":["../src/renderProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RenderRegistryMissExplanation, RenderState } from '@flighthq/types/contract';
|
|
2
|
+
export declare function areRenderRegistryGuardsEnabled(state: RenderState): boolean;
|
|
3
|
+
export declare function enableRenderRegistryGuards(state: RenderState): void;
|
|
4
|
+
export declare function explainRenderRegistryMisses(state: RenderState): RenderRegistryMissExplanation;
|
|
5
|
+
//# sourceMappingURL=renderRegistryGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderRegistryGuards.d.ts","sourceRoot":"","sources":["../src/renderRegistryGuards.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA4B,6BAA6B,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKrH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE1E;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAQnE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,6BAA6B,CAM7F"}
|