@flighthq/effects-gl 0.3.0-next.906.07cea63 → 0.3.0
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/contract.d.ts +3 -2
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +3 -2
- package/dist/contract.js.map +1 -1
- package/dist/enableGlRenderEffectGuards.d.ts +5 -0
- package/dist/enableGlRenderEffectGuards.d.ts.map +1 -0
- package/dist/enableGlRenderEffectGuards.js +43 -0
- package/dist/enableGlRenderEffectGuards.js.map +1 -0
- package/dist/glBevelEffect.d.ts +1 -0
- package/dist/glBevelEffect.d.ts.map +1 -1
- package/dist/glBevelEffect.js +7 -3
- package/dist/glBevelEffect.js.map +1 -1
- package/dist/glBlendEffect.d.ts +2 -0
- package/dist/glBlendEffect.d.ts.map +1 -1
- package/dist/glBlendEffect.js +13 -2
- package/dist/glBlendEffect.js.map +1 -1
- package/dist/glBloomEffect.d.ts +1 -0
- package/dist/glBloomEffect.d.ts.map +1 -1
- package/dist/glBloomEffect.js +4 -0
- package/dist/glBloomEffect.js.map +1 -1
- package/dist/glBlurEffect.d.ts +7 -1
- package/dist/glBlurEffect.d.ts.map +1 -1
- package/dist/glBlurEffect.js +34 -6
- package/dist/glBlurEffect.js.map +1 -1
- package/dist/glBokehDepthOfFieldEffect.d.ts +1 -0
- package/dist/glBokehDepthOfFieldEffect.d.ts.map +1 -1
- package/dist/glBokehDepthOfFieldEffect.js +4 -0
- package/dist/glBokehDepthOfFieldEffect.js.map +1 -1
- package/dist/glCameraMotionBlurEffect.d.ts +1 -0
- package/dist/glCameraMotionBlurEffect.d.ts.map +1 -1
- package/dist/glCameraMotionBlurEffect.js +4 -0
- package/dist/glCameraMotionBlurEffect.js.map +1 -1
- package/dist/glChromaticAberrationEffect.d.ts +1 -0
- package/dist/glChromaticAberrationEffect.d.ts.map +1 -1
- package/dist/glChromaticAberrationEffect.js +4 -0
- package/dist/glChromaticAberrationEffect.js.map +1 -1
- package/dist/glCompositeEffect.d.ts +1 -0
- package/dist/glCompositeEffect.d.ts.map +1 -1
- package/dist/glCompositeEffect.js +4 -0
- package/dist/glCompositeEffect.js.map +1 -1
- package/dist/glContactShadowsEffect.d.ts +5 -0
- package/dist/glContactShadowsEffect.d.ts.map +1 -0
- package/dist/glContactShadowsEffect.js +20 -0
- package/dist/glContactShadowsEffect.js.map +1 -0
- package/dist/glConvolutionEffect.d.ts +1 -0
- package/dist/glConvolutionEffect.d.ts.map +1 -1
- package/dist/glConvolutionEffect.js +4 -0
- package/dist/glConvolutionEffect.js.map +1 -1
- package/dist/glCrtEffect.d.ts +1 -0
- package/dist/glCrtEffect.d.ts.map +1 -1
- package/dist/glCrtEffect.js +4 -0
- package/dist/glCrtEffect.js.map +1 -1
- package/dist/glCustomShaderEffect.d.ts +1 -0
- package/dist/glCustomShaderEffect.d.ts.map +1 -1
- package/dist/glCustomShaderEffect.js +4 -0
- package/dist/glCustomShaderEffect.js.map +1 -1
- package/dist/glDirectionalBlurEffect.d.ts +1 -0
- package/dist/glDirectionalBlurEffect.d.ts.map +1 -1
- package/dist/glDirectionalBlurEffect.js +4 -0
- package/dist/glDirectionalBlurEffect.js.map +1 -1
- package/dist/glDisplacementEffect.d.ts +1 -0
- package/dist/glDisplacementEffect.d.ts.map +1 -1
- package/dist/glDisplacementEffect.js +4 -0
- package/dist/glDisplacementEffect.js.map +1 -1
- package/dist/glDitherEffect.d.ts +1 -0
- package/dist/glDitherEffect.d.ts.map +1 -1
- package/dist/glDitherEffect.js +4 -0
- package/dist/glDitherEffect.js.map +1 -1
- package/dist/glDropShadowEffect.d.ts +1 -0
- package/dist/glDropShadowEffect.d.ts.map +1 -1
- package/dist/glDropShadowEffect.js +4 -0
- package/dist/glDropShadowEffect.js.map +1 -1
- package/dist/glEffectBlitShader.js +6 -6
- package/dist/glEffectBlitShader.js.map +1 -1
- package/dist/glEffectBoxBlur.js +2 -2
- package/dist/glEffectBoxBlur.js.map +1 -1
- package/dist/glEffectProgramCache.js +5 -5
- package/dist/glEffectProgramCache.js.map +1 -1
- package/dist/glEffectTintShader.js +4 -4
- package/dist/glEffectTintShader.js.map +1 -1
- package/dist/glFilmGrainEffect.d.ts +1 -0
- package/dist/glFilmGrainEffect.d.ts.map +1 -1
- package/dist/glFilmGrainEffect.js +4 -0
- package/dist/glFilmGrainEffect.js.map +1 -1
- package/dist/glFxaaEffect.d.ts +1 -0
- package/dist/glFxaaEffect.d.ts.map +1 -1
- package/dist/glFxaaEffect.js +4 -0
- package/dist/glFxaaEffect.js.map +1 -1
- package/dist/glGlitchEffect.d.ts +1 -0
- package/dist/glGlitchEffect.d.ts.map +1 -1
- package/dist/glGlitchEffect.js +4 -0
- package/dist/glGlitchEffect.js.map +1 -1
- package/dist/glGodRaysEffect.d.ts +1 -0
- package/dist/glGodRaysEffect.d.ts.map +1 -1
- package/dist/glGodRaysEffect.js +4 -0
- package/dist/glGodRaysEffect.js.map +1 -1
- package/dist/glGradientBevelEffect.d.ts +1 -0
- package/dist/glGradientBevelEffect.d.ts.map +1 -1
- package/dist/glGradientBevelEffect.js +8 -4
- package/dist/glGradientBevelEffect.js.map +1 -1
- package/dist/glGradientGlowEffect.d.ts +1 -0
- package/dist/glGradientGlowEffect.d.ts.map +1 -1
- package/dist/glGradientGlowEffect.js +6 -2
- package/dist/glGradientGlowEffect.js.map +1 -1
- package/dist/glHalftoneEffect.d.ts +1 -0
- package/dist/glHalftoneEffect.d.ts.map +1 -1
- package/dist/glHalftoneEffect.js +4 -0
- package/dist/glHalftoneEffect.js.map +1 -1
- package/dist/glInnerGlowEffect.d.ts +1 -0
- package/dist/glInnerGlowEffect.d.ts.map +1 -1
- package/dist/glInnerGlowEffect.js +6 -2
- package/dist/glInnerGlowEffect.js.map +1 -1
- package/dist/glInnerShadowEffect.d.ts +1 -0
- package/dist/glInnerShadowEffect.d.ts.map +1 -1
- package/dist/glInnerShadowEffect.js +6 -2
- package/dist/glInnerShadowEffect.js.map +1 -1
- package/dist/glKuwaharaEffect.d.ts +1 -0
- package/dist/glKuwaharaEffect.d.ts.map +1 -1
- package/dist/glKuwaharaEffect.js +4 -0
- package/dist/glKuwaharaEffect.js.map +1 -1
- package/dist/glLensDirtEffect.d.ts +1 -0
- package/dist/glLensDirtEffect.d.ts.map +1 -1
- package/dist/glLensDirtEffect.js +4 -0
- package/dist/glLensDirtEffect.js.map +1 -1
- package/dist/glLensDistortionEffect.d.ts +1 -0
- package/dist/glLensDistortionEffect.d.ts.map +1 -1
- package/dist/glLensDistortionEffect.js +4 -0
- package/dist/glLensDistortionEffect.js.map +1 -1
- package/dist/glLensFlareEffect.d.ts +1 -0
- package/dist/glLensFlareEffect.d.ts.map +1 -1
- package/dist/glLensFlareEffect.js +4 -0
- package/dist/glLensFlareEffect.js.map +1 -1
- package/dist/glMedianEffect.d.ts +1 -0
- package/dist/glMedianEffect.d.ts.map +1 -1
- package/dist/glMedianEffect.js +4 -0
- package/dist/glMedianEffect.js.map +1 -1
- package/dist/glMotionBlurEffect.d.ts +1 -0
- package/dist/glMotionBlurEffect.d.ts.map +1 -1
- package/dist/glMotionBlurEffect.js +4 -0
- package/dist/glMotionBlurEffect.js.map +1 -1
- package/dist/glOuterGlowEffect.d.ts +1 -0
- package/dist/glOuterGlowEffect.d.ts.map +1 -1
- package/dist/glOuterGlowEffect.js +4 -0
- package/dist/glOuterGlowEffect.js.map +1 -1
- package/dist/glOutlineEffect.d.ts +1 -0
- package/dist/glOutlineEffect.d.ts.map +1 -1
- package/dist/glOutlineEffect.js +4 -0
- package/dist/glOutlineEffect.js.map +1 -1
- package/dist/glPixelateEffect.d.ts +1 -0
- package/dist/glPixelateEffect.d.ts.map +1 -1
- package/dist/glPixelateEffect.js +4 -0
- package/dist/glPixelateEffect.js.map +1 -1
- package/dist/glPosterizeEffect.d.ts +1 -0
- package/dist/glPosterizeEffect.d.ts.map +1 -1
- package/dist/glPosterizeEffect.js +4 -0
- package/dist/glPosterizeEffect.js.map +1 -1
- package/dist/glRadialBlurEffect.d.ts +1 -0
- package/dist/glRadialBlurEffect.d.ts.map +1 -1
- package/dist/glRadialBlurEffect.js +4 -0
- package/dist/glRadialBlurEffect.js.map +1 -1
- package/dist/glRenderEffectPipeline.d.ts +2 -2
- package/dist/glRenderEffectPipeline.d.ts.map +1 -1
- package/dist/glRenderEffectPipeline.js +14 -7
- package/dist/glRenderEffectPipeline.js.map +1 -1
- package/dist/glRenderEffectRegistry.d.ts.map +1 -1
- package/dist/glRenderEffectRegistry.js +8 -10
- package/dist/glRenderEffectRegistry.js.map +1 -1
- package/dist/glRenderTextureEffect.d.ts +5 -0
- package/dist/glRenderTextureEffect.d.ts.map +1 -0
- package/dist/glRenderTextureEffect.js +83 -0
- package/dist/glRenderTextureEffect.js.map +1 -0
- package/dist/glScanlinesEffect.d.ts +1 -0
- package/dist/glScanlinesEffect.d.ts.map +1 -1
- package/dist/glScanlinesEffect.js +4 -0
- package/dist/glScanlinesEffect.js.map +1 -1
- package/dist/glScreenSpaceFogEffect.d.ts +1 -0
- package/dist/glScreenSpaceFogEffect.d.ts.map +1 -1
- package/dist/glScreenSpaceFogEffect.js +4 -0
- package/dist/glScreenSpaceFogEffect.js.map +1 -1
- package/dist/glSharpenEffect.d.ts +1 -0
- package/dist/glSharpenEffect.d.ts.map +1 -1
- package/dist/glSharpenEffect.js +4 -0
- package/dist/glSharpenEffect.js.map +1 -1
- package/dist/glSketchEffect.d.ts +1 -0
- package/dist/glSketchEffect.d.ts.map +1 -1
- package/dist/glSketchEffect.js +4 -0
- package/dist/glSketchEffect.js.map +1 -1
- package/dist/glSmaaEffect.d.ts +1 -0
- package/dist/glSmaaEffect.d.ts.map +1 -1
- package/dist/glSmaaEffect.js +4 -0
- package/dist/glSmaaEffect.js.map +1 -1
- package/dist/glSsaoEffect.d.ts +1 -0
- package/dist/glSsaoEffect.d.ts.map +1 -1
- package/dist/glSsaoEffect.js +4 -0
- package/dist/glSsaoEffect.js.map +1 -1
- package/dist/glTiltShiftEffect.d.ts +1 -0
- package/dist/glTiltShiftEffect.d.ts.map +1 -1
- package/dist/glTiltShiftEffect.js +4 -0
- package/dist/glTiltShiftEffect.js.map +1 -1
- package/dist/glToneMapEffect.d.ts +1 -0
- package/dist/glToneMapEffect.d.ts.map +1 -1
- package/dist/glToneMapEffect.js +4 -0
- package/dist/glToneMapEffect.js.map +1 -1
- package/dist/glVignetteEffect.d.ts +1 -0
- package/dist/glVignetteEffect.d.ts.map +1 -1
- package/dist/glVignetteEffect.js +4 -0
- package/dist/glVignetteEffect.js.map +1 -1
- package/dist/glWhiteBalanceEffect.d.ts +1 -0
- package/dist/glWhiteBalanceEffect.d.ts.map +1 -1
- package/dist/glWhiteBalanceEffect.js +4 -0
- package/dist/glWhiteBalanceEffect.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +9 -6
- package/src/enableGlRenderEffectGuards.test.ts +156 -0
- package/src/glBevelEffect.test.ts +7 -1
- package/src/glBlendEffect.test.ts +26 -0
- package/src/glBloomEffect.test.ts +7 -1
- package/src/glBlurEffect.test.ts +69 -1
- package/src/glBokehDepthOfFieldEffect.test.ts +11 -1
- package/src/glCameraMotionBlurEffect.test.ts +11 -1
- package/src/glChromaticAberrationEffect.test.ts +7 -0
- package/src/glCompositeEffect.test.ts +7 -0
- package/src/glContactShadowsEffect.test.ts +43 -0
- package/src/glConvolutionEffect.test.ts +11 -1
- package/src/glCrtEffect.test.ts +7 -1
- package/src/glCustomShaderEffect.test.ts +7 -0
- package/src/glDirectionalBlurEffect.test.ts +11 -1
- package/src/glDisplacementEffect.test.ts +11 -1
- package/src/glDitherEffect.test.ts +7 -1
- package/src/glDropShadowEffect.test.ts +11 -9
- package/src/glEffectBoxBlur.test.ts +0 -5
- package/src/glFilmGrainEffect.test.ts +11 -1
- package/src/glFxaaEffect.test.ts +7 -1
- package/src/glGlitchEffect.test.ts +7 -1
- package/src/glGodRaysEffect.test.ts +7 -1
- package/src/glGradientBevelEffect.test.ts +11 -1
- package/src/glGradientGlowEffect.test.ts +11 -1
- package/src/glHalftoneEffect.test.ts +7 -1
- package/src/glInnerGlowEffect.test.ts +11 -9
- package/src/glInnerShadowEffect.test.ts +11 -9
- package/src/glKuwaharaEffect.test.ts +7 -1
- package/src/glLensDirtEffect.test.ts +7 -1
- package/src/glLensDistortionEffect.test.ts +11 -1
- package/src/glLensFlareEffect.test.ts +11 -1
- package/src/glMedianEffect.test.ts +7 -1
- package/src/glMotionBlurEffect.test.ts +11 -1
- package/src/glOuterGlowEffect.test.ts +11 -9
- package/src/glOutlineEffect.test.ts +7 -1
- package/src/glPixelateEffect.test.ts +7 -1
- package/src/glPosterizeEffect.test.ts +11 -1
- package/src/glRadialBlurEffect.test.ts +11 -1
- package/src/glRenderEffectPipeline.test.ts +15 -0
- package/src/glRenderEffectRegistry.test.ts +24 -14
- package/src/glRenderTextureEffect.test.ts +246 -0
- package/src/glScanlinesEffect.test.ts +11 -1
- package/src/glScreenSpaceFogEffect.test.ts +11 -1
- package/src/glSharpenEffect.test.ts +7 -1
- package/src/glSketchEffect.test.ts +7 -1
- package/src/glSmaaEffect.test.ts +7 -1
- package/src/glSpatialEffectRegistration.test.ts +64 -0
- package/src/glSsaoEffect.test.ts +7 -1
- package/src/glTiltShiftEffect.test.ts +11 -1
- package/src/glToneMapEffect.test.ts +7 -1
- package/src/glVignetteEffect.test.ts +7 -1
- package/src/glWhiteBalanceEffect.test.ts +11 -1
- package/dist/glSsrEffect.d.ts +0 -4
- package/dist/glSsrEffect.d.ts.map +0 -1
- package/dist/glSsrEffect.js +0 -24
- package/dist/glSsrEffect.js.map +0 -1
- package/dist/glTaaEffect.d.ts +0 -4
- package/dist/glTaaEffect.d.ts.map +0 -1
- package/dist/glTaaEffect.js +0 -22
- package/dist/glTaaEffect.js.map +0 -1
- package/src/glSsrEffect.test.ts +0 -13
- package/src/glTaaEffect.test.ts +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glLensDistortionEffect.d.ts","sourceRoot":"","sources":["../src/glLensDistortionEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glLensDistortionEffect.d.ts","sourceRoot":"","sources":["../src/glLensDistortionEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAOlC,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACrC,IAAI,CAQN;AAED,eAAO,MAAM,mCAAmC,EAAE,oBAEjD,CAAC;AAEF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEzE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawGlFullscreenPass } from '@flighthq/render-gl/contract';
|
|
2
2
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
3
|
+
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
3
4
|
// Lens distortion: remap uv by a radial polynomial. Positive amount bulges outward (barrel), negative
|
|
4
5
|
// pinches inward (pincushion); scale re-frames the result so corners stay in view.
|
|
5
6
|
export function applyLensDistortionEffectToGl(state, source, dest, effect) {
|
|
@@ -14,6 +15,9 @@ export function applyLensDistortionEffectToGl(state, source, dest, effect) {
|
|
|
14
15
|
export const defaultGlLensDistortionEffectRunner = (ctx, effect) => {
|
|
15
16
|
applyLensDistortionEffectToGl(ctx.state, ctx.source, ctx.dest, effect);
|
|
16
17
|
};
|
|
18
|
+
export function registerGlLensDistortionEffect(state) {
|
|
19
|
+
registerGlRenderEffect(state, 'LensDistortionEffect', defaultGlLensDistortionEffectRunner);
|
|
20
|
+
}
|
|
17
21
|
const LENS_DISTORTION_FRAGMENT_SRC = `#version 300 es
|
|
18
22
|
precision highp float;
|
|
19
23
|
in vec2 v_texCoord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glLensDistortionEffect.js","sourceRoot":"","sources":["../src/glLensDistortionEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAQpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"glLensDistortionEffect.js","sourceRoot":"","sources":["../src/glLensDistortionEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAQpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,sGAAsG;AACtG,mFAAmF;AACnF,MAAM,UAAU,6BAA6B,CAC3C,KAAoB,EACpB,MAAgC,EAChC,IAA8B,EAC9B,MAAsC;IAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,EAAE,4BAA4B,CAAC,CAAC;IAC/F,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,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,mCAAmC,GAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACvF,6BAA6B,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAA8B,CAAC,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,UAAU,8BAA8B,CAAC,KAAoB;IACjE,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,EAAE,mCAAmC,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;EAgBnC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GlRenderEffectRunner, GlRenderState, GlRenderTarget, LensFlareEffect } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyLensFlareEffectToGl(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget>, effect: Readonly<LensFlareEffect>): void;
|
|
3
3
|
export declare const defaultGlLensFlareEffectRunner: GlRenderEffectRunner;
|
|
4
|
+
export declare function registerGlLensFlareEffect(state: GlRenderState): void;
|
|
4
5
|
//# sourceMappingURL=glLensFlareEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glLensFlareEffect.d.ts","sourceRoot":"","sources":["../src/glLensFlareEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glLensFlareEffect.d.ts","sourceRoot":"","sources":["../src/glLensFlareEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAUrH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAYN;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAE5C,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEpE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawGlFullscreenPass } from '@flighthq/render-gl/contract';
|
|
2
2
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
3
|
+
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
3
4
|
// Lens flare: a single-pass approximation. A true flare is a multi-pass recipe (downsample a bright
|
|
4
5
|
// pass, then accumulate ghosts and a halo from it). Here, on each fragment, we sample the source's
|
|
5
6
|
// bright spots along the vector from the pixel toward the center, adding `ghosts` evenly spaced ghost
|
|
@@ -21,6 +22,9 @@ export function applyLensFlareEffectToGl(state, source, dest, effect) {
|
|
|
21
22
|
export const defaultGlLensFlareEffectRunner = (ctx, effect) => {
|
|
22
23
|
applyLensFlareEffectToGl(ctx.state, ctx.source, ctx.dest, effect);
|
|
23
24
|
};
|
|
25
|
+
export function registerGlLensFlareEffect(state) {
|
|
26
|
+
registerGlRenderEffect(state, 'LensFlareEffect', defaultGlLensFlareEffectRunner);
|
|
27
|
+
}
|
|
24
28
|
const LENS_FLARE_FRAGMENT_SRC = `#version 300 es
|
|
25
29
|
precision highp float;
|
|
26
30
|
in vec2 v_texCoord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glLensFlareEffect.js","sourceRoot":"","sources":["../src/glLensFlareEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"glLensFlareEffect.js","sourceRoot":"","sources":["../src/glLensFlareEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,oGAAoG;AACpG,mGAAmG;AACnG,sGAAsG;AACtG,wGAAwG;AACxG,UAAU;AACV,MAAM,UAAU,wBAAwB,CACtC,KAAoB,EACpB,MAAgC,EAChC,IAA8B,EAC9B,MAAiC;IAEjC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC;IAChC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,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,SAAS,CAAC,CAAC;QACzE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;QACzE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAClF,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAyB,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,KAAoB;IAC5D,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,EAAE,8BAA8B,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B9B,CAAC"}
|
package/dist/glMedianEffect.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ import type { GlRenderEffectRunner, GlRenderState, GlRenderTarget, MedianEffect
|
|
|
2
2
|
export declare const MAX_MEDIAN_EFFECT_GL_RADIUS = 2;
|
|
3
3
|
export declare function applyMedianEffectToGl(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget>, effect: Readonly<MedianEffect>): void;
|
|
4
4
|
export declare const defaultGlMedianEffectRunner: GlRenderEffectRunner;
|
|
5
|
+
export declare function registerGlMedianEffect(state: GlRenderState): void;
|
|
5
6
|
//# sourceMappingURL=glMedianEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glMedianEffect.d.ts","sourceRoot":"","sources":["../src/glMedianEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glMedianEffect.d.ts","sourceRoot":"","sources":["../src/glMedianEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOlH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAM7C,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,IAAI,CAON;AAED,eAAO,MAAM,2BAA2B,EAAE,oBAEzC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEjE"}
|
package/dist/glMedianEffect.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawGlFullscreenPass } from '@flighthq/render-gl/contract';
|
|
2
2
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
3
|
+
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
3
4
|
// Largest median-filter radius the WebGL path supports (radius 2 → a 5×5, 25-sample window). The cap
|
|
4
5
|
// is the fixed sort-array size in the fragment shader; larger radii are unsupported on this backend.
|
|
5
6
|
export const MAX_MEDIAN_EFFECT_GL_RADIUS = 2;
|
|
@@ -17,6 +18,9 @@ export function applyMedianEffectToGl(state, source, dest, effect) {
|
|
|
17
18
|
export const defaultGlMedianEffectRunner = (ctx, effect) => {
|
|
18
19
|
applyMedianEffectToGl(ctx.state, ctx.source, ctx.dest, effect);
|
|
19
20
|
};
|
|
21
|
+
export function registerGlMedianEffect(state) {
|
|
22
|
+
registerGlRenderEffect(state, 'MedianEffect', defaultGlMedianEffectRunner);
|
|
23
|
+
}
|
|
20
24
|
const MEDIAN_FRAGMENT_SRC = `#version 300 es
|
|
21
25
|
precision mediump float;
|
|
22
26
|
in vec2 v_texCoord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glMedianEffect.js","sourceRoot":"","sources":["../src/glMedianEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"glMedianEffect.js","sourceRoot":"","sources":["../src/glMedianEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,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,UAAU,sBAAsB,CAAC,KAAoB;IACzD,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,2BAA2B,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,mBAAmB,GAAG;;;;;;;;oBAQR,WAAW;;;;;;;;;;;;;;;+BAeA,2BAA2B;;;;;;;;;;;mBAWvC,2BAA2B,WAAW,2BAA2B;qBAC/D,2BAA2B,WAAW,2BAA2B;;;;;;;;;;;;;;;;;EAiBpF,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GlRenderEffectRunner, GlRenderState, GlRenderTarget, MotionBlurEffect } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyMotionBlurEffectToGl(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget>, velocityTexture: WebGLTexture | null, effect: Readonly<MotionBlurEffect>): void;
|
|
3
3
|
export declare const defaultGlMotionBlurEffectRunner: GlRenderEffectRunner;
|
|
4
|
+
export declare function registerGlMotionBlurEffect(state: GlRenderState): void;
|
|
4
5
|
//# sourceMappingURL=glMotionBlurEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/glMotionBlurEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/glMotionBlurEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAYtH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,eAAe,EAAE,YAAY,GAAG,IAAI,EACpC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI,CAYN;AAED,eAAO,MAAM,+BAA+B,EAAE,oBAE7C,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAErE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawGlFullscreenPass } from '@flighthq/render-gl/contract';
|
|
2
2
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
3
|
+
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
3
4
|
// Motion blur (per-object): the velocity-driven analog of the depth consumers (fog/DoF). When the scene
|
|
4
5
|
// produced a per-pixel velocity buffer (`velocityTexture`, rgba16f screen-space velocity in pixels in the
|
|
5
6
|
// RG channels), this is the real recipe — read each fragment's velocity, scale it by `intensity`, and
|
|
@@ -23,6 +24,9 @@ export function applyMotionBlurEffectToGl(state, source, dest, velocityTexture,
|
|
|
23
24
|
export const defaultGlMotionBlurEffectRunner = (ctx, effect) => {
|
|
24
25
|
applyMotionBlurEffectToGl(ctx.state, ctx.source, ctx.dest, ctx.sceneVelocityTexture, effect);
|
|
25
26
|
};
|
|
27
|
+
export function registerGlMotionBlurEffect(state) {
|
|
28
|
+
registerGlRenderEffect(state, 'MotionBlurEffect', defaultGlMotionBlurEffectRunner);
|
|
29
|
+
}
|
|
26
30
|
const MOTION_BLUR_FRAGMENT_SRC = `#version 300 es
|
|
27
31
|
precision highp float;
|
|
28
32
|
in vec2 v_texCoord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glMotionBlurEffect.js","sourceRoot":"","sources":["../src/glMotionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"glMotionBlurEffect.js","sourceRoot":"","sources":["../src/glMotionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,wGAAwG;AACxG,0GAA0G;AAC1G,sGAAsG;AACtG,wGAAwG;AACxG,0GAA0G;AAC1G,+GAA+G;AAC/G,+FAA+F;AAC/F,MAAM,UAAU,yBAAyB,CACvC,KAAoB,EACpB,MAAgC,EAChC,IAA8B,EAC9B,eAAoC,EACpC,MAAkC;IAElC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtF,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC3D,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;QACzE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,mFAAmF;QACnF,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5F,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACnF,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,oBAAoB,EAAE,MAA0B,CAAC,CAAC;AACnH,CAAC,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,KAAoB;IAC7D,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,+BAA+B,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC/B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { OuterGlowEffect, GlRenderEffectRunner, GlRenderState, GlRenderTarget, GlRenderTargetPool } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyOuterGlowEffectToGl(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget>, pool: GlRenderTargetPool, effect: Readonly<OuterGlowEffect>): void;
|
|
3
3
|
export declare const defaultGlOuterGlowEffectRunner: GlRenderEffectRunner;
|
|
4
|
+
export declare function registerGlOuterGlowEffect(state: GlRenderState): void;
|
|
4
5
|
//# sourceMappingURL=glOuterGlowEffect.d.ts.map
|
|
@@ -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,0BAA0B,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,0BAA0B,CAAC;AAalC,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;AAEF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEpE"}
|
|
@@ -2,6 +2,7 @@ import { acquireGlRenderTarget, clearGlRenderTarget, releaseGlRenderTarget } fro
|
|
|
2
2
|
import { applyGlEffectBlitPass, applyGlEffectErasePass } from './glEffectBlitShader';
|
|
3
3
|
import { applyGlEffectBoxBlur } from './glEffectBoxBlur';
|
|
4
4
|
import { applyGlEffectTintPass } from './glEffectTintShader';
|
|
5
|
+
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
5
6
|
// Outer-glow composite effect: tint the scene silhouette, blur it centered (no offset), then composite the source over the glow.
|
|
6
7
|
// Full-frame realization: acquires the recipe's three scratch targets from the effect pool, runs the
|
|
7
8
|
// inlined multi-pass recipe, then releases them.
|
|
@@ -46,4 +47,7 @@ export function applyOuterGlowEffectToGl(state, source, dest, pool, effect) {
|
|
|
46
47
|
export const defaultGlOuterGlowEffectRunner = (ctx, effect) => {
|
|
47
48
|
applyOuterGlowEffectToGl(ctx.state, ctx.source, ctx.dest, ctx.pool, effect);
|
|
48
49
|
};
|
|
50
|
+
export function registerGlOuterGlowEffect(state) {
|
|
51
|
+
registerGlRenderEffect(state, 'OuterGlowEffect', defaultGlOuterGlowEffectRunner);
|
|
52
|
+
}
|
|
49
53
|
//# sourceMappingURL=glOuterGlowEffect.js.map
|
|
@@ -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,8BAA8B,CAAC;AASjH,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,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,4 +1,5 @@
|
|
|
1
1
|
import type { GlRenderEffectRunner, GlRenderState, GlRenderTarget, OutlineEffect } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyOutlineEffectToGl(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget>, effect: Readonly<OutlineEffect>): void;
|
|
3
3
|
export declare const defaultGlOutlineEffectRunner: GlRenderEffectRunner;
|
|
4
|
+
export declare function registerGlOutlineEffect(state: GlRenderState): void;
|
|
4
5
|
//# sourceMappingURL=glOutlineEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glOutlineEffect.d.ts","sourceRoot":"","sources":["../src/glOutlineEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glOutlineEffect.d.ts","sourceRoot":"","sources":["../src/glOutlineEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOnH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC9B,IAAI,CAiBN;AAED,eAAO,MAAM,4BAA4B,EAAE,oBAE1C,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAElE"}
|
package/dist/glOutlineEffect.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawGlFullscreenPass } from '@flighthq/render-gl/contract';
|
|
2
2
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
3
|
+
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
3
4
|
// Outline: Sobel edge detection on luminance; where the gradient magnitude exceeds `threshold`, mix
|
|
4
5
|
// the pixel toward the outline color by `thickness`. Color arrives packed RGBA, unpacked to 0..1 here.
|
|
5
6
|
export function applyOutlineEffectToGl(state, source, dest, effect) {
|
|
@@ -17,6 +18,9 @@ export function applyOutlineEffectToGl(state, source, dest, effect) {
|
|
|
17
18
|
export const defaultGlOutlineEffectRunner = (ctx, effect) => {
|
|
18
19
|
applyOutlineEffectToGl(ctx.state, ctx.source, ctx.dest, effect);
|
|
19
20
|
};
|
|
21
|
+
export function registerGlOutlineEffect(state) {
|
|
22
|
+
registerGlRenderEffect(state, 'OutlineEffect', defaultGlOutlineEffectRunner);
|
|
23
|
+
}
|
|
20
24
|
const OUTLINE_FRAGMENT_SRC = `#version 300 es
|
|
21
25
|
precision highp float;
|
|
22
26
|
in vec2 v_texCoord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glOutlineEffect.js","sourceRoot":"","sources":["../src/glOutlineEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"glOutlineEffect.js","sourceRoot":"","sources":["../src/glOutlineEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,oGAAoG;AACpG,uGAAuG;AACvG,MAAM,UAAU,sBAAsB,CACpC,KAAoB,EACpB,MAAgC,EAChC,IAA8B,EAC9B,MAA+B;IAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC;IACzC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;IACvF,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,SAAS,CAAC,CAAC;QACzE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;QACzE,EAAE,CAAC,SAAS,CACV,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAC3C,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAC7B,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAC7B,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAC5B,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CACrB,CAAC;QACF,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAChF,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAuB,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B3B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GlRenderEffectRunner, GlRenderState, GlRenderTarget, PixelateEffect } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyPixelateEffectToGl(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget>, effect: Readonly<PixelateEffect>): void;
|
|
3
3
|
export declare const defaultGlPixelateEffectRunner: GlRenderEffectRunner;
|
|
4
|
+
export declare function registerGlPixelateEffect(state: GlRenderState): void;
|
|
4
5
|
//# sourceMappingURL=glPixelateEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glPixelateEffect.d.ts","sourceRoot":"","sources":["../src/glPixelateEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glPixelateEffect.d.ts","sourceRoot":"","sources":["../src/glPixelateEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAMpH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC/B,IAAI,CAON;AAED,eAAO,MAAM,6BAA6B,EAAE,oBAE3C,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEnE"}
|
package/dist/glPixelateEffect.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawGlFullscreenPass } from '@flighthq/render-gl/contract';
|
|
2
2
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
3
|
+
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
3
4
|
// Pixelate: snap uv to the center of `size`-pixel blocks before sampling, producing hard mosaic blocks.
|
|
4
5
|
export function applyPixelateEffectToGl(state, source, dest, effect) {
|
|
5
6
|
const size = effect.size ?? 8;
|
|
@@ -12,6 +13,9 @@ export function applyPixelateEffectToGl(state, source, dest, effect) {
|
|
|
12
13
|
export const defaultGlPixelateEffectRunner = (ctx, effect) => {
|
|
13
14
|
applyPixelateEffectToGl(ctx.state, ctx.source, ctx.dest, effect);
|
|
14
15
|
};
|
|
16
|
+
export function registerGlPixelateEffect(state) {
|
|
17
|
+
registerGlRenderEffect(state, 'PixelateEffect', defaultGlPixelateEffectRunner);
|
|
18
|
+
}
|
|
15
19
|
const PIXELATE_FRAGMENT_SRC = `#version 300 es
|
|
16
20
|
precision highp float;
|
|
17
21
|
in vec2 v_texCoord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glPixelateEffect.js","sourceRoot":"","sources":["../src/glPixelateEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"glPixelateEffect.js","sourceRoot":"","sources":["../src/glPixelateEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,wGAAwG;AACxG,MAAM,UAAU,uBAAuB,CACrC,KAAoB,EACpB,MAAgC,EAChC,IAA8B,EAC9B,MAAgC;IAEhC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;IACzF,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,QAAQ,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5E,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACjF,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAwB,CAAC,CAAC;AACrF,CAAC,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,KAAoB;IAC3D,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,qBAAqB,GAAG;;;;;;;;;;;EAW5B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GlRenderEffectRunner, GlRenderState, GlRenderTarget, PosterizeEffect } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyPosterizeEffectToGl(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget>, effect: Readonly<PosterizeEffect>): void;
|
|
3
3
|
export declare const defaultGlPosterizeEffectRunner: GlRenderEffectRunner;
|
|
4
|
+
export declare function registerGlPosterizeEffect(state: GlRenderState): void;
|
|
4
5
|
//# sourceMappingURL=glPosterizeEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glPosterizeEffect.d.ts","sourceRoot":"","sources":["../src/glPosterizeEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glPosterizeEffect.d.ts","sourceRoot":"","sources":["../src/glPosterizeEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAMrH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAMN;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAE5C,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEpE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawGlFullscreenPass } from '@flighthq/render-gl/contract';
|
|
2
2
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
3
|
+
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
3
4
|
// Posterize: floor each channel to `levels` discrete steps.
|
|
4
5
|
export function applyPosterizeEffectToGl(state, source, dest, effect) {
|
|
5
6
|
const levels = Math.max(2, effect.levels ?? 8);
|
|
@@ -11,6 +12,9 @@ export function applyPosterizeEffectToGl(state, source, dest, effect) {
|
|
|
11
12
|
export const defaultGlPosterizeEffectRunner = (ctx, effect) => {
|
|
12
13
|
applyPosterizeEffectToGl(ctx.state, ctx.source, ctx.dest, effect);
|
|
13
14
|
};
|
|
15
|
+
export function registerGlPosterizeEffect(state) {
|
|
16
|
+
registerGlRenderEffect(state, 'PosterizeEffect', defaultGlPosterizeEffectRunner);
|
|
17
|
+
}
|
|
14
18
|
const POSTERIZE_FRAGMENT_SRC = `#version 300 es
|
|
15
19
|
precision highp float;
|
|
16
20
|
in vec2 v_texCoord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glPosterizeEffect.js","sourceRoot":"","sources":["../src/glPosterizeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"glPosterizeEffect.js","sourceRoot":"","sources":["../src/glPosterizeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,4DAA4D;AAC5D,MAAM,UAAU,wBAAwB,CACtC,KAAoB,EACpB,MAAgC,EAChC,IAA8B,EAC9B,MAAiC;IAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;IAC1F,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,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAClF,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAyB,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,KAAoB;IAC5D,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,EAAE,8BAA8B,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,sBAAsB,GAAG;;;;;;;;;;EAU7B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GlRenderEffectRunner, GlRenderState, GlRenderTarget, RadialBlurEffect } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyRadialBlurEffectToGl(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget>, effect: Readonly<RadialBlurEffect>): void;
|
|
3
3
|
export declare const defaultGlRadialBlurEffectRunner: GlRenderEffectRunner;
|
|
4
|
+
export declare function registerGlRadialBlurEffect(state: GlRenderState): void;
|
|
4
5
|
//# sourceMappingURL=glRadialBlurEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRadialBlurEffect.d.ts","sourceRoot":"","sources":["../src/glRadialBlurEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"glRadialBlurEffect.d.ts","sourceRoot":"","sources":["../src/glRadialBlurEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAOtH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI,CAWN;AAED,eAAO,MAAM,+BAA+B,EAAE,oBAE7C,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAErE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawGlFullscreenPass } from '@flighthq/render-gl/contract';
|
|
2
2
|
import { getGlEffectProgram } from './glEffectProgramCache';
|
|
3
|
+
import { registerGlRenderEffect } from './glRenderEffectRegistry';
|
|
3
4
|
// Radial blur: accumulate samples stepped from the current uv toward (centerX, centerY) scaled by
|
|
4
5
|
// `strength`, normalized by the sample count. Single-pass reference recipe.
|
|
5
6
|
export function applyRadialBlurEffectToGl(state, source, dest, effect) {
|
|
@@ -17,6 +18,9 @@ export function applyRadialBlurEffectToGl(state, source, dest, effect) {
|
|
|
17
18
|
export const defaultGlRadialBlurEffectRunner = (ctx, effect) => {
|
|
18
19
|
applyRadialBlurEffectToGl(ctx.state, ctx.source, ctx.dest, effect);
|
|
19
20
|
};
|
|
21
|
+
export function registerGlRadialBlurEffect(state) {
|
|
22
|
+
registerGlRenderEffect(state, 'RadialBlurEffect', defaultGlRadialBlurEffectRunner);
|
|
23
|
+
}
|
|
20
24
|
const RADIAL_BLUR_FRAGMENT_SRC = `#version 300 es
|
|
21
25
|
precision highp float;
|
|
22
26
|
in vec2 v_texCoord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRadialBlurEffect.js","sourceRoot":"","sources":["../src/glRadialBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"glRadialBlurEffect.js","sourceRoot":"","sources":["../src/glRadialBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kGAAkG;AAClG,4EAA4E;AAC5E,MAAM,UAAU,yBAAyB,CACvC,KAAoB,EACpB,MAAgC,EAChC,IAA8B,EAC9B,MAAkC;IAElC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAClF,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,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7E,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACnF,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAA0B,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,KAAoB;IAC7D,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,+BAA+B,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;EAsB/B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Adjustment, GlRenderEffectPipeline, GlRenderState, RenderEffect, RenderEffectPipelineOptions } from '@flighthq/types/contract';
|
|
2
|
-
export declare function beginGlRenderEffectPipeline(state: GlRenderState, pipeline: GlRenderEffectPipeline): void;
|
|
1
|
+
import type { Adjustment, GlRenderEffectPipeline, GlRenderState, RenderEffect, RenderEffectPipelineOptions, RenderTargetColorSpace } from '@flighthq/types/contract';
|
|
2
|
+
export declare function beginGlRenderEffectPipeline(state: GlRenderState, pipeline: GlRenderEffectPipeline, colorSpace?: RenderTargetColorSpace): 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
5
|
export declare function endGlRenderEffectPipeline(state: GlRenderState, pipeline: GlRenderEffectPipeline, operations: ReadonlyArray<RenderEffect | Adjustment>): void;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,EAC3B,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAYlC,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,sBAAsB,EAChC,UAAU,GAAE,sBAA+B,GAC1C,IAAI,CAyBN;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"}
|
|
@@ -8,21 +8,28 @@ import { getGlRenderEffectRunner } from './glRenderEffectRegistry';
|
|
|
8
8
|
// between begin/end; end resolves MSAA, runs the agnostic effect list through the per-state registry
|
|
9
9
|
// ping-ponging pooled targets, then presents to the canvas. The default render loop imports none of
|
|
10
10
|
// this. The effect list is per-frame data; only the scene target and pool are retained.
|
|
11
|
-
export function beginGlRenderEffectPipeline(state, pipeline) {
|
|
11
|
+
export function beginGlRenderEffectPipeline(state, pipeline, colorSpace = 'srgb') {
|
|
12
12
|
const w = state.canvas.width;
|
|
13
13
|
const h = state.canvas.height;
|
|
14
14
|
const { sampleCount, format, depth } = pipeline.options;
|
|
15
15
|
if (pipeline.sceneTarget === null) {
|
|
16
|
-
pipeline.sceneTarget = createGlRenderTarget(state, {
|
|
16
|
+
pipeline.sceneTarget = createGlRenderTarget(state, {
|
|
17
|
+
width: w,
|
|
18
|
+
height: h,
|
|
19
|
+
sampleCount,
|
|
20
|
+
format,
|
|
21
|
+
depth,
|
|
22
|
+
colorSpace,
|
|
23
|
+
});
|
|
17
24
|
}
|
|
18
25
|
else {
|
|
19
26
|
resizeGlRenderTarget(state, pipeline.sceneTarget, w, h);
|
|
20
27
|
}
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
pipeline.sceneTarget.colorSpace =
|
|
28
|
+
// Declare the producer's space before the pass opens. A background clear happens before the first
|
|
29
|
+
// scene draw, so the target must already say whether renderGlBackground should decode its packed
|
|
30
|
+
// sRGB input into linear storage. The explicit frame value also prevents a reused pipeline from
|
|
31
|
+
// carrying the previous producer's color space.
|
|
32
|
+
pipeline.sceneTarget.colorSpace = colorSpace;
|
|
26
33
|
// Preserve, don't clear: the frame's scene render fills the target (matching the pre-pass behavior),
|
|
27
34
|
// and the current 2D render transform is inherited — begin no longer sets it.
|
|
28
35
|
beginGlRenderPass(state, pipeline.sceneTarget, { preserveColor: true, preserveDepth: true });
|
|
@@ -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,gCAAgC,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"glRenderEffectPipeline.js","sourceRoot":"","sources":["../src/glRenderEffectPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderEffectRegistry.d.ts","sourceRoot":"","sources":["../src/glRenderEffectRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glRenderEffectRegistry.d.ts","sourceRoot":"","sources":["../src/glRenderEffectRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AASpF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAEvG;AAKD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAG7G"}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
|
+
import { getGlRenderStateRuntime } from '@flighthq/render-gl/contract';
|
|
1
2
|
// Per-state registry mapping an effect `kind` string to its Gl runner — the material-renderer
|
|
2
3
|
// pattern one tier up. Registration is opt-in (import a runner only to register it) and dispatch is a
|
|
3
4
|
// Map lookup, so there is no monolithic switch and unused effect recipes tree-shake away. Register an
|
|
4
|
-
// alternative runner under the same key to swap algorithms.
|
|
5
|
+
// alternative runner under the same key to swap algorithms. A built-in registerGl<Kind>Effect wrapper
|
|
6
|
+
// is pure ergonomics: it calls this function with the literal kind and public default runner, and
|
|
7
|
+
// installs no padding, shader-source, or backdrop companions.
|
|
5
8
|
export function getGlRenderEffectRunner(state, kind) {
|
|
6
|
-
return
|
|
9
|
+
return getGlRenderStateRuntime(state).glRenderEffectRegistry?.get(kind) ?? null;
|
|
7
10
|
}
|
|
8
11
|
// Returns true if a runner is registered for the given kind in this state. Use to validate an effect
|
|
9
12
|
// chain before dispatching — the pipeline silently skips unregistered kinds; check up front to apply
|
|
10
13
|
// your own policy (warn, throw, filter) rather than relying on silent no-ops.
|
|
11
14
|
export function hasGlRenderEffectRunner(state, kind) {
|
|
12
|
-
return
|
|
15
|
+
return getGlRenderStateRuntime(state).glRenderEffectRegistry?.has(kind) ?? false;
|
|
13
16
|
}
|
|
14
17
|
export function registerGlRenderEffect(state, kind, runner) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
registry = new Map();
|
|
18
|
-
_registries.set(state, registry);
|
|
19
|
-
}
|
|
20
|
-
registry.set(kind, runner);
|
|
18
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
19
|
+
(runtime.glRenderEffectRegistry ??= new Map()).set(kind, runner);
|
|
21
20
|
}
|
|
22
|
-
const _registries = new WeakMap();
|
|
23
21
|
//# sourceMappingURL=glRenderEffectRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderEffectRegistry.js","sourceRoot":"","sources":["../src/glRenderEffectRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glRenderEffectRegistry.js","sourceRoot":"","sources":["../src/glRenderEffectRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,8FAA8F;AAC9F,sGAAsG;AACtG,sGAAsG;AACtG,sGAAsG;AACtG,kGAAkG;AAClG,8DAA8D;AAE9D,MAAM,UAAU,uBAAuB,CAAC,KAAoB,EAAE,IAAY;IACxE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAClF,CAAC;AAED,qGAAqG;AACrG,qGAAqG;AACrG,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,KAAoB,EAAE,IAAY;IACxE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAoB,EAAE,IAAY,EAAE,MAA4B;IACrG,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,OAAO,CAAC,sBAAsB,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GlRenderEffectApplicationExplanation, GlRenderEffectApplicationGuard, GlRenderState, GlRenderTexturePool, RenderEffect, RenderTexture } from '@flighthq/types/contract';
|
|
2
|
+
export declare function applyGlRenderEffectsToRenderTexture(state: GlRenderState, pool: GlRenderTexturePool, source: Readonly<RenderTexture>, dest: RenderTexture, scratch: RenderTexture, effects: ReadonlyArray<Readonly<RenderEffect>>): boolean;
|
|
3
|
+
export declare function explainGlRenderEffectApplication(state: GlRenderState, effects: ReadonlyArray<Readonly<RenderEffect>>, sourceAvailable: boolean, destinationAvailable?: boolean): GlRenderEffectApplicationExplanation;
|
|
4
|
+
export declare function setGlRenderEffectApplicationGuard(state: GlRenderState, guard: GlRenderEffectApplicationGuard | null): void;
|
|
5
|
+
//# sourceMappingURL=glRenderTextureEffect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glRenderTextureEffect.d.ts","sourceRoot":"","sources":["../src/glRenderTextureEffect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,oCAAoC,EACpC,8BAA8B,EAC9B,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACd,MAAM,0BAA0B,CAAC;AAOlC,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAC7C,OAAO,CA8CT;AAMD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAC9C,eAAe,EAAE,OAAO,EACxB,oBAAoB,UAAQ,GAC3B,oCAAoC,CAkBtC;AAID,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,8BAA8B,GAAG,IAAI,GAC3C,IAAI,CAGN"}
|