@flighthq/effects-gl 0.2.0 → 0.2.1-next.423.3350e53
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/glBevelEffect.d.ts.map +1 -1
- package/dist/glBevelEffect.js +6 -4
- package/dist/glBevelEffect.js.map +1 -1
- package/dist/glBlendEffect.d.ts +8 -0
- package/dist/glBlendEffect.d.ts.map +1 -0
- package/dist/glBlendEffect.js +169 -0
- package/dist/glBlendEffect.js.map +1 -0
- package/dist/glCompositeEffect.d.ts +5 -0
- package/dist/glCompositeEffect.d.ts.map +1 -0
- package/dist/glCompositeEffect.js +90 -0
- package/dist/glCompositeEffect.js.map +1 -0
- package/dist/glDropShadowEffect.d.ts.map +1 -1
- package/dist/glDropShadowEffect.js +8 -6
- package/dist/glDropShadowEffect.js.map +1 -1
- package/dist/glEffectBlitShader.d.ts +2 -0
- package/dist/glEffectBlitShader.d.ts.map +1 -1
- package/dist/glEffectBlitShader.js +27 -0
- package/dist/glEffectBlitShader.js.map +1 -1
- package/dist/glEffectBoxBlur.d.ts +1 -0
- package/dist/glEffectBoxBlur.d.ts.map +1 -1
- package/dist/glEffectBoxBlur.js +28 -5
- package/dist/glEffectBoxBlur.js.map +1 -1
- package/dist/glEffectTintShader.d.ts.map +1 -1
- package/dist/glEffectTintShader.js +2 -0
- package/dist/glEffectTintShader.js.map +1 -1
- package/dist/glGradientBevelEffect.d.ts.map +1 -1
- package/dist/glGradientBevelEffect.js +8 -2
- package/dist/glGradientBevelEffect.js.map +1 -1
- package/dist/glGradientGlowEffect.d.ts.map +1 -1
- package/dist/glGradientGlowEffect.js +10 -3
- package/dist/glGradientGlowEffect.js.map +1 -1
- package/dist/glInnerGlowEffect.d.ts.map +1 -1
- package/dist/glInnerGlowEffect.js +24 -5
- package/dist/glInnerGlowEffect.js.map +1 -1
- package/dist/glInnerShadowEffect.d.ts.map +1 -1
- package/dist/glInnerShadowEffect.js +24 -5
- package/dist/glInnerShadowEffect.js.map +1 -1
- package/dist/glOuterGlowEffect.d.ts.map +1 -1
- package/dist/glOuterGlowEffect.js +8 -4
- package/dist/glOuterGlowEffect.js.map +1 -1
- package/dist/glRenderEffectPipeline.d.ts.map +1 -1
- package/dist/glRenderEffectPipeline.js +23 -7
- package/dist/glRenderEffectPipeline.js.map +1 -1
- package/dist/glRenderEffectRegistrar.d.ts.map +1 -1
- package/dist/glRenderEffectRegistrar.js +14 -4
- package/dist/glRenderEffectRegistrar.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
- package/src/glBlendEffect.test.ts +111 -0
- package/src/glCompositeEffect.test.ts +39 -0
- package/src/glDropShadowEffect.test.ts +92 -0
- package/src/glEffectBlitShader.test.ts +7 -1
- package/src/glEffectBoxBlur.test.ts +50 -0
- package/src/glInnerGlowEffect.test.ts +132 -0
- package/src/glInnerShadowEffect.test.ts +132 -0
- package/src/glOuterGlowEffect.test.ts +91 -0
- package/src/glRenderEffectRegistrar.test.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glEffectBoxBlur.js","sourceRoot":"","sources":["../src/glEffectBoxBlur.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGvF,MAAM,qBAAqB,GAAG
|
|
1
|
+
{"version":3,"file":"glEffectBoxBlur.js","sourceRoot":"","sources":["../src/glEffectBoxBlur.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glEffectTintShader.d.ts","sourceRoot":"","sources":["../src/glEffectTintShader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAyC1E,wGAAwG;AACxG,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,IAAI,
|
|
1
|
+
{"version":3,"file":"glEffectTintShader.d.ts","sourceRoot":"","sources":["../src/glEffectTintShader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAyC1E,wGAAwG;AACxG,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,IAAI,CAQN;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,IAAI,CAQN"}
|
|
@@ -36,6 +36,7 @@ export function applyGlEffectInvertTintPass(state, source, dest, color, alpha, s
|
|
|
36
36
|
gl.uniform3f(loc.locColor, ((color >> 16) & 0xff) / 255, ((color >> 8) & 0xff) / 255, (color & 0xff) / 255);
|
|
37
37
|
gl.uniform1f(loc.locAlpha, alpha);
|
|
38
38
|
gl.uniform1f(loc.locStrength, strength);
|
|
39
|
+
gl.blendFunc(gl.ONE, gl.ZERO);
|
|
39
40
|
});
|
|
40
41
|
}
|
|
41
42
|
/** Tints the source alpha with color, outputs a premultiplied mask into dest. */
|
|
@@ -45,6 +46,7 @@ export function applyGlEffectTintPass(state, source, dest, color, alpha, strengt
|
|
|
45
46
|
gl.uniform3f(loc.locColor, ((color >> 16) & 0xff) / 255, ((color >> 8) & 0xff) / 255, (color & 0xff) / 255);
|
|
46
47
|
gl.uniform1f(loc.locAlpha, alpha);
|
|
47
48
|
gl.uniform1f(loc.locStrength, strength);
|
|
49
|
+
gl.blendFunc(gl.ONE, gl.ZERO);
|
|
48
50
|
});
|
|
49
51
|
}
|
|
50
52
|
function getGlInvertTintShader(state) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glEffectTintShader.js","sourceRoot":"","sources":["../src/glEffectTintShader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGvF,wEAAwE;AACxE,8BAA8B;AAC9B,MAAM,iBAAiB,GAAG;;;;;;;;;;;EAWxB,CAAC;AAEH,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,wBAAwB,GAAG;;;;;;;;;;;EAW/B,CAAC;AAQH,MAAM,WAAW,GAAG,IAAI,OAAO,EAAsC,CAAC;AACtE,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAsC,CAAC;AAE5E,wGAAwG;AACxG,MAAM,UAAU,2BAA2B,CACzC,KAAoB,EACpB,MAAsB,EACtB,IAAoB,EACpB,KAAa,EACb,KAAa,EACb,QAAgB;IAEhB,MAAM,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACzC,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QAC9D,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC5G,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAClC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"glEffectTintShader.js","sourceRoot":"","sources":["../src/glEffectTintShader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glGradientBevelEffect.d.ts","sourceRoot":"","sources":["../src/glGradientBevelEffect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,mBAAmB,EAEnB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAuDzB,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GACpC,IAAI,
|
|
1
|
+
{"version":3,"file":"glGradientBevelEffect.d.ts","sourceRoot":"","sources":["../src/glGradientBevelEffect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,mBAAmB,EAEnB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAuDzB,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GACpC,IAAI,CA6CN;AAED,eAAO,MAAM,kCAAkC,EAAE,oBAEhD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { acquireGlRenderTarget, clearGlRenderTarget, compileGlFullscreenProgram, drawGlFullscreenPass, releaseGlRenderTarget, } from '@flighthq/render-gl';
|
|
2
|
-
import { applyGlEffectBlitPass } from './glEffectBlitShader';
|
|
2
|
+
import { applyGlEffectBlitPass, applyGlEffectErasePass } from './glEffectBlitShader';
|
|
3
3
|
import { applyGlEffectBoxBlur } from './glEffectBoxBlur';
|
|
4
4
|
import { createGlEffectGradientRampTexture } from './glEffectGradientRamp';
|
|
5
5
|
import { applyGlEffectTintPass } from './glEffectTintShader';
|
|
@@ -50,6 +50,7 @@ export function applyGradientBevelEffectToGl(state, source, dest, pool, effect)
|
|
|
50
50
|
const distance = effect.distance ?? 4;
|
|
51
51
|
const quality = Math.max(1, Math.round(effect.quality ?? 1));
|
|
52
52
|
const strength = effect.strength ?? 1;
|
|
53
|
+
const sourceMode = effect.sourceMode ?? 'draw';
|
|
53
54
|
const gl = state.gl;
|
|
54
55
|
// Build blur basis → s1
|
|
55
56
|
applyGlEffectTintPass(state, src, s0, 0xffffff, 1, Math.min(1, strength));
|
|
@@ -65,10 +66,13 @@ export function applyGradientBevelEffectToGl(state, source, dest, pool, effect)
|
|
|
65
66
|
applyBevelApplyPass(state, s0, ramp, src, s1);
|
|
66
67
|
gl.deleteTexture(ramp);
|
|
67
68
|
clearGlRenderTarget(state, dst);
|
|
68
|
-
if (
|
|
69
|
+
if (sourceMode === 'draw') {
|
|
69
70
|
applyGlEffectBlitPass(state, src, dst);
|
|
70
71
|
}
|
|
71
72
|
applyGlEffectBlitPass(state, s1, dst);
|
|
73
|
+
if (sourceMode === 'knockout') {
|
|
74
|
+
applyGlEffectErasePass(state, src, dst);
|
|
75
|
+
}
|
|
72
76
|
releaseGlRenderTarget(pool, s0);
|
|
73
77
|
releaseGlRenderTarget(pool, s1);
|
|
74
78
|
releaseGlRenderTarget(pool, s2);
|
|
@@ -86,12 +90,14 @@ function applyBevelApplyPass(state, encoded, ramp, source, dest) {
|
|
|
86
90
|
gl.bindTexture(gl.TEXTURE_2D, source.texture);
|
|
87
91
|
gl.uniform1i(loc.locSource, 2);
|
|
88
92
|
gl.activeTexture(gl.TEXTURE0);
|
|
93
|
+
gl.blendFunc(gl.ONE, gl.ZERO);
|
|
89
94
|
});
|
|
90
95
|
}
|
|
91
96
|
function applyBevelEncodePass(state, blurred, dest, dx, dy) {
|
|
92
97
|
const loc = getEncodeShader(state);
|
|
93
98
|
drawGlFullscreenPass(state, loc, [blurred.texture], dest, (gl) => {
|
|
94
99
|
gl.uniform2f(loc.locOffset, dx, dy);
|
|
100
|
+
gl.blendFunc(gl.ONE, gl.ZERO);
|
|
95
101
|
});
|
|
96
102
|
}
|
|
97
103
|
function getApplyShader(state) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glGradientBevelEffect.js","sourceRoot":"","sources":["../src/glGradientBevelEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"glGradientBevelEffect.js","sourceRoot":"","sources":["../src/glGradientBevelEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glGradientGlowEffect.d.ts","sourceRoot":"","sources":["../src/glGradientGlowEffect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAElB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAgCzB,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,IAAI,
|
|
1
|
+
{"version":3,"file":"glGradientGlowEffect.d.ts","sourceRoot":"","sources":["../src/glGradientGlowEffect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAElB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAgCzB,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,IAAI,CAmCN;AAED,eAAO,MAAM,iCAAiC,EAAE,oBAE/C,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { acquireGlRenderTarget, clearGlRenderTarget, compileGlFullscreenProgram, drawGlFullscreenPass, releaseGlRenderTarget, } from '@flighthq/render-gl';
|
|
2
|
-
import { applyGlEffectBlitPass } from './glEffectBlitShader';
|
|
2
|
+
import { applyGlEffectBlitPass, applyGlEffectErasePass } from './glEffectBlitShader';
|
|
3
3
|
import { applyGlEffectBoxBlur } from './glEffectBoxBlur';
|
|
4
4
|
import { createGlEffectGradientRampTexture } from './glEffectGradientRamp';
|
|
5
5
|
import { applyGlEffectTintPass } from './glEffectTintShader';
|
|
@@ -21,7 +21,7 @@ const lookupShaders = new WeakMap();
|
|
|
21
21
|
// inlined multi-pass recipe, then releases them. The gradient ramp is built each call from
|
|
22
22
|
// `effect.colors`, `effect.alphas`, and `effect.ratios` (a temporary `WebGLTexture` per call).
|
|
23
23
|
//
|
|
24
|
-
// Compositing order
|
|
24
|
+
// Compositing order follows `sourceMode`: gradient glow, then source draw/hide/knockout treatment.
|
|
25
25
|
export function applyGradientGlowEffectToGl(state, source, dest, pool, effect) {
|
|
26
26
|
const descriptor = { width: source.width, height: source.height, format: source.format };
|
|
27
27
|
const s0 = acquireGlRenderTarget(state, pool, descriptor);
|
|
@@ -31,6 +31,7 @@ export function applyGradientGlowEffectToGl(state, source, dest, pool, effect) {
|
|
|
31
31
|
const dst = dest;
|
|
32
32
|
const quality = Math.max(1, Math.round(effect.quality ?? 1));
|
|
33
33
|
const strength = effect.strength ?? 1;
|
|
34
|
+
const sourceMode = effect.sourceMode ?? 'draw';
|
|
34
35
|
const gl = state.gl;
|
|
35
36
|
// Extract alpha as a neutral (white) mask, then blur → s1
|
|
36
37
|
applyGlEffectTintPass(state, src, s0, 0xffffff, 1, Math.min(1, strength));
|
|
@@ -41,7 +42,12 @@ export function applyGradientGlowEffectToGl(state, source, dest, pool, effect) {
|
|
|
41
42
|
gl.deleteTexture(ramp);
|
|
42
43
|
clearGlRenderTarget(state, dst);
|
|
43
44
|
applyGlEffectBlitPass(state, s0, dst);
|
|
44
|
-
|
|
45
|
+
if (sourceMode === 'knockout') {
|
|
46
|
+
applyGlEffectErasePass(state, src, dst);
|
|
47
|
+
}
|
|
48
|
+
else if (sourceMode === 'draw') {
|
|
49
|
+
applyGlEffectBlitPass(state, src, dst);
|
|
50
|
+
}
|
|
45
51
|
releaseGlRenderTarget(pool, s0);
|
|
46
52
|
releaseGlRenderTarget(pool, s1);
|
|
47
53
|
releaseGlRenderTarget(pool, s2);
|
|
@@ -56,6 +62,7 @@ function applyGradientLookupPass(state, blurred, ramp, dest) {
|
|
|
56
62
|
gl.bindTexture(gl.TEXTURE_2D, ramp);
|
|
57
63
|
gl.uniform1i(loc.locRamp, 1);
|
|
58
64
|
gl.activeTexture(gl.TEXTURE0);
|
|
65
|
+
gl.blendFunc(gl.ONE, gl.ZERO);
|
|
59
66
|
});
|
|
60
67
|
}
|
|
61
68
|
function getLookupShader(state) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glGradientGlowEffect.js","sourceRoot":"","sources":["../src/glGradientGlowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"glGradientGlowEffect.js","sourceRoot":"","sources":["../src/glGradientGlowEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glInnerGlowEffect.d.ts","sourceRoot":"","sources":["../src/glInnerGlowEffect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,eAAe,EAEf,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAuCzB,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,
|
|
1
|
+
{"version":3,"file":"glInnerGlowEffect.d.ts","sourceRoot":"","sources":["../src/glInnerGlowEffect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,eAAe,EAEf,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAuCzB,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAyCN;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAE5C,CAAC"}
|
|
@@ -29,7 +29,7 @@ const clipShaders = new WeakMap();
|
|
|
29
29
|
// 1. Invert-tint pass: extracts inverted alpha, tinted with glow color.
|
|
30
30
|
// 2. Blur pass: spreads the inverted tint toward the interior.
|
|
31
31
|
// 3. Clip pass: multiplies the blurred glow by the source alpha to confine it inside the shape.
|
|
32
|
-
// 4. Composite: source + clipped glow.
|
|
32
|
+
// 4. Composite: source (unless sourceMode is 'hide') + clipped glow.
|
|
33
33
|
export function applyInnerGlowEffectToGl(state, source, dest, pool, effect) {
|
|
34
34
|
const descriptor = { width: source.width, height: source.height, format: source.format };
|
|
35
35
|
const s0 = acquireGlRenderTarget(state, pool, descriptor);
|
|
@@ -41,17 +41,25 @@ export function applyInnerGlowEffectToGl(state, source, dest, pool, effect) {
|
|
|
41
41
|
const alpha = effect.alpha ?? 1;
|
|
42
42
|
const strength = effect.strength ?? 1;
|
|
43
43
|
const quality = Math.max(1, Math.round(effect.quality ?? 1));
|
|
44
|
+
const sourceMode = effect.sourceMode ?? 'draw';
|
|
44
45
|
// Pass 1: invert source alpha and tint with glow color → s0
|
|
45
46
|
applyGlEffectInvertTintPass(state, src, s0, color, alpha, strength);
|
|
46
47
|
// Pass 2: blur → s1 (s2 is ping-pong temp)
|
|
47
|
-
applyGlEffectBoxBlur(state, s0, s1, s2, {
|
|
48
|
+
applyGlEffectBoxBlur(state, s0, s1, s2, {
|
|
49
|
+
blurX: effect.blurX ?? 6,
|
|
50
|
+
blurY: effect.blurY ?? 6,
|
|
51
|
+
edgeColor: getInvertTintEdgeColor(color, alpha, strength),
|
|
52
|
+
passes: quality,
|
|
53
|
+
});
|
|
48
54
|
// Pass 3: clip blurred glow (s1) to source alpha, output to s0 (s1 no longer needed).
|
|
49
55
|
// s0 still holds pass-1 content; clear it so the blend doesn't retain the exterior red.
|
|
50
56
|
clearGlRenderTarget(state, s0);
|
|
51
57
|
applyGlInnerClipPass(state, s1, src, s0);
|
|
52
|
-
// Final composite: source first, then clipped glow on top
|
|
58
|
+
// Final composite: source first, unless hidden, then clipped glow on top.
|
|
53
59
|
clearGlRenderTarget(state, dst);
|
|
54
|
-
|
|
60
|
+
if (sourceMode === 'draw') {
|
|
61
|
+
applyGlEffectBlitPass(state, src, dst);
|
|
62
|
+
}
|
|
55
63
|
applyGlEffectBlitPass(state, s0, dst);
|
|
56
64
|
releaseGlRenderTarget(pool, s0);
|
|
57
65
|
releaseGlRenderTarget(pool, s1);
|
|
@@ -62,7 +70,9 @@ export const defaultGlInnerGlowEffectRunner = (ctx, effect) => {
|
|
|
62
70
|
};
|
|
63
71
|
function applyGlInnerClipPass(state, glow, source, dest) {
|
|
64
72
|
const loc = getClipShader(state);
|
|
65
|
-
drawGlFullscreenPass(state, loc, [glow.texture, source.texture], dest, () => {
|
|
73
|
+
drawGlFullscreenPass(state, loc, [glow.texture, source.texture], dest, (gl) => {
|
|
74
|
+
gl.blendFunc(gl.ONE, gl.ZERO);
|
|
75
|
+
});
|
|
66
76
|
}
|
|
67
77
|
function getClipShader(state) {
|
|
68
78
|
let loc = clipShaders.get(state);
|
|
@@ -74,4 +84,13 @@ function getClipShader(state) {
|
|
|
74
84
|
}
|
|
75
85
|
return loc;
|
|
76
86
|
}
|
|
87
|
+
function getInvertTintEdgeColor(color, alpha, strength) {
|
|
88
|
+
const edgeAlpha = Math.min(1, alpha * strength);
|
|
89
|
+
return [
|
|
90
|
+
(((color >> 16) & 0xff) / 255) * edgeAlpha,
|
|
91
|
+
(((color >> 8) & 0xff) / 255) * edgeAlpha,
|
|
92
|
+
((color & 0xff) / 255) * edgeAlpha,
|
|
93
|
+
edgeAlpha,
|
|
94
|
+
];
|
|
95
|
+
}
|
|
77
96
|
//# sourceMappingURL=glInnerGlowEffect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glInnerGlowEffect.js","sourceRoot":"","sources":["../src/glInnerGlowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAEnE,yFAAyF;AACzF,4FAA4F;AAC5F,0FAA0F;AAC1F,wFAAwF;AAExF,8EAA8E;AAC9E,yEAAyE;AACzE,yEAAyE;AACzE,MAAM,uBAAuB,GAAG;;;;;;;;;;EAU9B,CAAC;AAIH,MAAM,WAAW,GAAG,IAAI,OAAO,EAAqC,CAAC;AAErE,oIAAoI;AACpI,qGAAqG;AACrG,iDAAiD;AACjD,EAAE;AACF,aAAa;AACb,0EAA0E;AAC1E,iEAAiE;AACjE,kGAAkG;AAClG,
|
|
1
|
+
{"version":3,"file":"glInnerGlowEffect.js","sourceRoot":"","sources":["../src/glInnerGlowEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glInnerShadowEffect.d.ts","sourceRoot":"","sources":["../src/glInnerShadowEffect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAsCzB,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAClC,IAAI,
|
|
1
|
+
{"version":3,"file":"glInnerShadowEffect.d.ts","sourceRoot":"","sources":["../src/glInnerShadowEffect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAsCzB,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAClC,IAAI,CAkDN;AAED,eAAO,MAAM,gCAAgC,EAAE,oBAE9C,CAAC"}
|
|
@@ -28,7 +28,7 @@ const clipShaders = new WeakMap();
|
|
|
28
28
|
// 2. Blur pass.
|
|
29
29
|
// 3. Offset pass: shifts the blurred shadow by the angle/distance.
|
|
30
30
|
// 4. Clip pass: clips the offset shadow to source alpha (keeps shadow inside shape).
|
|
31
|
-
// 5. Composite: source + clipped shadow.
|
|
31
|
+
// 5. Composite: source (unless sourceMode is 'hide') + clipped shadow.
|
|
32
32
|
export function applyInnerShadowEffectToGl(state, source, dest, pool, effect) {
|
|
33
33
|
const descriptor = { width: source.width, height: source.height, format: source.format };
|
|
34
34
|
const s0 = acquireGlRenderTarget(state, pool, descriptor);
|
|
@@ -44,10 +44,16 @@ export function applyInnerShadowEffectToGl(state, source, dest, pool, effect) {
|
|
|
44
44
|
const alpha = effect.alpha ?? 1;
|
|
45
45
|
const strength = effect.strength ?? 1;
|
|
46
46
|
const quality = Math.max(1, Math.round(effect.quality ?? 1));
|
|
47
|
+
const sourceMode = effect.sourceMode ?? 'draw';
|
|
47
48
|
// Pass 1: invert source alpha and tint with shadow color → s0
|
|
48
49
|
applyGlEffectInvertTintPass(state, src, s0, color, alpha, strength);
|
|
49
50
|
// Pass 2: blur → s1 (s2 is ping-pong temp)
|
|
50
|
-
applyGlEffectBoxBlur(state, s0, s1, s2, {
|
|
51
|
+
applyGlEffectBoxBlur(state, s0, s1, s2, {
|
|
52
|
+
blurX: effect.blurX ?? 4,
|
|
53
|
+
blurY: effect.blurY ?? 4,
|
|
54
|
+
edgeColor: getInvertTintEdgeColor(color, alpha, strength),
|
|
55
|
+
passes: quality,
|
|
56
|
+
});
|
|
51
57
|
// Pass 3: shift the blurred shadow by the offset → s0 (s1 no longer needed).
|
|
52
58
|
// s0 still holds pass-1 content; clear it so the offset blit doesn't blend on top of it.
|
|
53
59
|
clearGlRenderTarget(state, s0);
|
|
@@ -56,9 +62,11 @@ export function applyInnerShadowEffectToGl(state, source, dest, pool, effect) {
|
|
|
56
62
|
// s1 still holds pass-2 blur content; clear it before the clip blit.
|
|
57
63
|
clearGlRenderTarget(state, s1);
|
|
58
64
|
applyGlInnerClipPass(state, s0, src, s1);
|
|
59
|
-
// Final composite: source first, then clipped shadow on top
|
|
65
|
+
// Final composite: source first, unless hidden, then clipped shadow on top.
|
|
60
66
|
clearGlRenderTarget(state, dst);
|
|
61
|
-
|
|
67
|
+
if (sourceMode === 'draw') {
|
|
68
|
+
applyGlEffectBlitPass(state, src, dst);
|
|
69
|
+
}
|
|
62
70
|
applyGlEffectBlitPass(state, s1, dst);
|
|
63
71
|
releaseGlRenderTarget(pool, s0);
|
|
64
72
|
releaseGlRenderTarget(pool, s1);
|
|
@@ -69,7 +77,9 @@ export const defaultGlInnerShadowEffectRunner = (ctx, effect) => {
|
|
|
69
77
|
};
|
|
70
78
|
function applyGlInnerClipPass(state, shadow, source, dest) {
|
|
71
79
|
const loc = getClipShader(state);
|
|
72
|
-
drawGlFullscreenPass(state, loc, [shadow.texture, source.texture], dest, () => {
|
|
80
|
+
drawGlFullscreenPass(state, loc, [shadow.texture, source.texture], dest, (gl) => {
|
|
81
|
+
gl.blendFunc(gl.ONE, gl.ZERO);
|
|
82
|
+
});
|
|
73
83
|
}
|
|
74
84
|
function getClipShader(state) {
|
|
75
85
|
let loc = clipShaders.get(state);
|
|
@@ -81,4 +91,13 @@ function getClipShader(state) {
|
|
|
81
91
|
}
|
|
82
92
|
return loc;
|
|
83
93
|
}
|
|
94
|
+
function getInvertTintEdgeColor(color, alpha, strength) {
|
|
95
|
+
const edgeAlpha = Math.min(1, alpha * strength);
|
|
96
|
+
return [
|
|
97
|
+
(((color >> 16) & 0xff) / 255) * edgeAlpha,
|
|
98
|
+
(((color >> 8) & 0xff) / 255) * edgeAlpha,
|
|
99
|
+
((color & 0xff) / 255) * edgeAlpha,
|
|
100
|
+
edgeAlpha,
|
|
101
|
+
];
|
|
102
|
+
}
|
|
84
103
|
//# sourceMappingURL=glInnerShadowEffect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glInnerShadowEffect.js","sourceRoot":"","sources":["../src/glInnerShadowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAEnE,yFAAyF;AACzF,4FAA4F;AAC5F,0FAA0F;AAC1F,uDAAuD;AAEvD,4EAA4E;AAC5E,MAAM,uBAAuB,GAAG;;;;;;;;;;EAU9B,CAAC;AAIH,MAAM,WAAW,GAAG,IAAI,OAAO,EAAqC,CAAC;AAErE,yJAAyJ;AACzJ,qGAAqG;AACrG,iDAAiD;AACjD,EAAE;AACF,aAAa;AACb,4EAA4E;AAC5E,kBAAkB;AAClB,qEAAqE;AACrE,uFAAuF;AACvF,
|
|
1
|
+
{"version":3,"file":"glInnerShadowEffect.js","sourceRoot":"","sources":["../src/glInnerShadowEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glOuterGlowEffect.d.ts","sourceRoot":"","sources":["../src/glOuterGlowEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"glOuterGlowEffect.d.ts","sourceRoot":"","sources":["../src/glOuterGlowEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAYzB,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAyCN;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAE5C,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { acquireGlRenderTarget, clearGlRenderTarget, releaseGlRenderTarget } from '@flighthq/render-gl';
|
|
2
|
-
import { applyGlEffectBlitPass } from './glEffectBlitShader';
|
|
2
|
+
import { applyGlEffectBlitPass, applyGlEffectErasePass } from './glEffectBlitShader';
|
|
3
3
|
import { applyGlEffectBoxBlur } from './glEffectBoxBlur';
|
|
4
4
|
import { applyGlEffectTintPass } from './glEffectTintShader';
|
|
5
5
|
// Outer-glow composite effect: tint the scene silhouette, blur it centered (no offset), then composite the source over the glow.
|
|
6
6
|
// Full-frame realization: acquires the recipe's three scratch targets from the effect pool, runs the
|
|
7
7
|
// inlined multi-pass recipe, then releases them.
|
|
8
8
|
//
|
|
9
|
-
// Compositing order
|
|
9
|
+
// Compositing order depends on `sourceMode`: 'draw' composites glow → source, 'hide' composites glow
|
|
10
|
+
// only, and 'knockout' composites glow then erases the source silhouette.
|
|
10
11
|
export function applyOuterGlowEffectToGl(state, source, dest, pool, effect) {
|
|
11
12
|
const descriptor = { width: source.width, height: source.height, format: source.format };
|
|
12
13
|
const s0 = acquireGlRenderTarget(state, pool, descriptor);
|
|
@@ -18,7 +19,7 @@ export function applyOuterGlowEffectToGl(state, source, dest, pool, effect) {
|
|
|
18
19
|
const alpha = effect.alpha ?? 1;
|
|
19
20
|
const strength = effect.strength ?? 1;
|
|
20
21
|
const quality = Math.max(1, Math.round(effect.quality ?? 1));
|
|
21
|
-
const
|
|
22
|
+
const sourceMode = effect.sourceMode ?? 'draw';
|
|
22
23
|
const tintStrength = Math.min(1, strength);
|
|
23
24
|
const glowPasses = Math.max(1, Math.floor(strength));
|
|
24
25
|
const [mask, blurred, blurTemp] = [s0, s1, s2];
|
|
@@ -32,7 +33,10 @@ export function applyOuterGlowEffectToGl(state, source, dest, pool, effect) {
|
|
|
32
33
|
for (let i = 0; i < glowPasses; i++) {
|
|
33
34
|
applyGlEffectBlitPass(state, blurred, dst);
|
|
34
35
|
}
|
|
35
|
-
if (
|
|
36
|
+
if (sourceMode === 'knockout') {
|
|
37
|
+
applyGlEffectErasePass(state, src, dst);
|
|
38
|
+
}
|
|
39
|
+
else if (sourceMode === 'draw') {
|
|
36
40
|
applyGlEffectBlitPass(state, src, dst);
|
|
37
41
|
}
|
|
38
42
|
releaseGlRenderTarget(pool, s0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glOuterGlowEffect.js","sourceRoot":"","sources":["../src/glOuterGlowEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AASxG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"glOuterGlowEffect.js","sourceRoot":"","sources":["../src/glOuterGlowEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderEffectPipeline.d.ts","sourceRoot":"","sources":["../src/glRenderEffectPipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glRenderEffectPipeline.d.ts","sourceRoot":"","sources":["../src/glRenderEffectPipeline.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EACtB,aAAa,EAEb,YAAY,EACZ,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAYzB,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAkBxG;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,QAAQ,CAAC,2BAA2B,CAAM,GAClD,sBAAsB,CASxB;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAa1G;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,sBAAsB,EAChC,UAAU,EAAE,aAAa,CAAC,YAAY,GAAG,UAAU,CAAC,GACnD,IAAI,CA4EN;AAID,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAErH"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { bakeColorLutForRun, createColorLutCache, fuseColorMatrices, getAdjustmentColorMatrix, isColorLutAdjustment, } from '@flighthq/adjustments';
|
|
2
|
-
import {
|
|
3
|
-
import { acquireGlRenderTarget, beginGlRenderTarget, clearGlRenderTarget, createGlRenderTarget, createGlRenderTargetPool, destroyGlRenderTarget, destroyGlRenderTargetPool, drawGlFullscreenPass, endGlRenderTarget, releaseGlRenderTarget, resizeGlRenderTarget, resolveGlRenderTarget, } from '@flighthq/render-gl';
|
|
2
|
+
import { acquireGlRenderTarget, beginGlRenderPass, clearGlRenderTarget, createGlRenderTarget, createGlRenderTargetPool, destroyGlRenderTarget, destroyGlRenderTargetPool, drawGlFullscreenPass, drawGlLinearToSrgbPass, endGlRenderPass, releaseGlRenderTarget, resizeGlRenderTarget, } from '@flighthq/render-gl';
|
|
4
3
|
import { applyColorLutPassToGl } from './glColorLutPass';
|
|
5
4
|
import { applyColorMatrixPassToGl } from './glColorMatrixPass';
|
|
6
5
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
@@ -19,7 +18,14 @@ export function beginGlRenderEffectPipeline(state, pipeline) {
|
|
|
19
18
|
else {
|
|
20
19
|
resizeGlRenderTarget(state, pipeline.sceneTarget, w, h);
|
|
21
20
|
}
|
|
22
|
-
|
|
21
|
+
// Reset the declared color space each frame so the frame's producer re-declares it: drawGlScene stamps
|
|
22
|
+
// 'linear' while it draws (the present then encodes once); a 2D display-object frame leaves it 'srgb'
|
|
23
|
+
// (plain-copy present, byte-identical to before this seam existed). A reused pipeline never carries a
|
|
24
|
+
// stale space from a prior frame's content.
|
|
25
|
+
pipeline.sceneTarget.colorSpace = 'srgb';
|
|
26
|
+
// Preserve, don't clear: the frame's scene render fills the target (matching the pre-pass behavior),
|
|
27
|
+
// and the current 2D render transform is inherited — begin no longer sets it.
|
|
28
|
+
beginGlRenderPass(state, pipeline.sceneTarget, { preserveColor: true, preserveDepth: true });
|
|
23
29
|
}
|
|
24
30
|
export function createGlRenderEffectPipeline(_state, options = {}) {
|
|
25
31
|
return {
|
|
@@ -49,10 +55,11 @@ export function endGlRenderEffectPipeline(state, pipeline, operations) {
|
|
|
49
55
|
const scene = pipeline.sceneTarget;
|
|
50
56
|
if (scene === null)
|
|
51
57
|
return;
|
|
52
|
-
|
|
53
|
-
resolveGlRenderTarget(state, scene);
|
|
58
|
+
endGlRenderPass(state);
|
|
54
59
|
const format = pipeline.options.format ?? 'rgba8';
|
|
55
|
-
|
|
60
|
+
// Intermediate ping-pong targets carry the scene's declared color space, so after the last effect the
|
|
61
|
+
// final `source` still reports whether its content is linear (encode at present) or sRGB (plain copy).
|
|
62
|
+
const descriptor = { width: scene.width, height: scene.height, format, colorSpace: scene.colorSpace };
|
|
56
63
|
let source = scene;
|
|
57
64
|
let scratchA = null;
|
|
58
65
|
let scratchB = null;
|
|
@@ -126,8 +133,17 @@ export function endGlRenderEffectPipeline(state, pipeline, operations) {
|
|
|
126
133
|
export function setGlRenderEffectVelocityTexture(pipeline, texture) {
|
|
127
134
|
pipeline.velocityTexture = texture;
|
|
128
135
|
}
|
|
129
|
-
//
|
|
136
|
+
// Presents the final effect result to the canvas, adapting to the source target's declared color space.
|
|
137
|
+
// 'linear' content (a 3D scene declared its target linear) is sRGB-encoded once here via
|
|
138
|
+
// drawGlLinearToSrgbPass — the single gamma encode, never in a material shader. 'srgb' content (2D
|
|
139
|
+
// display objects, already encoded) is blitted as-is (GL→GL, no orientation flip), byte-identical to
|
|
140
|
+
// before this seam existed. A tonemap effect, when present, stays a linear HDR→LDR step upstream and
|
|
141
|
+
// never encodes gamma itself.
|
|
130
142
|
function presentGlRenderEffectResult(state, source) {
|
|
143
|
+
if (source.colorSpace === 'linear') {
|
|
144
|
+
drawGlLinearToSrgbPass(state, source, null);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
131
147
|
const program = getGlEffectProgram(state, 'effect.present', PRESENT_FRAGMENT_SRC);
|
|
132
148
|
drawGlFullscreenPass(state, program, [source.texture], null, () => { });
|
|
133
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderEffectPipeline.js","sourceRoot":"","sources":["../src/glRenderEffectPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"glRenderEffectPipeline.js","sourceRoot":"","sources":["../src/glRenderEffectPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderEffectRegistrar.d.ts","sourceRoot":"","sources":["../src/glRenderEffectRegistrar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"glRenderEffectRegistrar.d.ts","sourceRoot":"","sources":["../src/glRenderEffectRegistrar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAuErD,wBAAgB,sBAAsB,IAAI,aAAa,CAAC,MAAM,CAAC,CAE9D;AAID,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAI9E;AAKD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAQvE;AAKD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAQtE;AASD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAGvE;AAID,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE5E;AAUD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAU3E;AAOD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE7E;AAKD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CASzE;AAMD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAM7E;AAID,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE1E;AAQD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAczE"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { defaultGlBevelEffectRunner } from './glBevelEffect';
|
|
2
|
+
import { defaultGlBlendEffectRunner } from './glBlendEffect';
|
|
2
3
|
import { defaultGlBloomEffectRunner } from './glBloomEffect';
|
|
3
4
|
import { defaultGlBlurEffectRunner } from './glBlurEffect';
|
|
4
5
|
import { defaultGlBokehDepthOfFieldEffectRunner } from './glBokehDepthOfFieldEffect';
|
|
5
6
|
import { defaultGlCameraMotionBlurEffectRunner } from './glCameraMotionBlurEffect';
|
|
6
7
|
import { defaultGlChromaticAberrationEffectRunner } from './glChromaticAberrationEffect';
|
|
8
|
+
import { defaultGlCompositeEffectRunner } from './glCompositeEffect';
|
|
7
9
|
import { defaultGlConvolutionEffectRunner } from './glConvolutionEffect';
|
|
8
10
|
import { defaultGlCrtEffectRunner } from './glCrtEffect';
|
|
9
11
|
import { defaultGlCustomShaderEffectRunner } from './glCustomShaderEffect';
|
|
@@ -113,12 +115,18 @@ export function registerColorGlRenderEffects(state) {
|
|
|
113
115
|
export function registerColorGradeGlRenderEffects(state) {
|
|
114
116
|
registerColorGlRenderEffects(state);
|
|
115
117
|
}
|
|
116
|
-
// Composite band: BevelEffect, DropShadowEffect, GradientBevelEffect,
|
|
117
|
-
// InnerGlowEffect, InnerShadowEffect, OuterGlowEffect. The former Tier-1 filter
|
|
118
|
-
// now full-frame composite effects: each
|
|
119
|
-
// offscreen targets
|
|
118
|
+
// Composite band: BevelEffect, BlendEffect, CompositeEffect, DropShadowEffect, GradientBevelEffect,
|
|
119
|
+
// GradientGlowEffect, InnerGlowEffect, InnerShadowEffect, OuterGlowEffect. The former Tier-1 filter
|
|
120
|
+
// composite ops (plus the advanced-blend recipe), now full-frame composite effects: each bounces through
|
|
121
|
+
// pooled offscreen targets. BlendEffect is the advanced/HSL blend the fixed-function BlendMode enum
|
|
122
|
+
// deliberately excludes; CompositeEffect is the fixed-function-cost Porter-Duff coverage combine (Erase =
|
|
123
|
+
// DestinationOut, Alpha = DestinationIn, etc.). Both realize as an explicit layer-over-backdrop composite
|
|
124
|
+
// (register the backdrop with registerGlBlendEffectBackdrop). Symmetric with Wgpu's
|
|
125
|
+
// registerCompositeWgpuRenderEffects.
|
|
120
126
|
export function registerCompositeGlRenderEffects(state) {
|
|
121
127
|
registerGlRenderEffect(state, 'BevelEffect', defaultGlBevelEffectRunner);
|
|
128
|
+
registerGlRenderEffect(state, 'BlendEffect', defaultGlBlendEffectRunner);
|
|
129
|
+
registerGlRenderEffect(state, 'CompositeEffect', defaultGlCompositeEffectRunner);
|
|
122
130
|
registerGlRenderEffect(state, 'DropShadowEffect', defaultGlDropShadowEffectRunner);
|
|
123
131
|
registerGlRenderEffect(state, 'GradientBevelEffect', defaultGlGradientBevelEffectRunner);
|
|
124
132
|
registerGlRenderEffect(state, 'GradientGlowEffect', defaultGlGradientGlowEffectRunner);
|
|
@@ -188,11 +196,13 @@ export function registerStylizeGlRenderEffects(state) {
|
|
|
188
196
|
// Single source of truth for registerDefaultGlRenderEffects and getGlRenderEffectKinds.
|
|
189
197
|
const ALL_GL_EFFECT_KINDS = [
|
|
190
198
|
'BevelEffect',
|
|
199
|
+
'BlendEffect',
|
|
191
200
|
'BloomEffect',
|
|
192
201
|
'BlurEffect',
|
|
193
202
|
'BokehDepthOfFieldEffect',
|
|
194
203
|
'CameraMotionBlurEffect',
|
|
195
204
|
'ChromaticAberrationEffect',
|
|
205
|
+
'CompositeEffect',
|
|
196
206
|
'ConvolutionEffect',
|
|
197
207
|
'CrtEffect',
|
|
198
208
|
'CustomShaderEffect',
|