@flighthq/render-gl 0.3.0-next.1032.e2b99fc → 0.3.0-next.1220.6982c21

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.
Files changed (96) hide show
  1. package/dist/contract.d.ts +4 -0
  2. package/dist/contract.d.ts.map +1 -1
  3. package/dist/contract.js +4 -0
  4. package/dist/contract.js.map +1 -1
  5. package/dist/enableGlRenderStateGuards.d.ts +4 -0
  6. package/dist/enableGlRenderStateGuards.d.ts.map +1 -0
  7. package/dist/enableGlRenderStateGuards.js +30 -0
  8. package/dist/enableGlRenderStateGuards.js.map +1 -0
  9. package/dist/enableGlTextureResolverGuards.d.ts +4 -0
  10. package/dist/enableGlTextureResolverGuards.d.ts.map +1 -0
  11. package/dist/enableGlTextureResolverGuards.js +8 -0
  12. package/dist/enableGlTextureResolverGuards.js.map +1 -0
  13. package/dist/explainGlTextureResolution.d.ts +3 -0
  14. package/dist/explainGlTextureResolution.d.ts.map +1 -0
  15. package/dist/explainGlTextureResolution.js +12 -0
  16. package/dist/explainGlTextureResolution.js.map +1 -0
  17. package/dist/glCompressedTexture.js +1 -1
  18. package/dist/glCompressedTexture.js.map +1 -1
  19. package/dist/glDraw.d.ts +2 -2
  20. package/dist/glDraw.d.ts.map +1 -1
  21. package/dist/glDraw.js +17 -14
  22. package/dist/glDraw.js.map +1 -1
  23. package/dist/glExternalTexture.d.ts.map +1 -1
  24. package/dist/glExternalTexture.js +23 -18
  25. package/dist/glExternalTexture.js.map +1 -1
  26. package/dist/glFullscreenPass.js +3 -4
  27. package/dist/glFullscreenPass.js.map +1 -1
  28. package/dist/glLinearToSrgbPass.js +3 -3
  29. package/dist/glLinearToSrgbPass.js.map +1 -1
  30. package/dist/glPresentRenderTarget.js +3 -3
  31. package/dist/glPresentRenderTarget.js.map +1 -1
  32. package/dist/glRenderPass.d.ts.map +1 -1
  33. package/dist/glRenderPass.js +82 -36
  34. package/dist/glRenderPass.js.map +1 -1
  35. package/dist/glRenderState.d.ts +11 -1
  36. package/dist/glRenderState.d.ts.map +1 -1
  37. package/dist/glRenderState.js +180 -5
  38. package/dist/glRenderState.js.map +1 -1
  39. package/dist/glRenderStateBracket.d.ts.map +1 -1
  40. package/dist/glRenderStateBracket.js +16 -4
  41. package/dist/glRenderStateBracket.js.map +1 -1
  42. package/dist/glRenderTarget.d.ts +10 -1
  43. package/dist/glRenderTarget.d.ts.map +1 -1
  44. package/dist/glRenderTarget.js +129 -60
  45. package/dist/glRenderTarget.js.map +1 -1
  46. package/dist/glRenderTargetPool.d.ts +4 -1
  47. package/dist/glRenderTargetPool.d.ts.map +1 -1
  48. package/dist/glRenderTargetPool.js +32 -23
  49. package/dist/glRenderTargetPool.js.map +1 -1
  50. package/dist/glRenderTexture.d.ts +4 -1
  51. package/dist/glRenderTexture.d.ts.map +1 -1
  52. package/dist/glRenderTexture.js +75 -17
  53. package/dist/glRenderTexture.js.map +1 -1
  54. package/dist/glRenderTexturePool.d.ts +7 -0
  55. package/dist/glRenderTexturePool.d.ts.map +1 -0
  56. package/dist/glRenderTexturePool.js +87 -0
  57. package/dist/glRenderTexturePool.js.map +1 -0
  58. package/dist/glTestHelper.js +2 -2
  59. package/dist/glTestHelper.js.map +1 -1
  60. package/dist/glTextureResolver.d.ts +3 -3
  61. package/dist/glTextureResolver.d.ts.map +1 -1
  62. package/dist/glTextureResolver.js +32 -31
  63. package/dist/glTextureResolver.js.map +1 -1
  64. package/dist/glTextureUpload.d.ts +2 -2
  65. package/dist/glTextureUpload.d.ts.map +1 -1
  66. package/dist/glTextureUpload.js +1 -1
  67. package/dist/glTextureUpload.js.map +1 -1
  68. package/dist/glTextureVideoUpload.d.ts +2 -2
  69. package/dist/glTextureVideoUpload.d.ts.map +1 -1
  70. package/dist/glTextureVideoUpload.js +3 -3
  71. package/dist/glTextureVideoUpload.js.map +1 -1
  72. package/dist/index.d.ts +1 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +1 -1
  75. package/dist/index.js.map +1 -1
  76. package/package.json +9 -7
  77. package/src/enableGlRenderStateGuards.test.ts +27 -0
  78. package/src/enableGlTextureResolverGuards.test.ts +58 -0
  79. package/src/explainGlTextureResolution.test.ts +32 -0
  80. package/src/glCompressedTexture.test.ts +2 -2
  81. package/src/glDraw.test.ts +17 -18
  82. package/src/glExternalTexture.test.ts +3 -3
  83. package/src/glFullscreenPass.test.ts +13 -0
  84. package/src/glLinearToSrgbPass.test.ts +13 -0
  85. package/src/glPresentRenderTarget.test.ts +15 -1
  86. package/src/glReadback.test.ts +13 -0
  87. package/src/glRenderPass.test.ts +63 -0
  88. package/src/glRenderState.test.ts +135 -0
  89. package/src/glRenderStateBracket.test.ts +31 -1
  90. package/src/glRenderTarget.test.ts +186 -3
  91. package/src/glRenderTargetPool.test.ts +110 -5
  92. package/src/glRenderTexture.test.ts +71 -11
  93. package/src/glRenderTexturePool.test.ts +112 -0
  94. package/src/glTextureResolver.test.ts +73 -51
  95. package/src/glTextureUpload.test.ts +2 -2
  96. package/src/glTextureVideoUpload.test.ts +5 -5
