@flighthq/effects-wgpu 0.3.0-next.906.07cea63 → 0.3.1-next.1041.35b950c
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 +2 -3
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +2 -3
- package/dist/contract.js.map +1 -1
- package/dist/enableWgpuRenderEffectGuards.d.ts +5 -0
- package/dist/enableWgpuRenderEffectGuards.d.ts.map +1 -0
- package/dist/enableWgpuRenderEffectGuards.js +63 -0
- package/dist/enableWgpuRenderEffectGuards.js.map +1 -0
- 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/dist/wgpuBevelEffect.d.ts +1 -0
- package/dist/wgpuBevelEffect.d.ts.map +1 -1
- package/dist/wgpuBevelEffect.js +17 -7
- package/dist/wgpuBevelEffect.js.map +1 -1
- package/dist/wgpuBlendEffect.d.ts +2 -1
- package/dist/wgpuBlendEffect.d.ts.map +1 -1
- package/dist/wgpuBlendEffect.js +8 -0
- package/dist/wgpuBlendEffect.js.map +1 -1
- package/dist/wgpuBloomEffect.d.ts +1 -0
- package/dist/wgpuBloomEffect.d.ts.map +1 -1
- package/dist/wgpuBloomEffect.js +4 -0
- package/dist/wgpuBloomEffect.js.map +1 -1
- package/dist/wgpuBlurEffect.d.ts +1 -0
- package/dist/wgpuBlurEffect.d.ts.map +1 -1
- package/dist/wgpuBlurEffect.js +4 -0
- package/dist/wgpuBlurEffect.js.map +1 -1
- package/dist/wgpuCameraMotionBlurEffect.d.ts +1 -0
- package/dist/wgpuCameraMotionBlurEffect.d.ts.map +1 -1
- package/dist/wgpuCameraMotionBlurEffect.js +4 -0
- package/dist/wgpuCameraMotionBlurEffect.js.map +1 -1
- package/dist/wgpuChromaticAberrationEffect.d.ts +1 -0
- package/dist/wgpuChromaticAberrationEffect.d.ts.map +1 -1
- package/dist/wgpuChromaticAberrationEffect.js +4 -0
- package/dist/wgpuChromaticAberrationEffect.js.map +1 -1
- package/dist/wgpuCompositeEffect.d.ts +1 -0
- package/dist/wgpuCompositeEffect.d.ts.map +1 -1
- package/dist/wgpuCompositeEffect.js +4 -0
- package/dist/wgpuCompositeEffect.js.map +1 -1
- package/dist/wgpuContactShadowsEffect.d.ts +5 -0
- package/dist/wgpuContactShadowsEffect.d.ts.map +1 -0
- package/dist/wgpuContactShadowsEffect.js +19 -0
- package/dist/wgpuContactShadowsEffect.js.map +1 -0
- package/dist/wgpuConvolutionEffect.d.ts +1 -0
- package/dist/wgpuConvolutionEffect.d.ts.map +1 -1
- package/dist/wgpuConvolutionEffect.js +12 -4
- package/dist/wgpuConvolutionEffect.js.map +1 -1
- package/dist/wgpuCrtEffect.d.ts +1 -0
- package/dist/wgpuCrtEffect.d.ts.map +1 -1
- package/dist/wgpuCrtEffect.js +4 -0
- package/dist/wgpuCrtEffect.js.map +1 -1
- package/dist/wgpuDirectionalBlurEffect.d.ts +1 -0
- package/dist/wgpuDirectionalBlurEffect.d.ts.map +1 -1
- package/dist/wgpuDirectionalBlurEffect.js +4 -0
- package/dist/wgpuDirectionalBlurEffect.js.map +1 -1
- package/dist/wgpuDisplacementEffect.d.ts +1 -0
- package/dist/wgpuDisplacementEffect.d.ts.map +1 -1
- package/dist/wgpuDisplacementEffect.js +4 -0
- package/dist/wgpuDisplacementEffect.js.map +1 -1
- package/dist/wgpuDitherEffect.d.ts +1 -0
- package/dist/wgpuDitherEffect.d.ts.map +1 -1
- package/dist/wgpuDitherEffect.js +4 -0
- package/dist/wgpuDitherEffect.js.map +1 -1
- package/dist/wgpuDropShadowEffect.d.ts +1 -0
- package/dist/wgpuDropShadowEffect.d.ts.map +1 -1
- package/dist/wgpuDropShadowEffect.js +7 -1
- package/dist/wgpuDropShadowEffect.js.map +1 -1
- package/dist/wgpuEffectTintShader.d.ts.map +1 -1
- package/dist/wgpuEffectTintShader.js +13 -13
- package/dist/wgpuEffectTintShader.js.map +1 -1
- package/dist/wgpuFilmGrainEffect.d.ts +1 -0
- package/dist/wgpuFilmGrainEffect.d.ts.map +1 -1
- package/dist/wgpuFilmGrainEffect.js +4 -0
- package/dist/wgpuFilmGrainEffect.js.map +1 -1
- package/dist/wgpuFxaaEffect.d.ts +1 -0
- package/dist/wgpuFxaaEffect.d.ts.map +1 -1
- package/dist/wgpuFxaaEffect.js +4 -0
- package/dist/wgpuFxaaEffect.js.map +1 -1
- package/dist/wgpuGlitchEffect.d.ts +1 -0
- package/dist/wgpuGlitchEffect.d.ts.map +1 -1
- package/dist/wgpuGlitchEffect.js +4 -0
- package/dist/wgpuGlitchEffect.js.map +1 -1
- package/dist/wgpuGodRaysEffect.d.ts +1 -0
- package/dist/wgpuGodRaysEffect.d.ts.map +1 -1
- package/dist/wgpuGodRaysEffect.js +4 -0
- package/dist/wgpuGodRaysEffect.js.map +1 -1
- package/dist/wgpuGradientBevelEffect.d.ts +1 -0
- package/dist/wgpuGradientBevelEffect.d.ts.map +1 -1
- package/dist/wgpuGradientBevelEffect.js +7 -8
- package/dist/wgpuGradientBevelEffect.js.map +1 -1
- package/dist/wgpuGradientGlowEffect.d.ts +1 -0
- package/dist/wgpuGradientGlowEffect.d.ts.map +1 -1
- package/dist/wgpuGradientGlowEffect.js +5 -1
- package/dist/wgpuGradientGlowEffect.js.map +1 -1
- package/dist/wgpuHalftoneEffect.d.ts +1 -0
- package/dist/wgpuHalftoneEffect.d.ts.map +1 -1
- package/dist/wgpuHalftoneEffect.js +4 -0
- package/dist/wgpuHalftoneEffect.js.map +1 -1
- package/dist/wgpuInnerGlowEffect.d.ts +1 -0
- package/dist/wgpuInnerGlowEffect.d.ts.map +1 -1
- package/dist/wgpuInnerGlowEffect.js +12 -8
- package/dist/wgpuInnerGlowEffect.js.map +1 -1
- package/dist/wgpuInnerShadowEffect.d.ts +1 -0
- package/dist/wgpuInnerShadowEffect.d.ts.map +1 -1
- package/dist/wgpuInnerShadowEffect.js +12 -8
- package/dist/wgpuInnerShadowEffect.js.map +1 -1
- package/dist/wgpuKuwaharaEffect.d.ts +1 -0
- package/dist/wgpuKuwaharaEffect.d.ts.map +1 -1
- package/dist/wgpuKuwaharaEffect.js +4 -0
- package/dist/wgpuKuwaharaEffect.js.map +1 -1
- package/dist/wgpuLensDirtEffect.d.ts +1 -0
- package/dist/wgpuLensDirtEffect.d.ts.map +1 -1
- package/dist/wgpuLensDirtEffect.js +4 -0
- package/dist/wgpuLensDirtEffect.js.map +1 -1
- package/dist/wgpuLensDistortionEffect.d.ts +1 -0
- package/dist/wgpuLensDistortionEffect.d.ts.map +1 -1
- package/dist/wgpuLensDistortionEffect.js +4 -0
- package/dist/wgpuLensDistortionEffect.js.map +1 -1
- package/dist/wgpuLensFlareEffect.d.ts +1 -0
- package/dist/wgpuLensFlareEffect.d.ts.map +1 -1
- package/dist/wgpuLensFlareEffect.js +4 -0
- package/dist/wgpuLensFlareEffect.js.map +1 -1
- package/dist/wgpuMedianEffect.d.ts +1 -0
- package/dist/wgpuMedianEffect.d.ts.map +1 -1
- package/dist/wgpuMedianEffect.js +4 -0
- package/dist/wgpuMedianEffect.js.map +1 -1
- package/dist/wgpuMotionBlurEffect.d.ts +1 -0
- package/dist/wgpuMotionBlurEffect.d.ts.map +1 -1
- package/dist/wgpuMotionBlurEffect.js +4 -0
- package/dist/wgpuMotionBlurEffect.js.map +1 -1
- package/dist/wgpuOuterGlowEffect.d.ts +1 -0
- package/dist/wgpuOuterGlowEffect.d.ts.map +1 -1
- package/dist/wgpuOuterGlowEffect.js +5 -1
- package/dist/wgpuOuterGlowEffect.js.map +1 -1
- package/dist/wgpuOutlineEffect.d.ts +1 -0
- package/dist/wgpuOutlineEffect.d.ts.map +1 -1
- package/dist/wgpuOutlineEffect.js +4 -0
- package/dist/wgpuOutlineEffect.js.map +1 -1
- package/dist/wgpuPixelateEffect.d.ts +1 -0
- package/dist/wgpuPixelateEffect.d.ts.map +1 -1
- package/dist/wgpuPixelateEffect.js +4 -0
- package/dist/wgpuPixelateEffect.js.map +1 -1
- package/dist/wgpuPosterizeEffect.d.ts +1 -0
- package/dist/wgpuPosterizeEffect.d.ts.map +1 -1
- package/dist/wgpuPosterizeEffect.js +4 -0
- package/dist/wgpuPosterizeEffect.js.map +1 -1
- package/dist/wgpuRadialBlurEffect.d.ts +1 -0
- package/dist/wgpuRadialBlurEffect.d.ts.map +1 -1
- package/dist/wgpuRadialBlurEffect.js +4 -0
- package/dist/wgpuRadialBlurEffect.js.map +1 -1
- package/dist/wgpuRenderEffectPipeline.d.ts +2 -1
- package/dist/wgpuRenderEffectPipeline.d.ts.map +1 -1
- package/dist/wgpuRenderEffectPipeline.js +16 -1
- package/dist/wgpuRenderEffectPipeline.js.map +1 -1
- package/dist/wgpuRenderEffectRegistry.d.ts.map +1 -1
- package/dist/wgpuRenderEffectRegistry.js +10 -9
- package/dist/wgpuRenderEffectRegistry.js.map +1 -1
- package/dist/wgpuRenderTextureEffect.d.ts +6 -0
- package/dist/wgpuRenderTextureEffect.d.ts.map +1 -0
- package/dist/wgpuRenderTextureEffect.js +95 -0
- package/dist/wgpuRenderTextureEffect.js.map +1 -0
- package/dist/wgpuScanlinesEffect.d.ts +1 -0
- package/dist/wgpuScanlinesEffect.d.ts.map +1 -1
- package/dist/wgpuScanlinesEffect.js +4 -0
- package/dist/wgpuScanlinesEffect.js.map +1 -1
- package/dist/wgpuScreenSpaceFogEffect.d.ts +1 -0
- package/dist/wgpuScreenSpaceFogEffect.d.ts.map +1 -1
- package/dist/wgpuScreenSpaceFogEffect.js +5 -1
- package/dist/wgpuScreenSpaceFogEffect.js.map +1 -1
- package/dist/wgpuSharpenEffect.d.ts +1 -0
- package/dist/wgpuSharpenEffect.d.ts.map +1 -1
- package/dist/wgpuSharpenEffect.js +4 -0
- package/dist/wgpuSharpenEffect.js.map +1 -1
- package/dist/wgpuSketchEffect.d.ts +1 -0
- package/dist/wgpuSketchEffect.d.ts.map +1 -1
- package/dist/wgpuSketchEffect.js +4 -0
- package/dist/wgpuSketchEffect.js.map +1 -1
- package/dist/wgpuSmaaEffect.d.ts +1 -0
- package/dist/wgpuSmaaEffect.d.ts.map +1 -1
- package/dist/wgpuSmaaEffect.js +4 -0
- package/dist/wgpuSmaaEffect.js.map +1 -1
- package/dist/wgpuSsaoEffect.d.ts +1 -0
- package/dist/wgpuSsaoEffect.d.ts.map +1 -1
- package/dist/wgpuSsaoEffect.js +4 -0
- package/dist/wgpuSsaoEffect.js.map +1 -1
- package/dist/wgpuTiltShiftEffect.d.ts +1 -0
- package/dist/wgpuTiltShiftEffect.d.ts.map +1 -1
- package/dist/wgpuTiltShiftEffect.js +4 -0
- package/dist/wgpuTiltShiftEffect.js.map +1 -1
- package/dist/wgpuToneMapEffect.d.ts +1 -0
- package/dist/wgpuToneMapEffect.d.ts.map +1 -1
- package/dist/wgpuToneMapEffect.js +4 -0
- package/dist/wgpuToneMapEffect.js.map +1 -1
- package/dist/wgpuVignetteEffect.d.ts +1 -0
- package/dist/wgpuVignetteEffect.d.ts.map +1 -1
- package/dist/wgpuVignetteEffect.js +4 -0
- package/dist/wgpuVignetteEffect.js.map +1 -1
- package/dist/wgpuWhiteBalanceEffect.d.ts +1 -0
- package/dist/wgpuWhiteBalanceEffect.d.ts.map +1 -1
- package/dist/wgpuWhiteBalanceEffect.js +4 -0
- package/dist/wgpuWhiteBalanceEffect.js.map +1 -1
- package/package.json +15 -6
- package/src/enableWgpuRenderEffectGuards.test.ts +169 -0
- package/src/wgpuBevelEffect.test.ts +7 -1
- package/src/wgpuBlendEffect.test.ts +25 -0
- package/src/wgpuBloomEffect.test.ts +7 -1
- package/src/wgpuBlurEffect.test.ts +19 -1
- package/src/wgpuCameraMotionBlurEffect.test.ts +7 -0
- package/src/wgpuChromaticAberrationEffect.test.ts +7 -0
- package/src/wgpuCompositeEffect.test.ts +7 -0
- package/src/wgpuContactShadowsEffect.test.ts +47 -0
- package/src/wgpuConvolutionEffect.test.ts +11 -1
- package/src/wgpuCrtEffect.test.ts +7 -1
- package/src/wgpuDirectionalBlurEffect.test.ts +11 -1
- package/src/wgpuDisplacementEffect.test.ts +11 -1
- package/src/wgpuDitherEffect.test.ts +7 -1
- package/src/wgpuDropShadowEffect.test.ts +11 -10
- package/src/wgpuEffectBoxBlur.test.ts +0 -5
- package/src/wgpuEffectTintShader.test.ts +0 -5
- package/src/wgpuFilmGrainEffect.test.ts +11 -1
- package/src/wgpuFxaaEffect.test.ts +7 -1
- package/src/wgpuGlitchEffect.test.ts +7 -1
- package/src/wgpuGodRaysEffect.test.ts +11 -1
- package/src/wgpuGradientBevelEffect.test.ts +11 -1
- package/src/wgpuGradientGlowEffect.test.ts +11 -1
- package/src/wgpuHalftoneEffect.test.ts +11 -1
- package/src/wgpuInnerGlowEffect.test.ts +12 -11
- package/src/wgpuInnerShadowEffect.test.ts +12 -11
- package/src/wgpuKuwaharaEffect.test.ts +11 -1
- package/src/wgpuLensDirtEffect.test.ts +11 -1
- package/src/wgpuLensDistortionEffect.test.ts +11 -1
- package/src/wgpuLensFlareEffect.test.ts +11 -1
- package/src/wgpuMedianEffect.test.ts +7 -1
- package/src/wgpuMotionBlurEffect.test.ts +11 -1
- package/src/wgpuOuterGlowEffect.test.ts +11 -10
- package/src/wgpuOutlineEffect.test.ts +11 -1
- package/src/wgpuPixelateEffect.test.ts +11 -1
- package/src/wgpuPosterizeEffect.test.ts +11 -1
- package/src/wgpuRadialBlurEffect.test.ts +11 -1
- package/src/wgpuRenderEffectPipeline.test.ts +31 -0
- package/src/wgpuRenderEffectRegistry.test.ts +21 -1
- package/src/wgpuRenderTextureEffect.test.ts +154 -0
- package/src/wgpuScanlinesEffect.test.ts +11 -1
- package/src/wgpuScreenSpaceFogEffect.test.ts +11 -1
- package/src/wgpuSharpenEffect.test.ts +11 -1
- package/src/wgpuSketchEffect.test.ts +7 -1
- package/src/wgpuSmaaEffect.test.ts +7 -1
- package/src/wgpuSpatialEffectRegistration.test.ts +70 -0
- package/src/wgpuSsaoEffect.test.ts +7 -1
- package/src/wgpuTiltShiftEffect.test.ts +11 -1
- package/src/wgpuToneMapEffect.test.ts +11 -1
- package/src/wgpuVignetteEffect.test.ts +11 -1
- package/src/wgpuWhiteBalanceEffect.test.ts +11 -1
- package/dist/wgpuBokehDepthOfFieldEffect.d.ts +0 -4
- package/dist/wgpuBokehDepthOfFieldEffect.d.ts.map +0 -1
- package/dist/wgpuBokehDepthOfFieldEffect.js +0 -51
- package/dist/wgpuBokehDepthOfFieldEffect.js.map +0 -1
- package/dist/wgpuSsrEffect.d.ts +0 -4
- package/dist/wgpuSsrEffect.d.ts.map +0 -1
- package/dist/wgpuSsrEffect.js +0 -28
- package/dist/wgpuSsrEffect.js.map +0 -1
- package/dist/wgpuTaaEffect.d.ts +0 -4
- package/dist/wgpuTaaEffect.d.ts.map +0 -1
- package/dist/wgpuTaaEffect.js +0 -27
- package/dist/wgpuTaaEffect.js.map +0 -1
- package/src/wgpuBokehDepthOfFieldEffect.test.ts +0 -16
- package/src/wgpuSsrEffect.test.ts +0 -13
- package/src/wgpuTaaEffect.test.ts +0 -13
package/dist/contract.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export * from './wgpuColorMatrixPass';
|
|
2
2
|
export * from './wgpuCompositeEffect';
|
|
3
|
+
export * from './wgpuContactShadowsEffect';
|
|
3
4
|
export * from './wgpuBlendEffect';
|
|
4
5
|
export * from './wgpuBevelEffect';
|
|
5
6
|
export * from './wgpuBloomEffect';
|
|
6
7
|
export * from './wgpuBlurEffect';
|
|
7
|
-
export * from './wgpuBokehDepthOfFieldEffect';
|
|
8
8
|
export * from './wgpuCameraMotionBlurEffect';
|
|
9
9
|
export * from './wgpuChromaticAberrationEffect';
|
|
10
10
|
export * from './wgpuConvolutionEffect';
|
|
@@ -41,14 +41,13 @@ export * from './wgpuPosterizeEffect';
|
|
|
41
41
|
export * from './wgpuRadialBlurEffect';
|
|
42
42
|
export * from './wgpuRenderEffectPipeline';
|
|
43
43
|
export * from './wgpuRenderEffectRegistry';
|
|
44
|
+
export * from './wgpuRenderTextureEffect';
|
|
44
45
|
export * from './wgpuScanlinesEffect';
|
|
45
46
|
export * from './wgpuScreenSpaceFogEffect';
|
|
46
47
|
export * from './wgpuSharpenEffect';
|
|
47
48
|
export * from './wgpuSketchEffect';
|
|
48
49
|
export * from './wgpuSmaaEffect';
|
|
49
50
|
export * from './wgpuSsaoEffect';
|
|
50
|
-
export * from './wgpuSsrEffect';
|
|
51
|
-
export * from './wgpuTaaEffect';
|
|
52
51
|
export * from './wgpuTiltShiftEffect';
|
|
53
52
|
export * from './wgpuToneMapEffect';
|
|
54
53
|
export * from './wgpuVignetteEffect';
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export * from './wgpuColorMatrixPass';
|
|
2
2
|
export * from './wgpuCompositeEffect';
|
|
3
|
+
export * from './wgpuContactShadowsEffect';
|
|
3
4
|
export * from './wgpuBlendEffect';
|
|
4
5
|
export * from './wgpuBevelEffect';
|
|
5
6
|
export * from './wgpuBloomEffect';
|
|
6
7
|
export * from './wgpuBlurEffect';
|
|
7
|
-
export * from './wgpuBokehDepthOfFieldEffect';
|
|
8
8
|
export * from './wgpuCameraMotionBlurEffect';
|
|
9
9
|
export * from './wgpuChromaticAberrationEffect';
|
|
10
10
|
export * from './wgpuConvolutionEffect';
|
|
@@ -41,14 +41,13 @@ export * from './wgpuPosterizeEffect';
|
|
|
41
41
|
export * from './wgpuRadialBlurEffect';
|
|
42
42
|
export * from './wgpuRenderEffectPipeline';
|
|
43
43
|
export * from './wgpuRenderEffectRegistry';
|
|
44
|
+
export * from './wgpuRenderTextureEffect';
|
|
44
45
|
export * from './wgpuScanlinesEffect';
|
|
45
46
|
export * from './wgpuScreenSpaceFogEffect';
|
|
46
47
|
export * from './wgpuSharpenEffect';
|
|
47
48
|
export * from './wgpuSketchEffect';
|
|
48
49
|
export * from './wgpuSmaaEffect';
|
|
49
50
|
export * from './wgpuSsaoEffect';
|
|
50
|
-
export * from './wgpuSsrEffect';
|
|
51
|
-
export * from './wgpuTaaEffect';
|
|
52
51
|
export * from './wgpuTiltShiftEffect';
|
|
53
52
|
export * from './wgpuToneMapEffect';
|
|
54
53
|
export * from './wgpuVignetteEffect';
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { WgpuRenderState } from '@flighthq/types/contract';
|
|
2
|
+
export declare function areWgpuRenderEffectGuardsEnabled(state: WgpuRenderState): boolean;
|
|
3
|
+
export declare function disableWgpuRenderEffectGuards(state: WgpuRenderState): void;
|
|
4
|
+
export declare function enableWgpuRenderEffectGuards(state: WgpuRenderState): void;
|
|
5
|
+
//# sourceMappingURL=enableWgpuRenderEffectGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableWgpuRenderEffectGuards.d.ts","sourceRoot":"","sources":["../src/enableWgpuRenderEffectGuards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0C,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAMxG,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAEhF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAI1E;AAWD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAIzE"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { logOnce } from '@flighthq/log/contract';
|
|
2
|
+
import { LogLevel } from '@flighthq/types/contract';
|
|
3
|
+
import { setWgpuRenderEffectPipelineSkipGuard } from './wgpuRenderEffectPipeline';
|
|
4
|
+
import { setWgpuRenderEffectApplicationGuard } from './wgpuRenderTextureEffect';
|
|
5
|
+
export function areWgpuRenderEffectGuardsEnabled(state) {
|
|
6
|
+
return _guardedStates.has(state);
|
|
7
|
+
}
|
|
8
|
+
export function disableWgpuRenderEffectGuards(state) {
|
|
9
|
+
setWgpuRenderEffectApplicationGuard(state, null);
|
|
10
|
+
setWgpuRenderEffectPipelineSkipGuard(state, null);
|
|
11
|
+
_guardedStates.delete(state);
|
|
12
|
+
}
|
|
13
|
+
// Installs diagnostics for the effect-chain sentinels that are indistinguishable from working code: an
|
|
14
|
+
// unregistered chain returns false having never written `dest`, so a sprite sampling that texture shows
|
|
15
|
+
// whatever was last in it, and a partially registered chain succeeds while silently dropping the effects
|
|
16
|
+
// it could not run. Both are correct by contract and neither surfaces anywhere.
|
|
17
|
+
//
|
|
18
|
+
// The WGPU sibling of enableGlRenderEffectGuards, and deliberately narrower: GL additionally guards
|
|
19
|
+
// per-instance resolvability and re-registered custom-shader source, and WGPU has neither a resolver half
|
|
20
|
+
// to registration nor a custom-shader effect. Guarding what this backend cannot observe would be a
|
|
21
|
+
// warning that can never fire, so the absence is the honest shape rather than an oversight.
|
|
22
|
+
export function enableWgpuRenderEffectGuards(state) {
|
|
23
|
+
setWgpuRenderEffectApplicationGuard(state, warnWgpuRenderEffectApplication);
|
|
24
|
+
setWgpuRenderEffectPipelineSkipGuard(state, warnWgpuRenderEffectPipelineSkip);
|
|
25
|
+
_guardedStates.add(state);
|
|
26
|
+
}
|
|
27
|
+
function getWgpuRenderEffectApplicationMessage(explanation) {
|
|
28
|
+
switch (explanation.status) {
|
|
29
|
+
case 'partial-registration':
|
|
30
|
+
return `applyWgpuRenderEffectsToRenderTexture: ${explanation.unregisteredKinds.length} of ${explanation.requestedCount} effect kinds have no registered runner and were SKIPPED — the destination was written without them; call registerWgpuRenderEffect(state, kind, runner) for ${explanation.unregisteredKinds.join(', ')}`;
|
|
31
|
+
case 'source-unavailable':
|
|
32
|
+
return 'applyWgpuRenderEffectsToRenderTexture: the source render Texture has no realized WGPU target, so the call returned false and the destination was NOT written — render into the source before applying effects';
|
|
33
|
+
case 'stale-destination':
|
|
34
|
+
return 'applyWgpuRenderEffectsToRenderTexture: the call returned false before replacing the destination, so its previously published pixels are a STALE DESTINATION — handle the false return before sampling dest, and make the source and runners available before retrying';
|
|
35
|
+
default:
|
|
36
|
+
return `applyWgpuRenderEffectsToRenderTexture: no registered runner for any of ${explanation.unregisteredKinds.join(', ')}, so the call returned false and the destination was NEVER WRITTEN — anything sampling it reads a stale or empty texture; call registerWgpuRenderEffect(state, kind, runner)`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function warnWgpuRenderEffectApplication(_state, explanation) {
|
|
40
|
+
// Keyed by status plus the kinds involved: a chain missing a different effect is a different
|
|
41
|
+
// observation worth reporting, while the same miss every frame is not.
|
|
42
|
+
logOnce(`effects-wgpu:effect-application:${explanation.status}:${explanation.unregisteredKinds.join(',')}`, LogLevel.Warn, {
|
|
43
|
+
message: getWgpuRenderEffectApplicationMessage(explanation),
|
|
44
|
+
registeredCount: explanation.registeredCount,
|
|
45
|
+
requestedCount: explanation.requestedCount,
|
|
46
|
+
status: explanation.status,
|
|
47
|
+
unregisteredKinds: explanation.unregisteredKinds,
|
|
48
|
+
}, 'effects-wgpu');
|
|
49
|
+
}
|
|
50
|
+
// A pipeline pass drops an effect whose kind has no runner with a bare `continue`: no draw, no error, no
|
|
51
|
+
// artifact. Seven effect kinds ship a descriptor and a constructor with no runner on ANY backend
|
|
52
|
+
// (AutoExposure, BarrelDistortion, FilmEmulation, PanniniProjection, Ssr, Taa, VolumetricLight), so a
|
|
53
|
+
// caller can build one into a chain and watch nothing happen with nothing to grep for.
|
|
54
|
+
function warnWgpuRenderEffectPipelineSkip(_state, kind) {
|
|
55
|
+
// Keyed by kind, not by frame: the same missing kind every frame is one observation, and a second kind
|
|
56
|
+
// going missing is a new one worth reporting.
|
|
57
|
+
logOnce(`effects-wgpu:pipeline-effect-skipped:${kind}`, LogLevel.Warn, {
|
|
58
|
+
kind,
|
|
59
|
+
message: `endWgpuRenderEffectPipeline: effect kind "${kind}" has no registered runner, so the pass was SKIPPED — the frame was written without it and nothing else reports this; call registerWgpuRenderEffect(state, "${kind}", runner), or check whether this kind has a runner on this backend at all`,
|
|
60
|
+
}, 'effects-wgpu');
|
|
61
|
+
}
|
|
62
|
+
const _guardedStates = new WeakSet();
|
|
63
|
+
//# sourceMappingURL=enableWgpuRenderEffectGuards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableWgpuRenderEffectGuards.js","sourceRoot":"","sources":["../src/enableWgpuRenderEffectGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAEhF,MAAM,UAAU,gCAAgC,CAAC,KAAsB;IACrE,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAsB;IAClE,mCAAmC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,oCAAoC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,uGAAuG;AACvG,wGAAwG;AACxG,yGAAyG;AACzG,gFAAgF;AAChF,EAAE;AACF,oGAAoG;AACpG,0GAA0G;AAC1G,mGAAmG;AACnG,4FAA4F;AAC5F,MAAM,UAAU,4BAA4B,CAAC,KAAsB;IACjE,mCAAmC,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;IAC5E,oCAAoC,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;IAC9E,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,qCAAqC,CAAC,WAA6D;IAC1G,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,sBAAsB;YACzB,OAAO,0CAA0C,WAAW,CAAC,iBAAiB,CAAC,MAAM,OAAO,WAAW,CAAC,cAAc,+JAA+J,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClU,KAAK,oBAAoB;YACvB,OAAO,+MAA+M,CAAC;QACzN,KAAK,mBAAmB;YACtB,OAAO,uQAAuQ,CAAC;QACjR;YACE,OAAO,0EAA0E,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,8KAA8K,CAAC;IAC5S,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CACtC,MAAuB,EACvB,WAA6D;IAE7D,6FAA6F;IAC7F,uEAAuE;IACvE,OAAO,CACL,mCAAmC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAClG,QAAQ,CAAC,IAAI,EACb;QACE,OAAO,EAAE,qCAAqC,CAAC,WAAW,CAAC;QAC3D,eAAe,EAAE,WAAW,CAAC,eAAe;QAC5C,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;KACjD,EACD,cAAc,CACf,CAAC;AACJ,CAAC;AAED,yGAAyG;AACzG,iGAAiG;AACjG,sGAAsG;AACtG,uFAAuF;AACvF,SAAS,gCAAgC,CAAC,MAAuB,EAAE,IAAY;IAC7E,uGAAuG;IACvG,8CAA8C;IAC9C,OAAO,CACL,wCAAwC,IAAI,EAAE,EAC9C,QAAQ,CAAC,IAAI,EACb;QACE,IAAI;QACJ,OAAO,EAAE,6CAA6C,IAAI,+JAA+J,IAAI,4EAA4E;KAC1S,EACD,cAAc,CACf,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,OAAO,EAAmB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner,
|
|
1
|
+
export { applyWgpuRenderEffectsToRenderTexture, beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, defaultWgpuBevelEffectRunner, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBlurEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuContactShadowsEffectRunner, defaultWgpuConvolutionEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuDropShadowEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuGradientBevelEffectRunner, defaultWgpuGradientGlowEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuInnerGlowEffectRunner, defaultWgpuInnerShadowEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMedianEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOuterGlowEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuBevelEffect, registerWgpuBlurEffect, registerWgpuContactShadowsEffect, registerWgpuDropShadowEffect, registerWgpuGradientBevelEffect, registerWgpuGradientGlowEffect, registerWgpuInnerGlowEffect, registerWgpuInnerShadowEffect, registerWgpuOuterGlowEffect, registerWgpuBlendEffect, registerWgpuBloomEffect, registerWgpuCameraMotionBlurEffect, registerWgpuChromaticAberrationEffect, registerWgpuCompositeEffect, registerWgpuConvolutionEffect, registerWgpuCrtEffect, registerWgpuDirectionalBlurEffect, registerWgpuDisplacementEffect, registerWgpuDitherEffect, registerWgpuFilmGrainEffect, registerWgpuFxaaEffect, registerWgpuGlitchEffect, registerWgpuGodRaysEffect, registerWgpuHalftoneEffect, registerWgpuKuwaharaEffect, registerWgpuLensDirtEffect, registerWgpuLensDistortionEffect, registerWgpuLensFlareEffect, registerWgpuMedianEffect, registerWgpuMotionBlurEffect, registerWgpuOutlineEffect, registerWgpuPixelateEffect, registerWgpuPosterizeEffect, registerWgpuRadialBlurEffect, registerWgpuScanlinesEffect, registerWgpuScreenSpaceFogEffect, registerWgpuSharpenEffect, registerWgpuSketchEffect, registerWgpuSmaaEffect, registerWgpuSsaoEffect, registerWgpuTiltShiftEffect, registerWgpuToneMapEffect, registerWgpuVignetteEffect, registerWgpuWhiteBalanceEffect, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,kCAAkC,EAClC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner,
|
|
1
|
+
export { applyWgpuRenderEffectsToRenderTexture, beginWgpuRenderEffectPipeline, createWgpuRenderEffectPipeline, defaultWgpuBevelEffectRunner, defaultWgpuBlendEffectRunner, defaultWgpuBloomEffectRunner, defaultWgpuBlurEffectRunner, defaultWgpuCameraMotionBlurEffectRunner, defaultWgpuChromaticAberrationEffectRunner, defaultWgpuCompositeEffectRunner, defaultWgpuContactShadowsEffectRunner, defaultWgpuConvolutionEffectRunner, defaultWgpuCrtEffectRunner, defaultWgpuDirectionalBlurEffectRunner, defaultWgpuDisplacementEffectRunner, defaultWgpuDitherEffectRunner, defaultWgpuDropShadowEffectRunner, defaultWgpuFilmGrainEffectRunner, defaultWgpuFxaaEffectRunner, defaultWgpuGlitchEffectRunner, defaultWgpuGodRaysEffectRunner, defaultWgpuGradientBevelEffectRunner, defaultWgpuGradientGlowEffectRunner, defaultWgpuHalftoneEffectRunner, defaultWgpuInnerGlowEffectRunner, defaultWgpuInnerShadowEffectRunner, defaultWgpuKuwaharaEffectRunner, defaultWgpuLensDirtEffectRunner, defaultWgpuLensDistortionEffectRunner, defaultWgpuLensFlareEffectRunner, defaultWgpuMedianEffectRunner, defaultWgpuMotionBlurEffectRunner, defaultWgpuOuterGlowEffectRunner, defaultWgpuOutlineEffectRunner, defaultWgpuPixelateEffectRunner, defaultWgpuPosterizeEffectRunner, defaultWgpuRadialBlurEffectRunner, defaultWgpuScanlinesEffectRunner, defaultWgpuScreenSpaceFogEffectRunner, defaultWgpuSharpenEffectRunner, defaultWgpuSketchEffectRunner, defaultWgpuSmaaEffectRunner, defaultWgpuSsaoEffectRunner, defaultWgpuTiltShiftEffectRunner, defaultWgpuToneMapEffectRunner, defaultWgpuVignetteEffectRunner, defaultWgpuWhiteBalanceEffectRunner, endWgpuRenderEffectPipeline, registerWgpuBlendEffectBackdrop, registerWgpuBevelEffect, registerWgpuBlurEffect, registerWgpuContactShadowsEffect, registerWgpuDropShadowEffect, registerWgpuGradientBevelEffect, registerWgpuGradientGlowEffect, registerWgpuInnerGlowEffect, registerWgpuInnerShadowEffect, registerWgpuOuterGlowEffect, registerWgpuBlendEffect, registerWgpuBloomEffect, registerWgpuCameraMotionBlurEffect, registerWgpuChromaticAberrationEffect, registerWgpuCompositeEffect, registerWgpuConvolutionEffect, registerWgpuCrtEffect, registerWgpuDirectionalBlurEffect, registerWgpuDisplacementEffect, registerWgpuDitherEffect, registerWgpuFilmGrainEffect, registerWgpuFxaaEffect, registerWgpuGlitchEffect, registerWgpuGodRaysEffect, registerWgpuHalftoneEffect, registerWgpuKuwaharaEffect, registerWgpuLensDirtEffect, registerWgpuLensDistortionEffect, registerWgpuLensFlareEffect, registerWgpuMedianEffect, registerWgpuMotionBlurEffect, registerWgpuOutlineEffect, registerWgpuPixelateEffect, registerWgpuPosterizeEffect, registerWgpuRadialBlurEffect, registerWgpuScanlinesEffect, registerWgpuScreenSpaceFogEffect, registerWgpuSharpenEffect, registerWgpuSketchEffect, registerWgpuSmaaEffect, registerWgpuSsaoEffect, registerWgpuTiltShiftEffect, registerWgpuToneMapEffect, registerWgpuVignetteEffect, registerWgpuWhiteBalanceEffect, registerWgpuRenderEffect, setWgpuRenderEffectVelocityTexture, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,EAC1C,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,0BAA0B,EAC1B,sCAAsC,EACtC,mCAAmC,EACnC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAC/B,+BAA+B,EAC/B,qCAAqC,EACrC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,qCAAqC,EACrC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,kCAAkC,EAClC,qCAAqC,EACrC,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,YAAY,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BevelEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget, WgpuRenderTargetPool } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyBevelEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, pool: WgpuRenderTargetPool, effect: Readonly<BevelEffect>): void;
|
|
3
3
|
export declare const defaultWgpuBevelEffectRunner: WgpuRenderEffectRunner;
|
|
4
|
+
export declare function registerWgpuBevelEffect(state: WgpuRenderState): void;
|
|
4
5
|
//# sourceMappingURL=wgpuBevelEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBevelEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBevelEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuBevelEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBevelEffect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAgBlC,wBAAgB,sBAAsB,CACpC,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,WAAW,CAAC,GAC5B,IAAI,CAyDN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEpE"}
|
package/dist/wgpuBevelEffect.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { getColorAlpha, getColorRgb } from '@flighthq/color/contract';
|
|
1
2
|
import { acquireWgpuRenderTarget, releaseWgpuRenderTarget } from '@flighthq/render-wgpu/contract';
|
|
2
3
|
import { applyWgpuEffectBlitPass, applyWgpuEffectErasePass } from './wgpuEffectBlitShader';
|
|
3
4
|
import { applyWgpuEffectBoxBlur } from './wgpuEffectBoxBlur';
|
|
4
5
|
import { clearWgpuEffectTarget, createWgpuDualSourceEffectPipeline, drawWgpuDualSourceEffectPass, } from './wgpuEffectPass';
|
|
5
6
|
import { applyWgpuEffectTintPass } from './wgpuEffectTintShader';
|
|
7
|
+
import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
|
|
6
8
|
// Bevel composite effect: the directional gradient of the blurred silhouette drives a highlight/shadow edge band, clipped by bevelType, then sourceMode decides source compositing.
|
|
7
9
|
// Full-frame realization: acquires the recipe's three scratch targets from the effect pool, runs the
|
|
8
10
|
// multi-pass recipe (neutral tint → box blur → directional-gradient composite), then releases them.
|
|
@@ -18,17 +20,22 @@ export function applyBevelEffectToWgpu(state, source, dest, pool, effect) {
|
|
|
18
20
|
// Match the surface reference, which snaps the light offset to whole pixels.
|
|
19
21
|
const offsetX = Math.round(Math.cos(angle) * distance);
|
|
20
22
|
const offsetY = Math.round(Math.sin(angle) * distance);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
23
|
+
// The color is packed RGBA and its alpha multiplies the separate *Alpha field, matching what
|
|
24
|
+
// BitmapBevelOptions does offscreen. The composite still wants RGB plus one alpha, so the split
|
|
25
|
+
// happens here rather than in the shader.
|
|
26
|
+
const shadowPacked = effect.shadowColor ?? 0x000000ff;
|
|
27
|
+
const shadowColor = getColorRgb(shadowPacked);
|
|
28
|
+
const shadowAlpha = (effect.shadowAlpha ?? 1) * getColorAlpha(shadowPacked);
|
|
29
|
+
const highlightPacked = effect.highlightColor ?? 0xffffffff;
|
|
30
|
+
const highlightColor = getColorRgb(highlightPacked);
|
|
31
|
+
const highlightAlpha = (effect.highlightAlpha ?? 1) * getColorAlpha(highlightPacked);
|
|
25
32
|
const strength = effect.strength ?? 1;
|
|
26
33
|
const quality = Math.max(1, Math.round(effect.quality ?? 1));
|
|
27
34
|
const sourceMode = effect.sourceMode ?? 'draw';
|
|
28
35
|
const bevelType = effect.bevelType ?? 'inner';
|
|
29
36
|
// Blurred alpha field (neutral white tint, strength 1 — strength is the gradient
|
|
30
37
|
// intensity applied per-pixel in the composite, not baked into the field).
|
|
31
|
-
applyWgpuEffectTintPass(state, src, tinted,
|
|
38
|
+
applyWgpuEffectTintPass(state, src, tinted, 0xffffffff, 1, 1);
|
|
32
39
|
applyWgpuEffectBoxBlur(state, tinted, blurred, blurTemp, {
|
|
33
40
|
blurX: effect.blurX ?? 4,
|
|
34
41
|
blurY: effect.blurY ?? 4,
|
|
@@ -39,8 +46,8 @@ export function applyBevelEffectToWgpu(state, source, dest, pool, effect) {
|
|
|
39
46
|
applyWgpuEffectBlitPass(state, src, dst);
|
|
40
47
|
applyWgpuBevelCompositePass(state, blurred, src, dst, {
|
|
41
48
|
offsetX: offsetX / source.width,
|
|
42
|
-
// Negate Y
|
|
43
|
-
//
|
|
49
|
+
// Negate Y to map the screen-space-Y-down light direction into the bottom-left-origin
|
|
50
|
+
// render-target contents, matching the Gl bevel and Wgpu offset-blit conventions.
|
|
44
51
|
offsetY: -offsetY / source.height,
|
|
45
52
|
highlightColor,
|
|
46
53
|
highlightAlpha,
|
|
@@ -58,6 +65,9 @@ export function applyBevelEffectToWgpu(state, source, dest, pool, effect) {
|
|
|
58
65
|
export const defaultWgpuBevelEffectRunner = (ctx, effect) => {
|
|
59
66
|
applyBevelEffectToWgpu(ctx.state, ctx.source, ctx.dest, ctx.pool, effect);
|
|
60
67
|
};
|
|
68
|
+
export function registerWgpuBevelEffect(state) {
|
|
69
|
+
registerWgpuRenderEffect(state, 'BevelEffect', defaultWgpuBevelEffectRunner);
|
|
70
|
+
}
|
|
61
71
|
// Reads the blurred alpha field (group 1) and source (group 2); writes the tinted, clipped bevel
|
|
62
72
|
// mask, premultiplied, blended over `dest` (which already holds the source when sourceMode is 'draw').
|
|
63
73
|
const BEVEL_COMPOSITE_WGSL = /* wgsl */ `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBevelEffect.js","sourceRoot":"","sources":["../src/wgpuBevelEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAUlG,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,qBAAqB,EACrB,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuBevelEffect.js","sourceRoot":"","sources":["../src/wgpuBevelEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAUlG,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,qBAAqB,EACrB,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,oLAAoL;AACpL,qGAAqG;AACrG,oGAAoG;AACpG,MAAM,UAAU,sBAAsB,CACpC,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,IAA0B,EAC1B,MAA6B;IAE7B,MAAM,GAAG,GAAG,MAA0B,CAAC;IACvC,MAAM,GAAG,GAAG,IAAwB,CAAC;IACrC,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACzF,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAElE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvD,6FAA6F;IAC7F,gGAAgG;IAChG,0CAA0C;IAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC;IACtD,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,IAAI,UAAU,CAAC;IAC5D,MAAM,cAAc,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC;IAE9C,iFAAiF;IACjF,2EAA2E;IAC3E,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;QACvD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;QACxB,MAAM,EAAE,OAAO;KAChB,CAAC,CAAC;IAEH,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,UAAU,KAAK,MAAM;QAAE,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEpE,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;QACpD,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,KAAK;QAC/B,sFAAsF;QACtF,kFAAkF;QAClF,OAAO,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM;QACjC,cAAc;QACd,cAAc;QACd,WAAW;QACX,WAAW;QACX,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACpE,CAAC,CAAC;IAEH,IAAI,UAAU,KAAK,UAAU;QAAE,wBAAwB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEzE,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAClF,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAqB,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,KAAsB;IAC5D,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,4BAA4B,CAAC,CAAC;AAC/E,CAAC;AAED,iGAAiG;AACjG,uGAAuG;AACvG,MAAM,oBAAoB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCtC,CAAC;AAaH,SAAS,2BAA2B,CAClC,KAAsB,EACtB,KAAuB,EACvB,MAAwB,EACxB,IAAsB,EACtB,MAA4B;IAE5B,MAAM,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACpD,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QACzE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QACtD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QACrD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAC9C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;QAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAClD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACxB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACxB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3B,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAsB;IACzD,IAAI,CAAC,GAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,CAAC,GAAG,kCAAkC,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACpE,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,uBAAuB,GAAG,IAAI,OAAO,EAAiD,CAAC"}
|
|
@@ -3,7 +3,8 @@ export declare function applyBlendEffectToWgpu(state: WgpuRenderState, source: R
|
|
|
3
3
|
export declare const defaultWgpuBlendEffectRunner: WgpuRenderEffectRunner;
|
|
4
4
|
export declare function getWgpuBlendEffectBackdrop(state: WgpuRenderState, backdropKey: string | null): WgpuRenderTarget | null;
|
|
5
5
|
export declare function getWgpuBlendEffectModeIndex(mode: AdvancedBlendMode): number;
|
|
6
|
+
export declare function registerWgpuBlendEffect(state: WgpuRenderState): void;
|
|
6
7
|
export declare function registerWgpuBlendEffectBackdrop(state: WgpuRenderState, backdropKey: string, target: WgpuRenderTarget): void;
|
|
7
8
|
export declare function unregisterWgpuBlendEffectBackdrop(state: WgpuRenderState, backdropKey: string): boolean;
|
|
8
|
-
export declare const WGPU_BLEND_FRAGMENT_WGSL = "\nstruct Uniforms {\n mode : i32,\n opacity : f32,\n hasBackdrop : i32,\n _pad0 : f32,\n}\n@group(0) @binding(0) var<uniform> uni : Uniforms;\n@group(1) @binding(0) var layerTexture : texture_2d<f32>;\n@group(1) @binding(1) var layerSampler : sampler;\n@group(2) @binding(0) var backdropTexture : texture_2d<f32>;\n@group(2) @binding(1) var backdropSampler : sampler;\n\nfn lum(c : vec3f) -> f32 {\n return dot(c, vec3f(0.3, 0.59, 0.11));\n}\n\nfn sat(c : vec3f) -> f32 {\n return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);\n}\n\nfn clipColor(inputColor : vec3f) -> vec3f {\n var c = inputColor;\n let l = lum(c);\n let mn = min(min(c.r, c.g), c.b);\n let mx = max(max(c.r, c.g), c.b);\n if (mn < 0.0) {\n c = vec3f(l) + (c - vec3f(l)) * l / (l - mn);\n }\n if (mx > 1.0) {\n c = vec3f(l) + (c - vec3f(l)) * (1.0 - l) / (mx - l);\n }\n return c;\n}\n\nfn setLum(c : vec3f, l : f32) -> vec3f {\n return clipColor(c + vec3f(l - lum(c)));\n}\n\nfn setSat(c : vec3f, s : f32) -> vec3f {\n let mn = min(min(c.r, c.g), c.b);\n let mx = max(max(c.r, c.g), c.b);\n let md = c.r + c.g + c.b - mn - mx;\n let rmid = select(0.0, (md - mn) * s / (mx - mn), mx > mn);\n let rmax = select(0.0, s, mx > mn);\n var out = vec3f(0.0);\n out.r = select(select(rmid, 0.0, c.r == mn), rmax, c.r == mx);\n out.g = select(select(rmid, 0.0, c.g == mn), rmax, c.g == mx);\n out.b = select(select(rmid, 0.0, c.b == mn), rmax, c.b == mx);\n return out;\n}\n\nfn sepChannel(mode : i32, cb : f32, cs : f32) -> f32 {\n if (mode == 0) {\n return select(1.0 - 2.0 * (1.0 - cb) * (1.0 - cs), 2.0 * cb * cs, cb <= 0.5);\n }\n if (mode == 1) {\n return select(1.0 - 2.0 * (1.0 - cb) * (1.0 - cs), 2.0 * cb * cs, cs <= 0.5);\n }\n if (mode == 2) {\n let d = select(sqrt(cb), ((16.0 * cb - 12.0) * cb + 4.0) * cb, cb <= 0.25);\n return select(cb + (2.0 * cs - 1.0) * (d - cb), cb - (1.0 - 2.0 * cs) * cb * (1.0 - cb), cs <= 0.5);\n }\n if (mode == 3) { return abs(cb - cs); }\n if (mode == 4) { return cb + cs - 2.0 * cb * cs; }\n if (mode == 5) {\n if (cb <= 0.0) { return 0.0; }\n return select(min(1.0, cb / (1.0 - cs)), 1.0, cs >= 1.0);\n }\n if (mode == 6) {\n if (cb >= 1.0) { return 1.0; }\n return select(1.0 - min(1.0, (1.0 - cb) / cs), 0.0, cs <= 0.0);\n }\n return cs;\n}\n\nfn blendRgb(mode : i32, cb : vec3f, cs : vec3f) -> vec3f {\n if (mode == 7) { return setLum(setSat(cs, sat(cb)), lum(cb)); }\n if (mode == 8) { return setLum(setSat(cb, sat(cs)), lum(cb)); }\n if (mode == 9) { return setLum(cs, lum(cb)); }\n if (mode == 10) { return setLum(cb, lum(cs)); }\n return vec3f(\n sepChannel(mode, cb.r, cs.r),\n sepChannel(mode, cb.g, cs.g),\n sepChannel(mode, cb.b, cs.b),\n );\n}\n\n@fragment\nfn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {\n let layer = textureSampleLevel(layerTexture, layerSampler, uv, 0.0);\n if (uni.hasBackdrop == 0) {\n return layer;\n }\n let back = textureSampleLevel(backdropTexture, backdropSampler, uv, 0.0);\n let cs = select(vec3f(0.0), layer.rgb / layer.a, layer.a > 0.0);\n let cb = select(vec3f(0.0), back.rgb / back.a, back.a > 0.0);\n let sourceAlpha = layer.a * uni.opacity;\n let backdropAlpha = back.a;\n let blended = blendRgb(uni.mode, cb, cs);\n let mixed = (1.0 - backdropAlpha) * cs + backdropAlpha * blended;\n let outAlpha = sourceAlpha + backdropAlpha * (1.0 - sourceAlpha);\n let outRgb = mixed * sourceAlpha + cb * backdropAlpha * (1.0 - sourceAlpha);\n return vec4f(outRgb, outAlpha);\n}\n";
|
|
9
|
+
export declare const WGPU_BLEND_FRAGMENT_WGSL = "\nstruct Uniforms {\n mode : i32,\n opacity : f32,\n hasBackdrop : i32,\n _pad0 : f32,\n}\n@group(0) @binding(0) var<uniform> uni : Uniforms;\n@group(1) @binding(0) var layerTexture : texture_2d<f32>;\n@group(1) @binding(1) var layerSampler : sampler;\n@group(2) @binding(0) var backdropTexture : texture_2d<f32>;\n@group(2) @binding(1) var backdropSampler : sampler;\n\nfn lum(c : vec3f) -> f32 {\n return dot(c, vec3f(0.3, 0.59, 0.11));\n}\n\nfn sat(c : vec3f) -> f32 {\n return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);\n}\n\nfn clipColor(inputColor : vec3f) -> vec3f {\n var c = inputColor;\n let l = lum(c);\n let mn = min(min(c.r, c.g), c.b);\n let mx = max(max(c.r, c.g), c.b);\n if (mn < 0.0) {\n c = vec3f(l) + (c - vec3f(l)) * l / (l - mn);\n }\n if (mx > 1.0) {\n c = vec3f(l) + (c - vec3f(l)) * (1.0 - l) / (mx - l);\n }\n return c;\n}\n\nfn setLum(c : vec3f, l : f32) -> vec3f {\n return clipColor(c + vec3f(l - lum(c)));\n}\n\nfn setSat(c : vec3f, s : f32) -> vec3f {\n let mn = min(min(c.r, c.g), c.b);\n let mx = max(max(c.r, c.g), c.b);\n let md = c.r + c.g + c.b - mn - mx;\n let rmid = select(0.0, (md - mn) * s / (mx - mn), mx > mn);\n let rmax = select(0.0, s, mx > mn);\n var out = vec3f(0.0);\n out.r = select(select(rmid, 0.0, c.r == mn), rmax, c.r == mx);\n out.g = select(select(rmid, 0.0, c.g == mn), rmax, c.g == mx);\n out.b = select(select(rmid, 0.0, c.b == mn), rmax, c.b == mx);\n return out;\n}\n\nfn sepChannel(mode : i32, cb : f32, cs : f32) -> f32 {\n if (mode == 0) {\n return select(1.0 - 2.0 * (1.0 - cb) * (1.0 - cs), 2.0 * cb * cs, cb <= 0.5);\n }\n if (mode == 1) {\n return select(1.0 - 2.0 * (1.0 - cb) * (1.0 - cs), 2.0 * cb * cs, cs <= 0.5);\n }\n if (mode == 2) {\n let d = select(sqrt(cb), ((16.0 * cb - 12.0) * cb + 4.0) * cb, cb <= 0.25);\n return select(cb + (2.0 * cs - 1.0) * (d - cb), cb - (1.0 - 2.0 * cs) * cb * (1.0 - cb), cs <= 0.5);\n }\n if (mode == 3) { return abs(cb - cs); }\n if (mode == 4) { return cb + cs - 2.0 * cb * cs; }\n if (mode == 5) {\n if (cb <= 0.0) { return 0.0; }\n return select(min(1.0, cb / (1.0 - cs)), 1.0, cs >= 1.0);\n }\n if (mode == 6) {\n if (cb >= 1.0) { return 1.0; }\n return select(1.0 - min(1.0, (1.0 - cb) / cs), 0.0, cs <= 0.0);\n }\n if (mode == 11) { return min(cb, cs); }\n if (mode == 12) { return max(cb, cs); }\n return cs;\n}\n\nfn blendRgb(mode : i32, cb : vec3f, cs : vec3f) -> vec3f {\n if (mode == 7) { return setLum(setSat(cs, sat(cb)), lum(cb)); }\n if (mode == 8) { return setLum(setSat(cb, sat(cs)), lum(cb)); }\n if (mode == 9) { return setLum(cs, lum(cb)); }\n if (mode == 10) { return setLum(cb, lum(cs)); }\n return vec3f(\n sepChannel(mode, cb.r, cs.r),\n sepChannel(mode, cb.g, cs.g),\n sepChannel(mode, cb.b, cs.b),\n );\n}\n\n@fragment\nfn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {\n let layer = textureSampleLevel(layerTexture, layerSampler, uv, 0.0);\n if (uni.hasBackdrop == 0) {\n return layer;\n }\n let back = textureSampleLevel(backdropTexture, backdropSampler, uv, 0.0);\n let cs = select(vec3f(0.0), layer.rgb / layer.a, layer.a > 0.0);\n let cb = select(vec3f(0.0), back.rgb / back.a, back.a > 0.0);\n let sourceAlpha = layer.a * uni.opacity;\n let backdropAlpha = back.a;\n let blended = blendRgb(uni.mode, cb, cs);\n let mixed = (1.0 - backdropAlpha) * cs + backdropAlpha * blended;\n let outAlpha = sourceAlpha + backdropAlpha * (1.0 - sourceAlpha);\n let outRgb = mixed * sourceAlpha + cb * backdropAlpha * (1.0 - sourceAlpha);\n return vec4f(outRgb, outAlpha);\n}\n";
|
|
9
10
|
//# sourceMappingURL=wgpuBlendEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBlendEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBlendEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EAEX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuBlendEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBlendEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EAEX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAUlC,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,IAAI,CAiBN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC;AAGF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,gBAAgB,GAAG,IAAI,CAGzB;AAID,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAE3E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEpE;AAID,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,GACvB,IAAI,CAON;AAGD,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEtG;AAgCD,eAAO,MAAM,wBAAwB,8iHA2GpC,CAAC"}
|
package/dist/wgpuBlendEffect.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AdvancedBlendMode as AdvancedBlendModeValues } from '@flighthq/types/contract';
|
|
2
2
|
import { createWgpuDualSourceEffectPipeline, drawWgpuDualSourceEffectPass } from './wgpuEffectPass';
|
|
3
|
+
import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
|
|
3
4
|
// Advanced-blend composite pass: reads the incoming layer and an explicitly registered backdrop,
|
|
4
5
|
// applies the same W3C straight-color blend math as glBlendEffect, then writes premultiplied
|
|
5
6
|
// source-over output. A missing backdrop uses the layer as a harmless second binding and the uniform
|
|
@@ -29,6 +30,9 @@ export function getWgpuBlendEffectBackdrop(state, backdropKey) {
|
|
|
29
30
|
export function getWgpuBlendEffectModeIndex(mode) {
|
|
30
31
|
return BLEND_MODE_INDEX[mode] ?? -1;
|
|
31
32
|
}
|
|
33
|
+
export function registerWgpuBlendEffect(state) {
|
|
34
|
+
registerWgpuRenderEffect(state, 'BlendEffect', defaultWgpuBlendEffectRunner);
|
|
35
|
+
}
|
|
32
36
|
// Registers a borrowed render target as a named backdrop. Last write wins; the registry never owns or
|
|
33
37
|
// destroys the target, so its caller must keep it alive until the BlendEffect pass completes.
|
|
34
38
|
export function registerWgpuBlendEffectBackdrop(state, backdropKey, target) {
|
|
@@ -63,6 +67,8 @@ const BLEND_MODE_INDEX = {
|
|
|
63
67
|
[AdvancedBlendModeValues.Saturation]: 8,
|
|
64
68
|
[AdvancedBlendModeValues.Color]: 9,
|
|
65
69
|
[AdvancedBlendModeValues.Luminosity]: 10,
|
|
70
|
+
[AdvancedBlendModeValues.Darken]: 11,
|
|
71
|
+
[AdvancedBlendModeValues.Lighten]: 12,
|
|
66
72
|
};
|
|
67
73
|
const backdrops = new WeakMap();
|
|
68
74
|
const pipelines = new WeakMap();
|
|
@@ -141,6 +147,8 @@ fn sepChannel(mode : i32, cb : f32, cs : f32) -> f32 {
|
|
|
141
147
|
if (cb >= 1.0) { return 1.0; }
|
|
142
148
|
return select(1.0 - min(1.0, (1.0 - cb) / cs), 0.0, cs <= 0.0);
|
|
143
149
|
}
|
|
150
|
+
if (mode == 11) { return min(cb, cs); }
|
|
151
|
+
if (mode == 12) { return max(cb, cs); }
|
|
144
152
|
return cs;
|
|
145
153
|
}
|
|
146
154
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBlendEffect.js","sourceRoot":"","sources":["../src/wgpuBlendEffect.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExF,OAAO,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuBlendEffect.js","sourceRoot":"","sources":["../src/wgpuBlendEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BloomEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget, WgpuRenderTargetPool } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyBloomEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, pool: WgpuRenderTargetPool, effect: Readonly<BloomEffect>): void;
|
|
3
3
|
export declare const defaultWgpuBloomEffectRunner: WgpuRenderEffectRunner;
|
|
4
|
+
export declare function registerWgpuBloomEffect(state: WgpuRenderState): void;
|
|
4
5
|
//# sourceMappingURL=wgpuBloomEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBloomEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuBloomEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAalC,wBAAgB,sBAAsB,CACpC,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,WAAW,CAAC,GAC5B,IAAI,CAgCN;AAED,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEpE"}
|
package/dist/wgpuBloomEffect.js
CHANGED
|
@@ -3,6 +3,7 @@ import { acquireWgpuRenderTarget, releaseWgpuRenderTarget } from '@flighthq/rend
|
|
|
3
3
|
import { applyGaussianBlurToWgpu } from './wgpuBlurEffect';
|
|
4
4
|
import { createWgpuDualSourceEffectPipeline, drawWgpuDualSourceEffectPass, drawWgpuEffectPass } from './wgpuEffectPass';
|
|
5
5
|
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
6
|
+
import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
|
|
6
7
|
// Bloom: bright-pass → blur the bright branch (via the effects-owned separable gaussian blur) →
|
|
7
8
|
// additively composite back. The multi-pass reference recipe — it acquires intermediate targets from
|
|
8
9
|
// the pool and releases them, branches, and reuses the blur primitive, which is what makes it an effect.
|
|
@@ -32,6 +33,9 @@ export function applyBloomEffectToWgpu(state, source, dest, pool, effect) {
|
|
|
32
33
|
export const defaultWgpuBloomEffectRunner = (ctx, effect) => {
|
|
33
34
|
applyBloomEffectToWgpu(ctx.state, ctx.source, ctx.dest, ctx.pool, effect);
|
|
34
35
|
};
|
|
36
|
+
export function registerWgpuBloomEffect(state) {
|
|
37
|
+
registerWgpuRenderEffect(state, 'BloomEffect', defaultWgpuBloomEffectRunner);
|
|
38
|
+
}
|
|
35
39
|
// The composite pipeline reads two textures (scene = group 1, blurred = group 2) so it uses the
|
|
36
40
|
// dual-source filter primitive; cached per state alongside the single-source pipelines.
|
|
37
41
|
function getBloomCompositePipeline(state) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBloomEffect.js","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAClH,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAUlG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuBloomEffect.js","sourceRoot":"","sources":["../src/wgpuBloomEffect.ts"],"names":[],"mappings":"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"}
|
package/dist/wgpuBlurEffect.d.ts
CHANGED
|
@@ -5,4 +5,5 @@ export declare function applyGaussianBlurToWgpu(state: WgpuRenderState, source:
|
|
|
5
5
|
blurY?: number;
|
|
6
6
|
}>): void;
|
|
7
7
|
export declare const defaultWgpuBlurEffectRunner: WgpuRenderEffectRunner;
|
|
8
|
+
export declare function registerWgpuBlurEffect(state: WgpuRenderState): void;
|
|
8
9
|
//# sourceMappingURL=wgpuBlurEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBlurEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuBlurEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AActH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC3B,IAAI,CAEN;AAMD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,OAAO,EAAE,QAAQ,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACpD,IAAI,CAON;AAED,eAAO,MAAM,2BAA2B,EAAE,sBAKzC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEnE"}
|
package/dist/wgpuBlurEffect.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { acquireWgpuRenderTarget, releaseWgpuRenderTarget } from '@flighthq/render-wgpu/contract';
|
|
2
2
|
import { drawWgpuEffectPass } from './wgpuEffectPass';
|
|
3
3
|
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
4
|
+
import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
|
|
4
5
|
// Plain separable Gaussian blur: two axis passes (source → temp horizontally, temp → dest vertically),
|
|
5
6
|
// each a single weighted fullscreen pass with radius ⌈3σ⌉. `blurX`/`blurY` are the Gaussian standard
|
|
6
7
|
// deviations (CSS `blur(Xpx)` uses sigma = X), matching the CSS and surface Gaussian references and the
|
|
@@ -29,6 +30,9 @@ export const defaultWgpuBlurEffectRunner = (ctx, effect) => {
|
|
|
29
30
|
applyBlurEffectToWgpu(ctx.state, ctx.source, ctx.dest, temp, effect);
|
|
30
31
|
releaseWgpuRenderTarget(ctx.pool, temp);
|
|
31
32
|
};
|
|
33
|
+
export function registerWgpuBlurEffect(state) {
|
|
34
|
+
registerWgpuRenderEffect(state, 'BlurEffect', defaultWgpuBlurEffectRunner);
|
|
35
|
+
}
|
|
32
36
|
function applyWgpuGaussianBlurPass(state, source, dest, sigma, radius, dirX, dirY) {
|
|
33
37
|
const pipeline = getWgpuEffectPipeline(state, 'blur.gaussian', GAUSSIAN_BLUR_WGSL, 'replace');
|
|
34
38
|
drawWgpuEffectPass(state, source, dest, pipeline, (f32) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuBlurEffect.js","sourceRoot":"","sources":["../src/wgpuBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGlG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuBlurEffect.js","sourceRoot":"","sources":["../src/wgpuBlurEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CameraMotionBlurEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyCameraMotionBlurEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<CameraMotionBlurEffect>): void;
|
|
3
3
|
export declare const defaultWgpuCameraMotionBlurEffectRunner: WgpuRenderEffectRunner;
|
|
4
|
+
export declare function registerWgpuCameraMotionBlurEffect(state: WgpuRenderState): void;
|
|
4
5
|
//# sourceMappingURL=wgpuCameraMotionBlurEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuCameraMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuCameraMotionBlurEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAWlC,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GACvC,IAAI,CAQN;AAED,eAAO,MAAM,uCAAuC,EAAE,sBAErD,CAAC;AAEF,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE/E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawWgpuEffectPass } from './wgpuEffectPass';
|
|
2
2
|
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
3
|
+
import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
|
|
3
4
|
// Camera3D motion blur: a real single-pass radial/zoom blur scaled by intensity — smears each sample
|
|
4
5
|
// toward the screen center. A legitimate 2D effect on its own, the Wgpu mirror of effects-gl's
|
|
5
6
|
// applyCameraMotionBlurEffectToGl. Two richer variants are 2D-native follow-ups, not 3D-gated:
|
|
@@ -17,6 +18,9 @@ export function applyCameraMotionBlurEffectToWgpu(state, source, dest, effect) {
|
|
|
17
18
|
export const defaultWgpuCameraMotionBlurEffectRunner = (ctx, effect) => {
|
|
18
19
|
applyCameraMotionBlurEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
|
|
19
20
|
};
|
|
21
|
+
export function registerWgpuCameraMotionBlurEffect(state) {
|
|
22
|
+
registerWgpuRenderEffect(state, 'CameraMotionBlurEffect', defaultWgpuCameraMotionBlurEffectRunner);
|
|
23
|
+
}
|
|
20
24
|
// Slot layout: [0]=intensity, [1]=samples. SAMPLES caps the loop; min(u_samples, 16.0) gates the taps.
|
|
21
25
|
const CAMERA_MOTION_BLUR_FRAGMENT_WGSL = /* wgsl */ `
|
|
22
26
|
struct Uniforms {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuCameraMotionBlurEffect.js","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuCameraMotionBlurEffect.js","sourceRoot":"","sources":["../src/wgpuCameraMotionBlurEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,qGAAqG;AACrG,+FAA+F;AAC/F,+FAA+F;AAC/F,uGAAuG;AACvG,gFAAgF;AAChF,MAAM,UAAU,iCAAiC,CAC/C,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAAwC;IAExC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,SAAS,CAAC,CAAC;IACtH,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,OAAO,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,uCAAuC,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAC7F,iCAAiC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAgC,CAAC,CAAC;AACvG,CAAC,CAAC;AAEF,MAAM,UAAU,kCAAkC,CAAC,KAAsB;IACvE,wBAAwB,CAAC,KAAK,EAAE,wBAAwB,EAAE,uCAAuC,CAAC,CAAC;AACrG,CAAC;AAED,uGAAuG;AACvG,MAAM,gCAAgC,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BlD,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ChromaticAberrationEffect, WgpuRenderEffectRunner, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types/contract';
|
|
2
2
|
export declare function applyChromaticAberrationEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<ChromaticAberrationEffect>): void;
|
|
3
3
|
export declare const defaultWgpuChromaticAberrationEffectRunner: WgpuRenderEffectRunner;
|
|
4
|
+
export declare function registerWgpuChromaticAberrationEffect(state: WgpuRenderState): void;
|
|
4
5
|
//# sourceMappingURL=wgpuChromaticAberrationEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuChromaticAberrationEffect.d.ts","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuChromaticAberrationEffect.d.ts","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AASlC,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAChC,MAAM,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC1C,IAAI,CAaN;AAED,eAAO,MAAM,0CAA0C,EAAE,sBAExD,CAAC;AAEF,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAElF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { drawWgpuEffectPass } from './wgpuEffectPass';
|
|
2
2
|
import { getWgpuEffectPipeline } from './wgpuEffectProgramCache';
|
|
3
|
+
import { registerWgpuRenderEffect } from './wgpuRenderEffectRegistry';
|
|
3
4
|
// Chromatic aberration: sample the R/G/B channels at progressively larger offsets so colors fringe
|
|
4
5
|
// apart. When radial, the offset scales with distance from the optical center (true lens behavior);
|
|
5
6
|
// otherwise it is a uniform horizontal split.
|
|
@@ -15,6 +16,9 @@ export function applyChromaticAberrationEffectToWgpu(state, source, dest, effect
|
|
|
15
16
|
export const defaultWgpuChromaticAberrationEffectRunner = (ctx, effect) => {
|
|
16
17
|
applyChromaticAberrationEffectToWgpu(ctx.state, ctx.source, ctx.dest, effect);
|
|
17
18
|
};
|
|
19
|
+
export function registerWgpuChromaticAberrationEffect(state) {
|
|
20
|
+
registerWgpuRenderEffect(state, 'ChromaticAberrationEffect', defaultWgpuChromaticAberrationEffectRunner);
|
|
21
|
+
}
|
|
18
22
|
// Slot layout: [0]=intensity, [1]=radial flag (1.0/0.0).
|
|
19
23
|
const CHROMATIC_ABERRATION_FRAGMENT_WGSL = /* wgsl */ `
|
|
20
24
|
struct Uniforms {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuChromaticAberrationEffect.js","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuChromaticAberrationEffect.js","sourceRoot":"","sources":["../src/wgpuChromaticAberrationEffect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,mGAAmG;AACnG,oGAAoG;AACpG,8CAA8C;AAC9C,MAAM,UAAU,oCAAoC,CAClD,KAAsB,EACtB,MAAkC,EAClC,IAAgC,EAChC,MAA2C;IAE3C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,qBAAqB,CACpC,KAAK,EACL,0BAA0B,EAC1B,kCAAkC,EAClC,SAAS,CACV,CAAC;IACF,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,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,0CAA0C,GAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;IAChG,oCAAoC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAmC,CAAC,CAAC;AAC7G,CAAC,CAAC;AAEF,MAAM,UAAU,qCAAqC,CAAC,KAAsB;IAC1E,wBAAwB,CAAC,KAAK,EAAE,2BAA2B,EAAE,0CAA0C,CAAC,CAAC;AAC3G,CAAC;AAED,yDAAyD;AACzD,MAAM,kCAAkC,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;EAoBpD,CAAC"}
|
|
@@ -2,5 +2,6 @@ import type { CompositeEffect, CompositeOperator, WgpuRenderEffectRunner, WgpuRe
|
|
|
2
2
|
export declare function applyCompositeEffectToWgpu(state: WgpuRenderState, source: Readonly<WgpuRenderTarget>, dest: Readonly<WgpuRenderTarget>, effect: Readonly<CompositeEffect>): void;
|
|
3
3
|
export declare const defaultWgpuCompositeEffectRunner: WgpuRenderEffectRunner;
|
|
4
4
|
export declare function getWgpuCompositeEffectOperatorIndex(operator: CompositeOperator): number;
|
|
5
|
+
export declare function registerWgpuCompositeEffect(state: WgpuRenderState): void;
|
|
5
6
|
export declare const WGPU_COMPOSITE_FRAGMENT_WGSL = "\nstruct Uniforms {\n operatorIndex : i32,\n hasBackdrop : i32,\n _pad0 : vec2f,\n}\n@group(0) @binding(0) var<uniform> uni : Uniforms;\n@group(1) @binding(0) var layerTexture : texture_2d<f32>;\n@group(1) @binding(1) var layerSampler : sampler;\n@group(2) @binding(0) var backdropTexture : texture_2d<f32>;\n@group(2) @binding(1) var backdropSampler : sampler;\n\n@fragment\nfn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f {\n let layer = textureSampleLevel(layerTexture, layerSampler, uv, 0.0);\n let back = select(vec4f(0.0), textureSampleLevel(backdropTexture, backdropSampler, uv, 0.0),\n uni.hasBackdrop == 1);\n let sourceAlpha = layer.a;\n let backdropAlpha = back.a;\n var sourceFactor = 1.0;\n var backdropFactor = 1.0 - sourceAlpha;\n if (uni.operatorIndex == 1) {\n sourceFactor = 1.0 - backdropAlpha; backdropFactor = 1.0;\n } else if (uni.operatorIndex == 2) {\n sourceFactor = backdropAlpha; backdropFactor = 0.0;\n } else if (uni.operatorIndex == 3) {\n sourceFactor = 0.0; backdropFactor = sourceAlpha;\n } else if (uni.operatorIndex == 4) {\n sourceFactor = 1.0 - backdropAlpha; backdropFactor = 0.0;\n } else if (uni.operatorIndex == 5) {\n sourceFactor = 0.0; backdropFactor = 1.0 - sourceAlpha;\n } else if (uni.operatorIndex == 6) {\n sourceFactor = backdropAlpha; backdropFactor = 1.0 - sourceAlpha;\n } else if (uni.operatorIndex == 7) {\n sourceFactor = 1.0 - backdropAlpha; backdropFactor = sourceAlpha;\n } else if (uni.operatorIndex == 8) {\n sourceFactor = 1.0 - backdropAlpha; backdropFactor = 1.0 - sourceAlpha;\n } else if (uni.operatorIndex == 9) {\n sourceFactor = 1.0; backdropFactor = 0.0;\n } else if (uni.operatorIndex == 10) {\n sourceFactor = 0.0; backdropFactor = 0.0;\n }\n return sourceFactor * layer + backdropFactor * back;\n}\n";
|
|
6
7
|
//# sourceMappingURL=wgpuCompositeEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuCompositeEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCompositeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"wgpuCompositeEffect.d.ts","sourceRoot":"","sources":["../src/wgpuCompositeEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AASlC,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,CAcN;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAE9C,CAAC;AAEF,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAEvF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAExE;AA2BD,eAAO,MAAM,4BAA4B,k0DA4CxC,CAAC"}
|