@flighthq/render-gl 0.1.0 → 0.2.1-next.410.a23f189
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/glCompressedTexture.d.ts +8 -0
- package/dist/glCompressedTexture.d.ts.map +1 -0
- package/dist/glCompressedTexture.js +270 -0
- package/dist/glCompressedTexture.js.map +1 -0
- package/dist/glDraw.d.ts +7 -2
- package/dist/glDraw.d.ts.map +1 -1
- package/dist/glDraw.js +260 -35
- package/dist/glDraw.js.map +1 -1
- package/dist/glFullscreenPass.d.ts.map +1 -1
- package/dist/glFullscreenPass.js +32 -0
- package/dist/glFullscreenPass.js.map +1 -1
- package/dist/glLinearToSrgbPass.d.ts +4 -0
- package/dist/glLinearToSrgbPass.d.ts.map +1 -0
- package/dist/glLinearToSrgbPass.js +42 -0
- package/dist/glLinearToSrgbPass.js.map +1 -0
- package/dist/glPresentRenderTarget.d.ts +3 -0
- package/dist/glPresentRenderTarget.d.ts.map +1 -0
- package/dist/glPresentRenderTarget.js +35 -0
- package/dist/glPresentRenderTarget.js.map +1 -0
- package/dist/glRenderPass.d.ts +5 -0
- package/dist/glRenderPass.d.ts.map +1 -0
- package/dist/glRenderPass.js +130 -0
- package/dist/glRenderPass.js.map +1 -0
- package/dist/glRenderState.d.ts +1 -1
- package/dist/glRenderState.d.ts.map +1 -1
- package/dist/glRenderState.js +5 -2
- package/dist/glRenderState.js.map +1 -1
- package/dist/glRenderTarget.d.ts +2 -15
- package/dist/glRenderTarget.d.ts.map +1 -1
- package/dist/glRenderTarget.js +48 -57
- package/dist/glRenderTarget.js.map +1 -1
- package/dist/glRenderTargetPool.d.ts.map +1 -1
- package/dist/glRenderTargetPool.js +11 -0
- package/dist/glRenderTargetPool.js.map +1 -1
- package/dist/glSkinPaletteTexture.d.ts +5 -0
- package/dist/glSkinPaletteTexture.d.ts.map +1 -0
- package/dist/glSkinPaletteTexture.js +42 -0
- package/dist/glSkinPaletteTexture.js.map +1 -0
- package/dist/glTestHelper.d.ts.map +1 -1
- package/dist/glTestHelper.js +1 -0
- package/dist/glTestHelper.js.map +1 -1
- package/dist/glTextureUpload.d.ts +5 -0
- package/dist/glTextureUpload.d.ts.map +1 -0
- package/dist/glTextureUpload.js +27 -0
- package/dist/glTextureUpload.js.map +1 -0
- package/dist/glTextureVideoUpload.d.ts +3 -0
- package/dist/glTextureVideoUpload.d.ts.map +1 -0
- package/dist/glTextureVideoUpload.js +24 -0
- package/dist/glTextureVideoUpload.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +10 -5
- package/src/glBackground.test.ts +3 -1
- package/src/glCompressedTexture.test.ts +276 -0
- package/src/glDraw.test.ts +449 -4
- package/src/glFullscreenPass.test.ts +22 -1
- package/src/glLinearToSrgbPass.test.ts +75 -0
- package/src/glPresentRenderTarget.test.ts +62 -0
- package/src/glReadback.test.ts +1 -0
- package/src/glRenderPass.test.ts +170 -0
- package/src/glRenderTarget.test.ts +63 -98
- package/src/glRenderTargetPool.test.ts +27 -0
- package/src/glSkinPaletteTexture.test.ts +129 -0
- package/src/glTextureUpload.test.ts +49 -0
- package/src/glTextureVideoUpload.test.ts +53 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { copyMatrix, createMatrix } from '@flighthq/geometry';
|
|
2
|
+
import { getGlRenderStateRuntime } from './glRenderState';
|
|
3
|
+
import { resolveGlRenderTarget } from './glRenderTarget';
|
|
4
|
+
// Begins a render pass into `target`: binds it (saving the previous binding for restore, so passes
|
|
5
|
+
// nest), then CLEARS every aspect by default. `preserve` spares aspects — the only per-use decision a
|
|
6
|
+
// pass makes; the clear VALUES are fixed on the target (GlRenderTarget.clearColors / clearDepth). Pair
|
|
7
|
+
// with endGlRenderPass. This is the clear/preserve model, not GL/Vulkan load ops: omit `preserve` and
|
|
8
|
+
// everything starts fresh; name what to keep.
|
|
9
|
+
//
|
|
10
|
+
// A render pass carries NO 2D transform — that is a display-object DRAW concern, not a pass concern, so
|
|
11
|
+
// a 3D pass (drawGlScene, which uses the camera) is unaffected. A 2D pass that needs a specific root
|
|
12
|
+
// device transform sets it explicitly with setGlRenderTransform2D after begin; the value is saved and
|
|
13
|
+
// restored by the begin/end bracket like the rest of the pass state.
|
|
14
|
+
//
|
|
15
|
+
// Single-attachment (the common no-effects scene / 2D-offscreen path):
|
|
16
|
+
// beginGlRenderPass(state, target) // clear color + depth
|
|
17
|
+
// drawGlScene(state, scene, camera, lights)
|
|
18
|
+
// endGlRenderPass(state, target) // restore binding + resolve MSAA
|
|
19
|
+
// presentGlRenderTarget(state, target) // colorSpace-aware encode to the canvas
|
|
20
|
+
//
|
|
21
|
+
// MRT / G-buffer (three color attachments, keep depth for a later lighting pass over the same target):
|
|
22
|
+
// beginGlRenderPass(state, gbuffer, { preserveColor: [false, false, false], preserveDepth: false })
|
|
23
|
+
// drawGlScene(state, scene, camera, lights) // fragment shader writes location 0,1,2
|
|
24
|
+
// endGlRenderPass(state, gbuffer)
|
|
25
|
+
// // ...lighting pass samples gbuffer.textures[0..2], preserving depth: { preserveDepth: true }
|
|
26
|
+
export function beginGlRenderPass(state, target, preserve) {
|
|
27
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
28
|
+
const gl = state.gl;
|
|
29
|
+
let stack = _passStack.get(state);
|
|
30
|
+
if (stack === undefined) {
|
|
31
|
+
stack = [];
|
|
32
|
+
_passStack.set(state, stack);
|
|
33
|
+
}
|
|
34
|
+
stack.push({
|
|
35
|
+
framebuffer: runtime.currentFramebuffer,
|
|
36
|
+
renderTarget: runtime.currentRenderTarget ?? null,
|
|
37
|
+
renderTargetViewport: runtime.renderTargetViewport,
|
|
38
|
+
renderTransform2D: state.renderTransform2D,
|
|
39
|
+
});
|
|
40
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, target.framebuffer);
|
|
41
|
+
gl.viewport(0, 0, target.width, target.height);
|
|
42
|
+
runtime.currentFramebuffer = target.framebuffer;
|
|
43
|
+
runtime.currentRenderTarget = target;
|
|
44
|
+
runtime.renderTargetViewport = { width: target.width, height: target.height };
|
|
45
|
+
// Force rebind on next draw — the framebuffer switch invalidates GL state assumptions.
|
|
46
|
+
runtime.currentTexture = null;
|
|
47
|
+
runtime.currentBlendMode = null;
|
|
48
|
+
clearGlRenderPass(state, target, preserve);
|
|
49
|
+
}
|
|
50
|
+
// Ends the pass opened by beginGlRenderPass: restores the framebuffer binding, viewport, and 2D render
|
|
51
|
+
// transform saved at begin, then resolves MSAA on the target that was active (a store-side property of
|
|
52
|
+
// the pass). Afterward that target's textures hold the finished, single-sample result — ready for
|
|
53
|
+
// present, effects, or sampling. A call with no matching begin is a no-op. The target is read from the
|
|
54
|
+
// runtime rather than passed, so end mirrors endWgpuRenderPass / endCanvasRenderPass across backends.
|
|
55
|
+
export function endGlRenderPass(state) {
|
|
56
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
57
|
+
const gl = state.gl;
|
|
58
|
+
const ended = runtime.currentRenderTarget ?? null;
|
|
59
|
+
const saved = _passStack.get(state)?.pop();
|
|
60
|
+
if (saved !== undefined) {
|
|
61
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, saved.framebuffer);
|
|
62
|
+
const viewport = saved.renderTargetViewport ?? state.canvas;
|
|
63
|
+
gl.viewport(0, 0, viewport.width, viewport.height);
|
|
64
|
+
runtime.currentFramebuffer = saved.framebuffer;
|
|
65
|
+
runtime.currentRenderTarget = saved.renderTarget;
|
|
66
|
+
runtime.renderTargetViewport = saved.renderTargetViewport;
|
|
67
|
+
state.renderTransform2D = saved.renderTransform2D;
|
|
68
|
+
runtime.currentTexture = null;
|
|
69
|
+
runtime.currentBlendMode = null;
|
|
70
|
+
}
|
|
71
|
+
if (ended !== null)
|
|
72
|
+
resolveGlRenderTarget(state, ended);
|
|
73
|
+
}
|
|
74
|
+
// Sets the 2D root device transform the display-object update pass (prepareDisplayObjectRender) reads to
|
|
75
|
+
// place nodes with no scene parent. Call after beginGlRenderPass when a 2D pass renders into a target
|
|
76
|
+
// with its own coordinate system (the render cache); the value is restored by the matching
|
|
77
|
+
// endGlRenderPass. A fresh matrix is allocated rather than mutating in place, because the begin/end
|
|
78
|
+
// bracket saved the previous reference and restores it — mutating the shared object would corrupt that.
|
|
79
|
+
export function setGlRenderTransform2D(state, transform) {
|
|
80
|
+
const next = createMatrix();
|
|
81
|
+
copyMatrix(next, transform);
|
|
82
|
+
state.renderTransform2D = next;
|
|
83
|
+
}
|
|
84
|
+
// Clears the bound target's aspects that `preserve` does not spare. Uses per-attachment clearBufferfv so
|
|
85
|
+
// each color attachment can carry its own clear value (the G-buffer case) and preserved attachments are
|
|
86
|
+
// skipped individually — the plain single-attachment case is just the one-iteration loop.
|
|
87
|
+
function clearGlRenderPass(state, target, preserve) {
|
|
88
|
+
const gl = state.gl;
|
|
89
|
+
const preserveColor = preserve?.preserveColor ?? false;
|
|
90
|
+
for (let i = 0; i < target.textures.length; i++) {
|
|
91
|
+
if (isGlColorAttachmentPreserved(preserveColor, i))
|
|
92
|
+
continue;
|
|
93
|
+
resolveGlClearColor(state, target, i, _clearRgba);
|
|
94
|
+
gl.clearBufferfv(gl.COLOR, i, _clearRgba);
|
|
95
|
+
}
|
|
96
|
+
const hasDepth = target.depthStencilRenderbuffer !== null || target.depthTexture !== null;
|
|
97
|
+
if (hasDepth && preserve?.preserveDepth !== true) {
|
|
98
|
+
// depthMask must be enabled or the depth clear is silently dropped.
|
|
99
|
+
gl.depthMask(true);
|
|
100
|
+
gl.clearBufferfi(gl.DEPTH_STENCIL, 0, target.clearDepth, 0);
|
|
101
|
+
}
|
|
102
|
+
getGlRenderStateRuntime(state).currentBlendMode = null;
|
|
103
|
+
}
|
|
104
|
+
function isGlColorAttachmentPreserved(preserve, index) {
|
|
105
|
+
if (typeof preserve === 'boolean')
|
|
106
|
+
return preserve;
|
|
107
|
+
// Per-location; a missing or short entry defaults to clear (false), consistent with default-clear.
|
|
108
|
+
return preserve[index] === true;
|
|
109
|
+
}
|
|
110
|
+
// Writes attachment `index`'s clear color into `out` as linear 0..1 RGBA. The target's packed-RGBA
|
|
111
|
+
// clearColors win when present; otherwise the render state's background color is the fallback.
|
|
112
|
+
function resolveGlClearColor(state, target, index, out) {
|
|
113
|
+
const packed = target.clearColors[index];
|
|
114
|
+
if (packed !== undefined) {
|
|
115
|
+
out[0] = ((packed >>> 24) & 0xff) / 255;
|
|
116
|
+
out[1] = ((packed >>> 16) & 0xff) / 255;
|
|
117
|
+
out[2] = ((packed >>> 8) & 0xff) / 255;
|
|
118
|
+
out[3] = (packed & 0xff) / 255;
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const bg = state.backgroundColorRgba;
|
|
122
|
+
out[0] = bg[0] ?? 0;
|
|
123
|
+
out[1] = bg[1] ?? 0;
|
|
124
|
+
out[2] = bg[2] ?? 0;
|
|
125
|
+
out[3] = bg.length >= 4 ? bg[3] : 0;
|
|
126
|
+
}
|
|
127
|
+
// The pass bracket's save/restore stack, keyed off the render state so nested passes restore in order.
|
|
128
|
+
const _passStack = new WeakMap();
|
|
129
|
+
const _clearRgba = new Float32Array(4);
|
|
130
|
+
//# sourceMappingURL=glRenderPass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glRenderPass.js","sourceRoot":"","sources":["../src/glRenderPass.ts"],"names":[],"mappings":"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"}
|
package/dist/glRenderState.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { GlRenderOptions, GlRenderState, GlRenderStateRuntime } from '@flighthq/types';
|
|
2
|
-
export declare function createGlRenderState(canvas: HTMLCanvasElement, options?:
|
|
2
|
+
export declare function createGlRenderState(canvas: HTMLCanvasElement, options?: GlRenderOptions): GlRenderState;
|
|
3
3
|
export declare function createGlRenderStateRuntime(): GlRenderStateRuntime;
|
|
4
4
|
export declare function destroyGlRenderState(state: GlRenderState): void;
|
|
5
5
|
export declare function getGlRenderStateRuntime(state: GlRenderState): GlRenderStateRuntime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderState.d.ts","sourceRoot":"","sources":["../src/glRenderState.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAK5F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,
|
|
1
|
+
{"version":3,"file":"glRenderState.d.ts","sourceRoot":"","sources":["../src/glRenderState.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAK5F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,eAAoB,GAAG,aAAa,CA6E3G;AAMD,wBAAgB,0BAA0B,IAAI,oBAAoB,CAEjE;AAeD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAsB/D;AAID,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,oBAAoB,CAElF;AAcD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CASvE"}
|
package/dist/glRenderState.js
CHANGED
|
@@ -57,7 +57,10 @@ export function createGlRenderState(canvas, options = {}) {
|
|
|
57
57
|
runtime.spriteBatchInstanceBuffer = null;
|
|
58
58
|
runtime.spriteBatchInstanceData = new Float32Array(13 * 256);
|
|
59
59
|
runtime.spriteBatchTexture = null;
|
|
60
|
+
// Color-adjustment fold state (mode/data/buffer + the compiled programs) is not allocated here: it
|
|
61
|
+
// is owned by the opt-in enableGlColorAdjustment, so a state that never tints carries none of it.
|
|
60
62
|
runtime.textureCache = new WeakMap();
|
|
63
|
+
runtime.imageResourceTextureCache = new WeakMap();
|
|
61
64
|
runtime.quadVertexBuffer = quadVertexBuffer;
|
|
62
65
|
runtime.quadIndexBuffer = quadIndexBuffer;
|
|
63
66
|
runtime.quadVertexData = new Float32Array(16);
|
|
@@ -98,8 +101,6 @@ export function destroyGlRenderState(state) {
|
|
|
98
101
|
programs.add(runtime.shaderLoc.program);
|
|
99
102
|
if (runtime.defaultBitmapShader)
|
|
100
103
|
programs.add(runtime.defaultBitmapShader.program);
|
|
101
|
-
if (runtime.colorTransformBitmapShader)
|
|
102
|
-
programs.add(runtime.colorTransformBitmapShader.program);
|
|
103
104
|
if (runtime.particleShader)
|
|
104
105
|
programs.add(runtime.particleShader.program);
|
|
105
106
|
if (runtime.quadBatchShader)
|
|
@@ -122,6 +123,8 @@ export function destroyGlRenderState(state) {
|
|
|
122
123
|
gl.deleteBuffer(runtime.spriteBatchInstanceBuffer);
|
|
123
124
|
if (runtime.spriteBatchMaterialBuffer)
|
|
124
125
|
gl.deleteBuffer(runtime.spriteBatchMaterialBuffer);
|
|
126
|
+
if (runtime.spriteBatchColorTransformBuffer)
|
|
127
|
+
gl.deleteBuffer(runtime.spriteBatchColorTransformBuffer);
|
|
125
128
|
}
|
|
126
129
|
// Resolves the package-private GPU runtime attached to a GlRenderState. Mutable by design: the
|
|
127
130
|
// render path writes its fields every frame.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderState.js","sourceRoot":"","sources":["../src/glRenderState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,UAAU,mBAAmB,CAAC,MAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"glRenderState.js","sourceRoot":"","sources":["../src/glRenderState.ts"],"names":[],"mappings":"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"}
|
package/dist/glRenderTarget.d.ts
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import type { GlRenderState, GlRenderTarget, Matrix, RenderProxy2D, RenderTargetDescriptor } from '@flighthq/types';
|
|
2
|
-
/**
|
|
3
|
-
* Redirects subsequent Gl rendering into `target`'s framebuffer. Saves the current framebuffer
|
|
4
|
-
* binding, renderTargetViewport, and renderTransform2D so they can be fully restored by
|
|
5
|
-
* `endGlRenderTarget`. Supports nesting.
|
|
6
|
-
*
|
|
7
|
-
* The caller must set the desired `renderTransform` (via this function) before rendering into the
|
|
8
|
-
* target to ensure the render tree's transform2D values are correct.
|
|
9
|
-
*/
|
|
10
|
-
export declare function beginGlRenderTarget(state: GlRenderState, target: GlRenderTarget, renderTransform: Readonly<Matrix>): void;
|
|
1
|
+
import type { GlRenderState, GlRenderTarget, Matrix, RenderProxy2D, RenderTargetColorSpace, RenderTargetDescriptor } from '@flighthq/types';
|
|
11
2
|
/**
|
|
12
3
|
* Allocates a render target realizing `descriptor`'s axes (format, MSAA sampleCount, MRT
|
|
13
4
|
* colorAttachments, depth). The framebuffer is bound during creation but the previous binding is
|
|
14
5
|
* restored before returning.
|
|
15
6
|
*/
|
|
16
7
|
export declare function createGlRenderTarget(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>): GlRenderTarget;
|
|
8
|
+
export declare function declareGlRenderTargetColorSpace(state: GlRenderState, colorSpace: RenderTargetColorSpace): boolean;
|
|
17
9
|
/** Deletes the GL resources owned by `target`. The target object must not be used after this call. */
|
|
18
10
|
export declare function destroyGlRenderTarget(state: GlRenderState, target: GlRenderTarget): void;
|
|
19
11
|
/**
|
|
@@ -25,11 +17,6 @@ export declare function destroyGlRenderTarget(state: GlRenderState, target: GlRe
|
|
|
25
17
|
* flipped (`v0=1, v1=0`) so the result composites upright.
|
|
26
18
|
*/
|
|
27
19
|
export declare function drawGlRenderTargetResult(state: GlRenderState, renderProxy: RenderProxy2D, target: Readonly<GlRenderTarget>, transform: Readonly<Matrix>): void;
|
|
28
|
-
/**
|
|
29
|
-
* Restores the framebuffer, viewport, renderTargetViewport, and renderTransform2D saved by the
|
|
30
|
-
* matching `beginGlRenderTarget` call.
|
|
31
|
-
*/
|
|
32
|
-
export declare function endGlRenderTarget(state: GlRenderState): void;
|
|
33
20
|
/** Reallocates the storage backing `target` to the new pixel dimensions, preserving its axes. */
|
|
34
21
|
export declare function resizeGlRenderTarget(state: GlRenderState, target: GlRenderTarget, width: number, height: number): void;
|
|
35
22
|
/**
|
|
@@ -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,EAEvB,MAAM,iBAAiB,CAAC;
|
|
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,iBAAiB,CAAC;AAMzB;;;;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,CA8BxF"}
|
package/dist/glRenderTarget.js
CHANGED
|
@@ -1,39 +1,7 @@
|
|
|
1
|
-
import { acquireMatrix,
|
|
1
|
+
import { acquireMatrix, multiplyMatrix, releaseMatrix } from '@flighthq/geometry';
|
|
2
2
|
import { drawGlQuad, useGlProgram } from './glDraw';
|
|
3
3
|
import { getGlRenderStateRuntime } from './glRenderState';
|
|
4
4
|
import { setGlAttributes, setGlBaseUniforms, setGlMatrixFromTransform } from './glShader';
|
|
5
|
-
/**
|
|
6
|
-
* Redirects subsequent Gl rendering into `target`'s framebuffer. Saves the current framebuffer
|
|
7
|
-
* binding, renderTargetViewport, and renderTransform2D so they can be fully restored by
|
|
8
|
-
* `endGlRenderTarget`. Supports nesting.
|
|
9
|
-
*
|
|
10
|
-
* The caller must set the desired `renderTransform` (via this function) before rendering into the
|
|
11
|
-
* target to ensure the render tree's transform2D values are correct.
|
|
12
|
-
*/
|
|
13
|
-
export function beginGlRenderTarget(state, target, renderTransform) {
|
|
14
|
-
const runtime = getGlRenderStateRuntime(state);
|
|
15
|
-
const gl = state.gl;
|
|
16
|
-
let stack = _targetStack.get(state);
|
|
17
|
-
if (stack === undefined) {
|
|
18
|
-
stack = [];
|
|
19
|
-
_targetStack.set(state, stack);
|
|
20
|
-
}
|
|
21
|
-
stack.push({
|
|
22
|
-
framebuffer: runtime.currentFramebuffer,
|
|
23
|
-
renderTargetViewport: runtime.renderTargetViewport,
|
|
24
|
-
renderTransform2D: state.renderTransform2D,
|
|
25
|
-
});
|
|
26
|
-
gl.bindFramebuffer(gl.FRAMEBUFFER, target.framebuffer);
|
|
27
|
-
gl.viewport(0, 0, target.width, target.height);
|
|
28
|
-
runtime.currentFramebuffer = target.framebuffer;
|
|
29
|
-
runtime.renderTargetViewport = { width: target.width, height: target.height };
|
|
30
|
-
// Force rebind on next draw — the framebuffer switch invalidates GL state assumptions.
|
|
31
|
-
runtime.currentTexture = null;
|
|
32
|
-
runtime.currentBlendMode = null;
|
|
33
|
-
const newTransform = createMatrix();
|
|
34
|
-
copyMatrix(newTransform, renderTransform);
|
|
35
|
-
state.renderTransform2D = newTransform;
|
|
36
|
-
}
|
|
37
5
|
/**
|
|
38
6
|
* Allocates a render target realizing `descriptor`'s axes (format, MSAA sampleCount, MRT
|
|
39
7
|
* colorAttachments, depth). The framebuffer is bound during creation but the previous binding is
|
|
@@ -44,7 +12,11 @@ export function createGlRenderTarget(state, descriptor) {
|
|
|
44
12
|
const gl = state.gl;
|
|
45
13
|
const w = Math.max(1, Math.ceil(descriptor.width));
|
|
46
14
|
const h = Math.max(1, Math.ceil(descriptor.height));
|
|
47
|
-
|
|
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));
|
|
48
20
|
const attachments = Math.max(1, descriptor.colorAttachments ?? 1);
|
|
49
21
|
const sampleCount = Math.max(1, descriptor.sampleCount ?? 1);
|
|
50
22
|
const depth = descriptor.depth ?? 'none';
|
|
@@ -53,6 +25,9 @@ export function createGlRenderTarget(state, descriptor) {
|
|
|
53
25
|
width: w,
|
|
54
26
|
height: h,
|
|
55
27
|
format,
|
|
28
|
+
colorSpace: descriptor.colorSpace ?? 'srgb',
|
|
29
|
+
clearColors: descriptor.clearColors ? [...descriptor.clearColors] : [],
|
|
30
|
+
clearDepth: descriptor.clearDepth ?? 1,
|
|
56
31
|
sampleCount: maxSamples,
|
|
57
32
|
framebuffer: gl.createFramebuffer(),
|
|
58
33
|
resolveFramebuffer: null,
|
|
@@ -62,12 +37,24 @@ export function createGlRenderTarget(state, descriptor) {
|
|
|
62
37
|
colorRenderbuffers: [],
|
|
63
38
|
depthStencilRenderbuffer: null,
|
|
64
39
|
};
|
|
65
|
-
allocateGlRenderTargetStorage(state, target,
|
|
40
|
+
allocateGlRenderTargetStorage(state, target, colorFormats, attachments, depth);
|
|
66
41
|
gl.bindFramebuffer(gl.FRAMEBUFFER, runtime.currentFramebuffer);
|
|
67
42
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
68
43
|
runtime.currentTexture = null;
|
|
69
44
|
return target;
|
|
70
45
|
}
|
|
46
|
+
// Stamps the color space of the render target currently bound via beginGlRenderPass: the producer of
|
|
47
|
+
// the pixels declares what space it writes (drawGlScene declares 'linear'), and the present step reads
|
|
48
|
+
// it back off the target. Returns false when no target is bound — i.e. rendering straight to the canvas,
|
|
49
|
+
// where linear content has no present pass to encode it — so a caller can flag that mismatch. A no-op
|
|
50
|
+
// (returns false) in that case.
|
|
51
|
+
export function declareGlRenderTargetColorSpace(state, colorSpace) {
|
|
52
|
+
const target = getGlRenderStateRuntime(state).currentRenderTarget;
|
|
53
|
+
if (target == null)
|
|
54
|
+
return false;
|
|
55
|
+
target.colorSpace = colorSpace;
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
71
58
|
/** Deletes the GL resources owned by `target`. The target object must not be used after this call. */
|
|
72
59
|
export function destroyGlRenderTarget(state, target) {
|
|
73
60
|
const gl = state.gl;
|
|
@@ -109,31 +96,22 @@ export function drawGlRenderTargetResult(state, renderProxy, target, transform)
|
|
|
109
96
|
releaseMatrix(quadTransform);
|
|
110
97
|
drawGlQuad(state, 0, 0, target.width, target.height, 0, 1, 1, 0);
|
|
111
98
|
}
|
|
112
|
-
/**
|
|
113
|
-
* Restores the framebuffer, viewport, renderTargetViewport, and renderTransform2D saved by the
|
|
114
|
-
* matching `beginGlRenderTarget` call.
|
|
115
|
-
*/
|
|
116
|
-
export function endGlRenderTarget(state) {
|
|
117
|
-
const runtime = getGlRenderStateRuntime(state);
|
|
118
|
-
const gl = state.gl;
|
|
119
|
-
const saved = _targetStack.get(state)?.pop();
|
|
120
|
-
if (saved === undefined)
|
|
121
|
-
return;
|
|
122
|
-
gl.bindFramebuffer(gl.FRAMEBUFFER, saved.framebuffer);
|
|
123
|
-
const viewport = saved.renderTargetViewport ?? state.canvas;
|
|
124
|
-
gl.viewport(0, 0, viewport.width, viewport.height);
|
|
125
|
-
runtime.currentFramebuffer = saved.framebuffer;
|
|
126
|
-
runtime.renderTargetViewport = saved.renderTargetViewport;
|
|
127
|
-
state.renderTransform2D = saved.renderTransform2D;
|
|
128
|
-
runtime.currentTexture = null;
|
|
129
|
-
runtime.currentBlendMode = null;
|
|
130
|
-
}
|
|
131
99
|
/** Reallocates the storage backing `target` to the new pixel dimensions, preserving its axes. */
|
|
132
100
|
export function resizeGlRenderTarget(state, target, width, height) {
|
|
133
101
|
const w = Math.max(1, Math.ceil(width));
|
|
134
102
|
const h = Math.max(1, Math.ceil(height));
|
|
135
103
|
if (w === target.width && h === target.height)
|
|
136
104
|
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);
|
|
137
115
|
const gl = state.gl;
|
|
138
116
|
for (const texture of target.textures)
|
|
139
117
|
gl.deleteTexture(texture);
|
|
@@ -143,14 +121,17 @@ export function resizeGlRenderTarget(state, target, width, height) {
|
|
|
143
121
|
gl.deleteTexture(target.depthTexture);
|
|
144
122
|
if (target.depthStencilRenderbuffer)
|
|
145
123
|
gl.deleteRenderbuffer(target.depthStencilRenderbuffer);
|
|
124
|
+
if (target.resolveFramebuffer && target.resolveFramebuffer !== target.framebuffer) {
|
|
125
|
+
gl.deleteFramebuffer(target.resolveFramebuffer);
|
|
126
|
+
}
|
|
146
127
|
target.textures = [];
|
|
147
128
|
target.colorRenderbuffers = [];
|
|
148
129
|
target.depthTexture = null;
|
|
149
130
|
target.depthStencilRenderbuffer = null;
|
|
131
|
+
target.resolveFramebuffer = null;
|
|
150
132
|
target.width = w;
|
|
151
133
|
target.height = h;
|
|
152
|
-
|
|
153
|
-
allocateGlRenderTargetStorage(state, target, undefined, Math.max(1, target.textures.length || 1), depth);
|
|
134
|
+
allocateGlRenderTargetStorage(state, target, undefined, attachments, depth);
|
|
154
135
|
getGlRenderStateRuntime(state).currentTexture = null;
|
|
155
136
|
}
|
|
156
137
|
/**
|
|
@@ -270,6 +251,17 @@ function buildSingleDrawBuffer(gl, index, count) {
|
|
|
270
251
|
function isFloatRenderTargetFormat(format) {
|
|
271
252
|
return format === 'rgba16f' || format === 'rgba32f';
|
|
272
253
|
}
|
|
254
|
+
// A float color format (rgba16f/rgba32f) is only color-renderable when EXT_color_buffer_float is
|
|
255
|
+
// available. On GL2 implementations that lack it — notably headless SwiftShader (the Docker sandbox's
|
|
256
|
+
// software WebGL) — an rgba16f framebuffer is incomplete and every draw/clear into it silently no-ops,
|
|
257
|
+
// so the whole HDR scene renders BLACK. Rather than fail that way, fall back to the renderable rgba8:
|
|
258
|
+
// the scene draws in LDR (banding/clipping possible in the tonemap, but visible) instead of nothing. On
|
|
259
|
+
// hardware with float render targets this is a no-op, so full HDR precision is unaffected there.
|
|
260
|
+
function resolveRenderableFormat(gl, format) {
|
|
261
|
+
if (isFloatRenderTargetFormat(format) && gl.getExtension('EXT_color_buffer_float') === null)
|
|
262
|
+
return 'rgba8';
|
|
263
|
+
return format;
|
|
264
|
+
}
|
|
273
265
|
function mapGlFormat(gl, format) {
|
|
274
266
|
switch (format) {
|
|
275
267
|
case 'rgba16f':
|
|
@@ -280,5 +272,4 @@ function mapGlFormat(gl, format) {
|
|
|
280
272
|
return { internalFormat: gl.RGBA8, format: gl.RGBA, type: gl.UNSIGNED_BYTE };
|
|
281
273
|
}
|
|
282
274
|
}
|
|
283
|
-
const _targetStack = new WeakMap();
|
|
284
275
|
//# sourceMappingURL=glRenderTarget.js.map
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderTargetPool.d.ts","sourceRoot":"","sources":["../src/glRenderTargetPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"glRenderTargetPool.d.ts","sourceRoot":"","sources":["../src/glRenderTargetPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAcjH,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,7 +1,13 @@
|
|
|
1
|
+
import { clearGlRenderTarget } from './glFullscreenPass';
|
|
1
2
|
import { createGlRenderTarget, destroyGlRenderTarget } from './glRenderTarget';
|
|
2
3
|
// Lends reusable intermediate targets to multi-pass effect recipes. acquire/release are paired
|
|
3
4
|
// brackets: every acquireGlRenderTarget must have a matching releaseGlRenderTarget. A released
|
|
4
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.
|
|
5
11
|
export function acquireGlRenderTarget(state, pool, descriptor) {
|
|
6
12
|
const w = Math.max(1, Math.ceil(descriptor.width));
|
|
7
13
|
const h = Math.max(1, Math.ceil(descriptor.height));
|
|
@@ -14,6 +20,11 @@ export function acquireGlRenderTarget(state, pool, descriptor) {
|
|
|
14
20
|
candidate.format === format &&
|
|
15
21
|
candidate.sampleCount === sampleCount) {
|
|
16
22
|
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';
|
|
27
|
+
clearGlRenderTarget(state, candidate);
|
|
17
28
|
return candidate;
|
|
18
29
|
}
|
|
19
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderTargetPool.js","sourceRoot":"","sources":["../src/glRenderTargetPool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,+FAA+F;AAC/F,+FAA+F;AAC/F,yFAAyF;
|
|
1
|
+
{"version":3,"file":"glRenderTargetPool.js","sourceRoot":"","sources":["../src/glRenderTargetPool.ts"],"names":[],"mappings":"AAEA,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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GlSkinPaletteTexture } from '@flighthq/types';
|
|
2
|
+
export declare function createGlSkinPaletteTexture(gl: WebGL2RenderingContext): GlSkinPaletteTexture;
|
|
3
|
+
export declare function destroyGlSkinPaletteTexture(gl: WebGL2RenderingContext, palette: Readonly<GlSkinPaletteTexture>): void;
|
|
4
|
+
export declare function uploadGlSkinPaletteTexture(gl: WebGL2RenderingContext, palette: GlSkinPaletteTexture, jointMatrices: Readonly<Float32Array>, jointCount: number): void;
|
|
5
|
+
//# sourceMappingURL=glSkinPaletteTexture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glSkinPaletteTexture.d.ts","sourceRoot":"","sources":["../src/glSkinPaletteTexture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAY5D,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,sBAAsB,GAAG,oBAAoB,CAE3F;AAID,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAErH;AAQD,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,sBAAsB,EAC1B,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,QAAQ,CAAC,YAAY,CAAC,EACrC,UAAU,EAAE,MAAM,GACjB,IAAI,CAiBN"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// The GPU skinning bone-palette data texture: the per-mesh joint-matrix palette in an RGBA32F texture
|
|
2
|
+
// the vertex shader reads with texelFetch (GLSL ES 3.0 core), one mat4 packed as four consecutive
|
|
3
|
+
// RGBA32F texels. The palette is a single row (height 1), so joint j's column c is at texel x = j*4 + c.
|
|
4
|
+
// This replaces the `uniform mat4 u_jointMatrices[MAX_JOINTS]` array: the joint count is bounded by
|
|
5
|
+
// MAX_TEXTURE_SIZE (thousands of joints) rather than the vertex-uniform budget, so there is no
|
|
6
|
+
// per-context capacity cap and no CPU fallback above capacity.
|
|
7
|
+
// Creates the palette texture struct with no storage allocated yet (jointCapacity 0). The first
|
|
8
|
+
// uploadGlSkinPaletteTexture allocates storage sized to the palette. The caller owns the returned
|
|
9
|
+
// struct and frees it with destroyGlSkinPaletteTexture.
|
|
10
|
+
export function createGlSkinPaletteTexture(gl) {
|
|
11
|
+
return { jointCapacity: 0, texture: gl.createTexture() };
|
|
12
|
+
}
|
|
13
|
+
// Frees the palette texture's GL object. The struct must not be used after this call. Deleting an
|
|
14
|
+
// already-deleted GL texture is a silent no-op, so this is safe to call more than once.
|
|
15
|
+
export function destroyGlSkinPaletteTexture(gl, palette) {
|
|
16
|
+
gl.deleteTexture(palette.texture);
|
|
17
|
+
}
|
|
18
|
+
// Uploads a joint-matrix palette into the data texture and binds it. `jointMatrices` is the flat
|
|
19
|
+
// column-major palette (16 floats per joint), `jointCount` how many joints it holds. Grows the texture
|
|
20
|
+
// storage (reallocating, updating `palette.jointCapacity`) only when the palette exceeds the current
|
|
21
|
+
// capacity; otherwise it writes the row in place with texSubImage2D. Leaves the palette texture bound
|
|
22
|
+
// on TEXTURE_2D of the active texture unit (the caller selects the unit and sets the sampler uniform).
|
|
23
|
+
// Reads `jointMatrices`/`jointCount` before any allocation, so it is safe against an aliased struct.
|
|
24
|
+
export function uploadGlSkinPaletteTexture(gl, palette, jointMatrices, jointCount) {
|
|
25
|
+
const width = jointCount * 4;
|
|
26
|
+
gl.bindTexture(gl.TEXTURE_2D, palette.texture);
|
|
27
|
+
// The palette must not be filtered or wrapped: texelFetch reads an exact texel, and NEAREST +
|
|
28
|
+
// CLAMP_TO_EDGE keep a driver from ever sampling a neighbor. Set once storage exists (on first
|
|
29
|
+
// upload and every reallocation), which is exactly when the capacity grows below.
|
|
30
|
+
if (jointCount > palette.jointCapacity) {
|
|
31
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA32F, width, 1, 0, gl.RGBA, gl.FLOAT, jointMatrices);
|
|
32
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
33
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
34
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
35
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
36
|
+
palette.jointCapacity = jointCount;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, width, 1, gl.RGBA, gl.FLOAT, jointMatrices);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=glSkinPaletteTexture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glSkinPaletteTexture.js","sourceRoot":"","sources":["../src/glSkinPaletteTexture.ts"],"names":[],"mappings":"AAEA,sGAAsG;AACtG,kGAAkG;AAClG,yGAAyG;AACzG,oGAAoG;AACpG,+FAA+F;AAC/F,+DAA+D;AAE/D,gGAAgG;AAChG,kGAAkG;AAClG,wDAAwD;AACxD,MAAM,UAAU,0BAA0B,CAAC,EAA0B;IACnE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,EAAG,EAAE,CAAC;AAC5D,CAAC;AAED,kGAAkG;AAClG,wFAAwF;AACxF,MAAM,UAAU,2BAA2B,CAAC,EAA0B,EAAE,OAAuC;IAC7G,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,iGAAiG;AACjG,uGAAuG;AACvG,qGAAqG;AACrG,sGAAsG;AACtG,uGAAuG;AACvG,qGAAqG;AACrG,MAAM,UAAU,0BAA0B,CACxC,EAA0B,EAC1B,OAA6B,EAC7B,aAAqC,EACrC,UAAkB;IAElB,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;IAC7B,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/C,8FAA8F;IAC9F,+FAA+F;IAC/F,kFAAkF;IAClF,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QACvC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,aAA6B,CAAC,CAAC;QAC3G,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QACnE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QACnE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;QACrE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;QACrE,OAAO,CAAC,aAAa,GAAG,UAAU,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,aAA6B,CAAC,CAAC;IACvG,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glTestHelper.d.ts","sourceRoot":"","sources":["../src/glTestHelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAI3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IACrG,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,sBAAsB,CAAC;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,iBAAiB,CAAC;CAC9B,
|
|
1
|
+
{"version":3,"file":"glTestHelper.d.ts","sourceRoot":"","sources":["../src/glTestHelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAI3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IACrG,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,sBAAsB,CAAC;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,iBAAiB,CAAC;CAC9B,CAgDA;AAKD,wBAAgB,MAAM,IAAI,sBAAsB,CAG/C;AAED,wBAAgB,aAAa,IAAI,iBAAiB,CAYjD"}
|
package/dist/glTestHelper.js
CHANGED
|
@@ -29,6 +29,7 @@ export function createGlState(options) {
|
|
|
29
29
|
currentTexture: null,
|
|
30
30
|
renderTargetViewport: null,
|
|
31
31
|
textureCache: new WeakMap(),
|
|
32
|
+
imageResourceTextureCache: new WeakMap(),
|
|
32
33
|
shaderLoc,
|
|
33
34
|
defaultBitmapShader: { locations: shaderLoc, program: shaderLoc.program, bind: vi.fn() },
|
|
34
35
|
quadVertexBuffer: {},
|