@@ -1,10 +1,13 @@
1
- import type { GlRenderState, GlRenderTarget, Matrix, RenderProxy2D, RenderTargetColorSpace, RenderTargetDescriptor } from '@flighthq/types/contract';
1
+ import type { GlRenderState, GlRenderTarget, Matrix, RenderProxy2D, RenderTargetAxes, RenderTargetColorSpace, RenderTargetDescriptor, RenderTargetExplanation, RenderTargetFormat, RenderTargetFormatPolicy } from '@flighthq/types/contract';
2
2
  /**
3
3
  * Allocates a render target realizing `descriptor`'s axes (format, MSAA sampleCount, MRT
4
4
  * colorAttachments, depth). The framebuffer is bound during creation but the previous binding is
5
5
  * restored before returning.
6
6
  */
7
7
  export declare function createGlRenderTarget(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>): GlRenderTarget;
8
+ export declare function createGlRenderTarget(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>, formatPolicy: 'preferred'): GlRenderTarget;
9
+ export declare function createGlRenderTarget(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>, formatPolicy: 'required'): GlRenderTarget | null;
10
+ export declare function createGlRenderTarget(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>, formatPolicy: RenderTargetFormatPolicy): GlRenderTarget | null;
8
11
  export declare function declareGlRenderTargetColorSpace(state: GlRenderState, colorSpace: RenderTargetColorSpace): boolean;
9
12
  /** Deletes the GL resources owned by `target`. The target object must not be used after this call. */
10
13
  export declare function destroyGlRenderTarget(state: GlRenderState, target: GlRenderTarget): void;
