@flighthq/effects-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/glBevelEffect.d.ts +4 -0
- package/dist/glBevelEffect.d.ts.map +1 -0
- package/dist/glBevelEffect.js +134 -0
- package/dist/glBevelEffect.js.map +1 -0
- 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/glBloomEffect.d.ts.map +1 -1
- package/dist/glBloomEffect.js +5 -5
- package/dist/glBloomEffect.js.map +1 -1
- package/dist/glBlurEffect.d.ts +8 -0
- package/dist/glBlurEffect.d.ts.map +1 -0
- package/dist/glBlurEffect.js +65 -0
- package/dist/glBlurEffect.js.map +1 -0
- package/dist/glColorLutPass.d.ts +3 -0
- package/dist/glColorLutPass.d.ts.map +1 -0
- package/dist/glColorLutPass.js +75 -0
- package/dist/glColorLutPass.js.map +1 -0
- package/dist/glColorMatrixPass.d.ts +3 -0
- package/dist/glColorMatrixPass.d.ts.map +1 -0
- package/dist/glColorMatrixPass.js +33 -0
- package/dist/glColorMatrixPass.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/glConvolutionEffect.d.ts +5 -0
- package/dist/glConvolutionEffect.d.ts.map +1 -0
- package/dist/glConvolutionEffect.js +94 -0
- package/dist/glConvolutionEffect.js.map +1 -0
- package/dist/glDropShadowEffect.d.ts +4 -0
- package/dist/glDropShadowEffect.d.ts.map +1 -0
- package/dist/glDropShadowEffect.js +53 -0
- package/dist/glDropShadowEffect.js.map +1 -0
- package/dist/glEffectBlitShader.d.ts +12 -0
- package/dist/glEffectBlitShader.d.ts.map +1 -0
- package/dist/glEffectBlitShader.js +89 -0
- package/dist/glEffectBlitShader.js.map +1 -0
- package/dist/glEffectBoxBlur.d.ts +16 -0
- package/dist/glEffectBoxBlur.d.ts.map +1 -0
- package/dist/glEffectBoxBlur.js +112 -0
- package/dist/glEffectBoxBlur.js.map +1 -0
- package/dist/glEffectGradientRamp.d.ts +9 -0
- package/dist/glEffectGradientRamp.d.ts.map +1 -0
- package/dist/glEffectGradientRamp.js +64 -0
- package/dist/glEffectGradientRamp.js.map +1 -0
- package/dist/glEffectTintShader.d.ts +7 -0
- package/dist/glEffectTintShader.d.ts.map +1 -0
- package/dist/glEffectTintShader.js +82 -0
- package/dist/glEffectTintShader.js.map +1 -0
- package/dist/glGradientBevelEffect.d.ts +4 -0
- package/dist/glGradientBevelEffect.d.ts.map +1 -0
- package/dist/glGradientBevelEffect.js +127 -0
- package/dist/glGradientBevelEffect.js.map +1 -0
- package/dist/glGradientGlowEffect.d.ts +4 -0
- package/dist/glGradientGlowEffect.d.ts.map +1 -0
- package/dist/glGradientGlowEffect.js +78 -0
- package/dist/glGradientGlowEffect.js.map +1 -0
- package/dist/glInnerGlowEffect.d.ts +4 -0
- package/dist/glInnerGlowEffect.d.ts.map +1 -0
- package/dist/glInnerGlowEffect.js +96 -0
- package/dist/glInnerGlowEffect.js.map +1 -0
- package/dist/glInnerShadowEffect.d.ts +4 -0
- package/dist/glInnerShadowEffect.d.ts.map +1 -0
- package/dist/glInnerShadowEffect.js +103 -0
- package/dist/glInnerShadowEffect.js.map +1 -0
- package/dist/glMedianEffect.d.ts +5 -0
- package/dist/glMedianEffect.d.ts.map +1 -0
- package/dist/glMedianEffect.js +73 -0
- package/dist/glMedianEffect.js.map +1 -0
- package/dist/glOuterGlowEffect.d.ts +4 -0
- package/dist/glOuterGlowEffect.d.ts.map +1 -0
- package/dist/glOuterGlowEffect.js +49 -0
- package/dist/glOuterGlowEffect.js.map +1 -0
- package/dist/glRenderEffectPipeline.d.ts +2 -2
- package/dist/glRenderEffectPipeline.d.ts.map +1 -1
- package/dist/glRenderEffectPipeline.js +86 -14
- package/dist/glRenderEffectPipeline.js.map +1 -1
- package/dist/glRenderEffectRegistrar.d.ts +1 -0
- package/dist/glRenderEffectRegistrar.d.ts.map +1 -1
- package/dist/glRenderEffectRegistrar.js +62 -38
- package/dist/glRenderEffectRegistrar.js.map +1 -1
- package/dist/index.d.ts +18 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -10
- package/dist/index.js.map +1 -1
- package/package.json +11 -6
- package/src/glBevelEffect.test.ts +13 -0
- package/src/glBlendEffect.test.ts +111 -0
- package/src/glBlurEffect.test.ts +19 -0
- package/src/glColorLutPass.test.ts +7 -0
- package/src/glColorMatrixPass.test.ts +7 -0
- package/src/glCompositeEffect.test.ts +39 -0
- package/src/glConvolutionEffect.test.ts +13 -0
- package/src/glDropShadowEffect.test.ts +105 -0
- package/src/glEffectBlitShader.test.ts +19 -0
- package/src/glEffectBoxBlur.test.ts +57 -0
- package/src/glEffectGradientRamp.test.ts +7 -0
- package/src/glEffectTintShader.test.ts +13 -0
- package/src/glGradientBevelEffect.test.ts +13 -0
- package/src/glGradientGlowEffect.test.ts +13 -0
- package/src/glInnerGlowEffect.test.ts +145 -0
- package/src/glInnerShadowEffect.test.ts +145 -0
- package/src/glMedianEffect.test.ts +13 -0
- package/src/glOuterGlowEffect.test.ts +104 -0
- package/src/glRenderEffectRegistrar.test.ts +37 -6
- package/dist/glBrightnessContrastEffect.d.ts +0 -4
- package/dist/glBrightnessContrastEffect.d.ts.map +0 -1
- package/dist/glBrightnessContrastEffect.js +0 -28
- package/dist/glBrightnessContrastEffect.js.map +0 -1
- package/dist/glChannelMixerEffect.d.ts +0 -4
- package/dist/glChannelMixerEffect.d.ts.map +0 -1
- package/dist/glChannelMixerEffect.js +0 -30
- package/dist/glChannelMixerEffect.js.map +0 -1
- package/dist/glColorGradeEffect.d.ts +0 -4
- package/dist/glColorGradeEffect.d.ts.map +0 -1
- package/dist/glColorGradeEffect.js +0 -46
- package/dist/glColorGradeEffect.js.map +0 -1
- package/dist/glExposureEffect.d.ts +0 -4
- package/dist/glExposureEffect.d.ts.map +0 -1
- package/dist/glExposureEffect.js +0 -24
- package/dist/glExposureEffect.js.map +0 -1
- package/dist/glGrayscaleEffect.d.ts +0 -4
- package/dist/glGrayscaleEffect.d.ts.map +0 -1
- package/dist/glGrayscaleEffect.js +0 -25
- package/dist/glGrayscaleEffect.js.map +0 -1
- package/dist/glHueSaturationEffect.d.ts +0 -4
- package/dist/glHueSaturationEffect.d.ts.map +0 -1
- package/dist/glHueSaturationEffect.js +0 -67
- package/dist/glHueSaturationEffect.js.map +0 -1
- package/dist/glInvertEffect.d.ts +0 -4
- package/dist/glInvertEffect.d.ts.map +0 -1
- package/dist/glInvertEffect.js +0 -24
- package/dist/glInvertEffect.js.map +0 -1
- package/dist/glLiftGammaGainEffect.d.ts +0 -4
- package/dist/glLiftGammaGainEffect.d.ts.map +0 -1
- package/dist/glLiftGammaGainEffect.js +0 -44
- package/dist/glLiftGammaGainEffect.js.map +0 -1
- package/dist/glLookupTableGradeEffect.d.ts +0 -4
- package/dist/glLookupTableGradeEffect.d.ts.map +0 -1
- package/dist/glLookupTableGradeEffect.js +0 -28
- package/dist/glLookupTableGradeEffect.js.map +0 -1
- package/dist/glSepiaEffect.d.ts +0 -4
- package/dist/glSepiaEffect.d.ts.map +0 -1
- package/dist/glSepiaEffect.js +0 -29
- package/dist/glSepiaEffect.js.map +0 -1
- package/src/glBrightnessContrastEffect.test.ts +0 -16
- package/src/glChannelMixerEffect.test.ts +0 -13
- package/src/glColorGradeEffect.test.ts +0 -13
- package/src/glExposureEffect.test.ts +0 -13
- package/src/glGrayscaleEffect.test.ts +0 -13
- package/src/glHueSaturationEffect.test.ts +0 -13
- package/src/glInvertEffect.test.ts +0 -13
- package/src/glLiftGammaGainEffect.test.ts +0 -13
- package/src/glLookupTableGradeEffect.test.ts +0 -13
- package/src/glSepiaEffect.test.ts +0 -13
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { drawGlFullscreenPass } from '@flighthq/render-gl';
|
|
2
|
+
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
3
|
+
// Largest median-filter radius the WebGL path supports (radius 2 → a 5×5, 25-sample window). The cap
|
|
4
|
+
// is the fixed sort-array size in the fragment shader; larger radii are unsupported on this backend.
|
|
5
|
+
export const MAX_MEDIAN_EFFECT_GL_RADIUS = 2;
|
|
6
|
+
const MAX_SAMPLES = (MAX_MEDIAN_EFFECT_GL_RADIUS * 2 + 1) * (MAX_MEDIAN_EFFECT_GL_RADIUS * 2 + 1); // 25
|
|
7
|
+
// Per-channel median denoise: each output pixel is the median of its (2·radius+1)² neighborhood.
|
|
8
|
+
// Preserves edges while removing salt-and-pepper noise. A single GPU pass — no scratch targets.
|
|
9
|
+
export function applyMedianEffectToGl(state, source, dest, effect) {
|
|
10
|
+
const radius = Math.min(MAX_MEDIAN_EFFECT_GL_RADIUS, Math.max(0, Math.round(effect.radius ?? 1)));
|
|
11
|
+
const program = getGlEffectProgram(state, 'stylization.median', MEDIAN_FRAGMENT_SRC);
|
|
12
|
+
drawGlFullscreenPass(state, program, [source.texture], dest, (gl, p) => {
|
|
13
|
+
gl.uniform2f(gl.getUniformLocation(p.program, 'u_texelSize'), 1 / source.width, 1 / source.height);
|
|
14
|
+
gl.uniform1i(gl.getUniformLocation(p.program, 'u_radius'), radius);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export const defaultGlMedianEffectRunner = (ctx, effect) => {
|
|
18
|
+
applyMedianEffectToGl(ctx.state, ctx.source, ctx.dest, effect);
|
|
19
|
+
};
|
|
20
|
+
const MEDIAN_FRAGMENT_SRC = `#version 300 es
|
|
21
|
+
precision mediump float;
|
|
22
|
+
in vec2 v_texCoord;
|
|
23
|
+
uniform sampler2D u_texture0;
|
|
24
|
+
uniform vec2 u_texelSize;
|
|
25
|
+
uniform int u_radius;
|
|
26
|
+
out vec4 fragColor;
|
|
27
|
+
|
|
28
|
+
const int MAX_S = ${MAX_SAMPLES};
|
|
29
|
+
|
|
30
|
+
void sortFloat(inout float arr[MAX_S], int n) {
|
|
31
|
+
for (int i = 1; i < n; i++) {
|
|
32
|
+
float key = arr[i];
|
|
33
|
+
int j = i - 1;
|
|
34
|
+
while (j >= 0 && arr[j] > key) {
|
|
35
|
+
arr[j + 1] = arr[j];
|
|
36
|
+
j--;
|
|
37
|
+
}
|
|
38
|
+
arr[j + 1] = key;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
void main() {
|
|
43
|
+
int r = clamp(u_radius, 0, ${MAX_MEDIAN_EFFECT_GL_RADIUS});
|
|
44
|
+
if (r == 0) {
|
|
45
|
+
fragColor = texture(u_texture0, v_texCoord);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
int n = (2 * r + 1) * (2 * r + 1);
|
|
49
|
+
float rv[MAX_S];
|
|
50
|
+
float gv[MAX_S];
|
|
51
|
+
float bv[MAX_S];
|
|
52
|
+
float av[MAX_S];
|
|
53
|
+
int count = 0;
|
|
54
|
+
for (int dy = -${MAX_MEDIAN_EFFECT_GL_RADIUS}; dy <= ${MAX_MEDIAN_EFFECT_GL_RADIUS}; dy++) {
|
|
55
|
+
for (int dx = -${MAX_MEDIAN_EFFECT_GL_RADIUS}; dx <= ${MAX_MEDIAN_EFFECT_GL_RADIUS}; dx++) {
|
|
56
|
+
if (abs(dy) <= r && abs(dx) <= r) {
|
|
57
|
+
vec4 s = texture(u_texture0, v_texCoord + vec2(float(dx), float(dy)) * u_texelSize);
|
|
58
|
+
rv[count] = s.r;
|
|
59
|
+
gv[count] = s.g;
|
|
60
|
+
bv[count] = s.b;
|
|
61
|
+
av[count] = s.a;
|
|
62
|
+
count++;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
sortFloat(rv, n);
|
|
67
|
+
sortFloat(gv, n);
|
|
68
|
+
sortFloat(bv, n);
|
|
69
|
+
sortFloat(av, n);
|
|
70
|
+
int mid = n / 2;
|
|
71
|
+
fragColor = vec4(rv[mid], gv[mid], bv[mid], av[mid]);
|
|
72
|
+
}`;
|
|
73
|
+
//# sourceMappingURL=glMedianEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glMedianEffect.js","sourceRoot":"","sources":["../src/glMedianEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qGAAqG;AACrG,qGAAqG;AACrG,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,MAAM,WAAW,GAAG,CAAC,2BAA2B,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,2BAA2B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;AAExG,iGAAiG;AACjG,gGAAgG;AAChG,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,MAAgC,EAChC,IAA8B,EAC9B,MAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;IACrF,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACrE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACnG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC/E,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAsB,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;;;;;oBAQR,WAAW;;;;;;;;;;;;;;;+BAeA,2BAA2B;;;;;;;;;;;mBAWvC,2BAA2B,WAAW,2BAA2B;qBAC/D,2BAA2B,WAAW,2BAA2B;;;;;;;;;;;;;;;;;EAiBpF,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { OuterGlowEffect, GlRenderEffectRunner, GlRenderState, GlRenderTarget, GlRenderTargetPool } from '@flighthq/types';
|
|
2
|
+
export declare function applyOuterGlowEffectToGl(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget>, pool: GlRenderTargetPool, effect: Readonly<OuterGlowEffect>): void;
|
|
3
|
+
export declare const defaultGlOuterGlowEffectRunner: GlRenderEffectRunner;
|
|
4
|
+
//# sourceMappingURL=glOuterGlowEffect.d.ts.map
|
|
@@ -0,0 +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;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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { acquireGlRenderTarget, clearGlRenderTarget, releaseGlRenderTarget } from '@flighthq/render-gl';
|
|
2
|
+
import { applyGlEffectBlitPass, applyGlEffectErasePass } from './glEffectBlitShader';
|
|
3
|
+
import { applyGlEffectBoxBlur } from './glEffectBoxBlur';
|
|
4
|
+
import { applyGlEffectTintPass } from './glEffectTintShader';
|
|
5
|
+
// Outer-glow composite effect: tint the scene silhouette, blur it centered (no offset), then composite the source over the glow.
|
|
6
|
+
// Full-frame realization: acquires the recipe's three scratch targets from the effect pool, runs the
|
|
7
|
+
// inlined multi-pass recipe, then releases them.
|
|
8
|
+
//
|
|
9
|
+
// Compositing order depends on `sourceMode`: 'draw' composites glow → source, 'hide' composites glow
|
|
10
|
+
// only, and 'knockout' composites glow then erases the source silhouette.
|
|
11
|
+
export function applyOuterGlowEffectToGl(state, source, dest, pool, effect) {
|
|
12
|
+
const descriptor = { width: source.width, height: source.height, format: source.format };
|
|
13
|
+
const s0 = acquireGlRenderTarget(state, pool, descriptor);
|
|
14
|
+
const s1 = acquireGlRenderTarget(state, pool, descriptor);
|
|
15
|
+
const s2 = acquireGlRenderTarget(state, pool, descriptor);
|
|
16
|
+
const src = source;
|
|
17
|
+
const dst = dest;
|
|
18
|
+
const color = effect.color ?? 0xff0000;
|
|
19
|
+
const alpha = effect.alpha ?? 1;
|
|
20
|
+
const strength = effect.strength ?? 1;
|
|
21
|
+
const quality = Math.max(1, Math.round(effect.quality ?? 1));
|
|
22
|
+
const sourceMode = effect.sourceMode ?? 'draw';
|
|
23
|
+
const tintStrength = Math.min(1, strength);
|
|
24
|
+
const glowPasses = Math.max(1, Math.floor(strength));
|
|
25
|
+
const [mask, blurred, blurTemp] = [s0, s1, s2];
|
|
26
|
+
applyGlEffectTintPass(state, src, mask, color, alpha, tintStrength);
|
|
27
|
+
applyGlEffectBoxBlur(state, mask, blurred, blurTemp, {
|
|
28
|
+
blurX: effect.blurX ?? 6,
|
|
29
|
+
blurY: effect.blurY ?? 6,
|
|
30
|
+
passes: quality,
|
|
31
|
+
});
|
|
32
|
+
clearGlRenderTarget(state, dst);
|
|
33
|
+
for (let i = 0; i < glowPasses; i++) {
|
|
34
|
+
applyGlEffectBlitPass(state, blurred, dst);
|
|
35
|
+
}
|
|
36
|
+
if (sourceMode === 'knockout') {
|
|
37
|
+
applyGlEffectErasePass(state, src, dst);
|
|
38
|
+
}
|
|
39
|
+
else if (sourceMode === 'draw') {
|
|
40
|
+
applyGlEffectBlitPass(state, src, dst);
|
|
41
|
+
}
|
|
42
|
+
releaseGlRenderTarget(pool, s0);
|
|
43
|
+
releaseGlRenderTarget(pool, s1);
|
|
44
|
+
releaseGlRenderTarget(pool, s2);
|
|
45
|
+
}
|
|
46
|
+
export const defaultGlOuterGlowEffectRunner = (ctx, effect) => {
|
|
47
|
+
applyOuterGlowEffectToGl(ctx.state, ctx.source, ctx.dest, ctx.pool, effect);
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=glOuterGlowEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glOuterGlowEffect.js","sourceRoot":"","sources":["../src/glOuterGlowEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { GlRenderEffectPipeline, GlRenderState, RenderEffect, RenderEffectPipelineOptions } from '@flighthq/types';
|
|
1
|
+
import type { Adjustment, GlRenderEffectPipeline, GlRenderState, RenderEffect, RenderEffectPipelineOptions } from '@flighthq/types';
|
|
2
2
|
export declare function beginGlRenderEffectPipeline(state: GlRenderState, pipeline: GlRenderEffectPipeline): void;
|
|
3
3
|
export declare function createGlRenderEffectPipeline(_state: GlRenderState, options?: Readonly<RenderEffectPipelineOptions>): GlRenderEffectPipeline;
|
|
4
4
|
export declare function destroyGlRenderEffectPipeline(state: GlRenderState, pipeline: GlRenderEffectPipeline): void;
|
|
5
|
-
export declare function endGlRenderEffectPipeline(state: GlRenderState, pipeline: GlRenderEffectPipeline,
|
|
5
|
+
export declare function endGlRenderEffectPipeline(state: GlRenderState, pipeline: GlRenderEffectPipeline, operations: ReadonlyArray<RenderEffect | Adjustment>): void;
|
|
6
6
|
export declare function setGlRenderEffectVelocityTexture(pipeline: GlRenderEffectPipeline, texture: WebGLTexture | null): void;
|
|
7
7
|
//# sourceMappingURL=glRenderEffectPipeline.d.ts.map
|
|
@@ -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,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { acquireGlRenderTarget,
|
|
1
|
+
import { bakeColorLutForRun, createColorLutCache, fuseColorMatrices, getAdjustmentColorMatrix, isColorLutAdjustment, } from '@flighthq/adjustments';
|
|
2
|
+
import { acquireGlRenderTarget, beginGlRenderPass, clearGlRenderTarget, createGlRenderTarget, createGlRenderTargetPool, destroyGlRenderTarget, destroyGlRenderTargetPool, drawGlFullscreenPass, drawGlLinearToSrgbPass, endGlRenderPass, releaseGlRenderTarget, resizeGlRenderTarget, } from '@flighthq/render-gl';
|
|
3
|
+
import { applyColorLutPassToGl } from './glColorLutPass';
|
|
4
|
+
import { applyColorMatrixPassToGl } from './glColorMatrixPass';
|
|
3
5
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
4
6
|
import { getGlRenderEffectRunner } from './glRenderEffectRegistry';
|
|
5
7
|
// Opt-in post-process pipeline. The scene renders into the pipeline's (optionally MSAA / HDR) target
|
|
@@ -16,10 +18,24 @@ export function beginGlRenderEffectPipeline(state, pipeline) {
|
|
|
16
18
|
else {
|
|
17
19
|
resizeGlRenderTarget(state, pipeline.sceneTarget, w, h);
|
|
18
20
|
}
|
|
19
|
-
|
|
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 });
|
|
20
29
|
}
|
|
21
30
|
export function createGlRenderEffectPipeline(_state, options = {}) {
|
|
22
|
-
return {
|
|
31
|
+
return {
|
|
32
|
+
options: { ...options },
|
|
33
|
+
sceneTarget: null,
|
|
34
|
+
pool: createGlRenderTargetPool(),
|
|
35
|
+
lutCache: createColorLutCache(),
|
|
36
|
+
lutTexture: { texture: null, lut: null },
|
|
37
|
+
velocityTexture: null,
|
|
38
|
+
};
|
|
23
39
|
}
|
|
24
40
|
export function destroyGlRenderEffectPipeline(state, pipeline) {
|
|
25
41
|
if (pipeline.sceneTarget) {
|
|
@@ -27,27 +43,73 @@ export function destroyGlRenderEffectPipeline(state, pipeline) {
|
|
|
27
43
|
pipeline.sceneTarget = null;
|
|
28
44
|
}
|
|
29
45
|
destroyGlRenderTargetPool(state, pipeline.pool);
|
|
46
|
+
if (pipeline.lutTexture.texture !== null) {
|
|
47
|
+
state.gl.deleteTexture(pipeline.lutTexture.texture);
|
|
48
|
+
pipeline.lutTexture.texture = null;
|
|
49
|
+
}
|
|
50
|
+
pipeline.lutTexture.lut = null;
|
|
51
|
+
pipeline.lutCache.signature = null;
|
|
52
|
+
pipeline.lutCache.lut = null;
|
|
30
53
|
}
|
|
31
|
-
export function endGlRenderEffectPipeline(state, pipeline,
|
|
54
|
+
export function endGlRenderEffectPipeline(state, pipeline, operations) {
|
|
32
55
|
const scene = pipeline.sceneTarget;
|
|
33
56
|
if (scene === null)
|
|
34
57
|
return;
|
|
35
|
-
|
|
36
|
-
resolveGlRenderTarget(state, scene);
|
|
58
|
+
endGlRenderPass(state);
|
|
37
59
|
const format = pipeline.options.format ?? 'rgba8';
|
|
38
|
-
|
|
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 };
|
|
39
63
|
let source = scene;
|
|
40
64
|
let scratchA = null;
|
|
41
65
|
let scratchB = null;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
66
|
+
// A maximal run of consecutive pointwise adjustments fuses into ONE pass: all matrix-tier → one 4×5
|
|
67
|
+
// matrix (cheaper applyColorMatrixPass); any LUT-tier member → the whole run (matrices folded in) bakes
|
|
68
|
+
// into one ColorLut (applyColorLutPass). An effect (or the end of the stack) breaks the run and flushes
|
|
69
|
+
// it first, preserving stack order.
|
|
70
|
+
let pending = [];
|
|
71
|
+
const ensureScratch = () => {
|
|
46
72
|
if (scratchA === null)
|
|
47
73
|
scratchA = acquireGlRenderTarget(state, pipeline.pool, descriptor);
|
|
48
74
|
if (scratchB === null)
|
|
49
75
|
scratchB = acquireGlRenderTarget(state, pipeline.pool, descriptor);
|
|
76
|
+
};
|
|
77
|
+
// Hand every pass a clean destination. scratchA/scratchB ping-pong across the chain, so a target
|
|
78
|
+
// reused two passes later still holds an earlier pass's output; clearing means a non-covering effect
|
|
79
|
+
// never composites onto stale content.
|
|
80
|
+
const flushAdjustments = () => {
|
|
81
|
+
if (pending.length === 0)
|
|
82
|
+
return;
|
|
83
|
+
ensureScratch();
|
|
84
|
+
const dest = source === scratchA ? scratchB : scratchA;
|
|
85
|
+
clearGlRenderTarget(state, dest);
|
|
86
|
+
if (pending.some(isColorLutAdjustment)) {
|
|
87
|
+
applyColorLutPassToGl(state, source, dest, bakeColorLutForRun(pipeline.lutCache, pending), pipeline.lutTexture);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const matrices = [];
|
|
91
|
+
for (const op of pending) {
|
|
92
|
+
const matrix = getAdjustmentColorMatrix(op);
|
|
93
|
+
if (matrix !== null)
|
|
94
|
+
matrices.push(matrix);
|
|
95
|
+
}
|
|
96
|
+
applyColorMatrixPassToGl(state, source, dest, fuseColorMatrices(matrices));
|
|
97
|
+
}
|
|
98
|
+
source = dest;
|
|
99
|
+
pending = [];
|
|
100
|
+
};
|
|
101
|
+
for (const operation of operations) {
|
|
102
|
+
if (getAdjustmentColorMatrix(operation) !== null || isColorLutAdjustment(operation)) {
|
|
103
|
+
pending.push(operation);
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const runner = getGlRenderEffectRunner(state, operation.kind);
|
|
107
|
+
if (runner === null)
|
|
108
|
+
continue;
|
|
109
|
+
flushAdjustments();
|
|
110
|
+
ensureScratch();
|
|
50
111
|
const dest = source === scratchA ? scratchB : scratchA;
|
|
112
|
+
clearGlRenderTarget(state, dest);
|
|
51
113
|
// Depth/velocity always come from the original scene target, not the ping-ponged `source`.
|
|
52
114
|
runner({
|
|
53
115
|
state,
|
|
@@ -56,9 +118,10 @@ export function endGlRenderEffectPipeline(state, pipeline, effects) {
|
|
|
56
118
|
pool: pipeline.pool,
|
|
57
119
|
sceneDepthTexture: scene.depthTexture,
|
|
58
120
|
sceneVelocityTexture: pipeline.velocityTexture,
|
|
59
|
-
},
|
|
121
|
+
}, operation);
|
|
60
122
|
source = dest;
|
|
61
123
|
}
|
|
124
|
+
flushAdjustments();
|
|
62
125
|
presentGlRenderEffectResult(state, source);
|
|
63
126
|
if (scratchA !== null)
|
|
64
127
|
releaseGlRenderTarget(pipeline.pool, scratchA);
|
|
@@ -70,8 +133,17 @@ export function endGlRenderEffectPipeline(state, pipeline, effects) {
|
|
|
70
133
|
export function setGlRenderEffectVelocityTexture(pipeline, texture) {
|
|
71
134
|
pipeline.velocityTexture = texture;
|
|
72
135
|
}
|
|
73
|
-
//
|
|
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.
|
|
74
142
|
function presentGlRenderEffectResult(state, source) {
|
|
143
|
+
if (source.colorSpace === 'linear') {
|
|
144
|
+
drawGlLinearToSrgbPass(state, source, null);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
75
147
|
const program = getGlEffectProgram(state, 'effect.present', PRESENT_FRAGMENT_SRC);
|
|
76
148
|
drawGlFullscreenPass(state, program, [source.texture], null, () => { });
|
|
77
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderEffectPipeline.js","sourceRoot":"","sources":["../src/glRenderEffectPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"glRenderEffectPipeline.js","sourceRoot":"","sources":["../src/glRenderEffectPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export declare function registerBloomGlRenderEffects(state: GlRenderState): void
|
|
|
5
5
|
export declare function registerBlurGlRenderEffects(state: GlRenderState): void;
|
|
6
6
|
export declare function registerColorGlRenderEffects(state: GlRenderState): void;
|
|
7
7
|
export declare function registerColorGradeGlRenderEffects(state: GlRenderState): void;
|
|
8
|
+
export declare function registerCompositeGlRenderEffects(state: GlRenderState): void;
|
|
8
9
|
export declare function registerCustomShaderGlRenderEffect(state: GlRenderState): void;
|
|
9
10
|
export declare function registerDefaultGlRenderEffects(state: GlRenderState): void;
|
|
10
11
|
export declare function registerScreenSpaceGlRenderEffects(state: GlRenderState): void;
|
|
@@ -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,31 +1,34 @@
|
|
|
1
|
+
import { defaultGlBevelEffectRunner } from './glBevelEffect';
|
|
2
|
+
import { defaultGlBlendEffectRunner } from './glBlendEffect';
|
|
1
3
|
import { defaultGlBloomEffectRunner } from './glBloomEffect';
|
|
4
|
+
import { defaultGlBlurEffectRunner } from './glBlurEffect';
|
|
2
5
|
import { defaultGlBokehDepthOfFieldEffectRunner } from './glBokehDepthOfFieldEffect';
|
|
3
|
-
import { defaultGlBrightnessContrastEffectRunner } from './glBrightnessContrastEffect';
|
|
4
6
|
import { defaultGlCameraMotionBlurEffectRunner } from './glCameraMotionBlurEffect';
|
|
5
|
-
import { defaultGlChannelMixerEffectRunner } from './glChannelMixerEffect';
|
|
6
7
|
import { defaultGlChromaticAberrationEffectRunner } from './glChromaticAberrationEffect';
|
|
7
|
-
import {
|
|
8
|
+
import { defaultGlCompositeEffectRunner } from './glCompositeEffect';
|
|
9
|
+
import { defaultGlConvolutionEffectRunner } from './glConvolutionEffect';
|
|
8
10
|
import { defaultGlCrtEffectRunner } from './glCrtEffect';
|
|
9
11
|
import { defaultGlCustomShaderEffectRunner } from './glCustomShaderEffect';
|
|
10
12
|
import { defaultGlDirectionalBlurEffectRunner } from './glDirectionalBlurEffect';
|
|
11
13
|
import { defaultGlDisplacementEffectRunner } from './glDisplacementEffect';
|
|
12
14
|
import { defaultGlDitherEffectRunner } from './glDitherEffect';
|
|
13
|
-
import {
|
|
15
|
+
import { defaultGlDropShadowEffectRunner } from './glDropShadowEffect';
|
|
14
16
|
import { defaultGlFilmGrainEffectRunner } from './glFilmGrainEffect';
|
|
15
17
|
import { defaultGlFxaaEffectRunner } from './glFxaaEffect';
|
|
16
18
|
import { defaultGlGlitchEffectRunner } from './glGlitchEffect';
|
|
17
19
|
import { defaultGlGodRaysEffectRunner } from './glGodRaysEffect';
|
|
18
|
-
import {
|
|
20
|
+
import { defaultGlGradientBevelEffectRunner } from './glGradientBevelEffect';
|
|
21
|
+
import { defaultGlGradientGlowEffectRunner } from './glGradientGlowEffect';
|
|
19
22
|
import { defaultGlHalftoneEffectRunner } from './glHalftoneEffect';
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
23
|
+
import { defaultGlInnerGlowEffectRunner } from './glInnerGlowEffect';
|
|
24
|
+
import { defaultGlInnerShadowEffectRunner } from './glInnerShadowEffect';
|
|
22
25
|
import { defaultGlKuwaharaEffectRunner } from './glKuwaharaEffect';
|
|
23
26
|
import { defaultGlLensDirtEffectRunner } from './glLensDirtEffect';
|
|
24
27
|
import { defaultGlLensDistortionEffectRunner } from './glLensDistortionEffect';
|
|
25
28
|
import { defaultGlLensFlareEffectRunner } from './glLensFlareEffect';
|
|
26
|
-
import {
|
|
27
|
-
import { defaultGlLookupTableGradeEffectRunner } from './glLookupTableGradeEffect';
|
|
29
|
+
import { defaultGlMedianEffectRunner } from './glMedianEffect';
|
|
28
30
|
import { defaultGlMotionBlurEffectRunner } from './glMotionBlurEffect';
|
|
31
|
+
import { defaultGlOuterGlowEffectRunner } from './glOuterGlowEffect';
|
|
29
32
|
import { defaultGlOutlineEffectRunner } from './glOutlineEffect';
|
|
30
33
|
import { defaultGlPixelateEffectRunner } from './glPixelateEffect';
|
|
31
34
|
import { defaultGlPosterizeEffectRunner } from './glPosterizeEffect';
|
|
@@ -33,7 +36,6 @@ import { defaultGlRadialBlurEffectRunner } from './glRadialBlurEffect';
|
|
|
33
36
|
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
34
37
|
import { defaultGlScanlinesEffectRunner } from './glScanlinesEffect';
|
|
35
38
|
import { defaultGlScreenSpaceFogEffectRunner } from './glScreenSpaceFogEffect';
|
|
36
|
-
import { defaultGlSepiaEffectRunner } from './glSepiaEffect';
|
|
37
39
|
import { defaultGlSharpenEffectRunner } from './glSharpenEffect';
|
|
38
40
|
import { defaultGlSketchEffectRunner } from './glSketchEffect';
|
|
39
41
|
import { defaultGlSmaaEffectRunner } from './glSmaaEffect';
|
|
@@ -48,8 +50,11 @@ import { defaultGlWhiteBalanceEffectRunner } from './glWhiteBalanceEffect';
|
|
|
48
50
|
// antialiasing — FXAA, SMAA, TAA
|
|
49
51
|
// bloom — BloomEffect, ChromaticAberration, GodRays, LensDirt, LensDistortion, LensFlare, Vignette
|
|
50
52
|
// blur — BokehDepthOfField, CameraMotionBlur, DirectionalBlur, MotionBlur, RadialBlur, TiltShift
|
|
51
|
-
// color —
|
|
52
|
-
//
|
|
53
|
+
// color — ToneMap, WhiteBalance
|
|
54
|
+
// (the pointwise color ops — Grayscale/Invert/Sepia/BrightnessContrast/ChannelMixer/
|
|
55
|
+
// Exposure as matrix-tier, and HueSaturation/LiftGammaGain/ColorGrade/Posterize/
|
|
56
|
+
// LookupTableGrade as LUT-tier — moved to @flighthq/adjustments, folded through the
|
|
57
|
+
// pipeline's generic color-matrix / color-LUT pass — see effect-adjustment-architecture)
|
|
53
58
|
// screen-space — Displacement, ScreenSpaceFog, Sharpen, Ssao, Ssr
|
|
54
59
|
// stylize — Crt, Dither, FilmGrain, Glitch, Halftone, Kuwahara, Outline, Pixelate, Scanlines, Sketch
|
|
55
60
|
//
|
|
@@ -86,6 +91,7 @@ export function registerBloomGlRenderEffects(state) {
|
|
|
86
91
|
// MotionBlurEffect, RadialBlurEffect, TiltShiftEffect.
|
|
87
92
|
// Symmetric with Wgpu's registerBlurWgpuRenderEffects (BloomEffect has moved to the bloom band).
|
|
88
93
|
export function registerBlurGlRenderEffects(state) {
|
|
94
|
+
registerGlRenderEffect(state, 'BlurEffect', defaultGlBlurEffectRunner);
|
|
89
95
|
registerGlRenderEffect(state, 'BokehDepthOfFieldEffect', defaultGlBokehDepthOfFieldEffectRunner);
|
|
90
96
|
registerGlRenderEffect(state, 'CameraMotionBlurEffect', defaultGlCameraMotionBlurEffectRunner);
|
|
91
97
|
registerGlRenderEffect(state, 'DirectionalBlurEffect', defaultGlDirectionalBlurEffectRunner);
|
|
@@ -93,23 +99,14 @@ export function registerBlurGlRenderEffects(state) {
|
|
|
93
99
|
registerGlRenderEffect(state, 'RadialBlurEffect', defaultGlRadialBlurEffectRunner);
|
|
94
100
|
registerGlRenderEffect(state, 'TiltShiftEffect', defaultGlTiltShiftEffectRunner);
|
|
95
101
|
}
|
|
96
|
-
// Color / tone band:
|
|
97
|
-
//
|
|
98
|
-
//
|
|
102
|
+
// Color / tone band: ToneMapEffect, WhiteBalanceEffect.
|
|
103
|
+
// (The pointwise color ops were dissolved into @flighthq/adjustments — Grayscale/Invert/Sepia/
|
|
104
|
+
// BrightnessContrast/ChannelMixer/Exposure as matrix-tier, and HueSaturation/LiftGammaGain/ColorGrade/
|
|
105
|
+
// Posterize/LookupTableGrade as LUT-tier — folded through the pipeline's generic color-matrix / color-LUT
|
|
106
|
+
// pass; see effect-adjustment-architecture.)
|
|
99
107
|
// DitherEffect has moved to the stylize band (matching Wgpu).
|
|
100
108
|
// Symmetric with Wgpu's registerColorWgpuRenderEffects.
|
|
101
109
|
export function registerColorGlRenderEffects(state) {
|
|
102
|
-
registerGlRenderEffect(state, 'BrightnessContrastEffect', defaultGlBrightnessContrastEffectRunner);
|
|
103
|
-
registerGlRenderEffect(state, 'ChannelMixerEffect', defaultGlChannelMixerEffectRunner);
|
|
104
|
-
registerGlRenderEffect(state, 'ColorGradeEffect', defaultGlColorGradeEffectRunner);
|
|
105
|
-
registerGlRenderEffect(state, 'ExposureEffect', defaultGlExposureEffectRunner);
|
|
106
|
-
registerGlRenderEffect(state, 'GrayscaleEffect', defaultGlGrayscaleEffectRunner);
|
|
107
|
-
registerGlRenderEffect(state, 'HueSaturationEffect', defaultGlHueSaturationEffectRunner);
|
|
108
|
-
registerGlRenderEffect(state, 'InvertEffect', defaultGlInvertEffectRunner);
|
|
109
|
-
registerGlRenderEffect(state, 'LiftGammaGainEffect', defaultGlLiftGammaGainEffectRunner);
|
|
110
|
-
registerGlRenderEffect(state, 'LookupTableGradeEffect', defaultGlLookupTableGradeEffectRunner);
|
|
111
|
-
registerGlRenderEffect(state, 'PosterizeEffect', defaultGlPosterizeEffectRunner);
|
|
112
|
-
registerGlRenderEffect(state, 'SepiaEffect', defaultGlSepiaEffectRunner);
|
|
113
110
|
registerGlRenderEffect(state, 'ToneMapEffect', defaultGlToneMapEffectRunner);
|
|
114
111
|
registerGlRenderEffect(state, 'WhiteBalanceEffect', defaultGlWhiteBalanceEffectRunner);
|
|
115
112
|
}
|
|
@@ -118,6 +115,25 @@ export function registerColorGlRenderEffects(state) {
|
|
|
118
115
|
export function registerColorGradeGlRenderEffects(state) {
|
|
119
116
|
registerColorGlRenderEffects(state);
|
|
120
117
|
}
|
|
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.
|
|
126
|
+
export function registerCompositeGlRenderEffects(state) {
|
|
127
|
+
registerGlRenderEffect(state, 'BevelEffect', defaultGlBevelEffectRunner);
|
|
128
|
+
registerGlRenderEffect(state, 'BlendEffect', defaultGlBlendEffectRunner);
|
|
129
|
+
registerGlRenderEffect(state, 'CompositeEffect', defaultGlCompositeEffectRunner);
|
|
130
|
+
registerGlRenderEffect(state, 'DropShadowEffect', defaultGlDropShadowEffectRunner);
|
|
131
|
+
registerGlRenderEffect(state, 'GradientBevelEffect', defaultGlGradientBevelEffectRunner);
|
|
132
|
+
registerGlRenderEffect(state, 'GradientGlowEffect', defaultGlGradientGlowEffectRunner);
|
|
133
|
+
registerGlRenderEffect(state, 'InnerGlowEffect', defaultGlInnerGlowEffectRunner);
|
|
134
|
+
registerGlRenderEffect(state, 'InnerShadowEffect', defaultGlInnerShadowEffectRunner);
|
|
135
|
+
registerGlRenderEffect(state, 'OuterGlowEffect', defaultGlOuterGlowEffectRunner);
|
|
136
|
+
}
|
|
121
137
|
// CustomShaderEffect: runs a user-authored fragment shader (registered with
|
|
122
138
|
// registerGlCustomShaderSource) as a fullscreen pass. Not part of any fixed taxonomy band — it is the
|
|
123
139
|
// escape hatch for effects the built-in set does not cover. registerDefaultGlRenderEffects includes
|
|
@@ -134,6 +150,7 @@ export function registerDefaultGlRenderEffects(state) {
|
|
|
134
150
|
registerBloomGlRenderEffects(state);
|
|
135
151
|
registerBlurGlRenderEffects(state);
|
|
136
152
|
registerColorGlRenderEffects(state);
|
|
153
|
+
registerCompositeGlRenderEffects(state);
|
|
137
154
|
registerCustomShaderGlRenderEffect(state);
|
|
138
155
|
registerScreenSpaceGlRenderEffects(state);
|
|
139
156
|
registerStylizeGlRenderEffects(state);
|
|
@@ -155,59 +172,66 @@ export function registerStandardGlRenderEffects(state) {
|
|
|
155
172
|
registerDefaultGlRenderEffects(state);
|
|
156
173
|
}
|
|
157
174
|
// Stylize band: CrtEffect, DitherEffect, FilmGrainEffect, GlitchEffect, HalftoneEffect,
|
|
158
|
-
// KuwaharaEffect, OutlineEffect, PixelateEffect, ScanlinesEffect, SketchEffect.
|
|
159
|
-
// DitherEffect has moved here from the color-grade band (matching Wgpu).
|
|
175
|
+
// KuwaharaEffect, OutlineEffect, PixelateEffect, PosterizeEffect, ScanlinesEffect, SketchEffect.
|
|
176
|
+
// DitherEffect has moved here from the color-grade band (matching Wgpu). PosterizeEffect is a
|
|
177
|
+
// stylize effect, not a LUT adjustment: its hard step (floor) would be smoothed away by a trilinear
|
|
178
|
+
// fused LUT, so it needs a dedicated per-op pass — see effect-adjustment-architecture.
|
|
160
179
|
// Symmetric with Wgpu's registerStylizeWgpuRenderEffects.
|
|
161
180
|
export function registerStylizeGlRenderEffects(state) {
|
|
181
|
+
registerGlRenderEffect(state, 'ConvolutionEffect', defaultGlConvolutionEffectRunner);
|
|
162
182
|
registerGlRenderEffect(state, 'CrtEffect', defaultGlCrtEffectRunner);
|
|
163
183
|
registerGlRenderEffect(state, 'DitherEffect', defaultGlDitherEffectRunner);
|
|
164
184
|
registerGlRenderEffect(state, 'FilmGrainEffect', defaultGlFilmGrainEffectRunner);
|
|
165
185
|
registerGlRenderEffect(state, 'GlitchEffect', defaultGlGlitchEffectRunner);
|
|
166
186
|
registerGlRenderEffect(state, 'HalftoneEffect', defaultGlHalftoneEffectRunner);
|
|
167
187
|
registerGlRenderEffect(state, 'KuwaharaEffect', defaultGlKuwaharaEffectRunner);
|
|
188
|
+
registerGlRenderEffect(state, 'MedianEffect', defaultGlMedianEffectRunner);
|
|
168
189
|
registerGlRenderEffect(state, 'OutlineEffect', defaultGlOutlineEffectRunner);
|
|
169
190
|
registerGlRenderEffect(state, 'PixelateEffect', defaultGlPixelateEffectRunner);
|
|
191
|
+
registerGlRenderEffect(state, 'PosterizeEffect', defaultGlPosterizeEffectRunner);
|
|
170
192
|
registerGlRenderEffect(state, 'ScanlinesEffect', defaultGlScanlinesEffectRunner);
|
|
171
193
|
registerGlRenderEffect(state, 'SketchEffect', defaultGlSketchEffectRunner);
|
|
172
194
|
}
|
|
173
195
|
// All kind strings covered by this package's default runners, alphabetical order.
|
|
174
196
|
// Single source of truth for registerDefaultGlRenderEffects and getGlRenderEffectKinds.
|
|
175
197
|
const ALL_GL_EFFECT_KINDS = [
|
|
198
|
+
'BevelEffect',
|
|
199
|
+
'BlendEffect',
|
|
176
200
|
'BloomEffect',
|
|
201
|
+
'BlurEffect',
|
|
177
202
|
'BokehDepthOfFieldEffect',
|
|
178
|
-
'BrightnessContrastEffect',
|
|
179
203
|
'CameraMotionBlurEffect',
|
|
180
|
-
'ChannelMixerEffect',
|
|
181
204
|
'ChromaticAberrationEffect',
|
|
182
|
-
'
|
|
205
|
+
'CompositeEffect',
|
|
206
|
+
'ConvolutionEffect',
|
|
183
207
|
'CrtEffect',
|
|
184
208
|
'CustomShaderEffect',
|
|
185
209
|
'DirectionalBlurEffect',
|
|
186
210
|
'DisplacementEffect',
|
|
187
211
|
'DitherEffect',
|
|
188
|
-
'
|
|
212
|
+
'DropShadowEffect',
|
|
189
213
|
'FilmGrainEffect',
|
|
190
214
|
'FxaaEffect',
|
|
191
215
|
'GlitchEffect',
|
|
192
216
|
'GodRaysEffect',
|
|
193
|
-
'
|
|
217
|
+
'GradientBevelEffect',
|
|
218
|
+
'GradientGlowEffect',
|
|
194
219
|
'HalftoneEffect',
|
|
195
|
-
'
|
|
196
|
-
'
|
|
220
|
+
'InnerGlowEffect',
|
|
221
|
+
'InnerShadowEffect',
|
|
197
222
|
'KuwaharaEffect',
|
|
198
223
|
'LensDirtEffect',
|
|
199
224
|
'LensDistortionEffect',
|
|
200
225
|
'LensFlareEffect',
|
|
201
|
-
'
|
|
202
|
-
'LookupTableGradeEffect',
|
|
226
|
+
'MedianEffect',
|
|
203
227
|
'MotionBlurEffect',
|
|
228
|
+
'OuterGlowEffect',
|
|
204
229
|
'OutlineEffect',
|
|
205
230
|
'PixelateEffect',
|
|
206
231
|
'PosterizeEffect',
|
|
207
232
|
'RadialBlurEffect',
|
|
208
233
|
'ScanlinesEffect',
|
|
209
234
|
'ScreenSpaceFogEffect',
|
|
210
|
-
'SepiaEffect',
|
|
211
235
|
'SharpenEffect',
|
|
212
236
|
'SketchEffect',
|
|
213
237
|
'SmaaEffect',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderEffectRegistrar.js","sourceRoot":"","sources":["../src/glRenderEffectRegistrar.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"glRenderEffectRegistrar.js","sourceRoot":"","sources":["../src/glRenderEffectRegistrar.ts"],"names":[],"mappings":"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"}
|