@flighthq/render-gl 0.5.1-next.601.e6e16ba → 0.5.1-next.638.d4dbd4e

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/render-gl`. The `@fl
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/render-gl@0.5.1-next.601.e6e16ba](https://github.com/flighthq/flight/tree/e6e16ba4e02530d9579d14d496d5df29f0784c68/packages/render-gl)
17
- - [License](https://github.com/flighthq/flight/blob/e6e16ba4e02530d9579d14d496d5df29f0784c68/LICENSE.md)
16
+ - [Source for @flighthq/render-gl@0.5.1-next.638.d4dbd4e](https://github.com/flighthq/flight/tree/d4dbd4e347dc8be10b180c85a766ab50333dcb51/packages/render-gl)
17
+ - [License](https://github.com/flighthq/flight/blob/d4dbd4e347dc8be10b180c85a766ab50333dcb51/LICENSE.md)
@@ -1 +1 @@
1
- {"version":3,"file":"glFullscreenPass.d.ts","sourceRoot":"","sources":["../src/glFullscreenPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAoB9G,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAatF;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,mBAAmB,CAkBrG;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,EACrC,WAAW,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI,GAC3E,IAAI,CA6CN"}
1
+ {"version":3,"file":"glFullscreenPass.d.ts","sourceRoot":"","sources":["../src/glFullscreenPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAoB9G,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAatF;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,mBAAmB,CAkBrG;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,EACrC,WAAW,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI,GAC3E,IAAI,CAkFN"}
@@ -76,12 +76,56 @@ export function drawGlFullscreenPass(state, program, inputs, dest, setUniforms)
76
76
  }
77
77
  gl.activeTexture(gl.TEXTURE0);
78
78
  runtime.context.currentTextureRealization = null;
79
+ // The fixed-function state this quad's result depends on, owned rather than inherited. Everything
80
+ // below was previously whatever the last draw happened to leave, and each one has a way to silently
81
+ // void the pass rather than error:
82
+ //
83
+ // BLEND — `applyGlBlendMode` sets the equation and factors but never the enable bit, so the pass took
84
+ // it from the single `gl.enable(gl.BLEND)` in `createGlRenderState`. `drawGlScene3D` ends its
85
+ // blended-subset pass with `gl.disable(gl.BLEND)` and never re-enables it, so a present or effect pass
86
+ // after a 3D scene composited unblended while its factors said otherwise.
87
+ //
88
+ // DEPTH — a 3D scene leaves GL_DEPTH_TEST on with GL_LESS and depth writes on, and the DEFAULT
89
+ // framebuffer is the one surface nothing clears between frames. The present quad passed on frame one,
90
+ // wrote its own depth, and was rejected at that same depth forever after: the canvas froze on frame
91
+ // one while the scene kept drawing correctly behind it.
92
+ //
93
+ // CULL_FACE — the quad is wound CCW and survived an inherited cull only because `glMeshProgram`
94
+ // restores FRONT_FACE to CCW after every mesh draw. Its comment records what happens otherwise: a CW
95
+ // winding left behind a mirrored mesh culls this pass and the frame comes back blank. Disabling the
96
+ // capability here retires that cross-package invariant instead of depending on it.
97
+ //
98
+ // All three are restored afterwards, because the pass runs mid-frame: an effect chain puts several of
99
+ // these between scene draws, and a 3D draw resuming with depth or culling silently off renders wrong.
100
+ const blendEnabled = gl.isEnabled(gl.BLEND);
101
+ const cullFaceEnabled = gl.isEnabled(gl.CULL_FACE);
102
+ const depthTestEnabled = gl.isEnabled(gl.DEPTH_TEST);
103
+ const depthWriteEnabled = gl.getParameter(gl.DEPTH_WRITEMASK) !== false;
104
+ if (!blendEnabled)
105
+ gl.enable(gl.BLEND);
106
+ if (cullFaceEnabled)
107
+ gl.disable(gl.CULL_FACE);
108
+ if (depthTestEnabled)
109
+ gl.disable(gl.DEPTH_TEST);
110
+ if (depthWriteEnabled)
111
+ gl.depthMask(false);
79
112
  runtime.context.currentBlendSignature = null;
80
113
  applyGlBlendMode(state, null);
81
114
  setUniforms(gl, program);
82
115
  drawGlFullscreenQuad(state, program);
83
116
  runtime.context.currentBlendSignature = null;
84
117
  applyGlBlendMode(state, null);
118
+ // Restored after the trailing blend-mode apply so the caller gets back the enable bit it had. The
119
+ // blend FACTORS are deliberately left at NORMAL — that is this function's pre-existing contract,
120
+ // tracked through `currentBlendSignature`; the host bracket is what restores factors at the boundary.
121
+ if (depthWriteEnabled)
122
+ gl.depthMask(true);
123
+ if (depthTestEnabled)
124
+ gl.enable(gl.DEPTH_TEST);
125
+ if (cullFaceEnabled)
126
+ gl.enable(gl.CULL_FACE);
127
+ if (!blendEnabled)
128
+ gl.disable(gl.BLEND);
85
129
  // Unbind the sampled inputs. A fullscreen pass frequently reads a render target's own texture and
86
130
  // presents it; leaving that texture bound lets the NEXT draw that renders back into that target form
87
131
  // a framebuffer/active-texture feedback loop (e.g. a 3D scene re-rendered into a reused present
@@ -1 +1 @@
1
- {"version":3,"file":"glFullscreenPass.js","sourceRoot":"","sources":["../src/glFullscreenPass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glFullscreenPass.js","sourceRoot":"","sources":["../src/glFullscreenPass.ts"],"names":[],"mappings":"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"}
@@ -170,6 +170,12 @@ function restoreGlCapability(gl, capability, enabled) {
170
170
  // The fixed-function state stack is keyed by render state, matching the render-pass bracket: two
171
171
  // render states sharing a GL context still have independent ownership/nesting scopes.
172
172
  const _renderStateStack = new WeakMap();
173
- // The 2D GL pipelines use units 0-2: the primary image plus two auxiliary effect inputs.
174
- const GL_RENDER_STATE_TEXTURE_UNIT_COUNT = 3;
173
+ // Every texture unit any Flight GL path binds, because this list IS the promise that a host gets its
174
+ // context back as it left it — a unit bound during a draw but missing here is handed back pointing at
175
+ // Flight's texture, silently. 3 was correct when only the 2D pipelines existed (primary image plus two
176
+ // auxiliary effect inputs) and went stale when the 3D path arrived: `glPbrStandardBlock` binds through
177
+ // unit 6, `glLitProgram` the shadow map and IBL set at 8-11, and `glMeshProgram` the skin palettes at
178
+ // 12-13, the highest. It cannot be derived here — those constants live in `scene3d-gl`, which depends
179
+ // on this package and not the other way round — so adding a unit above 13 anywhere means raising this.
180
+ const GL_RENDER_STATE_TEXTURE_UNIT_COUNT = 14;
175
181
  //# sourceMappingURL=glRenderStateBracket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"glRenderStateBracket.js","sourceRoot":"","sources":["../src/glRenderStateBracket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glRenderStateBracket.js","sourceRoot":"","sources":["../src/glRenderStateBracket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/render-gl",
3
- "version": "0.5.1-next.601.e6e16ba",
3
+ "version": "0.5.1-next.638.d4dbd4e",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,16 +38,16 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/color": "0.5.1-next.601.e6e16ba",
42
- "@flighthq/entity": "0.5.1-next.601.e6e16ba",
43
- "@flighthq/log": "0.5.1-next.601.e6e16ba",
44
- "@flighthq/scene2d": "0.5.1-next.601.e6e16ba",
45
- "@flighthq/geometry": "0.5.1-next.601.e6e16ba",
46
- "@flighthq/render": "0.5.1-next.601.e6e16ba",
47
- "@flighthq/registry": "0.5.1-next.601.e6e16ba",
48
- "@flighthq/signals": "0.5.1-next.601.e6e16ba",
49
- "@flighthq/texture": "0.5.1-next.601.e6e16ba",
50
- "@flighthq/types": "0.5.1-next.601.e6e16ba"
41
+ "@flighthq/color": "0.5.1-next.638.d4dbd4e",
42
+ "@flighthq/entity": "0.5.1-next.638.d4dbd4e",
43
+ "@flighthq/log": "0.5.1-next.638.d4dbd4e",
44
+ "@flighthq/scene2d": "0.5.1-next.638.d4dbd4e",
45
+ "@flighthq/geometry": "0.5.1-next.638.d4dbd4e",
46
+ "@flighthq/render": "0.5.1-next.638.d4dbd4e",
47
+ "@flighthq/registry": "0.5.1-next.638.d4dbd4e",
48
+ "@flighthq/signals": "0.5.1-next.638.d4dbd4e",
49
+ "@flighthq/texture": "0.5.1-next.638.d4dbd4e",
50
+ "@flighthq/types": "0.5.1-next.638.d4dbd4e"
51
51
  },
52
52
  "devDependencies": {
53
53
  "typescript": "^5.3.0"
@@ -133,6 +133,135 @@ describe('compileGlFullscreenProgram', () => {
133
133
  });
134
134
 
135
135
  describe('drawGlFullscreenPass', () => {
136
+ // The freeze this guards against: a fullscreen pass covers its whole destination, so the
137
+ // destination's depth buffer is not its business — but nothing was turning depth off. Presenting a
138
+ // 3D frame leaves GL_DEPTH_TEST enabled with GL_LESS and depth writes on, and the DEFAULT framebuffer
139
+ // is the one surface nobody clears between frames. So frame one's quad passed, wrote its own depth,
140
+ // and every frame after it was rejected at the same depth: the canvas kept frame one forever while
141
+ // the scene behind it went on drawing correctly. Reading the state AT the draw is the whole point —
142
+ // asserting it around the call would pass against the broken version.
143
+ it('draws with the depth test and depth writes off', () => {
144
+ const { state, gl } = createGlState();
145
+ const program = compileGlFullscreenProgram(gl, FRAG_SRC);
146
+ gl.enable(gl.DEPTH_TEST);
147
+ gl.depthMask(true);
148
+ let depthTestAtDraw: boolean | null = null;
149
+ let depthWriteAtDraw: unknown = null;
150
+ vi.spyOn(gl, 'drawElements').mockImplementation(() => {
151
+ depthTestAtDraw = gl.isEnabled(gl.DEPTH_TEST);
152
+ depthWriteAtDraw = gl.getParameter(gl.DEPTH_WRITEMASK);
153
+ });
154
+
155
+ drawGlFullscreenPass(state, program, [], null, () => {});
156
+
157
+ expect(depthTestAtDraw).toBe(false);
158
+ expect(depthWriteAtDraw).toBe(false);
159
+ });
160
+
161
+ // Restoring matters because the pass is public and runs mid-frame: an effect chain chains several of
162
+ // these between scene draws, and a 3D draw that resumed with depth silently off would z-fight itself.
163
+ it('restores the caller depth state it turned off', () => {
164
+ const { state, gl } = createGlState();
165
+ const program = compileGlFullscreenProgram(gl, FRAG_SRC);
166
+ gl.enable(gl.DEPTH_TEST);
167
+ gl.depthMask(true);
168
+
169
+ drawGlFullscreenPass(state, program, [], null, () => {});
170
+
171
+ expect(gl.isEnabled(gl.DEPTH_TEST)).toBe(true);
172
+ expect(gl.getParameter(gl.DEPTH_WRITEMASK)).toBe(true);
173
+ });
174
+
175
+ it('leaves depth state alone when the caller already had it off', () => {
176
+ const { state, gl } = createGlState();
177
+ const program = compileGlFullscreenProgram(gl, FRAG_SRC);
178
+ gl.disable(gl.DEPTH_TEST);
179
+ gl.depthMask(false);
180
+
181
+ drawGlFullscreenPass(state, program, [], null, () => {});
182
+
183
+ expect(gl.isEnabled(gl.DEPTH_TEST)).toBe(false);
184
+ expect(gl.getParameter(gl.DEPTH_WRITEMASK)).toBe(false);
185
+ });
186
+
187
+ // The depth defect's surviving twin. `applyGlBlendMode` sets the equation and factors but never the
188
+ // BLEND enable bit, which the pass inherited from whatever ran before — in practice from the single
189
+ // `gl.enable(gl.BLEND)` in `createGlRenderState`. That is not a safe thing to inherit: `drawGlScene3D`
190
+ // ends a blended subset pass with `gl.disable(gl.BLEND)` and never re-enables it, so a present or
191
+ // effect pass following a 3D scene composited with blending silently off.
192
+ it('draws with blending enabled even when the caller left it disabled', () => {
193
+ const { state, gl } = createGlState();
194
+ const program = compileGlFullscreenProgram(gl, FRAG_SRC);
195
+ gl.disable(gl.BLEND);
196
+ let blendAtDraw: boolean | null = null;
197
+ vi.spyOn(gl, 'drawElements').mockImplementation(() => {
198
+ blendAtDraw = gl.isEnabled(gl.BLEND);
199
+ });
200
+
201
+ drawGlFullscreenPass(state, program, [], null, () => {});
202
+
203
+ expect(blendAtDraw).toBe(true);
204
+ });
205
+
206
+ it('restores a caller that had blending disabled', () => {
207
+ const { state, gl } = createGlState();
208
+ const program = compileGlFullscreenProgram(gl, FRAG_SRC);
209
+ gl.disable(gl.BLEND);
210
+
211
+ drawGlFullscreenPass(state, program, [], null, () => {});
212
+
213
+ expect(gl.isEnabled(gl.BLEND)).toBe(false);
214
+ });
215
+
216
+ it('leaves blending enabled for a caller that already had it on', () => {
217
+ const { state, gl } = createGlState();
218
+ const program = compileGlFullscreenProgram(gl, FRAG_SRC);
219
+ gl.enable(gl.BLEND);
220
+
221
+ drawGlFullscreenPass(state, program, [], null, () => {});
222
+
223
+ expect(gl.isEnabled(gl.BLEND)).toBe(true);
224
+ });
225
+
226
+ // The quad currently survives an inherited CULL_FACE only because it happens to be wound CCW and the
227
+ // mesh path happens to restore FRONT_FACE to CCW after every draw. `glMeshProgram` says so in its own
228
+ // comment — leaving CW set behind a mirrored mesh "culls that pass and the whole frame comes back
229
+ // blank", which is a defect this repo has already had once. Owning the bit here retires that
230
+ // cross-package invariant: no winding convention or inherited cull state can drop a fullscreen quad.
231
+ it('draws with face culling off, whatever the caller left enabled', () => {
232
+ const { state, gl } = createGlState();
233
+ const program = compileGlFullscreenProgram(gl, FRAG_SRC);
234
+ gl.enable(gl.CULL_FACE);
235
+ let cullAtDraw: boolean | null = null;
236
+ vi.spyOn(gl, 'drawElements').mockImplementation(() => {
237
+ cullAtDraw = gl.isEnabled(gl.CULL_FACE);
238
+ });
239
+
240
+ drawGlFullscreenPass(state, program, [], null, () => {});
241
+
242
+ expect(cullAtDraw).toBe(false);
243
+ });
244
+
245
+ it('restores a caller that had face culling enabled', () => {
246
+ const { state, gl } = createGlState();
247
+ const program = compileGlFullscreenProgram(gl, FRAG_SRC);
248
+ gl.enable(gl.CULL_FACE);
249
+
250
+ drawGlFullscreenPass(state, program, [], null, () => {});
251
+
252
+ expect(gl.isEnabled(gl.CULL_FACE)).toBe(true);
253
+ });
254
+
255
+ it('leaves face culling off for a caller that already had it off', () => {
256
+ const { state, gl } = createGlState();
257
+ const program = compileGlFullscreenProgram(gl, FRAG_SRC);
258
+ gl.disable(gl.CULL_FACE);
259
+
260
+ drawGlFullscreenPass(state, program, [], null, () => {});
261
+
262
+ expect(gl.isEnabled(gl.CULL_FACE)).toBe(false);
263
+ });
264
+
136
265
  it('binds the destination framebuffer and sets its viewport', () => {
137
266
  const { state, gl } = createGlState();
138
267
  const program = compileGlFullscreenProgram(gl, FRAG_SRC);
@@ -214,6 +214,31 @@ describe('popGlRenderState', () => {
214
214
  expect(fixture.parameters.get(fixture.gl.ACTIVE_TEXTURE)).toBe(savedActiveTexture);
215
215
  });
216
216
 
217
+ // The bracket's saved-field list is the inventory of what Flight promises to hand back, so a unit the
218
+ // draw path binds but the bracket skips is a silent hole. The count was written for the 2D pipeline's
219
+ // units 0-2 and never revisited when the 3D path arrived: `glPbrStandardBlock` binds through unit 6,
220
+ // `glLitProgram` the shadow map and IBL set at 8-11, and `glMeshProgram` the skin palettes at 12-13.
221
+ // A host that had its own texture on any of those got it back pointing at Flight's.
222
+ it('restores a texture unit above the 2D range, which the 3D draw path binds', () => {
223
+ const fixture = createStatefulGl();
224
+ applyTestGlState(fixture, OUTER_STATE);
225
+ const savedActiveTexture = fixture.parameters.get(fixture.gl.ACTIVE_TEXTURE);
226
+ const hostTexture = { name: 'host-skin-palette-texture' } as unknown as WebGLTexture;
227
+ // 13 is the highest unit any Flight GL path binds (SKIN_NORMAL_PALETTE_TEXTURE_UNIT).
228
+ const textureUnit = fixture.gl.TEXTURE0 + 13;
229
+ fixture.gl.activeTexture(textureUnit);
230
+ fixture.gl.bindTexture(fixture.gl.TEXTURE_2D, hostTexture);
231
+ fixture.gl.activeTexture(savedActiveTexture as number);
232
+ pushGlRenderState(fixture.state);
233
+
234
+ fixture.gl.activeTexture(textureUnit);
235
+ fixture.gl.bindTexture(fixture.gl.TEXTURE_2D, { name: 'flight-texture' } as unknown as WebGLTexture);
236
+ popGlRenderState(fixture.state);
237
+
238
+ expect(fixture.textureBindings.get(textureUnit)).toBe(hostTexture);
239
+ expect(fixture.parameters.get(fixture.gl.ACTIVE_TEXTURE)).toBe(savedActiveTexture);
240
+ });
241
+
217
242
  it('restores nested pushes in last-in-first-out order', () => {
218
243
  const fixture = createStatefulGl();
219
244
  applyTestGlState(fixture, OUTER_STATE);
@@ -295,6 +320,7 @@ function createStatefulGl(): StatefulGl & ReturnType<typeof createGlState> {
295
320
  const { gl, state } = fixture;
296
321
  Object.assign(gl, {
297
322
  ACTIVE_TEXTURE: 0x84e0,
323
+ TEXTURE0: 0x84c0,
298
324
  BLEND_DST_ALPHA: 0x80ca,
299
325
  BLEND_DST_RGB: 0x80c8,
300
326
  BLEND_EQUATION_ALPHA: 0x883d,