@@ -17,6 +20,8 @@ export declare function destroyGlRenderTarget(state: GlRenderState, target: GlRe
17
20
  * flipped (`v0=1, v1=0`) so the result composites upright.
18
21
  */
19
22
  export declare function drawGlRenderTargetResult(state: GlRenderState, renderProxy: RenderProxy2D, target: Readonly<GlRenderTarget>, transform: Readonly<Matrix>): void;
23
+ export declare function explainGlRenderTarget(target: Readonly<GlRenderTarget>): RenderTargetExplanation;
24
+ export declare function isGlRenderTargetFormatSupported(state: GlRenderState, format: RenderTargetFormat): boolean;
20
25
  /** Reallocates the storage backing `target` to the new pixel dimensions, preserving its axes. */
21
26
  export declare function resizeGlRenderTarget(state: GlRenderState, target: GlRenderTarget, width: number, height: number): void;
22
27
  /**
@@ -25,4 +30,8 @@ export declare function resizeGlRenderTarget(state: GlRenderState, target: GlRen
25
30
  * before sampling `target.texture`/`target.textures`.
26
31
  */
27
32
  export declare function resolveGlRenderTarget(state: GlRenderState, target: GlRenderTarget): void;
33
+ export declare function resolveGlRenderTargetAxes(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>): RenderTargetAxes;
34
+ export declare function resolveGlRenderTargetAxes(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>, formatPolicy: 'preferred'): RenderTargetAxes;
35
+ export declare function resolveGlRenderTargetAxes(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>, formatPolicy: 'required'): RenderTargetAxes | null;
36
+ export declare function resolveGlRenderTargetAxes(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>, formatPolicy: RenderTargetFormatPolicy): RenderTargetAxes | null;
28
37
  //# sourceMappingURL=glRenderTarget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glRenderTarget.d.ts","sourceRoot":"","sources":["../src/glRenderTarget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,MAAM,EACN,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EAEvB,MAAM,0BAA0B,CAAC;AAMlC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAC3C,cAAc,CAuChB;AAOD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAKjH;AAED,sGAAsG;AACtG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAQxF;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC1B,IAAI,CAoBN;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAkCN;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA4CxF"}
1
+ {"version":3,"file":"glRenderTarget.d.ts","sourceRoot":"","sources":["../src/glRenderTarget.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EAEzB,MAAM,0BAA0B,CAAC;AAMlC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAC3C,cAAc,CAAC;AAClB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC5C,YAAY,EAAE,WAAW,GACxB,cAAc,CAAC;AAClB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC5C,YAAY,EAAE,UAAU,GACvB,cAAc,GAAG,IAAI,CAAC;AACzB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC5C,YAAY,EAAE,wBAAwB,GACrC,cAAc,GAAG,IAAI,CAAC;AA8CzB,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAMjH;AAED,sGAAsG;AACtG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAQxF;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC1B,IAAI,CAoBN;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,uBAAuB,CAQ/F;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEzG;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAmCN;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA4CxF;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAC3C,gBAAgB,CAAC;AACpB,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC5C,YAAY,EAAE,WAAW,GACxB,gBAAgB,CAAC;AACpB,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC5C,YAAY,EAAE,UAAU,GACvB,gBAAgB,GAAG,IAAI,CAAC;AAC3B,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC5C,YAAY,EAAE,wBAAwB,GACrC,gBAAgB,GAAG,IAAI,CAAC"}
@@ -1,34 +1,27 @@
1
1
  import { acquireMatrix, multiplyMatrix, releaseMatrix } from '@flighthq/geometry/contract';
2
+ import { explainRenderTargetAxes, resolveRenderTargetDescriptor } from '@flighthq/render/contract';
2
3
  import { drawGlQuad, useGlProgram } from './glDraw';
3
4
  import { getGlRenderStateRuntime } from './glRenderState';
4
5
  import { setGlAttributes, setGlBaseUniforms, setGlMatrixFromTransform } from './glShader';
5
- /**
6
- * Allocates a render target realizing `descriptor`'s axes (format, MSAA sampleCount, MRT
7
- * colorAttachments, depth). The framebuffer is bound during creation but the previous binding is
8
- * restored before returning.
9
- */
10
- export function createGlRenderTarget(state, descriptor) {
6
+ export function createGlRenderTarget(state, descriptor, formatPolicy = 'preferred') {
11
7
  const runtime = getGlRenderStateRuntime(state);
12
8
  const gl = state.gl;
13
- const w = Math.max(1, Math.ceil(descriptor.width));
14
- const h = Math.max(1, Math.ceil(descriptor.height));
15
- // Substitute a renderable format when a float target is requested on GL that lacks float-render
16
- // support (see resolveRenderableFormat); target.format carries the effective format so readback and
17
- // the present/tonemap path treat it consistently, and resize reuses it.
18
- const format = resolveRenderableFormat(gl, descriptor.format ?? 'rgba8');
19
- const colorFormats = descriptor.colorFormats?.map((f) => resolveRenderableFormat(gl, f));
20
- const attachments = Math.max(1, descriptor.colorAttachments ?? 1);
21
- const sampleCount = Math.max(1, descriptor.sampleCount ?? 1);
22
- const depth = descriptor.depth ?? 'none';
23
- const maxSamples = sampleCount > 1 ? Math.min(sampleCount, gl.getParameter(gl.MAX_SAMPLES)) : 1;
9
+ const requested = resolveRenderTargetDescriptor(descriptor);
10
+ const effective = resolveEffectiveGlRenderTargetAxes(gl, requested, formatPolicy);
11
+ if (effective === null)
12
+ return null;
24
13
  const target = {
25
- width: w,
26
- height: h,
27
- format,
28
- colorSpace: descriptor.colorSpace ?? 'srgb',
29
- clearColors: descriptor.clearColors ? [...descriptor.clearColors] : [],
30
- clearDepth: descriptor.clearDepth ?? 1,
31
- sampleCount: maxSamples,
14
+ requestedAxes: copyRenderTargetAxes(requested),
15
+ width: effective.width,
16
+ height: effective.height,
17
+ format: effective.format,
18
+ colorAttachments: effective.colorAttachments,
19
+ colorFormats: [...effective.colorFormats],
20
+ depth: effective.depth,
21
+ colorSpace: effective.colorSpace,
22
+ clearColors: [...requested.clearColors],
23
+ clearDepth: requested.clearDepth,
24
+ sampleCount: effective.sampleCount,
32
25
  framebuffer: gl.createFramebuffer(),
33
26
  resolveFramebuffer: null,
34
27
  textures: [],
@@ -37,7 +30,7 @@ export function createGlRenderTarget(state, descriptor) {
37
30
  colorRenderbuffers: [],
38
31
  depthStencilRenderbuffer: null,
39
32
  };
40
- allocateGlRenderTargetStorage(state, target, colorFormats, attachments, depth);
33
+ allocateGlRenderTargetStorage(state, target);
41
34
  gl.bindFramebuffer(gl.FRAMEBUFFER, runtime.currentFramebuffer);
42
35
  gl.bindTexture(gl.TEXTURE_2D, null);
43
36
  runtime.currentTexture = null;
@@ -53,6 +46,7 @@ export function declareGlRenderTargetColorSpace(state, colorSpace) {
53
46
  if (target == null)
54
47
  return false;
55
48
  target.colorSpace = colorSpace;
49
+ target.requestedAxes = { ...target.requestedAxes, colorSpace };
56
50
  return true;
57
51
  }
58
52
  /** Deletes the GL resources owned by `target`. The target object must not be used after this call. */
@@ -96,22 +90,30 @@ export function drawGlRenderTargetResult(state, renderProxy, target, transform)
96
90
  releaseMatrix(quadTransform);
97
91
  drawGlQuad(state, 0, 0, target.width, target.height, 0, 1, 1, 0);
98
92
  }
93
+ export function explainGlRenderTarget(target) {
94
+ const requested = copyRenderTargetAxes(target.requestedAxes);
95
+ const effective = getGlRenderTargetAxes(target);
96
+ return {
97
+ differences: explainRenderTargetAxes(requested, effective),
98
+ effective,
99
+ requested,
100
+ };
101
+ }
102
+ export function isGlRenderTargetFormatSupported(state, format) {
103
+ return isGlRenderTargetFormatSupportedByContext(state.gl, format);
104
+ }
99
105
  /** Reallocates the storage backing `target` to the new pixel dimensions, preserving its axes. */
100
106
  export function resizeGlRenderTarget(state, target, width, height) {
101
- const w = Math.max(1, Math.ceil(width));
102
- const h = Math.max(1, Math.ceil(height));
103
- if (w === target.width && h === target.height)
107
+ const requested = resolveRenderTargetDescriptor({
108
+ ...target.requestedAxes,
109
+ width,
110
+ height,
111
+ clearColors: target.clearColors,
112
+ clearDepth: target.clearDepth,
113
+ });
114
+ const effective = resolveEffectiveGlRenderTargetAxes(state.gl, requested, 'preferred');
115
+ if (effective.width === target.width && effective.height === target.height)
104
116
  return;
105
- // Capture the storage shape BEFORE teardown: the depth mode and color-attachment count are derived
106
- // from the existing attachments, so they must be read before those fields are cleared. Reading them
107
- // afterward (as the original did) always yields 'none'/1 — silently dropping the depth buffer and
108
- // extra attachments on every resize, which breaks depth-tested 3D the frame after a canvas resize.
109
- const depth = target.depthTexture
110
- ? 'depth-stencil-sampled'
111
- : target.depthStencilRenderbuffer
112
- ? 'depth-stencil'
113
- : 'none';
114
- const attachments = Math.max(1, target.textures.length);
115
117
  const gl = state.gl;
116
118
  for (const texture of target.textures)
117
119
  gl.deleteTexture(texture);
@@ -129,10 +131,16 @@ export function resizeGlRenderTarget(state, target, width, height) {
129
131
  target.depthTexture = null;
130
132
  target.depthStencilRenderbuffer = null;
131
133
  target.resolveFramebuffer = null;
132
- target.width = w;
133
- target.height = h;
134
- allocateGlRenderTargetStorage(state, target, undefined, attachments, depth);
135
- getGlRenderStateRuntime(state).currentTexture = null;
134
+ target.requestedAxes = copyRenderTargetAxes(requested);
135
+ setGlRenderTargetAxes(target, effective);
136
+ allocateGlRenderTargetStorage(state, target);
137
+ const runtime = getGlRenderStateRuntime(state);
138
+ // Storage allocation binds the target while attaching its new textures/renderbuffers. Match the
139
+ // creation contract by restoring the caller's tracked framebuffer before returning; otherwise a
140
+ // pooled resize leaves physical GL state and the binding mirror disagreeing.
141
+ gl.bindFramebuffer(gl.FRAMEBUFFER, runtime.currentFramebuffer);
142
+ gl.bindTexture(gl.TEXTURE_2D, null);
143
+ runtime.currentTexture = null;
136
144
  }
137
145
  /**
138
146
  * Resolves an MSAA target's multisample framebuffer into its single-sample resolve texture(s) via
@@ -175,26 +183,28 @@ export function resolveGlRenderTarget(state, target) {
175
183
  // stale resolve texture without this; the cost is one flush per frame, only when MSAA is enabled.
176
184
  gl.flush();
177
185
  }
186
+ export function resolveGlRenderTargetAxes(state, descriptor, formatPolicy = 'preferred') {
187
+ return resolveEffectiveGlRenderTargetAxes(state.gl, resolveRenderTargetDescriptor(descriptor), formatPolicy);
188
+ }
178
189
  // Allocates color textures/renderbuffers (and the resolve FBO for MSAA) plus optional depth into the
179
190
  // already-created `target.framebuffer`. Shared by create and resize.
180
- function allocateGlRenderTargetStorage(state, target, colorFormats, attachments, depth) {
191
+ function allocateGlRenderTargetStorage(state, target) {
181
192
  const gl = state.gl;
182
- const { width: w, height: h, sampleCount } = target;
193
+ const { width: w, height: h, sampleCount, colorAttachments: attachments, colorFormats, depth } = target;
183
194
  const multisampled = sampleCount > 1;
184
195
  // Float color attachments (rgba16f/rgba32f) are not color-renderable in Gl2 until
185
196
  // EXT_color_buffer_float is enabled; without it the framebuffer is incomplete and every draw/clear
186
197
  // into an HDR target silently no-ops. getExtension is idempotent and cached, so enabling per-alloc is free.
187
198
  let usesFloat = isFloatRenderTargetFormat(target.format);
188
- if (colorFormats)
189
- for (const f of colorFormats)
190
- usesFloat = usesFloat || isFloatRenderTargetFormat(f);
199
+ for (const f of colorFormats)
200
+ usesFloat = usesFloat || isFloatRenderTargetFormat(f);
191
201
  if (usesFloat)
192
202
  gl.getExtension('EXT_color_buffer_float');
193
203
  // Resolve/sample textures (always single-sample).
194
204
  const resolveFramebuffer = multisampled ? gl.createFramebuffer() : target.framebuffer;
195
205
  gl.bindFramebuffer(gl.FRAMEBUFFER, resolveFramebuffer);
196
206
  for (let i = 0; i < attachments; i++) {
197
- const fmt = colorFormats?.[i] ?? target.format;
207
+ const fmt = colorFormats[i];
198
208
  const gf = mapGlFormat(gl, fmt);
199
209
  const texture = gl.createTexture();
200
210
  gl.bindTexture(gl.TEXTURE_2D, texture);
@@ -214,7 +224,7 @@ function allocateGlRenderTargetStorage(state, target, colorFormats, attachments,
214
224
  if (multisampled) {
215
225
  gl.bindFramebuffer(gl.FRAMEBUFFER, target.framebuffer);
216
226
  for (let i = 0; i < attachments; i++) {
217
- const fmt = colorFormats?.[i] ?? target.format;
227
+ const fmt = colorFormats[i];
218
228
  const rb = gl.createRenderbuffer();
219
229
  gl.bindRenderbuffer(gl.RENDERBUFFER, rb);
220
230
  gl.renderbufferStorageMultisample(gl.RENDERBUFFER, sampleCount, mapGlFormat(gl, fmt).internalFormat, w, h);
@@ -226,7 +236,7 @@ function allocateGlRenderTargetStorage(state, target, colorFormats, attachments,
226
236
  target.resolveFramebuffer = resolveFramebuffer;
227
237
  }
228
238
  if (depth !== 'none') {
229
- const sampled = depth === 'depth-stencil-sampled' && !multisampled;
239
+ const sampled = depth === 'depth-stencil-sampled';
230
240
  if (sampled) {
231
241
  const depthTexture = gl.createTexture();
232
242
  gl.bindTexture(gl.TEXTURE_2D, depthTexture);
@@ -267,16 +277,75 @@ function buildSingleDrawBuffer(gl, index, count) {
267
277
  function isFloatRenderTargetFormat(format) {
268
278
  return format === 'rgba16f' || format === 'rgba32f';
269
279
  }
270
- // A float color format (rgba16f/rgba32f) is only color-renderable when EXT_color_buffer_float is
271
- // available. On GL2 implementations that lack it — notably headless SwiftShader (the Docker sandbox's
272
- // software WebGL) — an rgba16f framebuffer is incomplete and every draw/clear into it silently no-ops,
273
- // so the whole HDR scene renders BLACK. Rather than fail that way, fall back to the renderable rgba8:
274
- // the scene draws in LDR (banding/clipping possible in the tonemap, but visible) instead of nothing. On
275
- // hardware with float render targets this is a no-op, so full HDR precision is unaffected there.
276
- function resolveRenderableFormat(gl, format) {
277
- if (isFloatRenderTargetFormat(format) && gl.getExtension('EXT_color_buffer_float') === null)
278
- return 'rgba8';
279
- return format;
280
+ function isGlRenderTargetFormatSupportedByContext(gl, format) {
281
+ return !isFloatRenderTargetFormat(format) || gl.getExtension('EXT_color_buffer_float') !== null;
282
+ }
283
+ function copyRenderTargetAxes(axes) {
284
+ return {
285
+ width: axes.width,
286
+ height: axes.height,
287
+ format: axes.format,
288
+ colorAttachments: axes.colorAttachments,
289
+ colorFormats: [...axes.colorFormats],
290
+ sampleCount: axes.sampleCount,
291
+ depth: axes.depth,
292
+ colorSpace: axes.colorSpace,
293
+ };
294
+ }
295
+ function getGlRenderTargetAxes(target) {
296
+ return {
297
+ width: target.width,
298
+ height: target.height,
299
+ format: target.format,
300
+ colorAttachments: target.colorAttachments,
301
+ colorFormats: [...target.colorFormats],
302
+ sampleCount: target.sampleCount,
303
+ depth: target.depth,
304
+ colorSpace: target.colorSpace,
305
+ };
306
+ }
307
+ function resolveEffectiveGlRenderTargetAxes(gl, requested, formatPolicy) {
308
+ const reportedMaxSamples = requested.sampleCount > 1 ? gl.getParameter(gl.MAX_SAMPLES) : 1;
309
+ const maxSamples = typeof reportedMaxSamples === 'number' && Number.isFinite(reportedMaxSamples)
310
+ ? Math.max(1, Math.floor(reportedMaxSamples))
311
+ : 1;
312
+ const sampleCount = Math.min(requested.sampleCount, maxSamples);
313
+ const colorFormats = [];
314
+ for (const format of requested.colorFormats) {
315
+ const effectiveFormat = resolveRenderableFormat(gl, format, formatPolicy);
316
+ if (effectiveFormat === null)
317
+ return null;
318
+ colorFormats.push(effectiveFormat);
319
+ }
320
+ const depth = requested.depth === 'depth-stencil-sampled' && sampleCount > 1 ? 'depth-stencil' : requested.depth;
321
+ return {
322
+ width: requested.width,
323
+ height: requested.height,
324
+ format: colorFormats[0],
325
+ colorAttachments: requested.colorAttachments,
326
+ colorFormats,
327
+ sampleCount,
328
+ depth,
329
+ colorSpace: requested.colorSpace,
330
+ };
331
+ }
332
+ function setGlRenderTargetAxes(target, axes) {
333
+ target.width = axes.width;
334
+ target.height = axes.height;
335
+ target.format = axes.format;
336
+ target.colorAttachments = axes.colorAttachments;
337
+ target.colorFormats = [...axes.colorFormats];
338
+ target.sampleCount = axes.sampleCount;
339
+ target.depth = axes.depth;
340
+ target.colorSpace = axes.colorSpace;
341
+ }
342
+ // WebGL2 exposes rgba16f and rgba32f color renderability through the same extension, so there is no
343
+ // honest rgba32f -> rgba16f capability rung. Preferred allocation falls directly to universally
344
+ // renderable rgba8; required allocation returns null before creating any framebuffer storage.
345
+ function resolveRenderableFormat(gl, format, formatPolicy) {
346
+ if (isGlRenderTargetFormatSupportedByContext(gl, format))
347
+ return format;
348
+ return formatPolicy === 'preferred' ? 'rgba8' : null;
280
349
  }
281
350
  function mapGlFormat(gl, format) {
282
351
  switch (format) {
@@ -1 +1 @@
1
- {"version":3,"file":"glRenderTarget.js","sourceRoot":"","sources":["../src/glRenderTarget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glRenderTarget.js","sourceRoot":"","sources":["../src/glRenderTarget.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import type { GlRenderState, GlRenderTarget, GlRenderTargetPool, RenderTargetDescriptor } from '@flighthq/types/contract';
1
+ import type { GlRenderState, GlRenderTarget, GlRenderTargetPool, RenderTargetDescriptor, RenderTargetFormatPolicy } from '@flighthq/types/contract';
2
2
  export declare function acquireGlRenderTarget(state: GlRenderState, pool: GlRenderTargetPool, descriptor: Readonly<RenderTargetDescriptor>): GlRenderTarget;
3
+ export declare function acquireGlRenderTarget(state: GlRenderState, pool: GlRenderTargetPool, descriptor: Readonly<RenderTargetDescriptor>, formatPolicy: 'preferred'): GlRenderTarget;
4
+ export declare function acquireGlRenderTarget(state: GlRenderState, pool: GlRenderTargetPool, descriptor: Readonly<RenderTargetDescriptor>, formatPolicy: 'required'): GlRenderTarget | null;
5
+ export declare function acquireGlRenderTarget(state: GlRenderState, pool: GlRenderTargetPool, descriptor: Readonly<RenderTargetDescriptor>, formatPolicy: RenderTargetFormatPolicy): GlRenderTarget | null;
3
6
  export declare function createGlRenderTargetPool(): GlRenderTargetPool;
4
7
  export declare function destroyGlRenderTargetPool(state: GlRenderState, pool: GlRenderTargetPool): void;
5
8
  export declare function releaseGlRenderTarget(pool: GlRenderTargetPool, target: GlRenderTarget): void;
@@ -1 +1 @@
1
- {"version":3,"file":"glRenderTargetPool.d.ts","sourceRoot":"","sources":["../src/glRenderTargetPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAclC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAC3C,cAAc,CAwBhB;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAG9F;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAE5F"}
1
+ {"version":3,"file":"glRenderTargetPool.d.ts","sourceRoot":"","sources":["../src/glRenderTargetPool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAElB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAclC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAC3C,cAAc,CAAC;AAClB,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC5C,YAAY,EAAE,WAAW,GACxB,cAAc,CAAC;AAClB,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC5C,YAAY,EAAE,UAAU,GACvB,cAAc,GAAG,IAAI,CAAC;AACzB,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC5C,YAAY,EAAE,wBAAwB,GACrC,cAAc,GAAG,IAAI,CAAC;AAkCzB,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAG9F;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAE5F"}
@@ -1,34 +1,32 @@
1
+ import { resolveRenderTargetDescriptor } from '@flighthq/render/contract';
1
2
  import { clearGlRenderTarget } from './glFullscreenPass';
2
- import { createGlRenderTarget, destroyGlRenderTarget } from './glRenderTarget';
3
- // Lends reusable intermediate targets to multi-pass effect recipes. acquire/release are paired
4
- // brackets: every acquireGlRenderTarget must have a matching releaseGlRenderTarget. A released
5
- // target returns to the free list (its GPU storage is kept) rather than being destroyed.
6
- //
7
- // Acquired targets are handed back clean: a reused target is cleared before return so a non-covering
8
- // pass never composites onto a previous user's contents (a freshly created target is already zeroed by
9
- // the GL implementation). Clean surfaces are the default; skipping the clear would be an opt-in
10
- // optimization for provably-covering consumers, not the baseline behavior.
11
- export function acquireGlRenderTarget(state, pool, descriptor) {
12
- const w = Math.max(1, Math.ceil(descriptor.width));
13
- const h = Math.max(1, Math.ceil(descriptor.height));
14
- const format = descriptor.format ?? 'rgba8';
15
- const sampleCount = Math.max(1, descriptor.sampleCount ?? 1);
3
+ import { createGlRenderTarget, destroyGlRenderTarget, resolveGlRenderTargetAxes } from './glRenderTarget';
4
+ export function acquireGlRenderTarget(state, pool, descriptor, formatPolicy = 'preferred') {
5
+ const requested = resolveRenderTargetDescriptor(descriptor);
6
+ const effective = resolveGlRenderTargetAxes(state, requested, formatPolicy);
7
+ if (!effective)
8
+ return null;
16
9
  for (let i = 0; i < pool.free.length; i++) {
17
10
  const candidate = pool.free[i];
18
- if (candidate.width === w &&
19
- candidate.height === h &&
20
- candidate.format === format &&
21
- candidate.sampleCount === sampleCount) {
11
+ if (matchesGlRenderTargetAxes(candidate, effective)) {
22
12
  pool.free.splice(i, 1);
23
- // colorSpace is a logical tag, not a physical allocation axis, so it is not part of the reuse
24
- // match — re-stamp the reused target with the requested space (default 'srgb') so a scratch
25
- // recycled from a linear frame does not carry a stale 'linear' into an sRGB one.
26
- candidate.colorSpace = descriptor.colorSpace ?? 'srgb';
13
+ candidate.requestedAxes = {
14
+ width: requested.width,
15
+ height: requested.height,
16
+ format: requested.format,
17
+ colorAttachments: requested.colorAttachments,
18
+ colorFormats: [...requested.colorFormats],
19
+ sampleCount: requested.sampleCount,
20
+ depth: requested.depth,
21
+ colorSpace: requested.colorSpace,
22
+ };
23
+ candidate.clearColors = [...requested.clearColors];
24
+ candidate.clearDepth = requested.clearDepth;
27
25
  clearGlRenderTarget(state, candidate);
28
26
  return candidate;
29
27
  }
30
28
  }
31
- return createGlRenderTarget(state, descriptor);
29
+ return createGlRenderTarget(state, descriptor, formatPolicy);
32
30
  }
33
31
  export function createGlRenderTargetPool() {
34
32
  return { free: [] };
@@ -41,4 +39,15 @@ export function destroyGlRenderTargetPool(state, pool) {
41
39
  export function releaseGlRenderTarget(pool, target) {
42
40
  pool.free.push(target);
43
41
  }
42
+ function matchesGlRenderTargetAxes(target, axes) {
43
+ return (target.width === axes.width &&
44
+ target.height === axes.height &&
45
+ target.format === axes.format &&
46
+ target.colorAttachments === axes.colorAttachments &&
47
+ target.colorFormats.length === axes.colorFormats.length &&
48
+ target.colorFormats.every((format, index) => format === axes.colorFormats[index]) &&
49
+ target.sampleCount === axes.sampleCount &&
50
+ target.depth === axes.depth &&
51
+ target.colorSpace === axes.colorSpace);
52
+ }
44
53
  //# sourceMappingURL=glRenderTargetPool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"glRenderTargetPool.js","sourceRoot":"","sources":["../src/glRenderTargetPool.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,+FAA+F;AAC/F,+FAA+F;AAC/F,yFAAyF;AACzF,EAAE;AACF,qGAAqG;AACrG,uGAAuG;AACvG,gGAAgG;AAChG,2EAA2E;AAE3E,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,IAAwB,EACxB,UAA4C;IAE5C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,IACE,SAAS,CAAC,KAAK,KAAK,CAAC;YACrB,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,SAAS,CAAC,MAAM,KAAK,MAAM;YAC3B,SAAS,CAAC,WAAW,KAAK,WAAW,EACrC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,8FAA8F;YAC9F,4FAA4F;YAC5F,iFAAiF;YACjF,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,MAAM,CAAC;YACvD,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACtC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAoB,EAAE,IAAwB;IACtF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI;QAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAwB,EAAE,MAAsB;IACpF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"glRenderTargetPool.js","sourceRoot":"","sources":["../src/glRenderTargetPool.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
- import type { GlRenderState, GlRenderTextureExplanation, GlRenderTextureGuard, RenderTexture, SamplerLike, TextureColorSpace } from '@flighthq/types/contract';
1
+ import type { GlRenderState, GlRenderTextureEntry, GlRenderTextureExplanation, GlRenderTextureGuard, RenderTexture, SamplerLike, TextureColorSpace } from '@flighthq/types/contract';
2
2
  export declare function bindGlRenderTexture(state: GlRenderState, renderTexture: Readonly<RenderTexture>, sampler?: Readonly<SamplerLike> | null): WebGLTexture | null;
3
3
  export declare function destroyGlRenderTexture(state: GlRenderState, renderTexture: Readonly<RenderTexture>): void;
4
4
  export declare function explainGlRenderTexture(state: GlRenderState, renderTexture: Readonly<RenderTexture>): GlRenderTextureExplanation;
5
5
  export declare function getGlRenderTextureColorSpace(state: GlRenderState, renderTexture: Readonly<RenderTexture>): TextureColorSpace;
6
+ export declare function getGlRenderTextureTarget(state: GlRenderState, renderTexture: Readonly<RenderTexture>): Readonly<GlRenderTextureEntry['target']> | null;
7
+ export declare function invalidateGlRenderTexture(state: GlRenderState, renderTexture: Readonly<RenderTexture>, status?: 'released' | 'unrendered'): void;
6
8
  export declare function isGlRenderTextureReady(state: GlRenderState, renderTexture: Readonly<RenderTexture>): boolean;
7
9
  /**
8
10
  * Clears and populates a render texture's hidden GL target. The callback may issue any GL-backed
@@ -10,4 +12,5 @@ export declare function isGlRenderTextureReady(state: GlRenderState, renderTextu
10
12
  */
11
13
  export declare function renderIntoGlRenderTexture(state: GlRenderState, renderTexture: RenderTexture, callback: (state: GlRenderState) => void): void;
12
14
  export declare function setGlRenderTextureGuard(state: GlRenderState, guard: GlRenderTextureGuard | null): void;
15
+ export declare function writeGlRenderTextureTarget<T>(state: GlRenderState, renderTexture: RenderTexture, callback: (target: GlRenderTextureEntry['target']) => T): T;
13
16
  //# sourceMappingURL=glRenderTexture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glRenderTexture.d.ts","sourceRoot":"","sources":["../src/glRenderTexture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,0BAA0B,EAC1B,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAWlC,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,EACtC,OAAO,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,GACrC,YAAY,GAAG,IAAI,CAkBrB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAMzG;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GACrC,0BAA0B,CAQ5B;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GACrC,iBAAiB,CAEnB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,OAAO,CAI5G;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GACvC,IAAI,CAqBN;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAEtG"}
1
+ {"version":3,"file":"glRenderTexture.d.ts","sourceRoot":"","sources":["../src/glRenderTexture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAWlC,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,EACtC,OAAO,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,GACrC,YAAY,GAAG,IAAI,CAkBrB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAMzG;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GACrC,0BAA0B,CAQ5B;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GACrC,iBAAiB,CAEnB;AAID,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GACrC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAKjD;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,EACtC,MAAM,GAAE,UAAU,GAAG,YAA2B,GAC/C,IAAI,CAGN;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,OAAO,CAI5G;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GACvC,IAAI,CAcN;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAEtG;AAID,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,GACtD,CAAC,CAgBH"}