@flighthq/displayobject-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/enableGlColorAdjustmentGuards.d.ts +4 -0
- package/dist/enableGlColorAdjustmentGuards.d.ts.map +1 -0
- package/dist/enableGlColorAdjustmentGuards.js +21 -0
- package/dist/enableGlColorAdjustmentGuards.js.map +1 -0
- package/dist/glBitmap.d.ts.map +1 -1
- package/dist/glBitmap.js +17 -32
- package/dist/glBitmap.js.map +1 -1
- package/dist/glCache.d.ts.map +1 -1
- package/dist/glCache.js +11 -4
- package/dist/glCache.js.map +1 -1
- package/dist/glColorAdjustment.d.ts +3 -0
- package/dist/glColorAdjustment.d.ts.map +1 -0
- package/dist/glColorAdjustment.js +353 -0
- package/dist/glColorAdjustment.js.map +1 -0
- package/dist/glParticleEmitter.d.ts.map +1 -1
- package/dist/glParticleEmitter.js +4 -3
- package/dist/glParticleEmitter.js.map +1 -1
- package/dist/glQuadBatch.d.ts.map +1 -1
- package/dist/glQuadBatch.js +11 -7
- package/dist/glQuadBatch.js.map +1 -1
- package/dist/glRichText.js +3 -2
- package/dist/glRichText.js.map +1 -1
- package/dist/glShape.d.ts.map +1 -1
- package/dist/glShape.js +15 -11
- package/dist/glShape.js.map +1 -1
- package/dist/glShapeMesh.d.ts +10 -6
- package/dist/glShapeMesh.d.ts.map +1 -1
- package/dist/glShapeMesh.js +48 -29
- package/dist/glShapeMesh.js.map +1 -1
- package/dist/glSpriteBatch.d.ts +3 -3
- package/dist/glSpriteBatch.d.ts.map +1 -1
- package/dist/glSpriteBatch.js +43 -20
- package/dist/glSpriteBatch.js.map +1 -1
- package/dist/glSpriteRenderer.d.ts.map +1 -1
- package/dist/glSpriteRenderer.js +5 -3
- package/dist/glSpriteRenderer.js.map +1 -1
- package/dist/glTextInput.js +1 -1
- package/dist/glTextInput.js.map +1 -1
- package/dist/glTextLabel.d.ts.map +1 -1
- package/dist/glTextLabel.js +23 -12
- package/dist/glTextLabel.js.map +1 -1
- package/dist/glTilemap.d.ts.map +1 -1
- package/dist/glTilemap.js +11 -6
- package/dist/glTilemap.js.map +1 -1
- package/dist/glVelocity.js +5 -5
- package/dist/glVelocity.js.map +1 -1
- package/dist/glVideo.d.ts.map +1 -1
- package/dist/glVideo.js +34 -32
- package/dist/glVideo.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/package.json +24 -15
- package/src/enableGlColorAdjustmentGuards.test.ts +76 -0
- package/src/glBitmap.test.ts +11 -3
- package/src/glCache.test.ts +6 -2
- package/src/glColorAdjustment.test.ts +166 -0
- package/src/glRichText.test.ts +7 -2
- package/src/glShape.test.ts +2 -1
- package/src/glShapeMesh.test.ts +103 -3
- package/src/glSpriteBatch.test.ts +61 -3
- package/src/glTextLabel.test.ts +17 -12
- package/src/glVelocity.test.ts +2 -1
- package/src/glVideo.test.ts +47 -14
- package/dist/glColorTransformMaterial.d.ts +0 -4
- package/dist/glColorTransformMaterial.d.ts.map +0 -1
- package/dist/glColorTransformMaterial.js +0 -116
- package/dist/glColorTransformMaterial.js.map +0 -1
- package/dist/glMaterials.d.ts +0 -4
- package/dist/glMaterials.d.ts.map +0 -1
- package/dist/glMaterials.js +0 -97
- package/dist/glMaterials.js.map +0 -1
- package/dist/glUniformColorTransformMaterial.d.ts +0 -4
- package/dist/glUniformColorTransformMaterial.d.ts.map +0 -1
- package/dist/glUniformColorTransformMaterial.js +0 -56
- package/dist/glUniformColorTransformMaterial.js.map +0 -1
- package/src/glColorTransformMaterial.test.ts +0 -45
- package/src/glMaterials.test.ts +0 -91
- package/src/glUniformColorTransformMaterial.test.ts +0 -24
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GlRenderState } from '@flighthq/types';
|
|
2
|
+
export declare function areGlColorAdjustmentGuardsEnabled(state: GlRenderState): boolean;
|
|
3
|
+
export declare function enableGlColorAdjustmentGuards(state: GlRenderState): void;
|
|
4
|
+
//# sourceMappingURL=enableGlColorAdjustmentGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableGlColorAdjustmentGuards.d.ts","sourceRoot":"","sources":["../src/enableGlColorAdjustmentGuards.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE/E;AAOD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAExE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { logOnce } from '@flighthq/log';
|
|
2
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
3
|
+
import { LogLevel } from '@flighthq/types';
|
|
4
|
+
// Returns whether color-adjustment guards are installed on `state` (enableGlColorAdjustmentGuards).
|
|
5
|
+
export function areGlColorAdjustmentGuardsEnabled(state) {
|
|
6
|
+
return getGlRenderStateRuntime(state).glColorAdjustmentGuard != null;
|
|
7
|
+
}
|
|
8
|
+
// Installs the shakeable color-adjustment guard on `state`: when a node carries a color transform but
|
|
9
|
+
// enableGlColorAdjustment was never called, recordGlSpriteBatchColorTransform reaches this guard
|
|
10
|
+
// through its nullable runtime slot and warns once (the tint is skipped, drawn untinted — the sentinel
|
|
11
|
+
// behavior, never a throw). Not calling this — the production default — costs the batch nothing, since
|
|
12
|
+
// the message and @flighthq/log dependency live only in this separately-imported module. Idempotent.
|
|
13
|
+
export function enableGlColorAdjustmentGuards(state) {
|
|
14
|
+
getGlRenderStateRuntime(state).glColorAdjustmentGuard = warnGlColorAdjustmentNotEnabled;
|
|
15
|
+
}
|
|
16
|
+
function warnGlColorAdjustmentNotEnabled() {
|
|
17
|
+
logOnce('displayobject-gl:color-adjustment-not-enabled', LogLevel.Warn, {
|
|
18
|
+
message: 'recordGlSpriteBatchColorTransform: color transform present but GL color adjustment not enabled — call enableGlColorAdjustment(state)',
|
|
19
|
+
}, 'displayobject-gl');
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=enableGlColorAdjustmentGuards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableGlColorAdjustmentGuards.js","sourceRoot":"","sources":["../src/enableGlColorAdjustmentGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,oGAAoG;AACpG,MAAM,UAAU,iCAAiC,CAAC,KAAoB;IACpE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,sBAAsB,IAAI,IAAI,CAAC;AACvE,CAAC;AAED,sGAAsG;AACtG,iGAAiG;AACjG,uGAAuG;AACvG,uGAAuG;AACvG,qGAAqG;AACrG,MAAM,UAAU,6BAA6B,CAAC,KAAoB;IAChE,uBAAuB,CAAC,KAAK,CAAC,CAAC,sBAAsB,GAAG,+BAA+B,CAAC;AAC1F,CAAC;AAED,SAAS,+BAA+B;IACtC,OAAO,CACL,+CAA+C,EAC/C,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EACL,sIAAsI;KACzI,EACD,kBAAkB,CACnB,CAAC;AACJ,CAAC"}
|
package/dist/glBitmap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glBitmap.d.ts","sourceRoot":"","sources":["../src/glBitmap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glBitmap.d.ts","sourceRoot":"","sources":["../src/glBitmap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,qBAAqB,EACrB,aAAa,EAIb,aAAa,EACd,MAAM,iBAAiB,CAAC;AAgCzB,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CA8DnF;AAED,eAAO,MAAM,uBAAuB,EAAE,qBAKrC,CAAC"}
|
package/dist/glBitmap.js
CHANGED
|
@@ -1,52 +1,36 @@
|
|
|
1
|
+
import { hasImageResourcePixels } from '@flighthq/image';
|
|
1
2
|
import { resolveGlMaterialRenderer } from '@flighthq/render-gl';
|
|
2
3
|
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
3
4
|
import { BatchFormat } from '@flighthq/types';
|
|
4
|
-
import { ensureGlQuadBatchShader, packGlSpriteBatchMaterialInstance, prepareGlSpriteBatchWrite } from './glSpriteBatch';
|
|
5
|
+
import { ensureGlQuadBatchShader, packGlSpriteBatchMaterialInstance, prepareGlSpriteBatchWrite, recordGlSpriteBatchColorTransform, } from './glSpriteBatch';
|
|
5
6
|
function createGlBitmapData(_state, _source) {
|
|
6
|
-
return {
|
|
7
|
+
return { image: null };
|
|
7
8
|
}
|
|
8
9
|
// Deletes the cached GPU texture when this bitmap is torn down. Prevents textures from leaking when
|
|
9
|
-
// a bitmap is removed from the scene via disposeDisplayObjectRender.
|
|
10
|
+
// a bitmap is removed from the scene via disposeDisplayObjectRender. Content-change re-upload is handled
|
|
11
|
+
// by bindGlTexture's version-aware cache, so this only frees on teardown.
|
|
10
12
|
function destroyGlBitmapData(state, data) {
|
|
11
13
|
const runtime = getGlRenderStateRuntime(state);
|
|
12
|
-
const {
|
|
13
|
-
if (
|
|
14
|
+
const { image } = data;
|
|
15
|
+
if (image === null)
|
|
14
16
|
return;
|
|
15
|
-
const
|
|
16
|
-
if (
|
|
17
|
-
state.gl.deleteTexture(texture);
|
|
18
|
-
runtime.
|
|
17
|
+
const entry = runtime.imageResourceTextureCache.get(image);
|
|
18
|
+
if (entry !== undefined) {
|
|
19
|
+
state.gl.deleteTexture(entry.texture);
|
|
20
|
+
runtime.imageResourceTextureCache.delete(image);
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
export function drawGlBitmap(state, renderProxy) {
|
|
22
24
|
const runtime = getGlRenderStateRuntime(state);
|
|
23
25
|
const source = renderProxy.source;
|
|
24
26
|
const imageSource = source.data.image;
|
|
25
|
-
if (imageSource === null || imageSource
|
|
27
|
+
if (imageSource === null || !hasImageResourcePixels(imageSource))
|
|
26
28
|
return;
|
|
27
29
|
if (renderProxy.rendererData === null)
|
|
28
30
|
return;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// Invalidate the cached GPU texture when the image content changes in place (Surface edits) or
|
|
33
|
-
// when the element reference is replaced (setBitmapImage). Both cases bump imageSource.version.
|
|
34
|
-
if (bitmapData.lastVersion !== version || bitmapData.lastSrc !== src) {
|
|
35
|
-
if (bitmapData.lastSrc !== null && bitmapData.lastSrc !== src) {
|
|
36
|
-
const oldTexture = runtime.textureCache.get(bitmapData.lastSrc);
|
|
37
|
-
if (oldTexture !== undefined) {
|
|
38
|
-
state.gl.deleteTexture(oldTexture);
|
|
39
|
-
runtime.textureCache.delete(bitmapData.lastSrc);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
const staleTexture = runtime.textureCache.get(src);
|
|
43
|
-
if (staleTexture !== undefined) {
|
|
44
|
-
state.gl.deleteTexture(staleTexture);
|
|
45
|
-
runtime.textureCache.delete(src);
|
|
46
|
-
}
|
|
47
|
-
bitmapData.lastSrc = src;
|
|
48
|
-
bitmapData.lastVersion = version;
|
|
49
|
-
}
|
|
31
|
+
// Recorded so teardown can free the resource's cached GPU texture; re-upload on content change is the
|
|
32
|
+
// cache's job (keyed by the resource, version-aware), not this node's.
|
|
33
|
+
renderProxy.rendererData.image = imageSource;
|
|
50
34
|
const material = renderProxy.material;
|
|
51
35
|
const materialRenderer = resolveGlMaterialRenderer(state, material);
|
|
52
36
|
if (materialRenderer === null)
|
|
@@ -78,7 +62,7 @@ export function drawGlBitmap(state, renderProxy) {
|
|
|
78
62
|
v1 = (sr.y + sr.height) * ih;
|
|
79
63
|
}
|
|
80
64
|
const startCount = runtime.spriteBatchCount;
|
|
81
|
-
const base = prepareGlSpriteBatchWrite(state, imageSource
|
|
65
|
+
const base = prepareGlSpriteBatchWrite(state, imageSource, renderProxy.blendMode, material, materialRenderer, 1);
|
|
82
66
|
const d = runtime.spriteBatchInstanceData;
|
|
83
67
|
const t = renderProxy.transform2D;
|
|
84
68
|
d[base] = t.a;
|
|
@@ -95,6 +79,7 @@ export function drawGlBitmap(state, renderProxy) {
|
|
|
95
79
|
d[base + 11] = v1;
|
|
96
80
|
d[base + 12] = renderProxy.alpha;
|
|
97
81
|
packGlSpriteBatchMaterialInstance(state, renderProxy.materialData, startCount);
|
|
82
|
+
recordGlSpriteBatchColorTransform(state, renderProxy.colorTransform, startCount);
|
|
98
83
|
runtime.spriteBatchCount++;
|
|
99
84
|
}
|
|
100
85
|
export const defaultGlBitmapRenderer = {
|
package/dist/glBitmap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glBitmap.js","sourceRoot":"","sources":["../src/glBitmap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"glBitmap.js","sourceRoot":"","sources":["../src/glBitmap.ts"],"names":[],"mappings":"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"}
|
package/dist/glCache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glCache.d.ts","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glCache.d.ts","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,cAAc,EAEd,WAAW,EACX,yBAAyB,EAE1B,MAAM,iBAAiB,CAAC;AAMzB;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,aAAa,GAAG,aAAa,CA+D5E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,cAAc,CAUhB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CAEtG;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC5C,OAAO,CA4CT;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAOnF;AA0BD,eAAO,MAAM,4BAA4B,EAAE,qBAG1C,CAAC"}
|
package/dist/glCache.js
CHANGED
|
@@ -2,7 +2,7 @@ import { createMatrix, createRectangle } from '@flighthq/geometry';
|
|
|
2
2
|
import { computeNodeBoundsRectangle } from '@flighthq/node';
|
|
3
3
|
import { computeDisplayObjectRenderTargetTransform, computeRenderCacheTransform, computeRenderTargetSize, copyAllRenderersFromRenderState, createRenderState, getRenderProxyCache, noopRendererData, prepareDisplayObjectRender, registerRenderCacheRenderer, } from '@flighthq/render';
|
|
4
4
|
import { createGlRenderStateRuntime, getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
5
|
-
import {
|
|
5
|
+
import { beginGlRenderPass, createGlRenderTarget, destroyGlRenderTarget, drawGlRenderTargetResult, endGlRenderPass, resizeGlRenderTarget, setGlRenderTransform2D, } from '@flighthq/render-gl';
|
|
6
6
|
import { EntityRuntimeKey } from '@flighthq/types';
|
|
7
7
|
import { renderGlDisplayObject } from './glDisplayObject';
|
|
8
8
|
import { flushGlSpriteBatch } from './glSpriteBatch';
|
|
@@ -33,7 +33,6 @@ export function createGlCacheState(screenState) {
|
|
|
33
33
|
cacheState.canvas = screenState.canvas;
|
|
34
34
|
cacheState.gl = screenState.gl;
|
|
35
35
|
cacheRuntime.defaultBitmapShader = screenRuntime.defaultBitmapShader;
|
|
36
|
-
cacheRuntime.colorTransformBitmapShader = screenRuntime.colorTransformBitmapShader;
|
|
37
36
|
cacheRuntime.particleShader = screenRuntime.particleShader;
|
|
38
37
|
cacheRuntime.particleCornerBuffer = screenRuntime.particleCornerBuffer;
|
|
39
38
|
cacheRuntime.particleInstanceBuffer = screenRuntime.particleInstanceBuffer;
|
|
@@ -42,6 +41,10 @@ export function createGlCacheState(screenState) {
|
|
|
42
41
|
cacheRuntime.quadBatchCornerBuffer = screenRuntime.quadBatchCornerBuffer;
|
|
43
42
|
cacheRuntime.colorTransformInstancedShader = screenRuntime.colorTransformInstancedShader;
|
|
44
43
|
cacheRuntime.uniformColorTransformShader = screenRuntime.uniformColorTransformShader;
|
|
44
|
+
// Propagate the opt-in color-adjustment fold + guard so tinted nodes inside a cached subtree fold
|
|
45
|
+
// the same way when baked offscreen. Their per-batch CT data lives on cacheRuntime, lazily grown.
|
|
46
|
+
cacheRuntime.glColorAdjustmentFold = screenRuntime.glColorAdjustmentFold;
|
|
47
|
+
cacheRuntime.glColorAdjustmentGuard = screenRuntime.glColorAdjustmentGuard;
|
|
45
48
|
cacheRuntime.materialRendererMap = screenRuntime.materialRendererMap;
|
|
46
49
|
cacheRuntime.materialBitmapShaderMap = screenRuntime.materialBitmapShaderMap;
|
|
47
50
|
cacheRuntime.shaderLoc = screenRuntime.shaderLoc;
|
|
@@ -113,7 +116,11 @@ export function refreshGlRenderCache(cacheState, cache, source, options) {
|
|
|
113
116
|
const target = ensureGlRenderCacheTarget(screenState, cache, width, height);
|
|
114
117
|
computeDisplayObjectRenderTargetTransform(_renderTransform, source, _bounds, padding, padding);
|
|
115
118
|
computeRenderCacheTransform(cache.transform, _bounds, padding, padding);
|
|
116
|
-
|
|
119
|
+
// Preserve on begin — the bake below clears and redraws only when dirty; clearing here would wipe the
|
|
120
|
+
// retained cache content on the not-dirty path. The cache's local-space transform is set explicitly,
|
|
121
|
+
// since a pass no longer carries one.
|
|
122
|
+
beginGlRenderPass(cacheState, target, { preserveColor: true, preserveDepth: true });
|
|
123
|
+
setGlRenderTransform2D(cacheState, _renderTransform);
|
|
117
124
|
const dirty = prepareDisplayObjectRender(cacheState, source);
|
|
118
125
|
if (dirty || resized) {
|
|
119
126
|
const cacheRuntime = getGlRenderStateRuntime(cacheState);
|
|
@@ -129,7 +136,7 @@ export function refreshGlRenderCache(cacheState, cache, source, options) {
|
|
|
129
136
|
cacheState.gl.clear(cacheState.gl.COLOR_BUFFER_BIT);
|
|
130
137
|
renderGlDisplayObject(cacheState, source);
|
|
131
138
|
}
|
|
132
|
-
|
|
139
|
+
endGlRenderPass(cacheState);
|
|
133
140
|
const screenRuntime = getGlRenderStateRuntime(screenState);
|
|
134
141
|
screenRuntime.currentBlendMode = null;
|
|
135
142
|
screenRuntime.currentProgram = null;
|
package/dist/glCache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glCache.js","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,yCAAyC,EACzC,2BAA2B,EAC3B,uBAAuB,EACvB,+BAA+B,EAC/B,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"glCache.js","sourceRoot":"","sources":["../src/glCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glColorAdjustment.d.ts","sourceRoot":"","sources":["../src/glColorAdjustment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAIV,aAAa,EAMd,MAAM,iBAAiB,CAAC;AAiBzB,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAOlE"}
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import { createGlProgram } from '@flighthq/render-gl';
|
|
2
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl';
|
|
3
|
+
import { drawGlShapeMeshBatch, ensureGlShapeMeshProgram } from './glShapeMesh';
|
|
4
|
+
import { bindGlQuadBatchBaseAttributes, QUAD_BATCH_VS, setGlQuadBatchWorldAndTexture, useGlQuadBatchProgram, } from './glSpriteBatch';
|
|
5
|
+
// Enables the opt-in inline color-adjustment fold on a WebGL render state: the fused-color-matrix
|
|
6
|
+
// stage the sprite/quad batch draws through so a color transform (and, later, other pointwise
|
|
7
|
+
// adjustments) folds into the batch as data — a whole-batch uniform tint or per-instance
|
|
8
|
+
// a_ctMult/a_ctOff attributes, chosen by data cardinality — without ever splitting the batch. Until a
|
|
9
|
+
// state calls this, its batch renderer carries none of this module's shader code (it tree-shakes out)
|
|
10
|
+
// and recordGlSpriteBatchColorTransform silently skips every tint. Idempotent; safe to call per state.
|
|
11
|
+
export function enableGlColorAdjustment(state) {
|
|
12
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
13
|
+
runtime.glColorAdjustmentFold = glColorAdjustmentFold;
|
|
14
|
+
if (runtime.spriteBatchColorTransformMode === undefined)
|
|
15
|
+
runtime.spriteBatchColorTransformMode = CT_MODE_NONE;
|
|
16
|
+
if (runtime.spriteBatchColorTransformData === undefined) {
|
|
17
|
+
runtime.spriteBatchColorTransformData = new Float32Array(COLOR_TRANSFORM_FLOATS * 256);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// Per-instance color-transform layout (8 floats = 32 bytes): 4 multiplier + 4 offset, at attribute
|
|
21
|
+
// locations 7 (a_ctMult) and 8 (a_ctOff). Used only when a batch carries varying tints (mode 2).
|
|
22
|
+
const COLOR_TRANSFORM_FLOATS = 8;
|
|
23
|
+
const COLOR_TRANSFORM_STRIDE = COLOR_TRANSFORM_FLOATS * 4;
|
|
24
|
+
// Color-adjustment fold modes for the active sprite batch. NONE keeps the lean base shader; UNIFORM
|
|
25
|
+
// binds one whole-batch tint; PER_INSTANCE packs a tint per instance. A batch starts at NONE, rises to
|
|
26
|
+
// UNIFORM on the first tint, and promotes to PER_INSTANCE — back-filling already-written instances
|
|
27
|
+
// with the prior value/identity — when tints diverge, so a tint only ever promotes a batch, never
|
|
28
|
+
// splits it.
|
|
29
|
+
const CT_MODE_NONE = 0;
|
|
30
|
+
const CT_MODE_UNIFORM = 1;
|
|
31
|
+
const CT_MODE_PER_INSTANCE = 2;
|
|
32
|
+
// Per-instance color-transform program: the base quad-batch vertex work plus two vec4 instance
|
|
33
|
+
// attributes (a_ctMult / a_ctOff) carried through to the fragment stage. The color-transform math is
|
|
34
|
+
// applied in unpremultiplied space, matching the whole-batch uniform program byte for byte.
|
|
35
|
+
const CT_INSTANCED_VS = `#version 300 es
|
|
36
|
+
precision mediump float;
|
|
37
|
+
|
|
38
|
+
layout(location = 0) in vec2 a_corner;
|
|
39
|
+
layout(location = 1) in vec2 a_matAB;
|
|
40
|
+
layout(location = 2) in vec2 a_matCD;
|
|
41
|
+
layout(location = 3) in vec2 a_matTXTY;
|
|
42
|
+
layout(location = 4) in vec2 a_size;
|
|
43
|
+
layout(location = 5) in vec4 a_uvRect;
|
|
44
|
+
layout(location = 6) in float a_alpha;
|
|
45
|
+
layout(location = 7) in vec4 a_ctMult;
|
|
46
|
+
layout(location = 8) in vec4 a_ctOff;
|
|
47
|
+
|
|
48
|
+
uniform mat3 u_world;
|
|
49
|
+
|
|
50
|
+
out vec2 v_texCoord;
|
|
51
|
+
out float v_alpha;
|
|
52
|
+
out vec4 v_ctMult;
|
|
53
|
+
out vec4 v_ctOff;
|
|
54
|
+
|
|
55
|
+
void main() {
|
|
56
|
+
vec2 local = a_corner * a_size;
|
|
57
|
+
vec2 worldPos = vec2(
|
|
58
|
+
a_matAB.x * local.x + a_matCD.x * local.y + a_matTXTY.x,
|
|
59
|
+
a_matAB.y * local.x + a_matCD.y * local.y + a_matTXTY.y
|
|
60
|
+
);
|
|
61
|
+
vec3 clip = u_world * vec3(worldPos, 1.0);
|
|
62
|
+
gl_Position = vec4(clip.xy, 0.0, 1.0);
|
|
63
|
+
v_texCoord = mix(a_uvRect.xy, a_uvRect.zw, a_corner);
|
|
64
|
+
v_alpha = a_alpha;
|
|
65
|
+
v_ctMult = a_ctMult;
|
|
66
|
+
v_ctOff = a_ctOff;
|
|
67
|
+
}`;
|
|
68
|
+
const CT_INSTANCED_FS = `#version 300 es
|
|
69
|
+
precision mediump float;
|
|
70
|
+
in vec2 v_texCoord;
|
|
71
|
+
in float v_alpha;
|
|
72
|
+
in vec4 v_ctMult;
|
|
73
|
+
in vec4 v_ctOff;
|
|
74
|
+
uniform sampler2D u_texture;
|
|
75
|
+
out vec4 fragColor;
|
|
76
|
+
void main() {
|
|
77
|
+
vec4 color = texture(u_texture, v_texCoord) * clamp(v_alpha, 0.0, 1.0);
|
|
78
|
+
if (color.a <= 0.0) discard;
|
|
79
|
+
color = vec4(color.rgb / color.a, color.a);
|
|
80
|
+
color = clamp(color * v_ctMult + v_ctOff, vec4(0.0), vec4(1.0));
|
|
81
|
+
fragColor = vec4(color.rgb * color.a, color.a);
|
|
82
|
+
}`;
|
|
83
|
+
// Whole-batch color-transform fragment shader (over the base vertex shader): one tint uploaded as
|
|
84
|
+
// u_ctMult/u_ctOff uniforms and shared by every instance. This is the uniform path — a single tint on
|
|
85
|
+
// a whole batch (e.g. a bitmap-text node) costs no per-instance data.
|
|
86
|
+
const UNIFORM_CT_FS = `#version 300 es
|
|
87
|
+
precision mediump float;
|
|
88
|
+
in vec2 v_texCoord;
|
|
89
|
+
in float v_alpha;
|
|
90
|
+
uniform sampler2D u_texture;
|
|
91
|
+
uniform vec4 u_ctMult;
|
|
92
|
+
uniform vec4 u_ctOff;
|
|
93
|
+
out vec4 fragColor;
|
|
94
|
+
void main() {
|
|
95
|
+
vec4 color = texture(u_texture, v_texCoord) * clamp(v_alpha, 0.0, 1.0);
|
|
96
|
+
if (color.a <= 0.0) discard;
|
|
97
|
+
color = vec4(color.rgb / color.a, color.a);
|
|
98
|
+
color = clamp(color * u_ctMult + u_ctOff, vec4(0.0), vec4(1.0));
|
|
99
|
+
fragColor = vec4(color.rgb * color.a, color.a);
|
|
100
|
+
}`;
|
|
101
|
+
// Binds the whole-batch (uniform) color-transform program and uploads the shared tint. Base
|
|
102
|
+
// attributes come from the standard instance buffer; there is no per-instance tint data.
|
|
103
|
+
function bindGlSpriteBatchUniformColorTransform(state, colorTransform) {
|
|
104
|
+
const shader = ensureGlUniformColorTransformShader(state);
|
|
105
|
+
useGlQuadBatchProgram(state, shader.program);
|
|
106
|
+
setGlQuadBatchWorldAndTexture(state, shader.locWorldMatrix, shader.locTexture);
|
|
107
|
+
const gl = state.gl;
|
|
108
|
+
gl.uniform4f(shader.locColorMultiplier, colorTransform.redMultiplier, colorTransform.greenMultiplier, colorTransform.blueMultiplier, colorTransform.alphaMultiplier);
|
|
109
|
+
gl.uniform4f(shader.locColorOffset, colorTransform.redOffset / 255, colorTransform.greenOffset / 255, colorTransform.blueOffset / 255, colorTransform.alphaOffset / 255);
|
|
110
|
+
bindGlQuadBatchBaseAttributes(state, shader.locCorner);
|
|
111
|
+
}
|
|
112
|
+
// Binds the per-instance color-transform program and the a_ctMult/a_ctOff attribute stream from the
|
|
113
|
+
// batch's color-transform buffer, alongside the base instance attributes.
|
|
114
|
+
function bindGlSpriteBatchInstancedColorTransform(state) {
|
|
115
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
116
|
+
const shader = ensureGlColorTransformInstancedShader(state);
|
|
117
|
+
useGlQuadBatchProgram(state, shader.program);
|
|
118
|
+
setGlQuadBatchWorldAndTexture(state, shader.locWorldMatrix, shader.locTexture);
|
|
119
|
+
bindGlQuadBatchBaseAttributes(state, shader.locCorner);
|
|
120
|
+
const gl = state.gl;
|
|
121
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, runtime.spriteBatchColorTransformBuffer);
|
|
122
|
+
gl.enableVertexAttribArray(7);
|
|
123
|
+
gl.vertexAttribPointer(7, 4, gl.FLOAT, false, COLOR_TRANSFORM_STRIDE, 0);
|
|
124
|
+
gl.vertexAttribDivisor(7, 1);
|
|
125
|
+
gl.enableVertexAttribArray(8);
|
|
126
|
+
gl.vertexAttribPointer(8, 4, gl.FLOAT, false, COLOR_TRANSFORM_STRIDE, 16);
|
|
127
|
+
gl.vertexAttribDivisor(8, 1);
|
|
128
|
+
}
|
|
129
|
+
function ensureGlColorTransformInstancedShader(state) {
|
|
130
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
131
|
+
if (runtime.colorTransformInstancedShader)
|
|
132
|
+
return runtime.colorTransformInstancedShader;
|
|
133
|
+
const gl = state.gl;
|
|
134
|
+
const program = createGlProgram(gl, CT_INSTANCED_VS, CT_INSTANCED_FS, 'Sprite-batch color transform (per-instance)');
|
|
135
|
+
runtime.colorTransformInstancedShader = {
|
|
136
|
+
program,
|
|
137
|
+
locCorner: 0,
|
|
138
|
+
locWorldMatrix: gl.getUniformLocation(program, 'u_world'),
|
|
139
|
+
locTexture: gl.getUniformLocation(program, 'u_texture'),
|
|
140
|
+
};
|
|
141
|
+
return runtime.colorTransformInstancedShader;
|
|
142
|
+
}
|
|
143
|
+
function ensureGlUniformColorTransformShader(state) {
|
|
144
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
145
|
+
if (runtime.uniformColorTransformShader)
|
|
146
|
+
return runtime.uniformColorTransformShader;
|
|
147
|
+
const gl = state.gl;
|
|
148
|
+
const program = createGlProgram(gl, QUAD_BATCH_VS, UNIFORM_CT_FS, 'Sprite-batch color transform (uniform)');
|
|
149
|
+
runtime.uniformColorTransformShader = {
|
|
150
|
+
program,
|
|
151
|
+
locCorner: 0,
|
|
152
|
+
locWorldMatrix: gl.getUniformLocation(program, 'u_world'),
|
|
153
|
+
locTexture: gl.getUniformLocation(program, 'u_texture'),
|
|
154
|
+
locColorMultiplier: gl.getUniformLocation(program, 'u_ctMult'),
|
|
155
|
+
locColorOffset: gl.getUniformLocation(program, 'u_ctOff'),
|
|
156
|
+
};
|
|
157
|
+
return runtime.uniformColorTransformShader;
|
|
158
|
+
}
|
|
159
|
+
// Value equality for the whole-batch uniform check: reference-equal short-circuits (the common case —
|
|
160
|
+
// every glyph of a bitmap-text node shares one node-level tint), else compares all eight fields so a
|
|
161
|
+
// distinct-but-equal tint still keeps the batch on the cheaper uniform path.
|
|
162
|
+
function equalsRecordedColorTransform(a, b) {
|
|
163
|
+
if (a === b)
|
|
164
|
+
return true;
|
|
165
|
+
if (a === null || b === null)
|
|
166
|
+
return false;
|
|
167
|
+
return (a.redMultiplier === b.redMultiplier &&
|
|
168
|
+
a.greenMultiplier === b.greenMultiplier &&
|
|
169
|
+
a.blueMultiplier === b.blueMultiplier &&
|
|
170
|
+
a.alphaMultiplier === b.alphaMultiplier &&
|
|
171
|
+
a.redOffset === b.redOffset &&
|
|
172
|
+
a.greenOffset === b.greenOffset &&
|
|
173
|
+
a.blueOffset === b.blueOffset &&
|
|
174
|
+
a.alphaOffset === b.alphaOffset);
|
|
175
|
+
}
|
|
176
|
+
// Uploads the active batch's per-instance color-transform buffer, selects the fold program (uniform or
|
|
177
|
+
// per-instance), and binds it. Returns true when it drew a folded batch; false when the batch carried
|
|
178
|
+
// no tint, so flushGlSpriteBatch runs the lean material path instead. Resets the fold mode for the
|
|
179
|
+
// next batch.
|
|
180
|
+
function flushGlColorAdjustmentFold(state, count) {
|
|
181
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
182
|
+
const ctMode = runtime.spriteBatchColorTransformMode ?? CT_MODE_NONE;
|
|
183
|
+
if (ctMode === CT_MODE_NONE)
|
|
184
|
+
return false;
|
|
185
|
+
const uniformColorTransform = runtime.spriteBatchUniformColorTransform ?? null;
|
|
186
|
+
runtime.spriteBatchColorTransformMode = CT_MODE_NONE;
|
|
187
|
+
runtime.spriteBatchUniformColorTransform = null;
|
|
188
|
+
if (ctMode === CT_MODE_PER_INSTANCE) {
|
|
189
|
+
const gl = state.gl;
|
|
190
|
+
if (runtime.spriteBatchColorTransformBuffer == null) {
|
|
191
|
+
runtime.spriteBatchColorTransformBuffer = gl.createBuffer();
|
|
192
|
+
}
|
|
193
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, runtime.spriteBatchColorTransformBuffer);
|
|
194
|
+
// Reallocate to exactly what is drawn: the color-transform data array grows lazily as tints are
|
|
195
|
+
// recorded, so a fixed subData offset could outrun a stale buffer. Only per-instance-tinted
|
|
196
|
+
// batches pay this, and the untinted common path never allocates the buffer at all.
|
|
197
|
+
gl.bufferData(gl.ARRAY_BUFFER, runtime.spriteBatchColorTransformData.subarray(0, count * COLOR_TRANSFORM_FLOATS), gl.DYNAMIC_DRAW);
|
|
198
|
+
bindGlSpriteBatchInstancedColorTransform(state);
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
bindGlSpriteBatchUniformColorTransform(state, uniformColorTransform);
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
// Switches the batch to per-instance mode and back-fills every already-recorded instance
|
|
205
|
+
// [0, instanceCount) with `fill` (a prior uniform value, or null → identity), so promotion never
|
|
206
|
+
// changes the appearance of instances written before the divergence.
|
|
207
|
+
function promoteGlSpriteBatchColorTransformToPerInstance(runtime, instanceCount, fill) {
|
|
208
|
+
runtime.spriteBatchColorTransformMode = CT_MODE_PER_INSTANCE;
|
|
209
|
+
for (let i = 0; i < instanceCount; i++)
|
|
210
|
+
writeGlColorTransformInstance(runtime, fill, i);
|
|
211
|
+
}
|
|
212
|
+
// Folds instance `instanceIndex`'s effective color transform into the active batch. See the fold-mode
|
|
213
|
+
// constants for the promotion rules. `colorTransform` is null for an untinted instance.
|
|
214
|
+
function recordGlColorAdjustment(runtime, colorTransform, instanceIndex) {
|
|
215
|
+
if (runtime.spriteBatchColorTransformData === undefined) {
|
|
216
|
+
runtime.spriteBatchColorTransformData = new Float32Array(COLOR_TRANSFORM_FLOATS * 256);
|
|
217
|
+
}
|
|
218
|
+
const mode = runtime.spriteBatchColorTransformMode ?? CT_MODE_NONE;
|
|
219
|
+
const tint = colorTransform ?? null;
|
|
220
|
+
if (mode === CT_MODE_NONE) {
|
|
221
|
+
if (tint === null)
|
|
222
|
+
return;
|
|
223
|
+
if (instanceIndex === 0) {
|
|
224
|
+
runtime.spriteBatchColorTransformMode = CT_MODE_UNIFORM;
|
|
225
|
+
runtime.spriteBatchUniformColorTransform = tint;
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
promoteGlSpriteBatchColorTransformToPerInstance(runtime, instanceIndex, null);
|
|
229
|
+
writeGlColorTransformInstance(runtime, tint, instanceIndex);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (mode === CT_MODE_UNIFORM) {
|
|
233
|
+
const uniform = runtime.spriteBatchUniformColorTransform ?? null;
|
|
234
|
+
if (equalsRecordedColorTransform(tint, uniform))
|
|
235
|
+
return;
|
|
236
|
+
promoteGlSpriteBatchColorTransformToPerInstance(runtime, instanceIndex, uniform);
|
|
237
|
+
writeGlColorTransformInstance(runtime, tint, instanceIndex);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
writeGlColorTransformInstance(runtime, tint, instanceIndex);
|
|
241
|
+
}
|
|
242
|
+
// Writes one instance's eight color-transform floats (multiplier rgba, then offset rgba normalized by
|
|
243
|
+
// 255) at its slot in the batch's color-transform data, growing the array as needed. A null transform
|
|
244
|
+
// writes the identity (multiply by 1, add 0).
|
|
245
|
+
function writeGlColorTransformInstance(runtime, colorTransform, instanceIndex) {
|
|
246
|
+
const offset = instanceIndex * COLOR_TRANSFORM_FLOATS;
|
|
247
|
+
let data = runtime.spriteBatchColorTransformData;
|
|
248
|
+
if (offset + COLOR_TRANSFORM_FLOATS > data.length) {
|
|
249
|
+
const newSize = Math.max(offset + COLOR_TRANSFORM_FLOATS, data.length * 2);
|
|
250
|
+
const grown = new Float32Array(newSize);
|
|
251
|
+
grown.set(data);
|
|
252
|
+
runtime.spriteBatchColorTransformData = grown;
|
|
253
|
+
data = grown;
|
|
254
|
+
}
|
|
255
|
+
if (colorTransform !== null) {
|
|
256
|
+
data[offset] = colorTransform.redMultiplier;
|
|
257
|
+
data[offset + 1] = colorTransform.greenMultiplier;
|
|
258
|
+
data[offset + 2] = colorTransform.blueMultiplier;
|
|
259
|
+
data[offset + 3] = colorTransform.alphaMultiplier;
|
|
260
|
+
data[offset + 4] = colorTransform.redOffset / 255;
|
|
261
|
+
data[offset + 5] = colorTransform.greenOffset / 255;
|
|
262
|
+
data[offset + 6] = colorTransform.blueOffset / 255;
|
|
263
|
+
data[offset + 7] = colorTransform.alphaOffset / 255;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
data[offset] = 1;
|
|
267
|
+
data[offset + 1] = 1;
|
|
268
|
+
data[offset + 2] = 1;
|
|
269
|
+
data[offset + 3] = 1;
|
|
270
|
+
data[offset + 4] = 0;
|
|
271
|
+
data[offset + 5] = 0;
|
|
272
|
+
data[offset + 6] = 0;
|
|
273
|
+
data[offset + 7] = 0;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// Draws the GPU-tessellated solid-fill meshes tinted by the node's color transform. A single mesh is
|
|
277
|
+
// one flat color and a shape shares one whole-node transform, so this is the uniform path (CT_MODE_
|
|
278
|
+
// UNIFORM's mesh analogue): u_ctMult/u_ctOff uploaded once, no per-vertex tint data. Reuses the base
|
|
279
|
+
// mesh draw driver and its shared vertex/index buffers — only the fragment program differs, so the
|
|
280
|
+
// projection and per-mesh premultiplied color stay identical to the untinted path. Falls back to the
|
|
281
|
+
// lean program when the node happens to carry no transform (the caller gates on non-null, but the fold
|
|
282
|
+
// stays correct if reached directly).
|
|
283
|
+
function drawGlShapeMeshesColorTransform(state, renderProxy, meshes) {
|
|
284
|
+
const colorTransform = renderProxy.colorTransform;
|
|
285
|
+
const base = ensureGlShapeMeshProgram(state);
|
|
286
|
+
if (colorTransform === null) {
|
|
287
|
+
drawGlShapeMeshBatch(state, renderProxy, meshes, base);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
const shader = ensureGlShapeMeshColorTransformShader(state);
|
|
291
|
+
const binding = {
|
|
292
|
+
program: shader.program,
|
|
293
|
+
vertexBuffer: base.vertexBuffer,
|
|
294
|
+
indexBuffer: base.indexBuffer,
|
|
295
|
+
positionLocation: shader.positionLocation,
|
|
296
|
+
matrixLocation: shader.matrixLocation,
|
|
297
|
+
colorLocation: shader.colorLocation,
|
|
298
|
+
};
|
|
299
|
+
drawGlShapeMeshBatch(state, renderProxy, meshes, binding, (bound) => {
|
|
300
|
+
const gl = bound.gl;
|
|
301
|
+
gl.uniform4f(shader.colorMultiplierLocation, colorTransform.redMultiplier, colorTransform.greenMultiplier, colorTransform.blueMultiplier, colorTransform.alphaMultiplier);
|
|
302
|
+
gl.uniform4f(shader.colorOffsetLocation, colorTransform.redOffset / 255, colorTransform.greenOffset / 255, colorTransform.blueOffset / 255, colorTransform.alphaOffset / 255);
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
function ensureGlShapeMeshColorTransformShader(state) {
|
|
306
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
307
|
+
if (runtime.shapeMeshColorTransformShader)
|
|
308
|
+
return runtime.shapeMeshColorTransformShader;
|
|
309
|
+
const gl = state.gl;
|
|
310
|
+
const program = createGlProgram(gl, SHAPE_MESH_CT_VS, SHAPE_MESH_CT_FS, 'Shape-mesh color transform');
|
|
311
|
+
runtime.shapeMeshColorTransformShader = {
|
|
312
|
+
program,
|
|
313
|
+
positionLocation: gl.getAttribLocation(program, 'a_position'),
|
|
314
|
+
matrixLocation: gl.getUniformLocation(program, 'u_matrix'),
|
|
315
|
+
colorLocation: gl.getUniformLocation(program, 'u_color'),
|
|
316
|
+
colorMultiplierLocation: gl.getUniformLocation(program, 'u_ctMult'),
|
|
317
|
+
colorOffsetLocation: gl.getUniformLocation(program, 'u_ctOff'),
|
|
318
|
+
};
|
|
319
|
+
return runtime.shapeMeshColorTransformShader;
|
|
320
|
+
}
|
|
321
|
+
// Mirrors the base flat-color mesh vertex shader (glShapeMesh's VERTEX_SOURCE): u_matrix is the shared
|
|
322
|
+
// projection · world transform drawGlShapeMeshBatch uploads, so a tinted mesh lands pixel-aligned with
|
|
323
|
+
// an untinted one.
|
|
324
|
+
const SHAPE_MESH_CT_VS = `
|
|
325
|
+
attribute vec2 a_position;
|
|
326
|
+
uniform mat3 u_matrix;
|
|
327
|
+
void main() {
|
|
328
|
+
vec3 p = u_matrix * vec3(a_position, 1.0);
|
|
329
|
+
gl_Position = vec4(p.xy, 0.0, 1.0);
|
|
330
|
+
}
|
|
331
|
+
`;
|
|
332
|
+
// The tint fragment stage. u_color arrives premultiplied (the driver uploads color·alpha), so the math
|
|
333
|
+
// un-premultiplies, applies the color transform (multiplier then /255-normalized offset), clamps, and
|
|
334
|
+
// re-premultiplies — byte-for-byte with the quad-batch uniform/instanced color-transform shaders.
|
|
335
|
+
const SHAPE_MESH_CT_FS = `
|
|
336
|
+
precision mediump float;
|
|
337
|
+
uniform vec4 u_color;
|
|
338
|
+
uniform vec4 u_ctMult;
|
|
339
|
+
uniform vec4 u_ctOff;
|
|
340
|
+
void main() {
|
|
341
|
+
vec4 color = u_color;
|
|
342
|
+
if (color.a <= 0.0) discard;
|
|
343
|
+
color = vec4(color.rgb / color.a, color.a);
|
|
344
|
+
color = clamp(color * u_ctMult + u_ctOff, vec4(0.0), vec4(1.0));
|
|
345
|
+
gl_FragColor = vec4(color.rgb * color.a, color.a);
|
|
346
|
+
}
|
|
347
|
+
`;
|
|
348
|
+
const glColorAdjustmentFold = {
|
|
349
|
+
drawShapeMeshes: drawGlShapeMeshesColorTransform,
|
|
350
|
+
flush: flushGlColorAdjustmentFold,
|
|
351
|
+
record: recordGlColorAdjustment,
|
|
352
|
+
};
|
|
353
|
+
//# sourceMappingURL=glColorAdjustment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glColorAdjustment.js","sourceRoot":"","sources":["../src/glColorAdjustment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glParticleEmitter.d.ts","sourceRoot":"","sources":["../src/glParticleEmitter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glParticleEmitter.d.ts","sourceRoot":"","sources":["../src/glParticleEmitter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAmB,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAuHrG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CA0J5F;AAED,eAAO,MAAM,gCAAgC,EAAE,cAM9C,CAAC"}
|