@flighthq/effects-wgpu 0.1.0 → 0.2.1-next.410.a23f189
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +17 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -10
- package/dist/index.js.map +1 -1
- package/dist/wgpuBevelEffect.d.ts +4 -0
- package/dist/wgpuBevelEffect.d.ts.map +1 -0
- package/dist/wgpuBevelEffect.js +124 -0
- package/dist/wgpuBevelEffect.js.map +1 -0
- package/dist/wgpuBloomEffect.d.ts.map +1 -1
- package/dist/wgpuBloomEffect.js +9 -8
- package/dist/wgpuBloomEffect.js.map +1 -1
- package/dist/wgpuBlurEffect.d.ts +8 -0
- package/dist/wgpuBlurEffect.d.ts.map +1 -0
- package/dist/wgpuBlurEffect.js +70 -0
- package/dist/wgpuBlurEffect.js.map +1 -0
- package/dist/wgpuBokehDepthOfFieldEffect.d.ts.map +1 -1
- package/dist/wgpuBokehDepthOfFieldEffect.js +2 -2
- package/dist/wgpuBokehDepthOfFieldEffect.js.map +1 -1
- package/dist/wgpuCameraMotionBlurEffect.d.ts.map +1 -1
- package/dist/wgpuCameraMotionBlurEffect.js +2 -2
- package/dist/wgpuCameraMotionBlurEffect.js.map +1 -1
- package/dist/wgpuChromaticAberrationEffect.d.ts.map +1 -1
- package/dist/wgpuChromaticAberrationEffect.js +2 -2
- package/dist/wgpuChromaticAberrationEffect.js.map +1 -1
- package/dist/wgpuColorLutPass.d.ts +3 -0
- package/dist/wgpuColorLutPass.d.ts.map +1 -0
- package/dist/wgpuColorLutPass.js +144 -0
- package/dist/wgpuColorLutPass.js.map +1 -0
- package/dist/wgpuColorMatrixPass.d.ts +3 -0
- package/dist/wgpuColorMatrixPass.d.ts.map +1 -0
- package/dist/wgpuColorMatrixPass.js +51 -0
- package/dist/wgpuColorMatrixPass.js.map +1 -0
- package/dist/wgpuConvolutionEffect.d.ts +5 -0
- package/dist/wgpuConvolutionEffect.d.ts.map +1 -0
- package/dist/wgpuConvolutionEffect.js +108 -0
- package/dist/wgpuConvolutionEffect.js.map +1 -0
- package/dist/wgpuCrtEffect.d.ts.map +1 -1
- package/dist/wgpuCrtEffect.js +2 -2
- package/dist/wgpuCrtEffect.js.map +1 -1
- package/dist/wgpuDirectionalBlurEffect.d.ts.map +1 -1
- package/dist/wgpuDirectionalBlurEffect.js +2 -2
- package/dist/wgpuDirectionalBlurEffect.js.map +1 -1
- package/dist/wgpuDisplacementEffect.d.ts.map +1 -1
- package/dist/wgpuDisplacementEffect.js +2 -2
- package/dist/wgpuDisplacementEffect.js.map +1 -1
- package/dist/wgpuDitherEffect.d.ts.map +1 -1
- package/dist/wgpuDitherEffect.js +2 -2
- package/dist/wgpuDitherEffect.js.map +1 -1
- package/dist/wgpuDropShadowEffect.d.ts +4 -0
- package/dist/wgpuDropShadowEffect.d.ts.map +1 -0
- package/dist/wgpuDropShadowEffect.js +50 -0
- package/dist/wgpuDropShadowEffect.js.map +1 -0
- package/dist/wgpuEffectBlitShader.d.ts +17 -0
- package/dist/wgpuEffectBlitShader.d.ts.map +1 -0
- package/dist/wgpuEffectBlitShader.js +97 -0
- package/dist/wgpuEffectBlitShader.js.map +1 -0
- package/dist/wgpuEffectBoxBlur.d.ts +15 -0
- package/dist/wgpuEffectBoxBlur.d.ts.map +1 -0
- package/dist/wgpuEffectBoxBlur.js +106 -0
- package/dist/wgpuEffectBoxBlur.js.map +1 -0
- package/dist/wgpuEffectGradientRamp.d.ts +17 -0
- package/dist/wgpuEffectGradientRamp.d.ts.map +1 -0
- package/dist/wgpuEffectGradientRamp.js +89 -0
- package/dist/wgpuEffectGradientRamp.js.map +1 -0
- package/dist/wgpuEffectPass.d.ts +42 -0
- package/dist/wgpuEffectPass.d.ts.map +1 -0
- package/dist/wgpuEffectPass.js +271 -0
- package/dist/wgpuEffectPass.js.map +1 -0
- package/dist/wgpuEffectProgramCache.d.ts +2 -2
- package/dist/wgpuEffectProgramCache.d.ts.map +1 -1
- package/dist/wgpuEffectProgramCache.js +5 -5
- package/dist/wgpuEffectProgramCache.js.map +1 -1
- package/dist/wgpuEffectTintShader.d.ts +8 -0
- package/dist/wgpuEffectTintShader.d.ts.map +1 -0
- package/dist/wgpuEffectTintShader.js +109 -0
- package/dist/wgpuEffectTintShader.js.map +1 -0
- package/dist/wgpuFilmGrainEffect.d.ts.map +1 -1
- package/dist/wgpuFilmGrainEffect.js +2 -2
- package/dist/wgpuFilmGrainEffect.js.map +1 -1
- package/dist/wgpuFxaaEffect.d.ts.map +1 -1
- package/dist/wgpuFxaaEffect.js +2 -2
- package/dist/wgpuFxaaEffect.js.map +1 -1
- package/dist/wgpuGlitchEffect.d.ts.map +1 -1
- package/dist/wgpuGlitchEffect.js +2 -2
- package/dist/wgpuGlitchEffect.js.map +1 -1
- package/dist/wgpuGodRaysEffect.d.ts.map +1 -1
- package/dist/wgpuGodRaysEffect.js +2 -2
- package/dist/wgpuGodRaysEffect.js.map +1 -1
- package/dist/wgpuGradientBevelEffect.d.ts +4 -0
- package/dist/wgpuGradientBevelEffect.d.ts.map +1 -0
- package/dist/wgpuGradientBevelEffect.js +191 -0
- package/dist/wgpuGradientBevelEffect.js.map +1 -0
- package/dist/wgpuGradientGlowEffect.d.ts +4 -0
- package/dist/wgpuGradientGlowEffect.d.ts.map +1 -0
- package/dist/wgpuGradientGlowEffect.js +103 -0
- package/dist/wgpuGradientGlowEffect.js.map +1 -0
- package/dist/wgpuHalftoneEffect.d.ts.map +1 -1
- package/dist/wgpuHalftoneEffect.js +2 -2
- package/dist/wgpuHalftoneEffect.js.map +1 -1
- package/dist/wgpuInnerGlowEffect.d.ts +4 -0
- package/dist/wgpuInnerGlowEffect.d.ts.map +1 -0
- package/dist/wgpuInnerGlowEffect.js +50 -0
- package/dist/wgpuInnerGlowEffect.js.map +1 -0
- package/dist/wgpuInnerShadowEffect.d.ts +4 -0
- package/dist/wgpuInnerShadowEffect.d.ts.map +1 -0
- package/dist/wgpuInnerShadowEffect.js +55 -0
- package/dist/wgpuInnerShadowEffect.js.map +1 -0
- package/dist/wgpuKuwaharaEffect.d.ts.map +1 -1
- package/dist/wgpuKuwaharaEffect.js +2 -2
- package/dist/wgpuKuwaharaEffect.js.map +1 -1
- package/dist/wgpuLensDirtEffect.d.ts.map +1 -1
- package/dist/wgpuLensDirtEffect.js +2 -2
- package/dist/wgpuLensDirtEffect.js.map +1 -1
- package/dist/wgpuLensDistortionEffect.d.ts.map +1 -1
- package/dist/wgpuLensDistortionEffect.js +2 -2
- package/dist/wgpuLensDistortionEffect.js.map +1 -1
- package/dist/wgpuLensFlareEffect.d.ts.map +1 -1
- package/dist/wgpuLensFlareEffect.js +2 -2
- package/dist/wgpuLensFlareEffect.js.map +1 -1
- package/dist/wgpuMedianEffect.d.ts +5 -0
- package/dist/wgpuMedianEffect.d.ts.map +1 -0
- package/dist/wgpuMedianEffect.js +74 -0
- package/dist/wgpuMedianEffect.js.map +1 -0
- package/dist/wgpuMotionBlurEffect.d.ts.map +1 -1
- package/dist/wgpuMotionBlurEffect.js +6 -7
- package/dist/wgpuMotionBlurEffect.js.map +1 -1
- package/dist/wgpuOuterGlowEffect.d.ts +4 -0
- package/dist/wgpuOuterGlowEffect.d.ts.map +1 -0
- package/dist/wgpuOuterGlowEffect.js +46 -0
- package/dist/wgpuOuterGlowEffect.js.map +1 -0
- package/dist/wgpuOutlineEffect.d.ts.map +1 -1
- package/dist/wgpuOutlineEffect.js +2 -2
- package/dist/wgpuOutlineEffect.js.map +1 -1
- package/dist/wgpuPixelateEffect.d.ts.map +1 -1
- package/dist/wgpuPixelateEffect.js +2 -2
- package/dist/wgpuPixelateEffect.js.map +1 -1
- package/dist/wgpuPosterizeEffect.d.ts.map +1 -1
- package/dist/wgpuPosterizeEffect.js +2 -2
- package/dist/wgpuPosterizeEffect.js.map +1 -1
- package/dist/wgpuRadialBlurEffect.d.ts.map +1 -1
- package/dist/wgpuRadialBlurEffect.js +2 -2
- package/dist/wgpuRadialBlurEffect.js.map +1 -1
- package/dist/wgpuRenderEffectPipeline.d.ts +2 -2
- package/dist/wgpuRenderEffectPipeline.d.ts.map +1 -1
- package/dist/wgpuRenderEffectPipeline.js +74 -15
- package/dist/wgpuRenderEffectPipeline.js.map +1 -1
- package/dist/wgpuRenderEffectRegistrants.d.ts +1 -0
- package/dist/wgpuRenderEffectRegistrants.d.ts.map +1 -1
- package/dist/wgpuRenderEffectRegistrants.js +39 -28
- package/dist/wgpuRenderEffectRegistrants.js.map +1 -1
- package/dist/wgpuScanlinesEffect.d.ts.map +1 -1
- package/dist/wgpuScanlinesEffect.js +2 -2
- package/dist/wgpuScanlinesEffect.js.map +1 -1
- package/dist/wgpuScreenSpaceFogEffect.d.ts.map +1 -1
- package/dist/wgpuScreenSpaceFogEffect.js +2 -2
- package/dist/wgpuScreenSpaceFogEffect.js.map +1 -1
- package/dist/wgpuSharpenEffect.d.ts.map +1 -1
- package/dist/wgpuSharpenEffect.js +2 -2
- package/dist/wgpuSharpenEffect.js.map +1 -1
- package/dist/wgpuSketchEffect.d.ts.map +1 -1
- package/dist/wgpuSketchEffect.js +2 -2
- package/dist/wgpuSketchEffect.js.map +1 -1
- package/dist/wgpuSmaaEffect.d.ts.map +1 -1
- package/dist/wgpuSmaaEffect.js +2 -2
- package/dist/wgpuSmaaEffect.js.map +1 -1
- package/dist/wgpuSsaoEffect.d.ts.map +1 -1
- package/dist/wgpuSsaoEffect.js +2 -2
- package/dist/wgpuSsaoEffect.js.map +1 -1
- package/dist/wgpuSsrEffect.d.ts.map +1 -1
- package/dist/wgpuSsrEffect.js +2 -2
- package/dist/wgpuSsrEffect.js.map +1 -1
- package/dist/wgpuTaaEffect.d.ts.map +1 -1
- package/dist/wgpuTaaEffect.js +2 -2
- package/dist/wgpuTaaEffect.js.map +1 -1
- package/dist/wgpuTiltShiftEffect.d.ts.map +1 -1
- package/dist/wgpuTiltShiftEffect.js +2 -2
- package/dist/wgpuTiltShiftEffect.js.map +1 -1
- package/dist/wgpuToneMapEffect.d.ts.map +1 -1
- package/dist/wgpuToneMapEffect.js +2 -2
- package/dist/wgpuToneMapEffect.js.map +1 -1
- package/dist/wgpuVignetteEffect.d.ts.map +1 -1
- package/dist/wgpuVignetteEffect.js +2 -2
- package/dist/wgpuVignetteEffect.js.map +1 -1
- package/dist/wgpuWhiteBalanceEffect.d.ts.map +1 -1
- package/dist/wgpuWhiteBalanceEffect.js +2 -2
- package/dist/wgpuWhiteBalanceEffect.js.map +1 -1
- package/package.json +11 -7
- package/src/wgpuBevelEffect.test.ts +13 -0
- package/src/wgpuBlurEffect.test.ts +19 -0
- package/src/wgpuColorLutPass.test.ts +7 -0
- package/src/wgpuColorMatrixPass.test.ts +7 -0
- package/src/wgpuConvolutionEffect.test.ts +13 -0
- package/src/wgpuDropShadowEffect.test.ts +109 -0
- package/src/wgpuEffectBlitShader.test.ts +23 -0
- package/src/wgpuEffectBoxBlur.test.ts +75 -0
- package/src/wgpuEffectGradientRamp.test.ts +7 -0
- package/src/wgpuEffectPass.test.ts +51 -0
- package/src/wgpuEffectTintShader.test.ts +66 -0
- package/src/wgpuGradientBevelEffect.test.ts +13 -0
- package/src/wgpuGradientGlowEffect.test.ts +13 -0
- package/src/wgpuInnerGlowEffect.test.ts +137 -0
- package/src/wgpuInnerShadowEffect.test.ts +137 -0
- package/src/wgpuMedianEffect.test.ts +13 -0
- package/src/wgpuOuterGlowEffect.test.ts +108 -0
- package/src/wgpuRenderEffectPipeline.test.ts +2 -0
- package/src/wgpuRenderEffectRegistrants.test.ts +25 -14
- package/dist/wgpuBrightnessContrastEffect.d.ts +0 -4
- package/dist/wgpuBrightnessContrastEffect.d.ts.map +0 -1
- package/dist/wgpuBrightnessContrastEffect.js +0 -29
- package/dist/wgpuBrightnessContrastEffect.js.map +0 -1
- package/dist/wgpuChannelMixerEffect.d.ts +0 -4
- package/dist/wgpuChannelMixerEffect.d.ts.map +0 -1
- package/dist/wgpuChannelMixerEffect.js +0 -34
- package/dist/wgpuChannelMixerEffect.js.map +0 -1
- package/dist/wgpuColorGradeEffect.d.ts +0 -4
- package/dist/wgpuColorGradeEffect.d.ts.map +0 -1
- package/dist/wgpuColorGradeEffect.js +0 -52
- package/dist/wgpuColorGradeEffect.js.map +0 -1
- package/dist/wgpuExposureEffect.d.ts +0 -4
- package/dist/wgpuExposureEffect.d.ts.map +0 -1
- package/dist/wgpuExposureEffect.js +0 -28
- package/dist/wgpuExposureEffect.js.map +0 -1
- package/dist/wgpuGrayscaleEffect.d.ts +0 -4
- package/dist/wgpuGrayscaleEffect.d.ts.map +0 -1
- package/dist/wgpuGrayscaleEffect.js +0 -27
- package/dist/wgpuGrayscaleEffect.js.map +0 -1
- package/dist/wgpuHueSaturationEffect.d.ts +0 -4
- package/dist/wgpuHueSaturationEffect.d.ts.map +0 -1
- package/dist/wgpuHueSaturationEffect.js +0 -75
- package/dist/wgpuHueSaturationEffect.js.map +0 -1
- package/dist/wgpuInvertEffect.d.ts +0 -4
- package/dist/wgpuInvertEffect.d.ts.map +0 -1
- package/dist/wgpuInvertEffect.js +0 -26
- package/dist/wgpuInvertEffect.js.map +0 -1
- package/dist/wgpuLiftGammaGainEffect.d.ts +0 -4
- package/dist/wgpuLiftGammaGainEffect.d.ts.map +0 -1
- package/dist/wgpuLiftGammaGainEffect.js +0 -51
- package/dist/wgpuLiftGammaGainEffect.js.map +0 -1
- package/dist/wgpuLookupTableGradeEffect.d.ts +0 -4
- package/dist/wgpuLookupTableGradeEffect.d.ts.map +0 -1
- package/dist/wgpuLookupTableGradeEffect.js +0 -30
- package/dist/wgpuLookupTableGradeEffect.js.map +0 -1
- package/dist/wgpuSepiaEffect.d.ts +0 -4
- package/dist/wgpuSepiaEffect.d.ts.map +0 -1
- package/dist/wgpuSepiaEffect.js +0 -31
- package/dist/wgpuSepiaEffect.js.map +0 -1
- package/src/wgpuBrightnessContrastEffect.test.ts +0 -16
- package/src/wgpuChannelMixerEffect.test.ts +0 -13
- package/src/wgpuColorGradeEffect.test.ts +0 -13
- package/src/wgpuExposureEffect.test.ts +0 -13
- package/src/wgpuGrayscaleEffect.test.ts +0 -13
- package/src/wgpuHueSaturationEffect.test.ts +0 -13
- package/src/wgpuInvertEffect.test.ts +0 -13
- package/src/wgpuLiftGammaGainEffect.test.ts +0 -13
- package/src/wgpuLookupTableGradeEffect.test.ts +0 -16
- package/src/wgpuSepiaEffect.test.ts +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuLensFlareEffect.js","sourceRoot":"","sources":["../src/wgpuLensFlareEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuLensFlareEffect.js","sourceRoot":"","sources":["../src/wgpuLensFlareEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,oGAAoG;AACpG,mGAAmG;AACnG,sGAAsG;AACtG,wGAAwG;AACxG,UAAU;AACV,MAAM,UAAU,0BAA0B,CACxC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,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,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,SAAS,CAAC,CAAC;IACrG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAChB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,gCAAgC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACtF,0BAA0B,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAyB,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,mEAAmE;AACnE,MAAM,wBAAwB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmC1C,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MedianEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
|
|
2
|
+
export declare const MAX_MEDIAN_EFFECT_WGPU_RADIUS = 2;
|
|
3
|
+
export declare function applyMedianEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<MedianEffect>): void;
|
|
4
|
+
export declare const defaultWgpuMedianEffectRunner: WgpuRenderEffectRunner;
|
|
5
|
+
//# sourceMappingURL=wgpuMedianEffect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuMedianEffect.d.ts","sourceRoot":"","sources":["../src/wgpuMedianEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAO/G,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAM/C,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,IAAI,CAQN;AAED,eAAO,MAAM,6BAA6B,EAAE,sBAE3C,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { drawWgpuEffectPass } from './wgpuEffectPass';
|
|
2
|
+
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
3
|
+
// Largest median-filter radius the WebGPU path supports (radius 2 → a 5×5, 25-sample window). The cap
|
|
4
|
+
// is the fixed sort-array size in the shader; sorts each channel independently with insertion sort.
|
|
5
|
+
export const MAX_MEDIAN_EFFECT_WGPU_RADIUS = 2;
|
|
6
|
+
const MAX_SAMPLES = (MAX_MEDIAN_EFFECT_WGPU_RADIUS * 2 + 1) * (MAX_MEDIAN_EFFECT_WGPU_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 applyMedianEffectToWgpu(state, source, dest, effect) {
|
|
10
|
+
const radius = Math.min(MAX_MEDIAN_EFFECT_WGPU_RADIUS, Math.max(0, Math.round(effect.radius ?? 1)));
|
|
11
|
+
const pipeline = getWgpuEffectPipeline(state, 'stylization.median', MEDIAN_WGSL, 'replace');
|
|
12
|
+
drawWgpuEffectPass(state, source, dest, pipeline, (f32, i32) => {
|
|
13
|
+
f32[0] = 1 / source.width;
|
|
14
|
+
f32[1] = 1 / source.height;
|
|
15
|
+
i32[2] = radius;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export const defaultWgpuMedianEffectRunner = (ctx, effect) => {
|
|
19
|
+
applyMedianEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
|
|
20
|
+
};
|
|
21
|
+
// Uniforms layout (16 bytes): offset 0 texelSize (vec2f), offset 8 radius (i32), offset 12 _pad (i32).
|
|
22
|
+
const MEDIAN_WGSL = /* wgsl */ `
|
|
23
|
+
struct Uniforms {
|
|
24
|
+
texelSize : vec2f,
|
|
25
|
+
radius : i32,
|
|
26
|
+
_pad : i32,
|
|
27
|
+
}
|
|
28
|
+
@group(0) @binding(0) var<uniform> uni : Uniforms;
|
|
29
|
+
@group(1) @binding(0) var tex : texture_2d<f32>;
|
|
30
|
+
@group(1) @binding(1) var smp : sampler;
|
|
31
|
+
|
|
32
|
+
fn sortArr(arr : ptr<function, array<f32, ${MAX_SAMPLES}>>, n : i32) {
|
|
33
|
+
for (var i = 1; i < n; i++) {
|
|
34
|
+
let key = (*arr)[i];
|
|
35
|
+
var j = i - 1;
|
|
36
|
+
loop {
|
|
37
|
+
if (j < 0 || (*arr)[j] <= key) { break; }
|
|
38
|
+
(*arr)[j + 1] = (*arr)[j];
|
|
39
|
+
j -= 1;
|
|
40
|
+
}
|
|
41
|
+
(*arr)[j + 1] = key;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@fragment
|
|
46
|
+
fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {
|
|
47
|
+
let r = clamp(uni.radius, 0, ${MAX_MEDIAN_EFFECT_WGPU_RADIUS});
|
|
48
|
+
if (r == 0) { return textureSampleLevel(tex, smp, uv, 0.0); }
|
|
49
|
+
let n = (2 * r + 1) * (2 * r + 1);
|
|
50
|
+
var rv : array<f32, ${MAX_SAMPLES}>;
|
|
51
|
+
var gv : array<f32, ${MAX_SAMPLES}>;
|
|
52
|
+
var bv : array<f32, ${MAX_SAMPLES}>;
|
|
53
|
+
var av : array<f32, ${MAX_SAMPLES}>;
|
|
54
|
+
var count = 0;
|
|
55
|
+
for (var dy = -${MAX_MEDIAN_EFFECT_WGPU_RADIUS}; dy <= ${MAX_MEDIAN_EFFECT_WGPU_RADIUS}; dy++) {
|
|
56
|
+
for (var dx = -${MAX_MEDIAN_EFFECT_WGPU_RADIUS}; dx <= ${MAX_MEDIAN_EFFECT_WGPU_RADIUS}; dx++) {
|
|
57
|
+
if (abs(dy) <= r && abs(dx) <= r) {
|
|
58
|
+
let s = textureSampleLevel(tex, smp, uv + vec2f(f32(dx), f32(dy)) * uni.texelSize, 0.0);
|
|
59
|
+
rv[count] = s.r;
|
|
60
|
+
gv[count] = s.g;
|
|
61
|
+
bv[count] = s.b;
|
|
62
|
+
av[count] = s.a;
|
|
63
|
+
count += 1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
sortArr(&rv, n);
|
|
68
|
+
sortArr(&gv, n);
|
|
69
|
+
sortArr(&bv, n);
|
|
70
|
+
sortArr(&av, n);
|
|
71
|
+
let mid = n / 2;
|
|
72
|
+
return vec4f(rv[mid], gv[mid], bv[mid], av[mid]);
|
|
73
|
+
}`;
|
|
74
|
+
//# sourceMappingURL=wgpuMedianEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuMedianEffect.js","sourceRoot":"","sources":["../src/wgpuMedianEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,sGAAsG;AACtG,oGAAoG;AACpG,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C,MAAM,WAAW,GAAG,CAAC,6BAA6B,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,6BAA6B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;AAE5G,iGAAiG;AACjG,gGAAgG;AAChG,MAAM,UAAU,uBAAuB,CACrC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5F,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACrG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,6BAA6B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACnF,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAsB,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF,uGAAuG;AACvG,MAAM,WAAW,GAAG,UAAU,CAAC;;;;;;;;;;4CAUa,WAAW;;;;;;;;;;;;;;;iCAetB,6BAA6B;;;wBAGtC,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,WAAW;;mBAEhB,6BAA6B,WAAW,6BAA6B;qBACnE,6BAA6B,WAAW,6BAA6B;;;;;;;;;;;;;;;;;EAiBxF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuMotionBlurEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuMotionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAcnH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,eAAe,EAAE,UAAU,GAAG,IAAI,EAClC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI,CAwCN;AAED,eAAO,MAAM,iCAAiC,EAAE,sBAE/C,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { drawWgpuDualSourcePass } from '@flighthq/filters-wgpu';
|
|
1
|
+
import { createWgpuDualSourceEffectPipeline, drawWgpuDualSourceEffectPass } from './wgpuEffectPass';
|
|
3
2
|
// Motion blur (per-object): the velocity-driven analog of the depth consumers (fog/DoF), the Wgpu
|
|
4
3
|
// mirror of effects-gl's applyMotionBlurEffectToGl. When the scene produced a per-pixel velocity
|
|
5
4
|
// buffer (`velocityTexture`, rgba16f screen-space velocity in pixels in the RG channels), this is the
|
|
6
5
|
// real recipe — read each fragment's velocity, scale it by `intensity`, and accumulate `samples` taps
|
|
7
6
|
// spread along that vector centered on the fragment, smearing every object by its own motion. The
|
|
8
|
-
// velocity texture binds as the second source via
|
|
7
|
+
// velocity texture binds as the second source via drawWgpuDualSourceEffectPass (@group(2)). When velocity is
|
|
9
8
|
// absent (the scene did not write the buffer), u_hasVelocity=0 and it is a passthrough copy (sentinel
|
|
10
9
|
// path), preserving the pipeline stage without altering the image. Demonstrates the
|
|
11
10
|
// ctx.sceneVelocityTexture seam: real velocity path when present, sentinel copy when null.
|
|
@@ -16,7 +15,7 @@ export function applyMotionBlurEffectToWgpu(state, source, dest, velocityTexture
|
|
|
16
15
|
if (velocityTexture === null) {
|
|
17
16
|
// Sentinel path: no velocity buffer — bind source as both inputs so the dual-source layout is
|
|
18
17
|
// satisfied, and u_hasVelocity=0 makes the fragment a passthrough copy.
|
|
19
|
-
|
|
18
|
+
drawWgpuDualSourceEffectPass(state, source, source, dest, pipeline, (f32) => {
|
|
20
19
|
f32[0] = intensity;
|
|
21
20
|
f32[1] = samples;
|
|
22
21
|
f32[2] = source.width;
|
|
@@ -25,10 +24,10 @@ export function applyMotionBlurEffectToWgpu(state, source, dest, velocityTexture
|
|
|
25
24
|
});
|
|
26
25
|
return;
|
|
27
26
|
}
|
|
28
|
-
// Wrap the raw velocity GPUTexture as a minimal second source:
|
|
27
|
+
// Wrap the raw velocity GPUTexture as a minimal second source: drawWgpuDualSourceEffectPass reads only the
|
|
29
28
|
// `.view`, so a view over the velocity texture is all that is required for the @group(2) binding.
|
|
30
29
|
const velocitySource = { view: velocityTexture.createView() };
|
|
31
|
-
|
|
30
|
+
drawWgpuDualSourceEffectPass(state, source, velocitySource, dest, pipeline, (f32) => {
|
|
32
31
|
f32[0] = intensity;
|
|
33
32
|
f32[1] = samples;
|
|
34
33
|
f32[2] = source.width;
|
|
@@ -44,7 +43,7 @@ export const defaultWgpuMotionBlurEffectRunner = (ctx, effect) => {
|
|
|
44
43
|
function getMotionBlurPipeline(state) {
|
|
45
44
|
let pipeline = _motionBlurPipelines.get(state);
|
|
46
45
|
if (pipeline === undefined) {
|
|
47
|
-
pipeline =
|
|
46
|
+
pipeline = createWgpuDualSourceEffectPipeline(state, MOTION_BLUR_FRAGMENT_WGSL, 'replace');
|
|
48
47
|
_motionBlurPipelines.set(state, pipeline);
|
|
49
48
|
}
|
|
50
49
|
return pipeline;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuMotionBlurEffect.js","sourceRoot":"","sources":["../src/wgpuMotionBlurEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuMotionBlurEffect.js","sourceRoot":"","sources":["../src/wgpuMotionBlurEffect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAEpG,kGAAkG;AAClG,iGAAiG;AACjG,sGAAsG;AACtG,sGAAsG;AACtG,kGAAkG;AAClG,6GAA6G;AAC7G,sGAAsG;AACtG,oFAAoF;AACpF,2FAA2F;AAC3F,MAAM,UAAU,2BAA2B,CACzC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,eAAkC,EAClC,MAAkC;IAElC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,8FAA8F;QAC9F,wEAAwE;QACxE,4BAA4B,CAC1B,KAAK,EACL,MAA0B,EAC1B,MAA0B,EAC1B,IAAwB,EACxB,QAAQ,EACR,CAAC,GAAG,EAAE,EAAE;YACN,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;YACnB,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACjB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YACvB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,CAAC,CACF,CAAC;QACF,OAAO;IACT,CAAC;IACD,2GAA2G;IAC3G,kGAAkG;IAClG,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC,UAAU,EAAE,EAAsB,CAAC;IAClF,4BAA4B,CAC1B,KAAK,EACL,MAA0B,EAC1B,cAAc,EACd,IAAwB,EACxB,QAAQ,EACR,CAAC,GAAG,EAAE,EAAE;QACN,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACvF,2BAA2B,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,oBAAoB,EAAE,MAA0B,CAAC,CAAC;AACrH,CAAC,CAAC;AAEF,8FAA8F;AAC9F,+FAA+F;AAC/F,SAAS,qBAAqB,CAAC,KAAsB;IACnD,IAAI,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,kCAAkC,CAAC,KAAK,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;QAC3F,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAAiD,CAAC;AAE1F,sGAAsG;AACtG,yGAAyG;AACzG,MAAM,yBAAyB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC3C,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { OuterGlowEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget, WgpuRenderTargetPool } from '@flighthq/types';
|
|
2
|
+
export declare function applyOuterGlowEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, pool: WgpuRenderTargetPool, effect: Readonly<OuterGlowEffect>): void;
|
|
3
|
+
export declare const defaultWgpuOuterGlowEffectRunner: WgpuRenderEffectRunner;
|
|
4
|
+
//# sourceMappingURL=wgpuOuterGlowEffect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuOuterGlowEffect.d.ts","sourceRoot":"","sources":["../src/wgpuOuterGlowEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAUzB,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAsCN;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAE9C,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { acquireWgpuRenderTarget, releaseWgpuRenderTarget } from '@flighthq/render-wgpu';
|
|
2
|
+
import { applyWgpuEffectBlitPass, applyWgpuEffectErasePass } from './wgpuEffectBlitShader';
|
|
3
|
+
import { applyWgpuEffectBoxBlur } from './wgpuEffectBoxBlur';
|
|
4
|
+
import { clearWgpuEffectTarget } from './wgpuEffectPass';
|
|
5
|
+
import { applyWgpuEffectTintPass } from './wgpuEffectTintShader';
|
|
6
|
+
// Outer-glow composite effect: tint the scene silhouette, blur it centered (no offset), then apply sourceMode compositing.
|
|
7
|
+
// Full-frame realization: acquires the recipe's three scratch targets from the effect pool, runs the
|
|
8
|
+
// multi-pass recipe (tint → box blur → composite), then releases them.
|
|
9
|
+
export function applyOuterGlowEffectToWgpu(state, source, dest, pool, effect) {
|
|
10
|
+
const src = source;
|
|
11
|
+
const dst = dest;
|
|
12
|
+
const descriptor = { width: source.width, height: source.height, format: source.format };
|
|
13
|
+
const mask = acquireWgpuRenderTarget(state, pool, descriptor);
|
|
14
|
+
const blurred = acquireWgpuRenderTarget(state, pool, descriptor);
|
|
15
|
+
const blurTemp = acquireWgpuRenderTarget(state, pool, descriptor);
|
|
16
|
+
const color = effect.color ?? 0xff0000;
|
|
17
|
+
const alpha = effect.alpha ?? 1;
|
|
18
|
+
const strength = effect.strength ?? 1;
|
|
19
|
+
const quality = Math.max(1, Math.round(effect.quality ?? 1));
|
|
20
|
+
const sourceMode = effect.sourceMode ?? 'draw';
|
|
21
|
+
const tintStrength = Math.min(1, strength);
|
|
22
|
+
const glowPasses = Math.max(1, Math.floor(strength));
|
|
23
|
+
applyWgpuEffectTintPass(state, src, mask, color, alpha, tintStrength);
|
|
24
|
+
applyWgpuEffectBoxBlur(state, mask, blurred, blurTemp, {
|
|
25
|
+
blurX: effect.blurX ?? 6,
|
|
26
|
+
blurY: effect.blurY ?? 6,
|
|
27
|
+
passes: quality,
|
|
28
|
+
});
|
|
29
|
+
clearWgpuEffectTarget(state, dst);
|
|
30
|
+
for (let i = 0; i < glowPasses; i++) {
|
|
31
|
+
applyWgpuEffectBlitPass(state, blurred, dst);
|
|
32
|
+
}
|
|
33
|
+
if (sourceMode === 'knockout') {
|
|
34
|
+
applyWgpuEffectErasePass(state, src, dst);
|
|
35
|
+
}
|
|
36
|
+
else if (sourceMode === 'draw') {
|
|
37
|
+
applyWgpuEffectBlitPass(state, src, dst);
|
|
38
|
+
}
|
|
39
|
+
releaseWgpuRenderTarget(pool, mask);
|
|
40
|
+
releaseWgpuRenderTarget(pool, blurred);
|
|
41
|
+
releaseWgpuRenderTarget(pool, blurTemp);
|
|
42
|
+
}
|
|
43
|
+
export const defaultWgpuOuterGlowEffectRunner = (ctx, effect) => {
|
|
44
|
+
applyOuterGlowEffectToWgpu(ctx.state, ctx.source, ctx.dest, ctx.pool, effect);
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=wgpuOuterGlowEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuOuterGlowEffect.js","sourceRoot":"","sources":["../src/wgpuOuterGlowEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuOutlineEffect.d.ts","sourceRoot":"","sources":["../src/wgpuOutlineEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuOutlineEffect.d.ts","sourceRoot":"","sources":["../src/wgpuOutlineEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOhH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC9B,IAAI,CAqBN;AAED,eAAO,MAAM,8BAA8B,EAAE,sBAE5C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { drawWgpuEffectPass } from './wgpuEffectPass';
|
|
2
2
|
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
3
3
|
// Outline: Sobel edge detection on luminance; where the gradient magnitude exceeds `threshold`, mix
|
|
4
4
|
// the pixel toward the outline color by `thickness`. Color arrives packed RGBA, unpacked to 0..1 here.
|
|
@@ -11,7 +11,7 @@ export function applyOutlineEffectToWgpu(state, source, dest, effect) {
|
|
|
11
11
|
const b = ((color >>> 8) & 0xff) / 255;
|
|
12
12
|
const a = (color & 0xff) / 255;
|
|
13
13
|
const pipeline = getWgpuEffectPipeline(state, 'stylization.outline', OUTLINE_FRAGMENT_WGSL, 'replace');
|
|
14
|
-
|
|
14
|
+
drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
|
|
15
15
|
f32[0] = threshold;
|
|
16
16
|
f32[1] = thickness;
|
|
17
17
|
// u_resolution (vec2f) aligns to slot [2].
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuOutlineEffect.js","sourceRoot":"","sources":["../src/wgpuOutlineEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuOutlineEffect.js","sourceRoot":"","sources":["../src/wgpuOutlineEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,oGAAoG;AACpG,uGAAuG;AACvG,MAAM,UAAU,wBAAwB,CACtC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,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,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAC/B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,SAAS,CAAC,CAAC;IACvG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACnB,2CAA2C;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,sCAAsC;QACtC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,8BAA8B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACpF,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAuB,CAAC,CAAC;AACrF,CAAC,CAAC;AAEF,mFAAmF;AACnF,MAAM,qBAAqB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuPixelateEffect.d.ts","sourceRoot":"","sources":["../src/wgpuPixelateEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuPixelateEffect.d.ts","sourceRoot":"","sources":["../src/wgpuPixelateEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMjH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC/B,IAAI,CASN;AAED,eAAO,MAAM,+BAA+B,EAAE,sBAE7C,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { drawWgpuEffectPass } from './wgpuEffectPass';
|
|
2
2
|
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
3
3
|
// Pixelate: snap uv to the center of `size`-pixel blocks before sampling, producing hard mosaic blocks.
|
|
4
4
|
export function applyPixelateEffectToWgpu(state, source, dest, effect) {
|
|
5
5
|
const size = effect.size ?? 8;
|
|
6
6
|
const pipeline = getWgpuEffectPipeline(state, 'stylization.pixelate', PIXELATE_FRAGMENT_WGSL, 'replace');
|
|
7
|
-
|
|
7
|
+
drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
|
|
8
8
|
f32[0] = Math.max(1, size);
|
|
9
9
|
// u_resolution (vec2f) aligns to slot [2].
|
|
10
10
|
f32[2] = source.width;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuPixelateEffect.js","sourceRoot":"","sources":["../src/wgpuPixelateEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuPixelateEffect.js","sourceRoot":"","sources":["../src/wgpuPixelateEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,wGAAwG;AACxG,MAAM,UAAU,yBAAyB,CACvC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAgC;IAEhC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACzG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3B,2CAA2C;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACrF,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAwB,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF,qDAAqD;AACrD,MAAM,sBAAsB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;EAexC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuPosterizeEffect.d.ts","sourceRoot":"","sources":["../src/wgpuPosterizeEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuPosterizeEffect.d.ts","sourceRoot":"","sources":["../src/wgpuPosterizeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMlH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAChC,IAAI,CAMN;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAE9C,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { drawWgpuEffectPass } from './wgpuEffectPass';
|
|
2
2
|
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
3
3
|
// Posterize: floor each channel to `levels` discrete steps.
|
|
4
4
|
export function applyPosterizeEffectToWgpu(state, source, dest, effect) {
|
|
5
5
|
const levels = Math.max(2, effect.levels ?? 8);
|
|
6
6
|
const pipeline = getWgpuEffectPipeline(state, 'colorGrade.posterize', POSTERIZE_FRAGMENT_WGSL, 'replace');
|
|
7
|
-
|
|
7
|
+
drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
|
|
8
8
|
f32[0] = levels;
|
|
9
9
|
});
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuPosterizeEffect.js","sourceRoot":"","sources":["../src/wgpuPosterizeEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuPosterizeEffect.js","sourceRoot":"","sources":["../src/wgpuPosterizeEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,4DAA4D;AAC5D,MAAM,UAAU,0BAA0B,CACxC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAiC;IAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAC;IAC1G,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,gCAAgC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACtF,0BAA0B,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAyB,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,2BAA2B;AAC3B,MAAM,uBAAuB,GAAG,UAAU,CAAC;;;;;;;;;;;EAWzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRadialBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuRadialBlurEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuRadialBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuRadialBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQnH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI,CAYN;AAED,eAAO,MAAM,iCAAiC,EAAE,sBAE/C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { drawWgpuEffectPass } from './wgpuEffectPass';
|
|
2
2
|
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
3
3
|
// Radial blur: accumulate samples stepped from the current uv toward (centerX, centerY) scaled by
|
|
4
4
|
// `strength`, normalized by the sample count. Single-pass reference recipe, the Wgpu mirror of
|
|
@@ -9,7 +9,7 @@ export function applyRadialBlurEffectToWgpu(state, source, dest, effect) {
|
|
|
9
9
|
const strength = effect.strength ?? 0.2;
|
|
10
10
|
const samples = effect.samples ?? 16;
|
|
11
11
|
const pipeline = getWgpuEffectPipeline(state, 'motion.radialBlur', RADIAL_BLUR_FRAGMENT_WGSL, 'replace');
|
|
12
|
-
|
|
12
|
+
drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
|
|
13
13
|
f32[0] = centerX;
|
|
14
14
|
f32[1] = centerY;
|
|
15
15
|
f32[2] = strength;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRadialBlurEffect.js","sourceRoot":"","sources":["../src/wgpuRadialBlurEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuRadialBlurEffect.js","sourceRoot":"","sources":["../src/wgpuRadialBlurEffect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,kGAAkG;AAClG,+FAA+F;AAC/F,0CAA0C;AAC1C,MAAM,UAAU,2BAA2B,CACzC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,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,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;IACzG,kBAAkB,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAwB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QAChG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAClB,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IACvF,2BAA2B,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAA0B,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF,sEAAsE;AACtE,MAAM,yBAAyB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B3C,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { RenderEffect, RenderEffectPipelineOptions, WgpuRenderEffectPipeline, WgpuRenderState } from '@flighthq/types';
|
|
1
|
+
import type { Adjustment, RenderEffect, RenderEffectPipelineOptions, WgpuRenderEffectPipeline, WgpuRenderState } from '@flighthq/types';
|
|
2
2
|
export declare function beginWgpuRenderEffectPipeline(state: WgpuRenderState, pipeline: WgpuRenderEffectPipeline): void;
|
|
3
3
|
export declare function createWgpuRenderEffectPipeline(_state: WgpuRenderState, options?: Readonly<RenderEffectPipelineOptions>): WgpuRenderEffectPipeline;
|
|
4
4
|
export declare function destroyWgpuRenderEffectPipeline(state: WgpuRenderState, pipeline: WgpuRenderEffectPipeline): void;
|
|
5
|
-
export declare function endWgpuRenderEffectPipeline(state: WgpuRenderState, pipeline: WgpuRenderEffectPipeline,
|
|
5
|
+
export declare function endWgpuRenderEffectPipeline(state: WgpuRenderState, pipeline: WgpuRenderEffectPipeline, operations: ReadonlyArray<RenderEffect | Adjustment>): void;
|
|
6
6
|
export declare function setWgpuRenderEffectVelocityTexture(pipeline: WgpuRenderEffectPipeline, texture: GPUTexture | null): void;
|
|
7
7
|
//# sourceMappingURL=wgpuRenderEffectPipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRenderEffectPipeline.d.ts","sourceRoot":"","sources":["../src/wgpuRenderEffectPipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuRenderEffectPipeline.d.ts","sourceRoot":"","sources":["../src/wgpuRenderEffectPipeline.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,2BAA2B,EAC3B,wBAAwB,EACxB,eAAe,EAEhB,MAAM,iBAAiB,CAAC;AAmBzB,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAkB9G;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,QAAQ,CAAC,2BAA2B,CAAM,GAClD,wBAAwB,CAS1B;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAYhH;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,wBAAwB,EAClC,UAAU,EAAE,aAAa,CAAC,YAAY,GAAG,UAAU,CAAC,GACnD,IAAI,CAwEN;AAID,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,wBAAwB,EAClC,OAAO,EAAE,UAAU,GAAG,IAAI,GACzB,IAAI,CAEN"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { bakeColorLutForRun, createColorLutCache, fuseColorMatrices, getAdjustmentColorMatrix, isColorLutAdjustment, } from '@flighthq/adjustments';
|
|
2
|
+
import { acquireWgpuRenderTarget, beginWgpuRenderPass, createWgpuRenderTarget, createWgpuRenderTargetPool, destroyWgpuRenderTarget, destroyWgpuRenderTargetPool, endWgpuRenderPass, getWgpuRenderStateRuntime, releaseWgpuRenderTarget, resizeWgpuRenderTarget, } from '@flighthq/render-wgpu';
|
|
3
|
+
import { applyColorLutPassToWgpu } from './wgpuColorLutPass';
|
|
4
|
+
import { applyColorMatrixPassToWgpu } from './wgpuColorMatrixPass';
|
|
5
|
+
import { drawWgpuEffectPass } from './wgpuEffectPass';
|
|
4
6
|
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
5
7
|
import { getWgpuRenderEffectRunner } from './wgpuRenderEffectRegistry';
|
|
6
8
|
// Opt-in post-process pipeline, the Wgpu mirror of effects-gl's renderEffectPipeline. The caller
|
|
@@ -25,13 +27,22 @@ export function beginWgpuRenderEffectPipeline(state, pipeline) {
|
|
|
25
27
|
}
|
|
26
28
|
// Clear the scene target to the background colour (not transparent) so the background is part of the
|
|
27
29
|
// image the effects process and the replace-blend present composites — mirroring the Gl pipeline,
|
|
28
|
-
// where renderGlBackground draws into the scene target.
|
|
30
|
+
// where renderGlBackground draws into the scene target. The clear color is a target property now, so
|
|
31
|
+
// set it from the background before begin (default clear); the transform is inherited from the current
|
|
32
|
+
// pass rather than passed.
|
|
29
33
|
const rgba = state.backgroundColorRgba;
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
pipeline.sceneTarget.clearColors = rgba !== undefined && rgba.length >= 4 ? [packBackgroundClearColor(rgba)] : [];
|
|
35
|
+
beginWgpuRenderPass(state, pipeline.sceneTarget);
|
|
32
36
|
}
|
|
33
37
|
export function createWgpuRenderEffectPipeline(_state, options = {}) {
|
|
34
|
-
return {
|
|
38
|
+
return {
|
|
39
|
+
options: { ...options },
|
|
40
|
+
sceneTarget: null,
|
|
41
|
+
pool: createWgpuRenderTargetPool(),
|
|
42
|
+
lutCache: createColorLutCache(),
|
|
43
|
+
lutTexture: { texture: null, size: 0, lut: null },
|
|
44
|
+
velocityTexture: null,
|
|
45
|
+
};
|
|
35
46
|
}
|
|
36
47
|
export function destroyWgpuRenderEffectPipeline(state, pipeline) {
|
|
37
48
|
if (pipeline.sceneTarget) {
|
|
@@ -39,26 +50,65 @@ export function destroyWgpuRenderEffectPipeline(state, pipeline) {
|
|
|
39
50
|
pipeline.sceneTarget = null;
|
|
40
51
|
}
|
|
41
52
|
destroyWgpuRenderTargetPool(state, pipeline.pool);
|
|
53
|
+
pipeline.lutTexture.texture?.destroy();
|
|
54
|
+
pipeline.lutTexture.texture = null;
|
|
55
|
+
pipeline.lutTexture.size = 0;
|
|
56
|
+
pipeline.lutTexture.lut = null;
|
|
57
|
+
pipeline.lutCache.signature = null;
|
|
58
|
+
pipeline.lutCache.lut = null;
|
|
42
59
|
}
|
|
43
|
-
export function endWgpuRenderEffectPipeline(state, pipeline,
|
|
60
|
+
export function endWgpuRenderEffectPipeline(state, pipeline, operations) {
|
|
44
61
|
const scene = pipeline.sceneTarget;
|
|
45
62
|
if (scene === null)
|
|
46
63
|
return;
|
|
47
64
|
// Pop the scene render target; restores the canvas pass (loadOp 'load').
|
|
48
|
-
|
|
65
|
+
endWgpuRenderPass(state);
|
|
49
66
|
const format = scene.format;
|
|
50
67
|
const descriptor = { width: scene.width, height: scene.height, format };
|
|
51
68
|
let source = scene;
|
|
52
69
|
let scratchA = null;
|
|
53
70
|
let scratchB = null;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
71
|
+
// A maximal run of consecutive pointwise adjustments fuses into ONE pass: all matrix-tier → one 4×5
|
|
72
|
+
// matrix (cheaper applyColorMatrixPass); any LUT-tier member → the whole run (matrices folded in) bakes
|
|
73
|
+
// into one ColorLut (applyColorLutPass). An effect (or the end of the stack) breaks the run and flushes
|
|
74
|
+
// it first, preserving stack order.
|
|
75
|
+
let pending = [];
|
|
76
|
+
const ensureScratch = () => {
|
|
58
77
|
if (scratchA === null)
|
|
59
78
|
scratchA = acquireWgpuRenderTarget(state, pipeline.pool, descriptor);
|
|
60
79
|
if (scratchB === null)
|
|
61
80
|
scratchB = acquireWgpuRenderTarget(state, pipeline.pool, descriptor);
|
|
81
|
+
};
|
|
82
|
+
const flushAdjustments = () => {
|
|
83
|
+
if (pending.length === 0)
|
|
84
|
+
return;
|
|
85
|
+
ensureScratch();
|
|
86
|
+
const dest = source === scratchA ? scratchB : scratchA;
|
|
87
|
+
if (pending.some(isColorLutAdjustment)) {
|
|
88
|
+
applyColorLutPassToWgpu(state, source, dest, bakeColorLutForRun(pipeline.lutCache, pending), pipeline.lutTexture);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const matrices = [];
|
|
92
|
+
for (const op of pending) {
|
|
93
|
+
const matrix = getAdjustmentColorMatrix(op);
|
|
94
|
+
if (matrix !== null)
|
|
95
|
+
matrices.push(matrix);
|
|
96
|
+
}
|
|
97
|
+
applyColorMatrixPassToWgpu(state, source, dest, fuseColorMatrices(matrices));
|
|
98
|
+
}
|
|
99
|
+
source = dest;
|
|
100
|
+
pending = [];
|
|
101
|
+
};
|
|
102
|
+
for (const operation of operations) {
|
|
103
|
+
if (getAdjustmentColorMatrix(operation) !== null || isColorLutAdjustment(operation)) {
|
|
104
|
+
pending.push(operation);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const runner = getWgpuRenderEffectRunner(state, operation.kind);
|
|
108
|
+
if (runner === null)
|
|
109
|
+
continue;
|
|
110
|
+
flushAdjustments();
|
|
111
|
+
ensureScratch();
|
|
62
112
|
const dest = source === scratchA ? scratchB : scratchA;
|
|
63
113
|
runner({
|
|
64
114
|
state,
|
|
@@ -70,9 +120,10 @@ export function endWgpuRenderEffectPipeline(state, pipeline, effects) {
|
|
|
70
120
|
// depth attachment; velocity a separate pass), mirroring the Gl seam.
|
|
71
121
|
sceneDepthTexture: null,
|
|
72
122
|
sceneVelocityTexture: pipeline.velocityTexture,
|
|
73
|
-
},
|
|
123
|
+
}, operation);
|
|
74
124
|
source = dest;
|
|
75
125
|
}
|
|
126
|
+
flushAdjustments();
|
|
76
127
|
presentWgpuRenderEffectResult(state, source);
|
|
77
128
|
if (scratchA !== null)
|
|
78
129
|
releaseWgpuRenderTarget(pipeline.pool, scratchA);
|
|
@@ -91,7 +142,15 @@ function presentWgpuRenderEffectResult(state, source) {
|
|
|
91
142
|
if (runtime.commandEncoder === null)
|
|
92
143
|
return;
|
|
93
144
|
const pipeline = getWgpuEffectPipeline(state, 'effect.present', PRESENT_FRAGMENT_WGSL, 'replace');
|
|
94
|
-
|
|
145
|
+
drawWgpuEffectPass(state, source, null, pipeline, () => { });
|
|
146
|
+
}
|
|
147
|
+
// Packs a linear 0..1 RGBA background into the 0xRRGGBBAA integer WgpuRenderTarget.clearColors holds.
|
|
148
|
+
function packBackgroundClearColor(rgba) {
|
|
149
|
+
const r = Math.round((rgba[0] ?? 0) * 255) & 0xff;
|
|
150
|
+
const g = Math.round((rgba[1] ?? 0) * 255) & 0xff;
|
|
151
|
+
const b = Math.round((rgba[2] ?? 0) * 255) & 0xff;
|
|
152
|
+
const a = Math.round((rgba[3] ?? 0) * 255) & 0xff;
|
|
153
|
+
return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;
|
|
95
154
|
}
|
|
96
155
|
const PRESENT_FRAGMENT_WGSL = /* wgsl */ `
|
|
97
156
|
struct Uniforms { _u : f32, _pad0 : f32, _pad1 : f32, _pad2 : f32, }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRenderEffectPipeline.js","sourceRoot":"","sources":["../src/wgpuRenderEffectPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"wgpuRenderEffectPipeline.js","sourceRoot":"","sources":["../src/wgpuRenderEffectPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export declare function registerAntialiasingWgpuRenderEffects(state: WgpuRenderS
|
|
|
3
3
|
export declare function registerBloomWgpuRenderEffects(state: WgpuRenderState): void;
|
|
4
4
|
export declare function registerBlurWgpuRenderEffects(state: WgpuRenderState): void;
|
|
5
5
|
export declare function registerColorWgpuRenderEffects(state: WgpuRenderState): void;
|
|
6
|
+
export declare function registerCompositeWgpuRenderEffects(state: WgpuRenderState): void;
|
|
6
7
|
export declare function registerScreenSpaceWgpuRenderEffects(state: WgpuRenderState): void;
|
|
7
8
|
export declare function registerStandardWgpuRenderEffects(state: WgpuRenderState): void;
|
|
8
9
|
export declare function registerStylizeWgpuRenderEffects(state: WgpuRenderState): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuRenderEffectRegistrants.d.ts","sourceRoot":"","sources":["../src/wgpuRenderEffectRegistrants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAsDvD,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAIlF;AAID,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAQ3E;AAID,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"wgpuRenderEffectRegistrants.d.ts","sourceRoot":"","sources":["../src/wgpuRenderEffectRegistrants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAsDvD,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAIlF;AAID,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAQ3E;AAID,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAQ1E;AAOD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAG3E;AASD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAQ/E;AAID,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAMjF;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAQ9E;AAMD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAc7E"}
|