@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.
Files changed (157) hide show
  1. package/dist/glBevelEffect.d.ts +4 -0
  2. package/dist/glBevelEffect.d.ts.map +1 -0
  3. package/dist/glBevelEffect.js +134 -0
  4. package/dist/glBevelEffect.js.map +1 -0
  5. package/dist/glBlendEffect.d.ts +8 -0
  6. package/dist/glBlendEffect.d.ts.map +1 -0
  7. package/dist/glBlendEffect.js +169 -0
  8. package/dist/glBlendEffect.js.map +1 -0
  9. package/dist/glBloomEffect.d.ts.map +1 -1
  10. package/dist/glBloomEffect.js +5 -5
  11. package/dist/glBloomEffect.js.map +1 -1
  12. package/dist/glBlurEffect.d.ts +8 -0
  13. package/dist/glBlurEffect.d.ts.map +1 -0
  14. package/dist/glBlurEffect.js +65 -0
  15. package/dist/glBlurEffect.js.map +1 -0
  16. package/dist/glColorLutPass.d.ts +3 -0
  17. package/dist/glColorLutPass.d.ts.map +1 -0
  18. package/dist/glColorLutPass.js +75 -0
  19. package/dist/glColorLutPass.js.map +1 -0
  20. package/dist/glColorMatrixPass.d.ts +3 -0
  21. package/dist/glColorMatrixPass.d.ts.map +1 -0
  22. package/dist/glColorMatrixPass.js +33 -0
  23. package/dist/glColorMatrixPass.js.map +1 -0
  24. package/dist/glCompositeEffect.d.ts +5 -0
  25. package/dist/glCompositeEffect.d.ts.map +1 -0
  26. package/dist/glCompositeEffect.js +90 -0
  27. package/dist/glCompositeEffect.js.map +1 -0
  28. package/dist/glConvolutionEffect.d.ts +5 -0
  29. package/dist/glConvolutionEffect.d.ts.map +1 -0
  30. package/dist/glConvolutionEffect.js +94 -0
  31. package/dist/glConvolutionEffect.js.map +1 -0
  32. package/dist/glDropShadowEffect.d.ts +4 -0
  33. package/dist/glDropShadowEffect.d.ts.map +1 -0
  34. package/dist/glDropShadowEffect.js +53 -0
  35. package/dist/glDropShadowEffect.js.map +1 -0
  36. package/dist/glEffectBlitShader.d.ts +12 -0
  37. package/dist/glEffectBlitShader.d.ts.map +1 -0
  38. package/dist/glEffectBlitShader.js +89 -0
  39. package/dist/glEffectBlitShader.js.map +1 -0
  40. package/dist/glEffectBoxBlur.d.ts +16 -0
  41. package/dist/glEffectBoxBlur.d.ts.map +1 -0
  42. package/dist/glEffectBoxBlur.js +112 -0
  43. package/dist/glEffectBoxBlur.js.map +1 -0
  44. package/dist/glEffectGradientRamp.d.ts +9 -0
  45. package/dist/glEffectGradientRamp.d.ts.map +1 -0
  46. package/dist/glEffectGradientRamp.js +64 -0
  47. package/dist/glEffectGradientRamp.js.map +1 -0
  48. package/dist/glEffectTintShader.d.ts +7 -0
  49. package/dist/glEffectTintShader.d.ts.map +1 -0
  50. package/dist/glEffectTintShader.js +82 -0
  51. package/dist/glEffectTintShader.js.map +1 -0
  52. package/dist/glGradientBevelEffect.d.ts +4 -0
  53. package/dist/glGradientBevelEffect.d.ts.map +1 -0
  54. package/dist/glGradientBevelEffect.js +127 -0
  55. package/dist/glGradientBevelEffect.js.map +1 -0
  56. package/dist/glGradientGlowEffect.d.ts +4 -0
  57. package/dist/glGradientGlowEffect.d.ts.map +1 -0
  58. package/dist/glGradientGlowEffect.js +78 -0
  59. package/dist/glGradientGlowEffect.js.map +1 -0
  60. package/dist/glInnerGlowEffect.d.ts +4 -0
  61. package/dist/glInnerGlowEffect.d.ts.map +1 -0
  62. package/dist/glInnerGlowEffect.js +96 -0
  63. package/dist/glInnerGlowEffect.js.map +1 -0
  64. package/dist/glInnerShadowEffect.d.ts +4 -0
  65. package/dist/glInnerShadowEffect.d.ts.map +1 -0
  66. package/dist/glInnerShadowEffect.js +103 -0
  67. package/dist/glInnerShadowEffect.js.map +1 -0
  68. package/dist/glMedianEffect.d.ts +5 -0
  69. package/dist/glMedianEffect.d.ts.map +1 -0
  70. package/dist/glMedianEffect.js +73 -0
  71. package/dist/glMedianEffect.js.map +1 -0
  72. package/dist/glOuterGlowEffect.d.ts +4 -0
  73. package/dist/glOuterGlowEffect.d.ts.map +1 -0
  74. package/dist/glOuterGlowEffect.js +49 -0
  75. package/dist/glOuterGlowEffect.js.map +1 -0
  76. package/dist/glRenderEffectPipeline.d.ts +2 -2
  77. package/dist/glRenderEffectPipeline.d.ts.map +1 -1
  78. package/dist/glRenderEffectPipeline.js +86 -14
  79. package/dist/glRenderEffectPipeline.js.map +1 -1
  80. package/dist/glRenderEffectRegistrar.d.ts +1 -0
  81. package/dist/glRenderEffectRegistrar.d.ts.map +1 -1
  82. package/dist/glRenderEffectRegistrar.js +62 -38
  83. package/dist/glRenderEffectRegistrar.js.map +1 -1
  84. package/dist/index.d.ts +18 -10
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +18 -10
  87. package/dist/index.js.map +1 -1
  88. package/package.json +11 -6
  89. package/src/glBevelEffect.test.ts +13 -0
  90. package/src/glBlendEffect.test.ts +111 -0
  91. package/src/glBlurEffect.test.ts +19 -0
  92. package/src/glColorLutPass.test.ts +7 -0
  93. package/src/glColorMatrixPass.test.ts +7 -0
  94. package/src/glCompositeEffect.test.ts +39 -0
  95. package/src/glConvolutionEffect.test.ts +13 -0
  96. package/src/glDropShadowEffect.test.ts +105 -0
  97. package/src/glEffectBlitShader.test.ts +19 -0
  98. package/src/glEffectBoxBlur.test.ts +57 -0
  99. package/src/glEffectGradientRamp.test.ts +7 -0
  100. package/src/glEffectTintShader.test.ts +13 -0
  101. package/src/glGradientBevelEffect.test.ts +13 -0
  102. package/src/glGradientGlowEffect.test.ts +13 -0
  103. package/src/glInnerGlowEffect.test.ts +145 -0
  104. package/src/glInnerShadowEffect.test.ts +145 -0
  105. package/src/glMedianEffect.test.ts +13 -0
  106. package/src/glOuterGlowEffect.test.ts +104 -0
  107. package/src/glRenderEffectRegistrar.test.ts +37 -6
  108. package/dist/glBrightnessContrastEffect.d.ts +0 -4
  109. package/dist/glBrightnessContrastEffect.d.ts.map +0 -1
  110. package/dist/glBrightnessContrastEffect.js +0 -28
  111. package/dist/glBrightnessContrastEffect.js.map +0 -1
  112. package/dist/glChannelMixerEffect.d.ts +0 -4
  113. package/dist/glChannelMixerEffect.d.ts.map +0 -1
  114. package/dist/glChannelMixerEffect.js +0 -30
  115. package/dist/glChannelMixerEffect.js.map +0 -1
  116. package/dist/glColorGradeEffect.d.ts +0 -4
  117. package/dist/glColorGradeEffect.d.ts.map +0 -1
  118. package/dist/glColorGradeEffect.js +0 -46
  119. package/dist/glColorGradeEffect.js.map +0 -1
  120. package/dist/glExposureEffect.d.ts +0 -4
  121. package/dist/glExposureEffect.d.ts.map +0 -1
  122. package/dist/glExposureEffect.js +0 -24
  123. package/dist/glExposureEffect.js.map +0 -1
  124. package/dist/glGrayscaleEffect.d.ts +0 -4
  125. package/dist/glGrayscaleEffect.d.ts.map +0 -1
  126. package/dist/glGrayscaleEffect.js +0 -25
  127. package/dist/glGrayscaleEffect.js.map +0 -1
  128. package/dist/glHueSaturationEffect.d.ts +0 -4
  129. package/dist/glHueSaturationEffect.d.ts.map +0 -1
  130. package/dist/glHueSaturationEffect.js +0 -67
  131. package/dist/glHueSaturationEffect.js.map +0 -1
  132. package/dist/glInvertEffect.d.ts +0 -4
  133. package/dist/glInvertEffect.d.ts.map +0 -1
  134. package/dist/glInvertEffect.js +0 -24
  135. package/dist/glInvertEffect.js.map +0 -1
  136. package/dist/glLiftGammaGainEffect.d.ts +0 -4
  137. package/dist/glLiftGammaGainEffect.d.ts.map +0 -1
  138. package/dist/glLiftGammaGainEffect.js +0 -44
  139. package/dist/glLiftGammaGainEffect.js.map +0 -1
  140. package/dist/glLookupTableGradeEffect.d.ts +0 -4
  141. package/dist/glLookupTableGradeEffect.d.ts.map +0 -1
  142. package/dist/glLookupTableGradeEffect.js +0 -28
  143. package/dist/glLookupTableGradeEffect.js.map +0 -1
  144. package/dist/glSepiaEffect.d.ts +0 -4
  145. package/dist/glSepiaEffect.d.ts.map +0 -1
  146. package/dist/glSepiaEffect.js +0 -29
  147. package/dist/glSepiaEffect.js.map +0 -1
  148. package/src/glBrightnessContrastEffect.test.ts +0 -16
  149. package/src/glChannelMixerEffect.test.ts +0 -13
  150. package/src/glColorGradeEffect.test.ts +0 -13
  151. package/src/glExposureEffect.test.ts +0 -13
  152. package/src/glGrayscaleEffect.test.ts +0 -13
  153. package/src/glHueSaturationEffect.test.ts +0 -13
  154. package/src/glInvertEffect.test.ts +0 -13
  155. package/src/glLiftGammaGainEffect.test.ts +0 -13
  156. package/src/glLookupTableGradeEffect.test.ts +0 -13
  157. 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, effects: ReadonlyArray<RenderEffect>): void;
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":"AAcA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EAEb,YAAY,EACZ,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAUzB,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAWxG;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,QAAQ,CAAC,2BAA2B,CAAM,GAClD,sBAAsB,CAExB;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAM1G;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,GACnC,IAAI,CAsCN;AAID,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAErH"}
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 { createMatrix } from '@flighthq/geometry';
2
- import { acquireGlRenderTarget, beginGlRenderTarget, createGlRenderTarget, createGlRenderTargetPool, destroyGlRenderTarget, destroyGlRenderTargetPool, drawGlFullscreenPass, endGlRenderTarget, releaseGlRenderTarget, resizeGlRenderTarget, resolveGlRenderTarget, } from '@flighthq/render-gl';
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
- beginGlRenderTarget(state, pipeline.sceneTarget, state.renderTransform2D ?? createMatrix());
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 { options: { ...options }, sceneTarget: null, pool: createGlRenderTargetPool(), velocityTexture: null };
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, effects) {
54
+ export function endGlRenderEffectPipeline(state, pipeline, operations) {
32
55
  const scene = pipeline.sceneTarget;
33
56
  if (scene === null)
34
57
  return;
35
- endGlRenderTarget(state);
36
- resolveGlRenderTarget(state, scene);
58
+ endGlRenderPass(state);
37
59
  const format = pipeline.options.format ?? 'rgba8';
38
- const descriptor = { width: scene.width, height: scene.height, format };
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
- for (const effect of effects) {
43
- const runner = getGlRenderEffectRunner(state, effect.kind);
44
- if (runner === null)
45
- continue;
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
- }, effect);
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
- // Blits the final effect result to the canvas (GL→GL, no orientation flip).
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":"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"}
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;AAkErD,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,CAOtE;AAOD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAcvE;AAID,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE5E;AAOD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE7E;AAKD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAQzE;AAMD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAM7E;AAID,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE1E;AAMD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAWzE"}
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 { defaultGlColorGradeEffectRunner } from './glColorGradeEffect';
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 { defaultGlExposureEffectRunner } from './glExposureEffect';
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 { defaultGlGrayscaleEffectRunner } from './glGrayscaleEffect';
20
+ import { defaultGlGradientBevelEffectRunner } from './glGradientBevelEffect';
21
+ import { defaultGlGradientGlowEffectRunner } from './glGradientGlowEffect';
19
22
  import { defaultGlHalftoneEffectRunner } from './glHalftoneEffect';
20
- import { defaultGlHueSaturationEffectRunner } from './glHueSaturationEffect';
21
- import { defaultGlInvertEffectRunner } from './glInvertEffect';
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 { defaultGlLiftGammaGainEffectRunner } from './glLiftGammaGainEffect';
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 — BrightnessContrast, ChannelMixer, ColorGrade, Exposure, Grayscale, HueSaturation,
52
- // Invert, LiftGammaGain, LookupTableGrade, Posterize, Sepia, ToneMap, WhiteBalance
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: BrightnessContrastEffect, ChannelMixerEffect, ColorGradeEffect,
97
- // ExposureEffect, GrayscaleEffect, HueSaturationEffect, InvertEffect, LiftGammaGainEffect,
98
- // LookupTableGradeEffect, PosterizeEffect, SepiaEffect, ToneMapEffect, WhiteBalanceEffect.
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
- 'ColorGradeEffect',
205
+ 'CompositeEffect',
206
+ 'ConvolutionEffect',
183
207
  'CrtEffect',
184
208
  'CustomShaderEffect',
185
209
  'DirectionalBlurEffect',
186
210
  'DisplacementEffect',
187
211
  'DitherEffect',
188
- 'ExposureEffect',
212
+ 'DropShadowEffect',
189
213
  'FilmGrainEffect',
190
214
  'FxaaEffect',
191
215
  'GlitchEffect',
192
216
  'GodRaysEffect',
193
- 'GrayscaleEffect',
217
+ 'GradientBevelEffect',
218
+ 'GradientGlowEffect',
194
219
  'HalftoneEffect',
195
- 'HueSaturationEffect',
196
- 'InvertEffect',
220
+ 'InnerGlowEffect',
221
+ 'InnerShadowEffect',
197
222
  'KuwaharaEffect',
198
223
  'LensDirtEffect',
199
224
  'LensDistortionEffect',
200
225
  'LensFlareEffect',
201
- 'LiftGammaGainEffect',
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":"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"}
1
+ {"version":3,"file":"glRenderEffectRegistrar.js","sourceRoot":"","sources":["../src/glRenderEffectRegistrar.ts"],"names":[],"mappings":"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"}