@flighthq/render 0.2.1-next.423.3350e53 → 0.2.1-next.448.afbdd31

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.
@@ -1,4 +1,4 @@
1
- import type { Camera, RenderState, SceneLightBlock, SceneLights, SceneNode, SceneRenderList } from '@flighthq/types';
1
+ import type { Camera3D, RenderState, SceneLightBlock, SceneLights, SceneNode, SceneRenderList } from '@flighthq/types';
2
2
  export declare function packSceneLightBlock(out: SceneLightBlock, lights: Readonly<SceneLights>): void;
3
- export declare function prepareSceneRender(state: RenderState, scene: Readonly<SceneNode>, camera: Readonly<Camera>, lights: Readonly<SceneLights>): SceneRenderList;
3
+ export declare function prepareSceneRender(state: RenderState, scene: Readonly<SceneNode>, camera: Readonly<Camera3D>, lights: Readonly<SceneLights>): SceneRenderList;
4
4
  //# sourceMappingURL=sceneRender.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sceneRender.d.ts","sourceRoot":"","sources":["../src/sceneRender.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAGV,MAAM,EASN,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,EACT,eAAe,EAEhB,MAAM,iBAAiB,CAAC;AA2BzB,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAkE7F;AAcD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxB,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,eAAe,CA6BjB"}
