@flighthq/scene2d-gl 0.5.1-next.1069.554a2ac → 0.5.1-next.1201.9b49dee

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/README.md CHANGED
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/scene2d-gl`. The `@f
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/scene2d-gl@0.5.1-next.1069.554a2ac](https://github.com/flighthq/flight/tree/554a2acc3fecf189b89b0729308ff890a15c21cc/packages/scene2d-gl)
17
- - [License](https://github.com/flighthq/flight/blob/554a2acc3fecf189b89b0729308ff890a15c21cc/LICENSE.md)
16
+ - [Source for @flighthq/scene2d-gl@0.5.1-next.1201.9b49dee](https://github.com/flighthq/flight/tree/9b49dee3f22f6b2838c3d237edcc77bca65734f2/packages/scene2d-gl)
17
+ - [License](https://github.com/flighthq/flight/blob/9b49dee3f22f6b2838c3d237edcc77bca65734f2/LICENSE.md)
package/dist/glCache.d.ts CHANGED
@@ -1,22 +1,13 @@
1
- import type { Node2D, Scene2DRenderer, GlRenderState, GlContextState, GlPipeline, GlRenderOptions, GlRenderTarget, RenderCache, RenderCacheRefreshOptions } from '@flighthq/types/contract';
2
- /**
3
- * Creates an offscreen render state for baking render caches consumed by `screenState`.
4
- *
5
- * Gl textures and framebuffers cannot cross GL contexts, so — unlike the canvas backend —
6
- * this offscreen state must share the screen state's GL context and every context-bound
7
- * resource (shaders, buffers, the uploaded-texture cache). What it keeps separate is the
8
- * scene-graph bookkeeping: its own render node map, adapter map, and frame counter, so baking
9
- * neither substitutes a cache into itself nor disturbs the screen state's nodes.
10
- */
11
- export declare function createGlCacheState(ownerState: GlRenderState, contextState: Readonly<GlContextState>, pipeline: Readonly<GlPipeline>, options?: GlRenderOptions): GlRenderState;
1
+ import type { Node2D, Scene2DRenderer, GlRenderState, GlPipeline, GlRenderOptions, GlTextureRenderTarget, RenderCache, RenderCacheRefreshOptions } from '@flighthq/types/contract';
2
+ export declare function createGlCacheState(ownerState: GlRenderState, pipeline: Readonly<GlPipeline>, options?: GlRenderOptions): GlRenderState;
12
3
  export declare function enableGlRenderCache(state: GlRenderState): void;
13
4
  /**
14
5
  * Allocates or resizes the framebuffer-backed texture `screenState` composites for `cache`,
15
6
  * returning it so a caller can render custom content into it directly. For engine-baked
16
7
  * content prefer refreshGlRenderCache.
17
8
  */
18
- export declare function ensureGlRenderCacheTarget(ownerState: GlRenderState, cache: RenderCache, width: number, height: number): GlRenderTarget;
19
- export declare function getGlRenderCacheTarget(ownerState: GlRenderState, cache: RenderCache): GlRenderTarget | null;
9
+ export declare function ensureGlRenderCacheTarget(ownerState: GlRenderState, cache: RenderCache, width: number, height: number): GlTextureRenderTarget;
10
+ export declare function getGlRenderCacheTarget(ownerState: GlRenderState, cache: RenderCache): GlTextureRenderTarget | null;
20
11
  /**
21
12
  * Bakes `source`'s subtree into its cache target using the offscreen `cacheState`, then records
22
13
  * the transform that places the result back in scene space. Returns whether a bake happened —
@@ -1 +1 @@
1
- {"version":3,"file":"glCache.d.ts","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,aAAa,EACb,cAAc,EACd,UAAU,EACV,eAAe,EACf,cAAc,EAEd,WAAW,EACX,yBAAyB,EAE1B,MAAM,0BAA0B,CAAC;AAKlC;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,aAAa,EACzB,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,EAC9B,OAAO,GAAE,eAAoB,GAC5B,aAAa,CAIf;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,cAAc,CAUhB;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CAE3G;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC5C,OAAO,CAiCT;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAQxF;AAmCD,eAAO,MAAM,4BAA4B,EAAE,eAG1C,CAAC"}
1
+ {"version":3,"file":"glCache.d.ts","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,aAAa,EACb,UAAU,EACV,eAAe,EACf,qBAAqB,EAErB,WAAW,EACX,yBAAyB,EAE1B,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,EAC9B,OAAO,GAAE,eAAoB,GAC5B,aAAa,CAIf;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,qBAAqB,CAUvB;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,qBAAqB,GAAG,IAAI,CAElH;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC5C,OAAO,CAiCT;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAQxF;AAmCD,eAAO,MAAM,4BAA4B,EAAE,eAG1C,CAAC"}
package/dist/glCache.js CHANGED
@@ -1,20 +1,11 @@
1
1
  import { createMatrix, createRectangle } from '@flighthq/geometry/contract';
2
2
  import { computeNodeRootLocalBoundsRectangle } from '@flighthq/node/contract';
3
- import { beginGlRenderPass, createGlOffscreenRenderState, createGlRenderTarget, destroyGlRenderState, destroyGlRenderTarget, drawGlRenderTargetResult, endGlRenderPass, resizeGlRenderTarget, registerGlRenderStateTeardown, setGlRenderTransform2D, } from '@flighthq/render-gl/contract';
3
+ import { beginGlRenderPass, createGlRenderState, createGlTextureRenderTarget, destroyGlRenderState, destroyGlTextureRenderTarget, drawGlTextureRenderTargetResult, endGlRenderPass, getGlCurrentRenderPass, resizeGlTextureRenderTarget, registerGlRenderStateTeardown, setGlRenderTransform2D, } from '@flighthq/render-gl/contract';
4
4
  import { computeScene2DRenderTargetTransform, computeRenderCacheTransform, computeRenderTargetSize, getRenderProxyCache, noopRendererData, prepareScene2DRender, registerRenderCacheRenderer, } from '@flighthq/render/contract';
5
5
  import { renderGlScene2D } from './glNode2D';
6
6
  import { flushGlQuadBatchWriter } from './glQuadBatchWriter';
7
- /**
8
- * Creates an offscreen render state for baking render caches consumed by `screenState`.
9
- *
10
- * Gl textures and framebuffers cannot cross GL contexts, so — unlike the canvas backend —
11
- * this offscreen state must share the screen state's GL context and every context-bound
12
- * resource (shaders, buffers, the uploaded-texture cache). What it keeps separate is the
13
- * scene-graph bookkeeping: its own render node map, adapter map, and frame counter, so baking
14
- * neither substitutes a cache into itself nor disturbs the screen state's nodes.
15
- */
16
- export function createGlCacheState(ownerState, contextState, pipeline, options = {}) {
17
- const cacheState = createGlOffscreenRenderState(contextState, pipeline, options);
7
+ export function createGlCacheState(ownerState, pipeline, options = {}) {
8
+ const cacheState = createGlRenderState(ownerState.gl, pipeline, options);
18
9
  registerGlRenderStateTeardown(ownerState, () => destroyGlRenderState(cacheState));
19
10
  return cacheState;
20
11
  }
@@ -30,11 +21,11 @@ export function ensureGlRenderCacheTarget(ownerState, cache, width, height) {
30
21
  const targets = ensureTargets(ownerState);
31
22
  let target = targets.get(cache);
32
23
  if (target === undefined) {
33
- target = createGlRenderTarget(ownerState, { width, height });
24
+ target = createGlTextureRenderTarget(ownerState, { width, height });
34
25
  targets.set(cache, target);
35
26
  }
36
27
  else {
37
- resizeGlRenderTarget(ownerState, target, width, height);
28
+ resizeGlTextureRenderTarget(ownerState, target, width, height);
38
29
  }
39
30
  return target;
40
31
  }
@@ -62,7 +53,7 @@ export function refreshGlRenderCache(ownerState, cacheState, cache, source, opti
62
53
  // Preserve on begin — the bake below clears and redraws only when dirty; clearing here would wipe the
63
54
  // retained cache content on the not-dirty path. The cache's local-space transform is set explicitly,
64
55
  // since a pass no longer carries one.
65
- beginGlRenderPass(cacheState, target, { preserveColor: true, preserveDepth: true });
56
+ const pass = beginGlRenderPass(cacheState, target);
66
57
  let dirty = false;
67
58
  try {
68
59
  setGlRenderTransform2D(cacheState, _renderTransform);
@@ -70,11 +61,11 @@ export function refreshGlRenderCache(ownerState, cacheState, cache, source, opti
70
61
  if (dirty || resized) {
71
62
  cacheState.gl.clearColor(0, 0, 0, 0);
72
63
  cacheState.gl.clear(cacheState.gl.COLOR_BUFFER_BIT);
73
- renderGlScene2D(cacheState, source);
64
+ renderGlScene2D(pass, source);
74
65
  }
75
66
  }
76
67
  finally {
77
- endGlRenderPass(cacheState);
68
+ endGlRenderPass(pass);
78
69
  }
79
70
  return dirty || resized;
80
71
  }
@@ -85,8 +76,8 @@ export function releaseGlRenderCache(ownerState, cache) {
85
76
  const target = targets.get(cache);
86
77
  if (target === undefined)
87
78
  return;
88
- // A GlRenderTarget owns a framebuffer and texture; GC will not free them.
89
- destroyGlRenderTarget(ownerState, target);
79
+ // A GlTextureRenderTarget owns a framebuffer and texture; GC will not free them.
80
+ destroyGlTextureRenderTarget(target);
90
81
  targets.delete(cache);
91
82
  }
92
83
  function drawGlRenderCache(state, renderProxy) {
@@ -103,7 +94,7 @@ function drawGlRenderCache(state, renderProxy) {
103
94
  flushGlQuadBatchWriter(state);
104
95
  // renderProxy.transform2D already carries the cache placement transform (folded in by the
105
96
  // adapter), so the target composites with an identity offset.
106
- drawGlRenderTargetResult(state, renderProxy, target, _identity);
97
+ drawGlTextureRenderTargetResult(getGlCurrentRenderPass(state), renderProxy, target, _identity);
107
98
  }
108
99
  function ensureTargets(ownerState) {
109
100
  let targets = _renderCacheTargets.get(ownerState);
@@ -119,7 +110,7 @@ function destroyOwnedGlRenderCacheTargets(ownerState) {
119
110
  if (targets === undefined)
120
111
  return;
121
112
  for (const target of targets.values())
122
- destroyGlRenderTarget(ownerState, target);
113
+ destroyGlTextureRenderTarget(target);
123
114
  targets.clear();
124
115
  _renderCacheTargets.delete(ownerState);
125
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"glCache.js","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glCache.js","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Node2D, Scene2DRenderer, GlRenderState, RenderProxy2D } from '@flighthq/types/contract';
1
+ import type { GlRenderPass, GlRenderState, Node2D, RenderProxy2D, Scene2DRenderer } from '@flighthq/types/contract';
2
2
  export declare function drawGlScene2D(_state: GlRenderState, _renderProxy: RenderProxy2D): void;
3
- export declare function renderGlScene2D(state: GlRenderState, source: Node2D): void;
3
+ export declare function renderGlScene2D(pass: GlRenderPass, source: Node2D): void;
4
4
  export declare const defaultGlScene2DRenderer: Scene2DRenderer;
5
5
  //# sourceMappingURL=glNode2D.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glNode2D.d.ts","sourceRoot":"","sources":["../src/glNode2D.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAItG,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,GAAG,IAAI,CAEtF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA8C1E;AAED,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC"}
1
+ {"version":3,"file":"glNode2D.d.ts","sourceRoot":"","sources":["../src/glNode2D.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIpH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,GAAG,IAAI,CAEtF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA+CxE;AAED,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC"}
package/dist/glNode2D.js CHANGED
@@ -5,7 +5,8 @@ import { flushGlQuadBatchWriter } from './glQuadBatchWriter';
5
5
  export function drawGlScene2D(_state, _renderProxy) {
6
6
  // Plain display objects have no visual geometry of their own.
7
7
  }
8
- export function renderGlScene2D(state, source) {
8
+ export function renderGlScene2D(pass, source) {
9
+ const state = pass.state;
9
10
  const gl = state.gl;
10
11
  // The 2D pass establishes the state it draws under rather than depending on a context-lifetime
11
12
  // invariant. These were previously taken on trust from createGlRenderState, which runs once per state,
@@ -1 +1 @@
1
- {"version":3,"file":"glNode2D.js","sourceRoot":"","sources":["../src/glNode2D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,UAAU,aAAa,CAAC,MAAqB,EAAE,YAA2B;IAC9E,8DAA8D;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAoB,EAAE,MAAc;IAClE,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,+FAA+F;IAC/F,uGAAuG;IACvG,uGAAuG;IACvG,uGAAuG;IACvG,uFAAuF;IACvF,0FAA0F;IAC1F,qGAAqG;IACrG,sFAAsF;IACtF,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IACzB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAC1B,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAEpB,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,sBAAsB,CAAC;IAE/C,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAEtB,OAAO,WAAW,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,WAAW,CAAW,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,SAAS;QAE/B,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QAEjC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAAE,SAAS;QAE1C,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YACpD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAW,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,aAAa;CACtB,CAAC"}
1
+ {"version":3,"file":"glNode2D.js","sourceRoot":"","sources":["../src/glNode2D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,UAAU,aAAa,CAAC,MAAqB,EAAE,YAA2B;IAC9E,8DAA8D;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAkB,EAAE,MAAc;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,+FAA+F;IAC/F,uGAAuG;IACvG,uGAAuG;IACvG,uGAAuG;IACvG,uFAAuF;IACvF,0FAA0F;IAC1F,qGAAqG;IACrG,sFAAsF;IACtF,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IACzB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAC1B,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAEpB,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,sBAAsB,CAAC;IAE/C,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAEtB,OAAO,WAAW,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,WAAW,CAAW,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,SAAS;QAE/B,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QAEjC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAAE,SAAS;QAE1C,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YACpD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAW,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,aAAa;CACtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"glTestHelper.d.ts","sourceRoot":"","sources":["../src/glTestHelper.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzE,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAC1F,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAgBA"}
1
+ {"version":3,"file":"glTestHelper.d.ts","sourceRoot":"","sources":["../src/glTestHelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzE,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAC1F,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAcA"}
@@ -1,20 +1,14 @@
1
- import { createEmptyGlRegistries, createGlContextFromCanvasElement, createGlContextState, createGlPipeline, createGlRenderState, } from '@flighthq/render-gl/contract';
2
- // Local test helper for scene2d-gl unit tests. Mirrors render-gl's glTestHelper pattern,
3
- // building state through createGlRenderState. The jsdom webgl2Mock setup file patches
4
- // HTMLCanvasElement.getContext('webgl2') to return a mock GlContext, so
5
- // createGlRenderState produces a fully-populated state with a working mock GL.
1
+ import { createEmptyGlRegistries, createGlPipeline, createGlRenderState } from '@flighthq/render-gl/contract';
6
2
  export function createGlState(options) {
7
3
  const canvas = document.createElement('canvas');
8
4
  canvas.width = 200;
9
5
  canvas.height = 100;
10
- const gl = createGlContextFromCanvasElement(canvas);
6
+ const gl = canvas.getContext('webgl2');
11
7
  Object.defineProperties(gl, {
12
8
  drawingBufferHeight: { configurable: true, value: canvas.height },
13
9
  drawingBufferWidth: { configurable: true, value: canvas.width },
14
10
  });
15
- const contextState = createGlContextState(gl);
16
- const state = createGlRenderState(contextState, createGlPipeline(createEmptyGlRegistries()), {
17
- backgroundColor: 0x00000000,
11
+ const state = createGlRenderState(gl, createGlPipeline(createEmptyGlRegistries()), {
18
12
  imageSmoothingEnabled: options?.allowSmoothing ?? true,
19
13
  pixelRatio: options?.pixelRatio,
20
14
  });
@@ -1 +1 @@
1
- {"version":3,"file":"glTestHelper.js","sourceRoot":"","sources":["../src/glTestHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAGtC,yFAAyF;AACzF,sFAAsF;AACtF,wEAAwE;AACxE,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,OAA2D;IAKvF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE;QAC1B,mBAAmB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QACjE,kBAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;KAChE,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,CAAC,uBAAuB,EAAE,CAAC,EAAE;QAC3F,eAAe,EAAE,UAAU;QAC3B,qBAAqB,EAAE,OAAO,EAAE,cAAc,IAAI,IAAI;QACtD,UAAU,EAAE,OAAO,EAAE,UAAU;KAChC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"glTestHelper.js","sourceRoot":"","sources":["../src/glTestHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAG9G,MAAM,UAAU,aAAa,CAAC,OAA2D;IAKvF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAE,CAAC;IACxC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE;QAC1B,mBAAmB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QACjE,kBAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;KAChE,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,EAAE,gBAAgB,CAAC,uBAAuB,EAAE,CAAC,EAAE;QACjF,qBAAqB,EAAE,OAAO,EAAE,cAAc,IAAI,IAAI;QACtD,UAAU,EAAE,OAAO,EAAE,UAAU;KAChC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;AACzC,CAAC"}
@@ -1,6 +1,6 @@
1
- import type { GlRenderState, GlRenderTarget, GlVelocityContext, GlVelocityWriter, Kind, Transform2DNode, VelocityField } from '@flighthq/types/contract';
1
+ import type { GlRenderState, GlTextureRenderTarget, GlVelocityContext, GlVelocityWriter, Kind, Transform2DNode, VelocityField } from '@flighthq/types/contract';
2
2
  /** Allocates an rgba16f render target sized to hold a signed, sub-pixel screen-space velocity buffer. */
3
- export declare function createGlVelocityTarget(state: GlRenderState, width: number, height: number): GlRenderTarget;
3
+ export declare function createGlVelocityTarget(state: GlRenderState, width: number, height: number): GlTextureRenderTarget;
4
4
  export declare const defaultGlNode2DVelocityWriter: GlVelocityWriter;
5
5
  export declare const defaultGlParticleEmitter2DVelocityWriter: GlVelocityWriter;
6
6
  export declare const defaultGlQuadBatchVelocityWriter: GlVelocityWriter;
@@ -18,5 +18,5 @@ export declare function registerGlVelocityWriter(state: GlRenderState, kind: Kin
18
18
  * registered GlVelocityWriter for each node's kind. Nodes whose kind has no writer are skipped; the
19
19
  * cleared (0,0,0,0) background means zero velocity. Restores the previously bound framebuffer.
20
20
  */
21
- export declare function renderGlVelocity<Traits extends object>(state: GlRenderState, root: Readonly<Transform2DNode<Traits>>, field: VelocityField, target: Readonly<GlRenderTarget>): void;
21
+ export declare function renderGlVelocity<Traits extends object>(state: GlRenderState, root: Readonly<Transform2DNode<Traits>>, field: VelocityField, target: Readonly<GlTextureRenderTarget>): void;
22
22
  //# sourceMappingURL=glVelocity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glVelocity.d.ts","sourceRoot":"","sources":["../src/glVelocity.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,IAAI,EAKJ,eAAe,EAEf,aAAa,EACd,MAAM,0BAA0B,CAAC;AAgBlC,yGAAyG;AACzG,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAE1G;AAID,eAAO,MAAM,6BAA6B,EAAE,gBAO3C,CAAC;AAWF,eAAO,MAAM,wCAAwC,EAAE,gBA8DtD,CAAC;AAeF,eAAO,MAAM,gCAAgC,EAAE,gBAyF9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAChC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,IAAI,CAUN;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAG7F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAMzG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,EACpD,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EACvC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC/B,IAAI,CAuCN"}
1
+ {"version":3,"file":"glVelocity.d.ts","sourceRoot":"","sources":["../src/glVelocity.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAEV,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,IAAI,EAKJ,eAAe,EAEf,aAAa,EACd,MAAM,0BAA0B,CAAC;AAgBlC,yGAAyG;AACzG,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAEjH;AAID,eAAO,MAAM,6BAA6B,EAAE,gBAO3C,CAAC;AAWF,eAAO,MAAM,wCAAwC,EAAE,gBA8DtD,CAAC;AAeF,eAAO,MAAM,gCAAgC,EAAE,gBAyF9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAChC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,IAAI,CAUN;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAG7F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAMzG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,EACpD,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EACvC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GACtC,IAAI,CAuCN"}
@@ -1,7 +1,7 @@
1
1
  import { ensureNodeWorldBoundsRectangle, ensureNodeWorldMatrix, getNodeChildAt, getNodeChildCount, getNodeWorldBoundsRectangle, getNodeWorldMatrix, } from '@flighthq/node/contract';
2
2
  import { createGlProgram } from '@flighthq/render-gl/contract';
3
3
  import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
4
- import { createGlRenderTarget } from '@flighthq/render-gl/contract';
4
+ import { createGlTextureRenderTarget } from '@flighthq/render-gl/contract';
5
5
  import { TextureAtlasRotation } from '@flighthq/types/contract';
6
6
  import { EntityRuntimeKey, RegistryEntryState } from '@flighthq/types/contract';
7
7
  import { getVelocity } from '@flighthq/velocity/contract';
@@ -18,7 +18,7 @@ import { getVelocity } from '@flighthq/velocity/contract';
18
18
  // top-left origin, y-down; drawGlVelocityQuad maps a rect into clip space, flipping y.
19
19
  /** Allocates an rgba16f render target sized to hold a signed, sub-pixel screen-space velocity buffer. */
20
20
  export function createGlVelocityTarget(state, width, height) {
21
- return createGlRenderTarget(state, { width, height, format: 'rgba16f' });
21
+ return createGlTextureRenderTarget(state, { width, height, format: 'rgba16f' });
22
22
  }
23
23
  // The default writer for plain display-object nodes: cover the node's world bounds with its velocity.
24
24
  // Batched/instanced kinds (QuadBatch, particles) register a writer that emits per-instance velocity.
@@ -1 +1 @@
1
- {"version":3,"file":"glVelocity.js","sourceRoot":"","sources":["../src/glVelocity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glVelocity.js","sourceRoot":"","sources":["../src/glVelocity.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/scene2d-gl",
3
- "version": "0.5.1-next.1069.554a2ac",
3
+ "version": "0.5.1-next.1201.9b49dee",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,25 +38,25 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/color": "0.5.1-next.1069.554a2ac",
42
- "@flighthq/entity": "0.5.1-next.1069.554a2ac",
43
- "@flighthq/scene2d": "0.5.1-next.1069.554a2ac",
44
- "@flighthq/scene2d-canvas": "0.5.1-next.1069.554a2ac",
45
- "@flighthq/geometry": "0.5.1-next.1069.554a2ac",
46
- "@flighthq/image": "0.5.1-next.1069.554a2ac",
47
- "@flighthq/log": "0.5.1-next.1069.554a2ac",
48
- "@flighthq/node": "0.5.1-next.1069.554a2ac",
49
- "@flighthq/path": "0.5.1-next.1069.554a2ac",
50
- "@flighthq/registry": "0.5.1-next.1069.554a2ac",
51
- "@flighthq/render": "0.5.1-next.1069.554a2ac",
52
- "@flighthq/render-gl": "0.5.1-next.1069.554a2ac",
53
- "@flighthq/shape": "0.5.1-next.1069.554a2ac",
54
- "@flighthq/text": "0.5.1-next.1069.554a2ac",
55
- "@flighthq/textinput": "0.5.1-next.1069.554a2ac",
56
- "@flighthq/textlayout": "0.5.1-next.1069.554a2ac",
57
- "@flighthq/texture": "0.5.1-next.1069.554a2ac",
58
- "@flighthq/types": "0.5.1-next.1069.554a2ac",
59
- "@flighthq/velocity": "0.5.1-next.1069.554a2ac"
41
+ "@flighthq/color": "0.5.1-next.1201.9b49dee",
42
+ "@flighthq/entity": "0.5.1-next.1201.9b49dee",
43
+ "@flighthq/scene2d": "0.5.1-next.1201.9b49dee",
44
+ "@flighthq/scene2d-canvas": "0.5.1-next.1201.9b49dee",
45
+ "@flighthq/geometry": "0.5.1-next.1201.9b49dee",
46
+ "@flighthq/image": "0.5.1-next.1201.9b49dee",
47
+ "@flighthq/log": "0.5.1-next.1201.9b49dee",
48
+ "@flighthq/node": "0.5.1-next.1201.9b49dee",
49
+ "@flighthq/path": "0.5.1-next.1201.9b49dee",
50
+ "@flighthq/registry": "0.5.1-next.1201.9b49dee",
51
+ "@flighthq/render": "0.5.1-next.1201.9b49dee",
52
+ "@flighthq/render-gl": "0.5.1-next.1201.9b49dee",
53
+ "@flighthq/shape": "0.5.1-next.1201.9b49dee",
54
+ "@flighthq/text": "0.5.1-next.1201.9b49dee",
55
+ "@flighthq/textinput": "0.5.1-next.1201.9b49dee",
56
+ "@flighthq/textlayout": "0.5.1-next.1201.9b49dee",
57
+ "@flighthq/texture": "0.5.1-next.1201.9b49dee",
58
+ "@flighthq/types": "0.5.1-next.1201.9b49dee",
59
+ "@flighthq/velocity": "0.5.1-next.1201.9b49dee"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@flighthq/bitmap": "*",
@@ -1,5 +1,9 @@
1
1
  import { createBitmapText, getBitmapTextPages, updateBitmapText } from '@flighthq/bitmaptext/contract';
2
- import { createImageResource } from '@flighthq/image/contract';
2
+ import {
3
+ createImageResource,
4
+ registerTestImageDimensionResolver,
5
+ unregisterTestImageDimensionResolver,
6
+ } from '@flighthq/image/contract';
3
7
  import { setNodeColorAdjustmentsTint } from '@flighthq/node/contract';
4
8
  import { registerGlImageTextureResolver } from '@flighthq/render-gl/contract';
5
9
  import type { BitmapText, GlyphEntry, GlyphSource, RenderProxy2D } from '@flighthq/types/contract';
@@ -11,6 +15,16 @@ import { flushGlQuadBatchWriter } from './glQuadBatchWriter';
11
15
  import { registerGlStandardMaterial } from './glStandardMaterial';
12
16
  import { createGlState } from './glTestHelper';
13
17
 
18
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
19
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
20
+ beforeEach(() => {
21
+ registerTestImageDimensionResolver();
22
+ });
23
+
24
+ afterEach(() => {
25
+ unregisterTestImageDimensionResolver();
26
+ });
27
+
14
28
  // A single-page stub glyph source whose page-0 image carries a drawable host source.
15
29
  function createTestGlyphSource(): GlyphSource {
16
30
  const entries = new Map<number, GlyphEntry>([
@@ -3,7 +3,7 @@ import { createMatrix } from '@flighthq/geometry/contract';
3
3
  import * as renderGl from '@flighthq/render-gl/contract';
4
4
  import { createRenderCache, RenderCacheKind, useRenderCache } from '@flighthq/render/contract';
5
5
  import { createDisplayObject } from '@flighthq/scene2d/contract';
6
- import type { GlRenderState, GlRenderTarget } from '@flighthq/types/contract';
6
+ import type { GlRenderState, GlTextureRenderTarget } from '@flighthq/types/contract';
7
7
 
8
8
  import {
9
9
  createGlCacheState,
@@ -19,16 +19,21 @@ import * as glQuadBatchWriter from './glQuadBatchWriter';
19
19
 
20
20
  // The GL render-target lifecycle (@flighthq/render-gl) and the two local collaborators
21
21
  // ./glQuadBatchWriter and ./glNode2D are stubbed so cache orchestration can be unit-tested without a real
22
- // GL pipeline: createGlRenderTarget returns a plain descriptor, and the composite, batch-flush and
22
+ // GL pipeline: createGlTextureRenderTarget returns a plain descriptor, and the composite, batch-flush and
23
23
  // subtree-render calls become spies for the call and ordering assertions below.
24
24
  beforeEach(() => {
25
25
  vi.spyOn(glQuadBatchWriter, 'flushGlQuadBatchWriter').mockImplementation((() => {}) as never);
26
26
  vi.spyOn(renderGl, 'beginGlRenderPass').mockImplementation((() => {}) as never);
27
+ vi.spyOn(renderGl, 'getGlCurrentRenderPass').mockImplementation(((state: GlRenderState) => ({
28
+ gl: state.gl,
29
+ state,
30
+ target: null,
31
+ })) as never);
27
32
  vi.spyOn(renderGl, 'setGlRenderTransform2D').mockImplementation((() => {}) as never);
28
- vi.spyOn(renderGl, 'createGlRenderTarget').mockImplementation(((
33
+ vi.spyOn(renderGl, 'createGlTextureRenderTarget').mockImplementation(((
29
34
  _state: unknown,
30
35
  descriptor: { width: number; height: number },
31
- ): GlRenderTarget => {
36
+ ): GlTextureRenderTarget => {
32
37
  const texture = {} as WebGLTexture;
33
38
  const out = allocateEntity<any>();
34
39
  out.requestedAxes = {
@@ -53,19 +58,17 @@ beforeEach(() => {
53
58
  out.colorFormats = ['rgba8'];
54
59
  out.depth = 'none';
55
60
  out.colorSpace = 'srgb';
56
- out.clearColors = [];
57
- out.clearDepth = 1;
58
61
  out.sampleCount = 1;
59
62
  out.width = descriptor.width;
60
63
  out.height = descriptor.height;
61
64
  return finishEntity(out);
62
65
  }) as never);
63
- vi.spyOn(renderGl, 'destroyGlRenderTarget').mockImplementation((() => {}) as never);
64
- vi.spyOn(renderGl, 'drawGlRenderTargetResult').mockImplementation((() => {}) as never);
66
+ vi.spyOn(renderGl, 'destroyGlTextureRenderTarget').mockImplementation((() => {}) as never);
67
+ vi.spyOn(renderGl, 'drawGlTextureRenderTargetResult').mockImplementation((() => {}) as never);
65
68
  vi.spyOn(renderGl, 'endGlRenderPass').mockImplementation((() => {}) as never);
66
- vi.spyOn(renderGl, 'resizeGlRenderTarget').mockImplementation(((
69
+ vi.spyOn(renderGl, 'resizeGlTextureRenderTarget').mockImplementation(((
67
70
  _state: unknown,
68
- target: GlRenderTarget,
71
+ target: GlTextureRenderTarget,
69
72
  width: number,
70
73
  height: number,
71
74
  ) => {
@@ -81,7 +84,7 @@ const testPipeline = renderGl.createGlPipeline(renderGl.createEmptyGlRegistries(
81
84
 
82
85
  function fakeScreen(options = {}): GlRenderState {
83
86
  const gl = document.createElement('canvas').getContext('webgl2')!;
84
- return renderGl.createGlRenderState(renderGl.createGlContextState(gl), testPipeline, options);
87
+ return renderGl.createGlRenderState(gl, testPipeline, options);
85
88
  }
86
89
 
87
90
  function makeCacheNode(source: unknown): any {
@@ -94,7 +97,6 @@ describe('createGlCacheState', () => {
94
97
  enableGlRenderCache(screen);
95
98
  const cacheState = createGlCacheState(
96
99
  screen,
97
- screen.contextState,
98
100
  renderGl.createGlPipeline(renderGl.getGlRenderStateRuntime(screen).registries),
99
101
  );
100
102
  expect(renderGl.getGlRenderStateRuntime(cacheState).registries.renderers.entries.get(RenderCacheKind)).toEqual({
@@ -112,7 +114,7 @@ describe('createGlCacheState', () => {
112
114
  const teardown = vi.fn();
113
115
  renderGl.getGlRenderStateRuntime(screen).context.teardowns.push(teardown);
114
116
 
115
- createGlCacheState(screen, screen.contextState, screen.pipeline);
117
+ createGlCacheState(screen, screen.pipeline);
116
118
  renderGl.destroyGlRenderState(screen);
117
119
 
118
120
  expect(teardown).toHaveBeenCalledOnce();
@@ -123,7 +125,7 @@ describe('defaultGlRenderCacheRenderer', () => {
123
125
  it('does nothing when no cache is attached to the source', () => {
124
126
  const state = fakeScreen();
125
127
  defaultGlRenderCacheRenderer.submit(state, makeCacheNode(createDisplayObject()));
126
- expect(renderGl.drawGlRenderTargetResult).not.toHaveBeenCalled();
128
+ expect(renderGl.drawGlTextureRenderTargetResult).not.toHaveBeenCalled();
127
129
  });
128
130
 
129
131
  it('composites the cache target attached to the source node', () => {
@@ -133,7 +135,12 @@ describe('defaultGlRenderCacheRenderer', () => {
133
135
  useRenderCache(state, obj, cache);
134
136
  const target = ensureGlRenderCacheTarget(state, cache, 16, 16);
135
137
  defaultGlRenderCacheRenderer.submit(state, makeCacheNode(obj));
136
- expect(renderGl.drawGlRenderTargetResult).toHaveBeenCalledWith(state, expect.anything(), target, expect.anything());
138
+ expect(renderGl.drawGlTextureRenderTargetResult).toHaveBeenCalledWith(
139
+ expect.objectContaining({ state }),
140
+ expect.anything(),
141
+ target,
142
+ expect.anything(),
143
+ );
137
144
  });
138
145
 
139
146
  it('flushes pending batched geometry before the immediate composite', () => {
@@ -147,7 +154,7 @@ describe('defaultGlRenderCacheRenderer', () => {
147
154
  // the walk must be drained first, or it replays after the cache result (a doubled image).
148
155
  expect(glQuadBatchWriter.flushGlQuadBatchWriter).toHaveBeenCalledWith(state);
149
156
  expect((glQuadBatchWriter.flushGlQuadBatchWriter as any).mock.invocationCallOrder[0]).toBeLessThan(
150
- (renderGl.drawGlRenderTargetResult as any).mock.invocationCallOrder[0],
157
+ (renderGl.drawGlTextureRenderTargetResult as any).mock.invocationCallOrder[0],
151
158
  );
152
159
  });
153
160
  });
@@ -204,7 +211,7 @@ describe('getGlRenderCacheTarget', () => {
204
211
  describe('refreshGlRenderCache', () => {
205
212
  it('bakes on the first call and allocates the target on the screen state', () => {
206
213
  const screen = fakeScreen();
207
- const cacheState = createGlCacheState(screen, screen.contextState, screen.pipeline);
214
+ const cacheState = createGlCacheState(screen, screen.pipeline);
208
215
  const cache = createRenderCache();
209
216
  const obj = createDisplayObject();
210
217
  const rebaked = refreshGlRenderCache(screen, cacheState, cache, obj, { padding: 5 });
@@ -217,7 +224,7 @@ describe('refreshGlRenderCache', () => {
217
224
 
218
225
  it('skips the bake under requiresInvalidation when nothing changed', () => {
219
226
  const screen = fakeScreen({ sceneGraphSyncPolicy: 'requiresInvalidation' });
220
- const cacheState = createGlCacheState(screen, screen.contextState, screen.pipeline, {
227
+ const cacheState = createGlCacheState(screen, screen.pipeline, {
221
228
  sceneGraphSyncPolicy: 'requiresInvalidation',
222
229
  });
223
230
  const cache = createRenderCache();
@@ -233,7 +240,7 @@ describe('releaseGlRenderCache', () => {
233
240
  const cache = createRenderCache();
234
241
  const target = ensureGlRenderCacheTarget(state, cache, 8, 8);
235
242
  releaseGlRenderCache(state, cache);
236
- expect(renderGl.destroyGlRenderTarget).toHaveBeenCalledWith(state, target);
243
+ expect(renderGl.destroyGlTextureRenderTarget).toHaveBeenCalledWith(target);
237
244
  expect(getGlRenderCacheTarget(state, cache)).toBeNull();
238
245
  });
239
246
 
@@ -241,10 +248,10 @@ describe('releaseGlRenderCache', () => {
241
248
  const state = fakeScreen();
242
249
  ensureGlRenderCacheTarget(state, createRenderCache(), 8, 8);
243
250
  ensureGlRenderCacheTarget(state, createRenderCache(), 16, 16);
244
- vi.mocked(renderGl.destroyGlRenderTarget).mockClear();
251
+ vi.mocked(renderGl.destroyGlTextureRenderTarget).mockClear();
245
252
 
246
253
  renderGl.destroyGlRenderState(state);
247
254
 
248
- expect(renderGl.destroyGlRenderTarget).toHaveBeenCalledTimes(2);
255
+ expect(renderGl.destroyGlTextureRenderTarget).toHaveBeenCalledTimes(2);
249
256
  });
250
257
  });
@@ -2,7 +2,7 @@ import { createMatrix } from '@flighthq/geometry/contract';
2
2
  import { createViewport } from '@flighthq/node/contract';
3
3
  import {
4
4
  beginGlRenderPass,
5
- createGlRenderTarget,
5
+ createGlTextureRenderTarget,
6
6
  endGlRenderPass,
7
7
  getGlRenderStateRuntime,
8
8
  } from '@flighthq/render-gl/contract';
@@ -33,10 +33,10 @@ describe('pushGlClipContours', () => {
33
33
  it('rejects a shared-context cache refresh into the contour target before it can clear coverage', () => {
34
34
  const { state, gl } = createGlState();
35
35
  const cache = createRenderCache();
36
- const cacheState = createGlCacheState(state, state.contextState, state.pipeline);
36
+ const cacheState = createGlCacheState(state, state.pipeline);
37
37
  const source = createDisplayObject();
38
38
  const target = ensureGlRenderCacheTarget(state, cache, 1, 1);
39
- beginGlRenderPass(state, target, { preserveDepth: true });
39
+ const pass = beginGlRenderPass(state, target);
40
40
  pushGlClipContours(state, SQUARE, 'nonZero', createMatrix());
41
41
  gl.depthMask(false);
42
42
  const stencilClearCount = vi.mocked(gl.clear).mock.calls.length;
@@ -47,13 +47,13 @@ describe('pushGlClipContours', () => {
47
47
 
48
48
  expect(gl.clear).toHaveBeenCalledTimes(stencilClearCount);
49
49
  expect(getGlRenderStateRuntime(state).currentMaskDepth).toBe(1);
50
- endGlRenderPass(state);
50
+ endGlRenderPass(pass);
51
51
  });
52
52
 
53
53
  it('restores the outer framebuffer after a shared-context cache refresh into another target', () => {
54
54
  const { state, gl } = createGlState();
55
- const cacheState = createGlCacheState(state, state.contextState, state.pipeline);
56
- const outer = createGlRenderTarget(state, {
55
+ const cacheState = createGlCacheState(state, state.pipeline);
56
+ const outer = createGlTextureRenderTarget(state, {
57
57
  depth: 'depth-stencil',
58
58
  height: 64,
59
59
  width: 64,
@@ -66,14 +66,14 @@ describe('pushGlClipContours', () => {
66
66
  y: 5,
67
67
  });
68
68
 
69
- beginGlRenderPass(state, outer, { preserveDepth: true }, viewport);
69
+ const pass = beginGlRenderPass(state, outer, undefined, viewport);
70
70
  const outerScissor = getGlRenderStateRuntime(state).currentScissorRect;
71
71
  refreshGlRenderCache(state, cacheState, createRenderCache(), createDisplayObject());
72
72
 
73
73
  expect(vi.mocked(gl.bindFramebuffer).mock.calls.at(-1)?.[1]).toBe(outer.framebuffer);
74
74
  expect(getGlRenderStateRuntime(state).currentFramebuffer).toBe(outer.framebuffer);
75
75
  expect(getGlRenderStateRuntime(state).currentScissorRect).toEqual(outerScissor);
76
- endGlRenderPass(state);
76
+ endGlRenderPass(pass);
77
77
  });
78
78
 
79
79
  it('enables the stencil test and clears the buffer when opening the first clip', () => {
@@ -1,14 +1,8 @@
1
1
  import { addNodeChild } from '@flighthq/node/contract';
2
- import {
3
- createEmptyGlRegistries,
4
- createGlContextFromCanvasElement,
5
- createGlContextState,
6
- createGlPipeline,
7
- createGlRenderState,
8
- } from '@flighthq/render-gl/contract';
2
+ import { createEmptyGlRegistries, createGlPipeline, createGlRenderState } from '@flighthq/render-gl/contract';
9
3
  import { getOrCreateRenderProxy2D, prepareScene2DRender, registerRenderer } from '@flighthq/render/contract';
10
4
  import { createDisplayObject } from '@flighthq/scene2d/contract';
11
- import type { GlRenderState } from '@flighthq/types/contract';
5
+ import type { GlRenderPass, GlRenderState, GlRenderTarget } from '@flighthq/types/contract';
12
6
  import { DisplayObjectKind } from '@flighthq/types/contract';
13
7
 
14
8
  import { defaultGlScene2DRenderer, drawGlScene2D, renderGlScene2D } from './glNode2D';
@@ -17,8 +11,11 @@ function makeState(): GlRenderState {
17
11
  const canvas = document.createElement('canvas');
18
12
  canvas.width = 200;
19
13
  canvas.height = 100;
20
- const contextState = createGlContextState(createGlContextFromCanvasElement(canvas));
21
- return createGlRenderState(contextState, createGlPipeline(createEmptyGlRegistries()));
14
+ return createGlRenderState(canvas.getContext('webgl2')!, createGlPipeline(createEmptyGlRegistries()));
15
+ }
16
+
17
+ function mockPass(state: GlRenderState): GlRenderPass {
18
+ return { gl: state.gl, state, target: {} as GlRenderTarget } as GlRenderPass;
22
19
  }
23
20
 
24
21
  function makeRenderer() {
@@ -46,18 +43,12 @@ describe('renderGlScene2D', () => {
46
43
  it('establishes its own cull, depth, and blend state rather than inheriting it from a previous 3D pass', () => {
47
44
  const state = makeState();
48
45
  const gl = state.gl;
49
- // Real WebGL2 confirms the consequence this guards: Flight's 2D quad is wound (x0,y0)(x1,y0)(x1,y1)
50
- // in a y-down space that the projection flips, so it is a BACK face under the CCW default. Drawing
51
- // it with CULL_FACE left enabled by the 3D mesh path erases 2D content entirely — 2304 lit pixels
52
- // become 0. Depth testing is the same class: a stale 3D depth buffer rejects 2D fragments.
53
- // Seeded to the exact hostile state a prior 3D pass leaves: cull and depth on, blend off. Starting
54
- // from the API default would make "sets what it needs" indistinguishable from "changed nothing".
55
46
  const enabled = new Set<number>([gl.CULL_FACE, gl.DEPTH_TEST]);
56
47
  (gl.isEnabled as ReturnType<typeof vi.fn>).mockImplementation((cap: number) => enabled.has(cap));
57
48
  (gl.enable as ReturnType<typeof vi.fn>).mockImplementation((cap: number) => enabled.add(cap));
58
49
  (gl.disable as ReturnType<typeof vi.fn>).mockImplementation((cap: number) => enabled.delete(cap));
59
50
 
60
- renderGlScene2D(state, createDisplayObject());
51
+ renderGlScene2D(mockPass(state), createDisplayObject());
61
52
 
62
53
  expect(enabled.has(gl.CULL_FACE)).toBe(false);
63
54
  expect(enabled.has(gl.DEPTH_TEST)).toBe(false);
@@ -68,7 +59,7 @@ describe('renderGlScene2D', () => {
68
59
  const state = makeState();
69
60
  const obj = createDisplayObject();
70
61
  prepareScene2DRender(state, obj);
71
- expect(() => renderGlScene2D(state, obj)).not.toThrow();
62
+ expect(() => renderGlScene2D(mockPass(state), obj)).not.toThrow();
72
63
  });
73
64
 
74
65
  it('calls renderer.submit for a visible object with a renderer', () => {
@@ -79,7 +70,7 @@ describe('renderGlScene2D', () => {
79
70
  const data = getOrCreateRenderProxy2D(state, obj);
80
71
  prepareScene2DRender(state, obj);
81
72
 
82
- renderGlScene2D(state, obj);
73
+ renderGlScene2D(mockPass(state), obj);
83
74
 
84
75
  expect(renderer.submit).toHaveBeenCalledWith(state, data);
85
76
  });
@@ -92,7 +83,7 @@ describe('renderGlScene2D', () => {
92
83
  obj.alpha = 0;
93
84
  prepareScene2DRender(state, obj);
94
85
 
95
- renderGlScene2D(state, obj);
86
+ renderGlScene2D(mockPass(state), obj);
96
87
 
97
88
  expect(renderer.submit).not.toHaveBeenCalled();
98
89
  });
@@ -106,7 +97,7 @@ describe('renderGlScene2D', () => {
106
97
  addNodeChild(parent, child);
107
98
  prepareScene2DRender(state, parent);
108
99
 
109
- renderGlScene2D(state, parent);
100
+ renderGlScene2D(mockPass(state), parent);
110
101
 
111
102
  expect(renderer.submit).toHaveBeenCalledTimes(2);
112
103
  });
@@ -1,4 +1,8 @@
1
- import { createImageResource } from '@flighthq/image/contract';
1
+ import {
2
+ createImageResource,
3
+ registerTestImageDimensionResolver,
4
+ unregisterTestImageDimensionResolver,
5
+ } from '@flighthq/image/contract';
2
6
  import {
3
7
  getGlRenderStateRuntime,
4
8
  registerGlCompressedImageTextureResolver,
@@ -11,6 +15,16 @@ import { CompressedImageTextureSourceKind, RegistryEntryState, TextureAtlasRotat
11
15
  import { defaultGlParticleEmitter2DRenderer, drawGlParticleEmitter2D } from './glParticleEmitter2D';
12
16
  import { createGlState } from './glTestHelper';
13
17
 
18
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
19
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
20
+ beforeEach(() => {
21
+ registerTestImageDimensionResolver();
22
+ });
23
+
24
+ afterEach(() => {
25
+ unregisterTestImageDimensionResolver();
26
+ });
27
+
14
28
  function makeAtlas(rotation = TextureAtlasRotation.None) {
15
29
  const img = document.createElement('img');
16
30
  const image = createImageResource(img);
@@ -179,6 +179,20 @@ describe('defaultGlQuadBatchRenderer.submit', () => {
179
179
  expect(gl.drawElementsInstanced).toHaveBeenCalledWith(expect.anything(), 6, expect.anything(), 0, 1);
180
180
  });
181
181
  });
182
- import { createImageResource } from '@flighthq/image/contract';
182
+ import {
183
+ createImageResource,
184
+ registerTestImageDimensionResolver,
185
+ unregisterTestImageDimensionResolver,
186
+ } from '@flighthq/image/contract';
183
187
  import { registerGlImageTextureResolver } from '@flighthq/render-gl/contract';
184
188
  import { createTexture } from '@flighthq/texture/contract';
189
+
190
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
191
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
192
+ beforeEach(() => {
193
+ registerTestImageDimensionResolver();
194
+ });
195
+
196
+ afterEach(() => {
197
+ unregisterTestImageDimensionResolver();
198
+ });
@@ -1,4 +1,8 @@
1
- import { createImageResource } from '@flighthq/image/contract';
1
+ import {
2
+ createImageResource,
3
+ registerTestImageDimensionResolver,
4
+ unregisterTestImageDimensionResolver,
5
+ } from '@flighthq/image/contract';
2
6
  import * as flightNode from '@flighthq/node/contract';
3
7
  import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
4
8
  import { enableRenderRegistryGuards, explainRenderRegistryMisses } from '@flighthq/render/contract';
@@ -27,6 +31,16 @@ import { registerGlShapeRasterizer } from './glShapeRasterizer';
27
31
  import { registerGlStandardMaterial } from './glStandardMaterial';
28
32
  import { createGlState } from './glTestHelper';
29
33
 
34
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
35
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
36
+ beforeEach(() => {
37
+ registerTestImageDimensionResolver();
38
+ });
39
+
40
+ afterEach(() => {
41
+ unregisterTestImageDimensionResolver();
42
+ });
43
+
30
44
  function createTestRaster2DSurface(width: number, height: number): Raster2DSurface {
31
45
  const canvas = document.createElement('canvas');
32
46
  canvas.width = width;
@@ -1,4 +1,8 @@
1
- import { createImageResource } from '@flighthq/image/contract';
1
+ import {
2
+ createImageResource,
3
+ registerTestImageDimensionResolver,
4
+ unregisterTestImageDimensionResolver,
5
+ } from '@flighthq/image/contract';
2
6
  import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
3
7
  import { createRichText } from '@flighthq/text/contract';
4
8
  import { enableTextInput } from '@flighthq/textinput/contract';
@@ -17,6 +21,16 @@ import {
17
21
  } from './glRichText';
18
22
  import { createGlState } from './glTestHelper';
19
23
 
24
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
25
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
26
+ beforeEach(() => {
27
+ registerTestImageDimensionResolver();
28
+ });
29
+
30
+ afterEach(() => {
31
+ unregisterTestImageDimensionResolver();
32
+ });
33
+
20
34
  function makeRichTextNode(rendererData: unknown = { surface: createTestRaster2DSurface(1, 1) }): RenderProxy2D {
21
35
  const richText = createRichText();
22
36
  return {
@@ -1,4 +1,9 @@
1
- import { createImageResource, invalidateImageResource } from '@flighthq/image/contract';
1
+ import {
2
+ createImageResource,
3
+ invalidateImageResource,
4
+ registerTestImageDimensionResolver,
5
+ unregisterTestImageDimensionResolver,
6
+ } from '@flighthq/image/contract';
2
7
  import { bindGlImageResourceTexture, getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
3
8
  import { getOrCreateRenderProxy2D } from '@flighthq/render/contract';
4
9
  import { appendShapeBeginFill, appendShapeRectangle, createScale9Shape } from '@flighthq/shape/contract';
@@ -17,6 +22,16 @@ import {
17
22
  } from './glScale9Shape';
18
23
  import { createGlState } from './glTestHelper';
19
24
 
25
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
26
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
27
+ beforeEach(() => {
28
+ registerTestImageDimensionResolver();
29
+ });
30
+
31
+ afterEach(() => {
32
+ unregisterTestImageDimensionResolver();
33
+ });
34
+
20
35
  const grid = { height: 80, width: 80, x: 10, y: 10 };
21
36
  const destroySurface = vi.fn();
22
37
 
@@ -1,4 +1,8 @@
1
- import { createImageResource } from '@flighthq/image/contract';
1
+ import {
2
+ createImageResource,
3
+ registerTestImageDimensionResolver,
4
+ unregisterTestImageDimensionResolver,
5
+ } from '@flighthq/image/contract';
2
6
  import * as flightNode from '@flighthq/node/contract';
3
7
  import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
4
8
  import {
@@ -40,6 +44,16 @@ import { registerGlShapeRasterizer } from './glShapeRasterizer';
40
44
  import { registerGlStandardMaterial } from './glStandardMaterial';
41
45
  import { createGlState } from './glTestHelper';
42
46
 
47
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
48
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
49
+ beforeEach(() => {
50
+ registerTestImageDimensionResolver();
51
+ });
52
+
53
+ afterEach(() => {
54
+ unregisterTestImageDimensionResolver();
55
+ });
56
+
43
57
  const noopRasterizer = (): void => {};
44
58
 
45
59
  function createTestRaster2DSurface(width: number, height: number): Raster2DSurface {
@@ -1,5 +1,9 @@
1
1
  import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
2
- import { createImageResource } from '@flighthq/image/contract';
2
+ import {
3
+ createImageResource,
4
+ registerTestImageDimensionResolver,
5
+ unregisterTestImageDimensionResolver,
6
+ } from '@flighthq/image/contract';
3
7
  import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
4
8
  import type { GlShapeRendererData, Raster2DSurface, Raster2DSurfaceProvider } from '@flighthq/types/contract';
5
9
  import { EntityRuntimeKey } from '@flighthq/types/contract';
@@ -14,6 +18,16 @@ import {
14
18
  } from './glShapeData';
15
19
  import { createGlState } from './glTestHelper';
16
20
 
21
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
22
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
23
+ beforeEach(() => {
24
+ registerTestImageDimensionResolver();
25
+ });
26
+
27
+ afterEach(() => {
28
+ unregisterTestImageDimensionResolver();
29
+ });
30
+
17
31
  const destroySurface = vi.fn();
18
32
 
19
33
  function emptyData(): GlShapeRendererData {
@@ -86,7 +86,7 @@ describe('drawGlSprite', () => {
86
86
  registerGlStandardMaterial(state);
87
87
  const renderTexture = createRenderTexture({ height: 480, width: 720 });
88
88
  setTextureUvFromPixelRect(renderTexture, 140, 160, 100, 80);
89
- renderIntoGlRenderTexture(state, renderTexture, () => {});
89
+ renderIntoGlRenderTexture(state, renderTexture, () => {}, { color: [0, 0, 0, 0], depth: 1.0, stencil: 0 });
90
90
  const sprite = { data: { texture: renderTexture } } as Sprite;
91
91
 
92
92
  drawGlSprite(state, makeRenderProxy(sprite));
@@ -1,4 +1,8 @@
1
- import { createImageResource } from '@flighthq/image/contract';
1
+ import {
2
+ createImageResource,
3
+ registerTestImageDimensionResolver,
4
+ unregisterTestImageDimensionResolver,
5
+ } from '@flighthq/image/contract';
2
6
  import { createRichText } from '@flighthq/text/contract';
3
7
  import { enableTextInput, setTextInputSelection } from '@flighthq/textinput/contract';
4
8
  import type { Raster2DSurface, RenderProxy2D, RichText } from '@flighthq/types/contract';
@@ -8,6 +12,16 @@ import { createGlRichTextData, drawGlRichText } from './glRichText';
8
12
  import { createGlState } from './glTestHelper';
9
13
  import { drawGlTextInputOverlay, enableGlTextInput } from './glTextInput';
10
14
 
15
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
16
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
17
+ beforeEach(() => {
18
+ registerTestImageDimensionResolver();
19
+ });
20
+
21
+ afterEach(() => {
22
+ unregisterTestImageDimensionResolver();
23
+ });
24
+
11
25
  function makeFocusedInputProxy(state: Parameters<typeof createGlRichTextData>[0]): RenderProxy2D {
12
26
  const node = createRichText({ data: { height: 40, text: 'hello', width: 100 } });
13
27
  enableTextInput(node).focused = true;
@@ -1,4 +1,8 @@
1
- import { createImageResource } from '@flighthq/image/contract';
1
+ import {
2
+ createImageResource,
3
+ registerTestImageDimensionResolver,
4
+ unregisterTestImageDimensionResolver,
5
+ } from '@flighthq/image/contract';
2
6
  import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
3
7
  import { createTextLabel, setTextLabelString } from '@flighthq/text/contract';
4
8
  import * as textlayout from '@flighthq/textlayout/contract';
@@ -10,6 +14,16 @@ import { registerGlStandardMaterial } from './glStandardMaterial';
10
14
  import { createGlState } from './glTestHelper';
11
15
  import { defaultGlTextLabelRenderer, drawGlTextLabel, initializeGlTextLabelData } from './glTextLabel';
12
16
 
17
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
18
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
19
+ beforeEach(() => {
20
+ registerTestImageDimensionResolver();
21
+ });
22
+
23
+ afterEach(() => {
24
+ unregisterTestImageDimensionResolver();
25
+ });
26
+
13
27
  // @flighthq/textlayout.computeTextLayout is stubbed to emit one deterministic glyph group.
14
28
  beforeEach(() => {
15
29
  vi.spyOn(textlayout, 'computeTextLayout').mockImplementation(((
@@ -119,6 +119,20 @@ describe('defaultGlTilemapRenderer.submit', () => {
119
119
  expect(gl.drawElementsInstanced).toHaveBeenCalledWith(expect.anything(), 6, expect.anything(), 0, 2);
120
120
  });
121
121
  });
122
- import { createImageResource } from '@flighthq/image/contract';
122
+ import {
123
+ createImageResource,
124
+ registerTestImageDimensionResolver,
125
+ unregisterTestImageDimensionResolver,
126
+ } from '@flighthq/image/contract';
123
127
  import { registerGlImageTextureResolver } from '@flighthq/render-gl/contract';
124
128
  import { createTexture } from '@flighthq/texture/contract';
129
+
130
+ // A test that wraps a host handle supplies the host: the resource measures through the registered
131
+ // resolver, and clearing after each test keeps this file from covering for another's missing one.
132
+ beforeEach(() => {
133
+ registerTestImageDimensionResolver();
134
+ });
135
+
136
+ afterEach(() => {
137
+ unregisterTestImageDimensionResolver();
138
+ });
@@ -1,6 +1,6 @@
1
1
  import { createParticleEmitter2D, reserveParticleEmitter2D } from '@flighthq/particleemitter/contract';
2
2
  import { createQuadBatch, getQuadBatchRuntime } from '@flighthq/quadbatch/contract';
3
- import { createGlOffscreenRenderState, createGlPipeline, getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
3
+ import { createGlPipeline, createGlRenderState, getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
4
4
  import { createDisplayObject } from '@flighthq/scene2d/contract';
5
5
  import type { QuadBatchRuntime, TextureAtlas, TextureAtlasRegion } from '@flighthq/types/contract';
6
6
  import { QuadBatchKind } from '@flighthq/types/contract';
@@ -138,10 +138,7 @@ describe('registerGlVelocityWriter', () => {
138
138
 
139
139
  registerGlVelocityWriter(state, kind, defaultGlNode2DVelocityWriter);
140
140
  const registered = getGlRenderStateRuntime(state).registries.velocityWriters;
141
- const offscreen = createGlOffscreenRenderState(
142
- state.contextState,
143
- createGlPipeline(getGlRenderStateRuntime(state).registries),
144
- );
141
+ const offscreen = createGlRenderState(state.gl, createGlPipeline(getGlRenderStateRuntime(state).registries));
145
142
  registerGlVelocityWriter(state, kind, replacement);
146
143
 
147
144
  expect(registered).not.toBe(before);