@flighthq/render 0.2.1-next.841.373388f → 0.3.0-next.1032.e2b99fc
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 +17 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +17 -0
- package/dist/contract.js.map +1 -0
- package/dist/enableColorAdjustmentGuards.d.ts +1 -1
- package/dist/enableColorAdjustmentGuards.d.ts.map +1 -1
- package/dist/enableColorAdjustmentGuards.js +12 -13
- package/dist/enableColorAdjustmentGuards.js.map +1 -1
- package/dist/explainScene2DRender.d.ts +1 -1
- package/dist/explainScene2DRender.d.ts.map +1 -1
- package/dist/index.d.ts +1 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -16
- package/dist/index.js.map +1 -1
- package/dist/renderAppearance.d.ts +1 -1
- package/dist/renderAppearance.d.ts.map +1 -1
- package/dist/renderAppearance.js +1 -1
- package/dist/renderAppearance.js.map +1 -1
- package/dist/renderCache.d.ts +2 -2
- package/dist/renderCache.d.ts.map +1 -1
- package/dist/renderCache.js +4 -4
- package/dist/renderCache.js.map +1 -1
- package/dist/renderColor.d.ts +1 -1
- package/dist/renderColor.d.ts.map +1 -1
- package/dist/renderColorScaleBias.d.ts +3 -0
- package/dist/renderColorScaleBias.d.ts.map +1 -0
- package/dist/renderColorScaleBias.js +21 -0
- package/dist/renderColorScaleBias.js.map +1 -0
- package/dist/renderMaterial.d.ts +1 -1
- package/dist/renderMaterial.d.ts.map +1 -1
- package/dist/renderProxy.d.ts +1 -1
- package/dist/renderProxy.d.ts.map +1 -1
- package/dist/renderProxy.js +9 -8
- package/dist/renderProxy.js.map +1 -1
- package/dist/renderProxyAdapter.d.ts +1 -1
- package/dist/renderProxyAdapter.d.ts.map +1 -1
- package/dist/renderProxyAdapter.js +1 -1
- package/dist/renderProxyAdapter.js.map +1 -1
- package/dist/renderQueue.d.ts +1 -1
- package/dist/renderQueue.d.ts.map +1 -1
- package/dist/renderQueue.js +1 -1
- package/dist/renderQueue.js.map +1 -1
- package/dist/renderState.d.ts +1 -1
- package/dist/renderState.d.ts.map +1 -1
- package/dist/renderState.js +3 -3
- package/dist/renderState.js.map +1 -1
- package/dist/renderTarget.d.ts +1 -1
- package/dist/renderTarget.d.ts.map +1 -1
- package/dist/renderTarget.js +2 -2
- package/dist/renderTarget.js.map +1 -1
- package/dist/renderTransform2d.d.ts +1 -1
- package/dist/renderTransform2d.d.ts.map +1 -1
- package/dist/renderTransform2d.js +2 -2
- package/dist/renderTransform2d.js.map +1 -1
- package/dist/renderViewport.d.ts +1 -1
- package/dist/renderViewport.d.ts.map +1 -1
- package/dist/renderViewport.js +2 -2
- package/dist/renderViewport.js.map +1 -1
- package/dist/renderer.d.ts +2 -1
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +7 -0
- package/dist/renderer.js.map +1 -1
- package/dist/sceneRender.d.ts +2 -2
- package/dist/sceneRender.d.ts.map +1 -1
- package/dist/sceneRender.js +26 -18
- package/dist/sceneRender.js.map +1 -1
- package/package.json +16 -11
- package/src/enableColorAdjustmentGuards.test.ts +13 -13
- package/src/explainScene2DRender.test.ts +2 -2
- package/src/renderAppearance.test.ts +3 -3
- package/src/renderCache.test.ts +2 -2
- package/src/renderColorScaleBias.test.ts +53 -0
- package/src/renderMaterial.test.ts +2 -2
- package/src/renderProxy.test.ts +5 -5
- package/src/renderProxyAdapter.test.ts +2 -2
- package/src/renderQueue.test.ts +4 -4
- package/src/renderState.test.ts +3 -3
- package/src/renderTarget.test.ts +2 -2
- package/src/renderTransform2d.test.ts +1 -1
- package/src/renderViewport.test.ts +9 -4
- package/src/renderer.test.ts +25 -1
- package/src/sceneRender.test.ts +31 -9
- package/dist/renderColorTransform.d.ts +0 -3
- package/dist/renderColorTransform.d.ts.map +0 -1
- package/dist/renderColorTransform.js +0 -21
- package/dist/renderColorTransform.js.map +0 -1
- package/src/renderColorTransform.test.ts +0 -45
package/src/sceneRender.test.ts
CHANGED
|
@@ -1,28 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import {
|
|
2
|
+
createCamera3D,
|
|
3
|
+
createPerspectiveProjection,
|
|
4
|
+
setCamera3DViewMatrix4FromLookAt,
|
|
5
|
+
} from '@flighthq/camera/contract';
|
|
6
|
+
import { unpackColorToLinear } from '@flighthq/color/contract';
|
|
7
|
+
import { createAabb, createMatrix4 } from '@flighthq/geometry/contract';
|
|
4
8
|
import {
|
|
5
9
|
createAmbientLight,
|
|
6
10
|
createDirectionalLight,
|
|
7
11
|
createHemisphereLight,
|
|
8
12
|
createPointLight,
|
|
9
13
|
createSpotLight,
|
|
10
|
-
} from '@flighthq/lighting';
|
|
14
|
+
} from '@flighthq/lighting/contract';
|
|
11
15
|
import {
|
|
12
16
|
CANONICAL_MESH_GEOMETRY_LAYOUT,
|
|
13
17
|
computeMeshGeometryBounds,
|
|
14
18
|
createBoxMeshGeometry,
|
|
15
19
|
createMeshGeometry,
|
|
16
|
-
} from '@flighthq/mesh';
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
} from '@flighthq/mesh/contract';
|
|
21
|
+
import {
|
|
22
|
+
addNodeChild,
|
|
23
|
+
getNodeWorldMatrix4,
|
|
24
|
+
invalidateNodeLocalTransform,
|
|
25
|
+
setNodeLocalMatrix4,
|
|
26
|
+
} from '@flighthq/node/contract';
|
|
27
|
+
import { createMesh, createNode3D, Node3DKind, getNode3DWorldAlpha } from '@flighthq/scene3d/contract';
|
|
28
|
+
import type { Camera3D, Material, MeshGeometry, Scene3DLightBlock, Scene3DLightsLike } from '@flighthq/types/contract';
|
|
20
29
|
import {
|
|
21
30
|
SCENE_LIGHT_BLOCK_FLOATS,
|
|
22
31
|
SCENE_LIGHT_HEMISPHERE_OFFSET,
|
|
23
32
|
SCENE_LIGHT_POINT_OFFSET,
|
|
24
33
|
SCENE_LIGHT_SPOT_OFFSET,
|
|
25
|
-
} from '@flighthq/types';
|
|
34
|
+
} from '@flighthq/types/contract';
|
|
26
35
|
import { describe, expect, it } from 'vitest';
|
|
27
36
|
|
|
28
37
|
import { createRenderState } from './renderState';
|
|
@@ -235,6 +244,19 @@ describe('prepareScene3DRender', () => {
|
|
|
235
244
|
expect(list.viewProjection.m[15]).not.toBe(1);
|
|
236
245
|
});
|
|
237
246
|
|
|
247
|
+
it('uses a draw-time viewport aspect without mutating the camera projection', () => {
|
|
248
|
+
const state = createRenderState();
|
|
249
|
+
const scene = createNode3D(Node3DKind);
|
|
250
|
+
const camera = frontCamera();
|
|
251
|
+
|
|
252
|
+
const tallXScale = prepareScene3DRender(state, scene, camera, emptyLights(), 0.5).viewProjection.m[0];
|
|
253
|
+
const wideXScale = prepareScene3DRender(state, scene, camera, emptyLights(), 2).viewProjection.m[0];
|
|
254
|
+
|
|
255
|
+
expect(tallXScale).toBeCloseTo(wideXScale * 4);
|
|
256
|
+
expect(camera.projection.kind).toBe('perspective');
|
|
257
|
+
if (camera.projection.kind === 'perspective') expect(camera.projection.aspect).toBe(1);
|
|
258
|
+
});
|
|
259
|
+
|
|
238
260
|
it('culls a mesh placed far behind the camera', () => {
|
|
239
261
|
const state = createRenderState();
|
|
240
262
|
const scene = createNode3D(Node3DKind);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderColorTransform.d.ts","sourceRoot":"","sources":["../src/renderColorTransform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAelF,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,WAAW,EACjB,WAAW,CAAC,EAAE,WAAW,GACxB,IAAI,CAMN"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { getNodeRuntime } from '@flighthq/node';
|
|
2
|
-
import { getRenderStateRuntime } from './renderState';
|
|
3
|
-
// Hands the node's resolved color transform to the render node. A node's color-adjustment stack
|
|
4
|
-
// (NodeRuntime.colorAdjustments) is fused once into the affine `resolvedColorTransform` cache by the
|
|
5
|
-
// set-accessors on change — never per frame — so this hot-path visitor is a single field read, identical
|
|
6
|
-
// in cost to reading the old `.colorTransform`. Non-inheriting: a node uses its own resolved value (or
|
|
7
|
-
// none → null). The value is the Adjustment-tier fold input; it is not a material and does not key the
|
|
8
|
-
// batch.
|
|
9
|
-
//
|
|
10
|
-
// When the fused stack carries off-diagonal channel-mixing terms the 8-float inline fold cannot represent
|
|
11
|
-
// yet (the 4×5 path is deferred), the node is flagged `colorAdjustmentsChannelMixing`: only the affine
|
|
12
|
-
// part is applied, and the render state's shakeable guard (enableColorAdjustmentGuards) is invoked so the
|
|
13
|
-
// deferral is reported rather than silent.
|
|
14
|
-
export function updateRenderProxyColorTransform(state, data, _parentData) {
|
|
15
|
-
const runtime = getNodeRuntime(data.source);
|
|
16
|
-
data.colorTransform = runtime.resolvedColorTransform ?? null;
|
|
17
|
-
if (runtime.colorAdjustmentsChannelMixing) {
|
|
18
|
-
getRenderStateRuntime(state).colorAdjustmentChannelMixingGuard?.(state, data.source);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=renderColorTransform.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderColorTransform.js","sourceRoot":"","sources":["../src/renderColorTransform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,gGAAgG;AAChG,qGAAqG;AACrG,yGAAyG;AACzG,uGAAuG;AACvG,uGAAuG;AACvG,SAAS;AACT,EAAE;AACF,0GAA0G;AAC1G,uGAAuG;AACvG,0GAA0G;AAC1G,2CAA2C;AAC3C,MAAM,UAAU,+BAA+B,CAC7C,KAAkB,EAClB,IAAiB,EACjB,WAAyB;IAEzB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,MAAc,CAAC,CAAC;IACpD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC;IAC7D,IAAI,OAAO,CAAC,6BAA6B,EAAE,CAAC;QAC1C,qBAAqB,CAAC,KAAK,CAAC,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,MAAoB,CAAC,CAAC;IACrG,CAAC;AACH,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { createColorTransformAdjustment } from '@flighthq/adjustments';
|
|
2
|
-
import { createColorTransform } from '@flighthq/materials';
|
|
3
|
-
import { createDisplayObject, getNode2DRuntime, setNode2DColorAdjustments } from '@flighthq/scene2d';
|
|
4
|
-
import type { Renderable } from '@flighthq/types';
|
|
5
|
-
|
|
6
|
-
import { updateRenderProxyColorTransform } from './renderColorTransform';
|
|
7
|
-
import { createRenderProxy } from './renderProxy';
|
|
8
|
-
import { createRenderState } from './renderState';
|
|
9
|
-
|
|
10
|
-
describe('updateRenderProxyColorTransform', () => {
|
|
11
|
-
it('resolves a node color-adjustment stack onto the render node as an affine ColorTransform', () => {
|
|
12
|
-
const state = createRenderState();
|
|
13
|
-
const node = createDisplayObject();
|
|
14
|
-
setNode2DColorAdjustments(node, [
|
|
15
|
-
createColorTransformAdjustment(createColorTransform({ redMultiplier: 0.5, greenMultiplier: 0 })),
|
|
16
|
-
]);
|
|
17
|
-
const data = createRenderProxy(state, node as unknown as Renderable);
|
|
18
|
-
updateRenderProxyColorTransform(state, data);
|
|
19
|
-
expect(data.colorTransform).not.toBeNull();
|
|
20
|
-
expect(data.colorTransform!.redMultiplier).toBe(0.5);
|
|
21
|
-
expect(data.colorTransform!.greenMultiplier).toBe(0);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it('resolves to null when the node carries no adjustments', () => {
|
|
25
|
-
const state = createRenderState();
|
|
26
|
-
const node = createDisplayObject();
|
|
27
|
-
const data = createRenderProxy(state, node as unknown as Renderable);
|
|
28
|
-
updateRenderProxyColorTransform(state, data);
|
|
29
|
-
expect(data.colorTransform).toBeNull();
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('reads the cache the accessor fused once (the walk never re-fuses)', () => {
|
|
33
|
-
const state = createRenderState();
|
|
34
|
-
const node = createDisplayObject();
|
|
35
|
-
setNode2DColorAdjustments(node, [createColorTransformAdjustment(createColorTransform({ redMultiplier: 0.25 }))]);
|
|
36
|
-
// The set-accessor fused the stack once; the runtime already holds the cached resolved value.
|
|
37
|
-
const cached = getNode2DRuntime(node).resolvedColorTransform;
|
|
38
|
-
expect(cached).not.toBeNull();
|
|
39
|
-
const data = createRenderProxy(state, node as unknown as Renderable);
|
|
40
|
-
updateRenderProxyColorTransform(state, data);
|
|
41
|
-
expect(data.colorTransform).toBe(cached);
|
|
42
|
-
updateRenderProxyColorTransform(state, data);
|
|
43
|
-
expect(data.colorTransform).toBe(cached);
|
|
44
|
-
});
|
|
45
|
-
});
|