1
+ {"version":3,"file":"sceneRender.d.ts","sourceRoot":"","sources":["../src/sceneRender.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAGV,QAAQ,EASR,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,EACT,eAAe,EAEhB,MAAM,iBAAiB,CAAC;AA2BzB,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAkE7F;AAcD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,eAAe,CAkCjB"}
@@ -1,6 +1,6 @@
1
1
  import { unpackColorToLinear } from '@flighthq/color';
2
2
  import { createAabb, createFrustum, createMatrix4, isFrustumIntersectingAabb, multiplyMatrix4, setFrustumFromMatrix4, setOrthographicMatrix4, setPerspectiveMatrix4, transformAabbByMatrix4, } from '@flighthq/geometry';
3
- import { getNodeRuntime, getNodeWorldMatrix4 } from '@flighthq/node';
3
+ import { getNodeRuntime, getNodeWorldMatrix4, invalidateNodeLocalTransform } from '@flighthq/node';
4
4
  import { computeSkeleton3DJointMatrices } from '@flighthq/skeleton3d';
5
5
  import { MAX_FORWARD_LIGHTS, SCENE_LIGHT_AMBIENT_RADIANCE_OFFSET, SCENE_LIGHT_BLOCK_FLOATS, SCENE_LIGHT_DIRECTIONAL_DIRECTION_OFFSET, SCENE_LIGHT_DIRECTIONAL_RADIANCE_OFFSET, 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';
6
6
  // Packs the directional + ambient + punctual (point/spot/hemisphere) draw-arg lights into `out` (the
@@ -91,7 +91,12 @@ export function prepareSceneRender(state, scene, camera, lights) {
91
91
  setFrustumFromMatrix4(prepared.frustum, prepared.viewProjection);
92
92
  packSceneLightBlock(list.lights, lights);
93
93
  prepared.meshes.length = 0;
94
- collectVisibleMeshes(scene, prepared.frustum, prepared.worldBounds, prepared.meshes);
94
+ // The sync policy governs transform freshness in the prepare pass, consistently with the 2D
95
+ // display-object prepare: 'refreshDerivedState' (the default) recomposes every visited node's
96
+ // matrices from its current transform each frame, so a bare `mesh.position.x = …` shows up with no
97
+ // caller-side invalidate; 'requiresInvalidation' trusts the caller's invalidate* calls instead.
98
+ const refreshTransforms = state.sceneGraphSyncPolicy === 'refreshDerivedState';
99
+ collectVisibleMeshes(scene, prepared.frustum, prepared.worldBounds, prepared.meshes, refreshTransforms);
95
100
  list.meshCount = prepared.meshes.length;
96
101
  // Refresh the GPU skin palette for every visible skinned mesh from its joints' current world
97
102
  // transforms (jointWorld * inverseBind). The backend uploads skeleton.jointMatrices through the
@@ -107,12 +112,18 @@ export function prepareSceneRender(state, scene, camera, lights) {
107
112
  }
108
113
  return list;
109
114
  }
110
- function collectVisibleMeshes(node, frustum, worldBounds, out) {
115
+ function collectVisibleMeshes(node, frustum, worldBounds, out, refreshTransforms) {
111
116
  // `enabled` gates graph participation; `visible` gates rendering. A hidden subtree is skipped whole,
112
117
  // so `visible` propagates (a hidden group hides its descendants) without a resolved-visibility cache.
113
118
  if (!node.enabled || !node.visible) {
114
119
  return;
115
120
  }
121
+ // Under 'refreshDerivedState', bump the local-transform revision of every visited node before its
122
+ // world matrix is read below. Pre-order walk order means an ancestor is invalidated before any
123
+ // descendant resolves the parent chain, so the whole visible subtree recomposes from live transform
124
+ // fields this frame. See prepareSceneRender for the policy rationale.
125
+ if (refreshTransforms)
126
+ invalidateNodeLocalTransform(node);
116
127
  // worldAlpha is not folded in this walk: it is lazily ensured on access (getSceneNodeWorldAlpha), the
117
128
  // appearance analog of the ensure-on-access world matrix the renderer resolves at draw time. This walk
118
129
  // is culling + mesh collection only.
@@ -125,7 +136,7 @@ function collectVisibleMeshes(node, frustum, worldBounds, out) {
125
136
  const children = getNodeRuntime(node).children;
126
137
  if (children !== null) {
127
138
  for (let i = 0; i < children.length; i++) {
128
- collectVisibleMeshes(children[i], frustum, worldBounds, out);
139
+ collectVisibleMeshes(children[i], frustum, worldBounds, out, refreshTransforms);
129
140
  }
130
141
  }
131
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sceneRender.js","sourceRoot":"","sources":["../src/sceneRender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sceneRender.js","sourceRoot":"","sources":["../src/sceneRender.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/render",
3
- "version": "0.2.1-next.423.3350e53",
3
+ "version": "0.2.1-next.448.afbdd31",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -32,15 +32,15 @@
32
32
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
33
33
  },
34
34
  "dependencies": {
35
- "@flighthq/color": "0.2.1-next.423.3350e53",
36
- "@flighthq/entity": "0.2.1-next.423.3350e53",
37
- "@flighthq/geometry": "0.2.1-next.423.3350e53",
38
- "@flighthq/log": "0.2.1-next.423.3350e53",
39
- "@flighthq/materials": "0.2.1-next.423.3350e53",
40
- "@flighthq/node": "0.2.1-next.423.3350e53",
41
- "@flighthq/signals": "0.2.1-next.423.3350e53",
42
- "@flighthq/skeleton3d": "0.2.1-next.423.3350e53",
43
- "@flighthq/types": "0.2.1-next.423.3350e53"
35
+ "@flighthq/color": "0.2.1-next.448.afbdd31",
36
+ "@flighthq/entity": "0.2.1-next.448.afbdd31",
37
+ "@flighthq/geometry": "0.2.1-next.448.afbdd31",
38
+ "@flighthq/log": "0.2.1-next.448.afbdd31",
39
+ "@flighthq/materials": "0.2.1-next.448.afbdd31",
40
+ "@flighthq/node": "0.2.1-next.448.afbdd31",
41
+ "@flighthq/signals": "0.2.1-next.448.afbdd31",
42
+ "@flighthq/skeleton3d": "0.2.1-next.448.afbdd31",
43
+ "@flighthq/types": "0.2.1-next.448.afbdd31"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@flighthq/adjustments": "*",
@@ -1,4 +1,4 @@
1
- import { createCamera, createPerspectiveProjection, setCameraViewMatrix4FromLookAt } from '@flighthq/camera';
1
+ import { createCamera3D, createPerspectiveProjection, setCamera3DViewMatrix4FromLookAt } from '@flighthq/camera';
2
2
  import { unpackColorToLinear } from '@flighthq/color';
3
3
  import { createAabb } from '@flighthq/geometry';
4
4
  import {
@@ -9,9 +9,9 @@ import {
9
9
  createSpotLight,
10
10
  } from '@flighthq/lighting';
11
11
  import { computeMeshGeometryBounds, createBoxMeshGeometry } from '@flighthq/mesh';
12
- import { addNodeChild, invalidateNodeLocalTransform } from '@flighthq/node';
12
+ import { addNodeChild, getNodeWorldMatrix4, invalidateNodeLocalTransform } from '@flighthq/node';
13
13
  import { createMesh, createSceneNode, SceneNodeKind, getSceneNodeWorldAlpha } from '@flighthq/scene';
14
- import type { Camera, Material, MeshGeometry, SceneLightBlock, SceneLights } from '@flighthq/types';
14
+ import type { Camera3D, Material, MeshGeometry, SceneLightBlock, SceneLights } from '@flighthq/types';
15
15
  import {
16
16
  SCENE_LIGHT_BLOCK_FLOATS,
17
17
  SCENE_LIGHT_HEMISPHERE_OFFSET,
@@ -31,13 +31,13 @@ function boundedBox(): MeshGeometry {
31
31
  return geometry;
32
32
  }
33
33
 
34
- function frontCamera(): Camera {
35
- const camera = createCamera({
34
+ function frontCamera(): Camera3D {
35
+ const camera = createCamera3D({
36
36
  far: 100,
37
37
  near: 0.1,
38
38
  projection: createPerspectiveProjection({ aspect: 1, fovY: Math.PI / 3 }),
39
39
  });
40
- setCameraViewMatrix4FromLookAt(camera, { x: 0, y: 0, z: 10 }, { x: 0, y: 0, z: 0 }, { x: 0, y: 1, z: 0 });
40
+ setCamera3DViewMatrix4FromLookAt(camera, { x: 0, y: 0, z: 10 }, { x: 0, y: 0, z: 0 }, { x: 0, y: 1, z: 0 });
41
41
  return camera;
42
42
  }
43
43
 
@@ -329,4 +329,31 @@ describe('prepareSceneRender', () => {
329
329
  const list = prepareSceneRender(state, scene, frontCamera(), emptyLights());
330
330
  expect(list.visibleMeshes[0].materials[0]).toBe(material);
331
331
  });
332
+
333
+ it('refreshes a mesh world transform under the default policy without an explicit invalidate', () => {
334
+ const state = createRenderState(); // default 'refreshDerivedState'
335
+ const scene = createSceneNode(SceneNodeKind);
336
+ const mesh = createMesh(boundedBox(), [null]);
337
+ addNodeChild(scene, mesh);
338
+ const camera = frontCamera();
339
+ prepareSceneRender(state, scene, camera, emptyLights());
340
+ mesh.position.x = 3; // bare mutation, no invalidateNodeLocalTransform
341
+ prepareSceneRender(state, scene, camera, emptyLights());
342
+ expect(getNodeWorldMatrix4(mesh).m[12]).toBeCloseTo(3);
343
+ });
344
+
345
+ it('leaves a mesh world transform stale under requiresInvalidation until invalidated', () => {
346
+ const state = createRenderState({ sceneGraphSyncPolicy: 'requiresInvalidation' });
347
+ const scene = createSceneNode(SceneNodeKind);
348
+ const mesh = createMesh(boundedBox(), [null]);
349
+ addNodeChild(scene, mesh);
350
+ const camera = frontCamera();
351
+ prepareSceneRender(state, scene, camera, emptyLights());
352
+ mesh.position.x = 3;
353
+ prepareSceneRender(state, scene, camera, emptyLights());
354
+ expect(getNodeWorldMatrix4(mesh).m[12]).toBeCloseTo(0); // stale: the caller never invalidated
355
+ invalidateNodeLocalTransform(mesh);
356
+ prepareSceneRender(state, scene, camera, emptyLights());
357
+ expect(getNodeWorldMatrix4(mesh).m[12]).toBeCloseTo(3);
358
+ });
332
359
  });