@nodetool-ai/gpu 0.8.1
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/README.md +52 -0
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/blend/blendModes.d.ts +67 -0
- package/dist/blend/blendModes.d.ts.map +1 -0
- package/dist/blend/blendModes.js +80 -0
- package/dist/blend/blendModes.js.map +1 -0
- package/dist/blend/index.d.ts +10 -0
- package/dist/blend/index.d.ts.map +1 -0
- package/dist/blend/index.js +10 -0
- package/dist/blend/index.js.map +1 -0
- package/dist/blend/wgsl.d.ts +16 -0
- package/dist/blend/wgsl.d.ts.map +1 -0
- package/dist/blend/wgsl.js +85 -0
- package/dist/blend/wgsl.js.map +1 -0
- package/dist/compositor/compositor.d.ts +112 -0
- package/dist/compositor/compositor.d.ts.map +1 -0
- package/dist/compositor/compositor.js +353 -0
- package/dist/compositor/compositor.js.map +1 -0
- package/dist/compositor/headless.d.ts +47 -0
- package/dist/compositor/headless.d.ts.map +1 -0
- package/dist/compositor/headless.js +158 -0
- package/dist/compositor/headless.js.map +1 -0
- package/dist/compositor/index.d.ts +8 -0
- package/dist/compositor/index.d.ts.map +1 -0
- package/dist/compositor/index.js +8 -0
- package/dist/compositor/index.js.map +1 -0
- package/dist/compositor/shaders.d.ts +24 -0
- package/dist/compositor/shaders.d.ts.map +1 -0
- package/dist/compositor/shaders.js +241 -0
- package/dist/compositor/shaders.js.map +1 -0
- package/dist/compositor/transform.d.ts +49 -0
- package/dist/compositor/transform.d.ts.map +1 -0
- package/dist/compositor/transform.js +74 -0
- package/dist/compositor/transform.js.map +1 -0
- package/dist/context.d.ts +108 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +205 -0
- package/dist/context.js.map +1 -0
- package/dist/debug/premulValidator.d.ts +85 -0
- package/dist/debug/premulValidator.d.ts.map +1 -0
- package/dist/debug/premulValidator.js +239 -0
- package/dist/debug/premulValidator.js.map +1 -0
- package/dist/executor.d.ts +74 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +413 -0
- package/dist/executor.js.map +1 -0
- package/dist/fullscreenQuad.d.ts +11 -0
- package/dist/fullscreenQuad.d.ts.map +1 -0
- package/dist/fullscreenQuad.js +31 -0
- package/dist/fullscreenQuad.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/module.d.ts +162 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +100 -0
- package/dist/module.js.map +1 -0
- package/dist/node.d.ts +38 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +140 -0
- package/dist/node.js.map +1 -0
- package/dist/pool.d.ts +30 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +33 -0
- package/dist/pool.js.map +1 -0
- package/dist/recipe.d.ts +148 -0
- package/dist/recipe.d.ts.map +1 -0
- package/dist/recipe.js +181 -0
- package/dist/recipe.js.map +1 -0
- package/dist/registry.d.ts +49 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +100 -0
- package/dist/registry.js.map +1 -0
- package/dist/shaders/_canary/passthrough/v1/module.d.ts +13 -0
- package/dist/shaders/_canary/passthrough/v1/module.d.ts.map +1 -0
- package/dist/shaders/_canary/passthrough/v1/module.js +71 -0
- package/dist/shaders/_canary/passthrough/v1/module.js.map +1 -0
- package/dist/shaders/alpha/premulToStraight/v1/module.d.ts +16 -0
- package/dist/shaders/alpha/premulToStraight/v1/module.d.ts.map +1 -0
- package/dist/shaders/alpha/premulToStraight/v1/module.js +62 -0
- package/dist/shaders/alpha/premulToStraight/v1/module.js.map +1 -0
- package/dist/shaders/alpha/straightToPremul/v1/module.d.ts +19 -0
- package/dist/shaders/alpha/straightToPremul/v1/module.d.ts.map +1 -0
- package/dist/shaders/alpha/straightToPremul/v1/module.js +61 -0
- package/dist/shaders/alpha/straightToPremul/v1/module.js.map +1 -0
- package/dist/shaders/color/brightnessContrast/v1/module.d.ts +17 -0
- package/dist/shaders/color/brightnessContrast/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/brightnessContrast/v1/module.js +84 -0
- package/dist/shaders/color/brightnessContrast/v1/module.js.map +1 -0
- package/dist/shaders/color/cdl/v1/module.d.ts +35 -0
- package/dist/shaders/color/cdl/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/cdl/v1/module.js +106 -0
- package/dist/shaders/color/cdl/v1/module.js.map +1 -0
- package/dist/shaders/color/channelMerge/v1/module.d.ts +22 -0
- package/dist/shaders/color/channelMerge/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/channelMerge/v1/module.js +101 -0
- package/dist/shaders/color/channelMerge/v1/module.js.map +1 -0
- package/dist/shaders/color/channelShuffle/v1/module.d.ts +29 -0
- package/dist/shaders/color/channelShuffle/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/channelShuffle/v1/module.js +94 -0
- package/dist/shaders/color/channelShuffle/v1/module.js.map +1 -0
- package/dist/shaders/color/channelSplit/v1/module.d.ts +18 -0
- package/dist/shaders/color/channelSplit/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/channelSplit/v1/module.js +90 -0
- package/dist/shaders/color/channelSplit/v1/module.js.map +1 -0
- package/dist/shaders/color/colorBalance/v1/module.d.ts +18 -0
- package/dist/shaders/color/colorBalance/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/colorBalance/v1/module.js +86 -0
- package/dist/shaders/color/colorBalance/v1/module.js.map +1 -0
- package/dist/shaders/color/cubeLut/v1/module.d.ts +14 -0
- package/dist/shaders/color/cubeLut/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/cubeLut/v1/module.js +78 -0
- package/dist/shaders/color/cubeLut/v1/module.js.map +1 -0
- package/dist/shaders/color/curves/v1/module.d.ts +31 -0
- package/dist/shaders/color/curves/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/curves/v1/module.js +102 -0
- package/dist/shaders/color/curves/v1/module.js.map +1 -0
- package/dist/shaders/color/exposure/v1/module.d.ts +15 -0
- package/dist/shaders/color/exposure/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/exposure/v1/module.js +78 -0
- package/dist/shaders/color/exposure/v1/module.js.map +1 -0
- package/dist/shaders/color/exposureTone/v1/module.d.ts +28 -0
- package/dist/shaders/color/exposureTone/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/exposureTone/v1/module.js +107 -0
- package/dist/shaders/color/exposureTone/v1/module.js.map +1 -0
- package/dist/shaders/color/filmLook/v1/module.d.ts +28 -0
- package/dist/shaders/color/filmLook/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/filmLook/v1/module.js +103 -0
- package/dist/shaders/color/filmLook/v1/module.js.map +1 -0
- package/dist/shaders/color/grade/v1/module.d.ts +35 -0
- package/dist/shaders/color/grade/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/grade/v1/module.js +182 -0
- package/dist/shaders/color/grade/v1/module.js.map +1 -0
- package/dist/shaders/color/grayscale/v1/module.d.ts +14 -0
- package/dist/shaders/color/grayscale/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/grayscale/v1/module.js +79 -0
- package/dist/shaders/color/grayscale/v1/module.js.map +1 -0
- package/dist/shaders/color/hsb/v1/module.d.ts +20 -0
- package/dist/shaders/color/hsb/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/hsb/v1/module.js +131 -0
- package/dist/shaders/color/hsb/v1/module.js.map +1 -0
- package/dist/shaders/color/hslAdjust/v1/module.d.ts +30 -0
- package/dist/shaders/color/hslAdjust/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/hslAdjust/v1/module.js +170 -0
- package/dist/shaders/color/hslAdjust/v1/module.js.map +1 -0
- package/dist/shaders/color/invert/v1/module.d.ts +15 -0
- package/dist/shaders/color/invert/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/invert/v1/module.js +85 -0
- package/dist/shaders/color/invert/v1/module.js.map +1 -0
- package/dist/shaders/color/levels/v1/module.d.ts +33 -0
- package/dist/shaders/color/levels/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/levels/v1/module.js +116 -0
- package/dist/shaders/color/levels/v1/module.js.map +1 -0
- package/dist/shaders/color/liftGammaGain/v1/module.d.ts +40 -0
- package/dist/shaders/color/liftGammaGain/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/liftGammaGain/v1/module.js +114 -0
- package/dist/shaders/color/liftGammaGain/v1/module.js.map +1 -0
- package/dist/shaders/color/posterize/v1/module.d.ts +16 -0
- package/dist/shaders/color/posterize/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/posterize/v1/module.js +80 -0
- package/dist/shaders/color/posterize/v1/module.js.map +1 -0
- package/dist/shaders/color/solarize/v1/module.d.ts +15 -0
- package/dist/shaders/color/solarize/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/solarize/v1/module.js +83 -0
- package/dist/shaders/color/solarize/v1/module.js.map +1 -0
- package/dist/shaders/color/splitToning/v1/module.d.ts +26 -0
- package/dist/shaders/color/splitToning/v1/module.d.ts.map +1 -0
- package/dist/shaders/color/splitToning/v1/module.js +95 -0
- package/dist/shaders/color/splitToning/v1/module.js.map +1 -0
- package/dist/shaders/filters/blur/gaussian/v1/module.d.ts +23 -0
- package/dist/shaders/filters/blur/gaussian/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/blur/gaussian/v1/module.js +110 -0
- package/dist/shaders/filters/blur/gaussian/v1/module.js.map +1 -0
- package/dist/shaders/filters/blur/separable/v1/module.d.ts +18 -0
- package/dist/shaders/filters/blur/separable/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/blur/separable/v1/module.js +64 -0
- package/dist/shaders/filters/blur/separable/v1/module.js.map +1 -0
- package/dist/shaders/filters/convolve3x3/v1/module.d.ts +23 -0
- package/dist/shaders/filters/convolve3x3/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/convolve3x3/v1/module.js +128 -0
- package/dist/shaders/filters/convolve3x3/v1/module.js.map +1 -0
- package/dist/shaders/filters/glow/v1/module.d.ts +26 -0
- package/dist/shaders/filters/glow/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/glow/v1/module.js +102 -0
- package/dist/shaders/filters/glow/v1/module.js.map +1 -0
- package/dist/shaders/filters/grain/v1/module.d.ts +38 -0
- package/dist/shaders/filters/grain/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/grain/v1/module.js +110 -0
- package/dist/shaders/filters/grain/v1/module.js.map +1 -0
- package/dist/shaders/filters/pixelate/v1/module.d.ts +14 -0
- package/dist/shaders/filters/pixelate/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/pixelate/v1/module.js +76 -0
- package/dist/shaders/filters/pixelate/v1/module.js.map +1 -0
- package/dist/shaders/filters/sharpen/unsharpMask/v1/module.d.ts +17 -0
- package/dist/shaders/filters/sharpen/unsharpMask/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/sharpen/unsharpMask/v1/module.js +93 -0
- package/dist/shaders/filters/sharpen/unsharpMask/v1/module.js.map +1 -0
- package/dist/shaders/filters/threshold/v1/module.d.ts +17 -0
- package/dist/shaders/filters/threshold/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/threshold/v1/module.js +71 -0
- package/dist/shaders/filters/threshold/v1/module.js.map +1 -0
- package/dist/shaders/filters/vignette/v1/module.d.ts +18 -0
- package/dist/shaders/filters/vignette/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/vignette/v1/module.js +78 -0
- package/dist/shaders/filters/vignette/v1/module.js.map +1 -0
- package/dist/shaders/filters/visualFx/v1/module.d.ts +24 -0
- package/dist/shaders/filters/visualFx/v1/module.d.ts.map +1 -0
- package/dist/shaders/filters/visualFx/v1/module.js +210 -0
- package/dist/shaders/filters/visualFx/v1/module.js.map +1 -0
- package/dist/shaders/index.d.ts +86 -0
- package/dist/shaders/index.d.ts.map +1 -0
- package/dist/shaders/index.js +161 -0
- package/dist/shaders/index.js.map +1 -0
- package/dist/shaders/keyer/chromaKey/v1/module.d.ts +25 -0
- package/dist/shaders/keyer/chromaKey/v1/module.d.ts.map +1 -0
- package/dist/shaders/keyer/chromaKey/v1/module.js +111 -0
- package/dist/shaders/keyer/chromaKey/v1/module.js.map +1 -0
- package/dist/shaders/keyer/lumaKey/v1/module.d.ts +22 -0
- package/dist/shaders/keyer/lumaKey/v1/module.d.ts.map +1 -0
- package/dist/shaders/keyer/lumaKey/v1/module.js +89 -0
- package/dist/shaders/keyer/lumaKey/v1/module.js.map +1 -0
- package/dist/shaders/mask/apply/v1/module.d.ts +16 -0
- package/dist/shaders/mask/apply/v1/module.d.ts.map +1 -0
- package/dist/shaders/mask/apply/v1/module.js +79 -0
- package/dist/shaders/mask/apply/v1/module.js.map +1 -0
- package/dist/shaders/mask/fromImage/v1/module.d.ts +18 -0
- package/dist/shaders/mask/fromImage/v1/module.d.ts.map +1 -0
- package/dist/shaders/mask/fromImage/v1/module.js +99 -0
- package/dist/shaders/mask/fromImage/v1/module.js.map +1 -0
- package/dist/shaders/mask/invert/v1/module.d.ts +12 -0
- package/dist/shaders/mask/invert/v1/module.d.ts.map +1 -0
- package/dist/shaders/mask/invert/v1/module.js +57 -0
- package/dist/shaders/mask/invert/v1/module.js.map +1 -0
- package/dist/shaders/mixer/add/v1/module.d.ts +17 -0
- package/dist/shaders/mixer/add/v1/module.d.ts.map +1 -0
- package/dist/shaders/mixer/add/v1/module.js +73 -0
- package/dist/shaders/mixer/add/v1/module.js.map +1 -0
- package/dist/shaders/mixer/colorOverlay/v1/module.d.ts +26 -0
- package/dist/shaders/mixer/colorOverlay/v1/module.d.ts.map +1 -0
- package/dist/shaders/mixer/colorOverlay/v1/module.js +81 -0
- package/dist/shaders/mixer/colorOverlay/v1/module.js.map +1 -0
- package/dist/shaders/mixer/dropShadow/v1/module.d.ts +28 -0
- package/dist/shaders/mixer/dropShadow/v1/module.d.ts.map +1 -0
- package/dist/shaders/mixer/dropShadow/v1/module.js +104 -0
- package/dist/shaders/mixer/dropShadow/v1/module.js.map +1 -0
- package/dist/shaders/mixer/outline/v1/module.d.ts +27 -0
- package/dist/shaders/mixer/outline/v1/module.d.ts.map +1 -0
- package/dist/shaders/mixer/outline/v1/module.js +105 -0
- package/dist/shaders/mixer/outline/v1/module.js.map +1 -0
- package/dist/shaders/mixer/over/v1/module.d.ts +16 -0
- package/dist/shaders/mixer/over/v1/module.d.ts.map +1 -0
- package/dist/shaders/mixer/over/v1/module.js +71 -0
- package/dist/shaders/mixer/over/v1/module.js.map +1 -0
- package/dist/shaders/mixer/shadowCompose/v1/module.d.ts +26 -0
- package/dist/shaders/mixer/shadowCompose/v1/module.d.ts.map +1 -0
- package/dist/shaders/mixer/shadowCompose/v1/module.js +95 -0
- package/dist/shaders/mixer/shadowCompose/v1/module.js.map +1 -0
- package/dist/shaders/sources/angularGradient/v1/module.d.ts +18 -0
- package/dist/shaders/sources/angularGradient/v1/module.d.ts.map +1 -0
- package/dist/shaders/sources/angularGradient/v1/module.js +67 -0
- package/dist/shaders/sources/angularGradient/v1/module.js.map +1 -0
- package/dist/shaders/sources/checkerboard/v1/module.d.ts +19 -0
- package/dist/shaders/sources/checkerboard/v1/module.d.ts.map +1 -0
- package/dist/shaders/sources/checkerboard/v1/module.js +70 -0
- package/dist/shaders/sources/checkerboard/v1/module.js.map +1 -0
- package/dist/shaders/sources/diamondGradient/v1/module.d.ts +18 -0
- package/dist/shaders/sources/diamondGradient/v1/module.d.ts.map +1 -0
- package/dist/shaders/sources/diamondGradient/v1/module.js +61 -0
- package/dist/shaders/sources/diamondGradient/v1/module.js.map +1 -0
- package/dist/shaders/sources/gaussianNoise/v1/module.d.ts +21 -0
- package/dist/shaders/sources/gaussianNoise/v1/module.d.ts.map +1 -0
- package/dist/shaders/sources/gaussianNoise/v1/module.js +72 -0
- package/dist/shaders/sources/gaussianNoise/v1/module.js.map +1 -0
- package/dist/shaders/sources/linearGradient/v1/module.d.ts +21 -0
- package/dist/shaders/sources/linearGradient/v1/module.d.ts.map +1 -0
- package/dist/shaders/sources/linearGradient/v1/module.js +72 -0
- package/dist/shaders/sources/linearGradient/v1/module.js.map +1 -0
- package/dist/shaders/sources/radialGradient/v1/module.d.ts +18 -0
- package/dist/shaders/sources/radialGradient/v1/module.d.ts.map +1 -0
- package/dist/shaders/sources/radialGradient/v1/module.js +60 -0
- package/dist/shaders/sources/radialGradient/v1/module.js.map +1 -0
- package/dist/shaders/sources/solid/v1/module.d.ts +17 -0
- package/dist/shaders/sources/solid/v1/module.d.ts.map +1 -0
- package/dist/shaders/sources/solid/v1/module.js +49 -0
- package/dist/shaders/sources/solid/v1/module.js.map +1 -0
- package/dist/shaders/transform/affine/v1/module.d.ts +36 -0
- package/dist/shaders/transform/affine/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/affine/v1/module.js +94 -0
- package/dist/shaders/transform/affine/v1/module.js.map +1 -0
- package/dist/shaders/transform/cornerPin/v1/module.d.ts +40 -0
- package/dist/shaders/transform/cornerPin/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/cornerPin/v1/module.js +109 -0
- package/dist/shaders/transform/cornerPin/v1/module.js.map +1 -0
- package/dist/shaders/transform/crop/v1/module.d.ts +26 -0
- package/dist/shaders/transform/crop/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/crop/v1/module.js +82 -0
- package/dist/shaders/transform/crop/v1/module.js.map +1 -0
- package/dist/shaders/transform/displace/v1/module.d.ts +23 -0
- package/dist/shaders/transform/displace/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/displace/v1/module.js +95 -0
- package/dist/shaders/transform/displace/v1/module.js.map +1 -0
- package/dist/shaders/transform/mirror/v1/module.d.ts +14 -0
- package/dist/shaders/transform/mirror/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/mirror/v1/module.js +73 -0
- package/dist/shaders/transform/mirror/v1/module.js.map +1 -0
- package/dist/shaders/transform/offset/v1/module.d.ts +21 -0
- package/dist/shaders/transform/offset/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/offset/v1/module.js +88 -0
- package/dist/shaders/transform/offset/v1/module.js.map +1 -0
- package/dist/shaders/transform/pad/v1/module.d.ts +26 -0
- package/dist/shaders/transform/pad/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/pad/v1/module.js +95 -0
- package/dist/shaders/transform/pad/v1/module.js.map +1 -0
- package/dist/shaders/transform/polarRemap/v1/module.d.ts +20 -0
- package/dist/shaders/transform/polarRemap/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/polarRemap/v1/module.js +95 -0
- package/dist/shaders/transform/polarRemap/v1/module.js.map +1 -0
- package/dist/shaders/transform/resize/v1/module.d.ts +20 -0
- package/dist/shaders/transform/resize/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/resize/v1/module.js +116 -0
- package/dist/shaders/transform/resize/v1/module.js.map +1 -0
- package/dist/shaders/transform/rotate90/v1/module.d.ts +25 -0
- package/dist/shaders/transform/rotate90/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/rotate90/v1/module.js +90 -0
- package/dist/shaders/transform/rotate90/v1/module.js.map +1 -0
- package/dist/shaders/transform/spherize/v1/module.d.ts +21 -0
- package/dist/shaders/transform/spherize/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/spherize/v1/module.js +94 -0
- package/dist/shaders/transform/spherize/v1/module.js.map +1 -0
- package/dist/shaders/transform/tile/v1/module.d.ts +22 -0
- package/dist/shaders/transform/tile/v1/module.d.ts.map +1 -0
- package/dist/shaders/transform/tile/v1/module.js +89 -0
- package/dist/shaders/transform/tile/v1/module.js.map +1 -0
- package/dist/shared/lumaWgsl.d.ts +14 -0
- package/dist/shared/lumaWgsl.d.ts.map +1 -0
- package/dist/shared/lumaWgsl.js +18 -0
- package/dist/shared/lumaWgsl.js.map +1 -0
- package/dist/shared/premulWgsl.d.ts +46 -0
- package/dist/shared/premulWgsl.d.ts.map +1 -0
- package/dist/shared/premulWgsl.js +90 -0
- package/dist/shared/premulWgsl.js.map +1 -0
- package/dist/texture.d.ts +54 -0
- package/dist/texture.d.ts.map +1 -0
- package/dist/texture.js +70 -0
- package/dist/texture.js.map +1 -0
- package/dist/types.d.ts +103 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/validate/wgslLinearity.d.ts +86 -0
- package/dist/validate/wgslLinearity.d.ts.map +1 -0
- package/dist/validate/wgslLinearity.js +298 -0
- package/dist/validate/wgslLinearity.js.map +1 -0
- package/dist/webgpu/index.d.ts +11 -0
- package/dist/webgpu/index.d.ts.map +1 -0
- package/dist/webgpu/index.js +11 -0
- package/dist/webgpu/index.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import tgpu from "typegpu";
|
|
2
|
+
import * as d from "typegpu/data";
|
|
3
|
+
import { defineModule } from "../../../../module.js";
|
|
4
|
+
export const VisualFxParams = d.struct({
|
|
5
|
+
mode: d.f32,
|
|
6
|
+
amount: d.f32,
|
|
7
|
+
scale: d.f32,
|
|
8
|
+
angle: d.f32,
|
|
9
|
+
time: d.f32,
|
|
10
|
+
seed: d.f32,
|
|
11
|
+
softness: d.f32,
|
|
12
|
+
colorA: d.vec4f,
|
|
13
|
+
colorB: d.vec4f
|
|
14
|
+
});
|
|
15
|
+
const layout = tgpu.bindGroupLayout({
|
|
16
|
+
params: { uniform: VisualFxParams },
|
|
17
|
+
source: { texture: "float" },
|
|
18
|
+
mask: { texture: "float" },
|
|
19
|
+
samp: { sampler: "filtering" }
|
|
20
|
+
});
|
|
21
|
+
export const filtersVisualFxV1 = defineModule({
|
|
22
|
+
id: "filters.visualFx",
|
|
23
|
+
version: 1,
|
|
24
|
+
surface: "internal",
|
|
25
|
+
category: "filters",
|
|
26
|
+
linearity: "nonlinear-in-rgb",
|
|
27
|
+
kind: "fragment",
|
|
28
|
+
params: VisualFxParams,
|
|
29
|
+
paramDefaults: {
|
|
30
|
+
mode: 0,
|
|
31
|
+
amount: 0.5,
|
|
32
|
+
scale: 8,
|
|
33
|
+
angle: 0,
|
|
34
|
+
time: 0,
|
|
35
|
+
seed: 0,
|
|
36
|
+
softness: 0.1,
|
|
37
|
+
colorA: d.vec4f(0.05, 0.1, 0.2, 1),
|
|
38
|
+
colorB: d.vec4f(0.9, 0.4, 0.2, 1)
|
|
39
|
+
},
|
|
40
|
+
layout,
|
|
41
|
+
samplers: {
|
|
42
|
+
samp: {
|
|
43
|
+
magFilter: "linear",
|
|
44
|
+
minFilter: "linear",
|
|
45
|
+
addressModeU: "clamp-to-edge",
|
|
46
|
+
addressModeV: "clamp-to-edge"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
wgsl: /* wgsl */ `
|
|
50
|
+
fn hash(p: vec2f) -> f32 {
|
|
51
|
+
let x = u32(i32(p.x));
|
|
52
|
+
let y = u32(i32(p.y));
|
|
53
|
+
var n = x * 374761393u + y * 668265263u + 2246822519u;
|
|
54
|
+
n = (n ^ (n >> 13u)) * 1274126177u;
|
|
55
|
+
n = n ^ (n >> 16u);
|
|
56
|
+
return f32(n & 16777215u) / 16777215.0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
fn noise(p: vec2f) -> f32 {
|
|
60
|
+
let i = floor(p);
|
|
61
|
+
let f = fract(p);
|
|
62
|
+
let u = f * f * (vec2f(3.0) - 2.0 * f);
|
|
63
|
+
return mix(mix(hash(i), hash(i + vec2f(1.0, 0.0)), u.x),
|
|
64
|
+
mix(hash(i + vec2f(0.0, 1.0)), hash(i + vec2f(1.0)), u.x), u.y);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
fn fbm(p: vec2f) -> f32 {
|
|
68
|
+
var n = 0.0;
|
|
69
|
+
var amp = 0.5;
|
|
70
|
+
var q = p;
|
|
71
|
+
for (var k = 0; k < 5; k = k + 1) {
|
|
72
|
+
n = n + amp * noise(q);
|
|
73
|
+
q = q * 2.03 + vec2f(11.7, 5.3);
|
|
74
|
+
amp = amp * 0.5;
|
|
75
|
+
}
|
|
76
|
+
return n;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
fn sampleAt(uv: vec2f) -> vec4f {
|
|
80
|
+
return textureSample(layout.$.source, layout.$.samp, clamp(uv, vec2f(0.0), vec2f(1.0)));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@fragment
|
|
84
|
+
fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
|
|
85
|
+
let p = layout.$.params;
|
|
86
|
+
let mode = i32(round(p.mode));
|
|
87
|
+
let src = sampleAt(uv);
|
|
88
|
+
let cov = textureSample(layout.$.mask, layout.$.samp, uv).a;
|
|
89
|
+
let dims = vec2f(textureDimensions(layout.$.source));
|
|
90
|
+
let q = uv - vec2f(0.5);
|
|
91
|
+
let strength = max(0.0, p.amount);
|
|
92
|
+
let scale = max(1.0, p.scale);
|
|
93
|
+
var result = src;
|
|
94
|
+
|
|
95
|
+
if (mode == 0) { // RGB split
|
|
96
|
+
let delta = vec2f(cos(p.angle), sin(p.angle)) * strength / dims;
|
|
97
|
+
let red = sampleAt(uv + delta);
|
|
98
|
+
let blue = sampleAt(uv - delta);
|
|
99
|
+
result = vec4f(red.r / max(red.a, 1.0 / 255.0) * src.a,
|
|
100
|
+
src.g,
|
|
101
|
+
blue.b / max(blue.a, 1.0 / 255.0) * src.a,
|
|
102
|
+
src.a);
|
|
103
|
+
} else if (mode == 1 || mode == 2) { // spin or zoom blur
|
|
104
|
+
var sum = vec4f(0.0);
|
|
105
|
+
for (var i = 0; i < 13; i = i + 1) {
|
|
106
|
+
let t = (f32(i) - 6.0) / 6.0;
|
|
107
|
+
if (mode == 1) {
|
|
108
|
+
let theta = t * strength * 8.0 / max(dims.x, dims.y);
|
|
109
|
+
let rotated = vec2f(q.x * cos(theta) - q.y * sin(theta), q.x * sin(theta) + q.y * cos(theta));
|
|
110
|
+
sum = sum + sampleAt(vec2f(0.5) + rotated);
|
|
111
|
+
} else {
|
|
112
|
+
sum = sum + sampleAt(uv + q * t * strength / dims * 8.0);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
result = sum / 13.0;
|
|
116
|
+
} else if (mode == 3 || mode == 4 || mode == 12) { // smooth displacement or stepped glitch
|
|
117
|
+
let field = fbm(uv * scale + vec2f(p.time, p.seed));
|
|
118
|
+
var displacement = (field - 0.5) * strength * 20.0;
|
|
119
|
+
if (mode == 4) {
|
|
120
|
+
let row = floor(uv.y * scale * 8.0);
|
|
121
|
+
displacement = (hash(vec2f(row, floor(p.time * 24.0) + p.seed)) - 0.5) * strength * 40.0;
|
|
122
|
+
}
|
|
123
|
+
result = sampleAt(uv + vec2f(displacement / dims.x,
|
|
124
|
+
select(displacement * 0.3 / dims.y, 0.0, mode == 4)));
|
|
125
|
+
} else if (mode == 5) { // halftone
|
|
126
|
+
let luma = dot(src.rgb / max(src.a, 0.00392), vec3f(0.2126, 0.7152, 0.0722));
|
|
127
|
+
let cell = fract(uv * dims / scale) - vec2f(0.5);
|
|
128
|
+
let dotRadius = sqrt(max(0.0, 1.0 - luma)) * 0.62;
|
|
129
|
+
let ink = 1.0 - smoothstep(dotRadius - 0.08, dotRadius + 0.08, length(cell));
|
|
130
|
+
result = vec4f(vec3f(1.0 - ink) * src.a, src.a);
|
|
131
|
+
} else if (mode == 6) { // ordered blue-ish hash dither
|
|
132
|
+
let jitter = (hash(floor(uv * dims) + vec2f(p.seed)) - 0.5) * strength * 2.0 / 255.0;
|
|
133
|
+
result = vec4f(clamp(src.rgb + vec3f(jitter * src.a), vec3f(0.0), vec3f(src.a)), src.a);
|
|
134
|
+
} else if (mode == 7 || mode == 8) { // rays or anamorphic flare
|
|
135
|
+
let a = atan2(q.y, q.x);
|
|
136
|
+
let beam = pow(max(0.0, cos((a - p.angle) * select(8.0, 2.0, mode == 8))), 24.0);
|
|
137
|
+
let falloff = 1.0 / (1.0 + length(q * vec2f(1.0, select(1.0, 8.0, mode == 8))) * scale);
|
|
138
|
+
let light = clamp(beam * falloff * strength, 0.0, 1.0);
|
|
139
|
+
result = vec4f(src.rgb + (vec3f(src.a) - src.rgb) * light * p.colorB.rgb, src.a);
|
|
140
|
+
} else if (mode >= 9 && mode <= 11) { // inner shadow, inner glow, edge highlight
|
|
141
|
+
let reach = scale / dims;
|
|
142
|
+
let shifted = sampleAt(uv + vec2f(cos(p.angle), sin(p.angle)) * reach).a;
|
|
143
|
+
let around = min(min(sampleAt(uv + vec2f(reach.x, 0.0)).a, sampleAt(uv - vec2f(reach.x, 0.0)).a),
|
|
144
|
+
min(sampleAt(uv + vec2f(0.0, reach.y)).a, sampleAt(uv - vec2f(0.0, reach.y)).a));
|
|
145
|
+
let edge = clamp(src.a - select(shifted, around, mode == 10), 0.0, 1.0) * strength;
|
|
146
|
+
if (mode == 9) {
|
|
147
|
+
result = vec4f(mix(src.rgb, p.colorB.rgb * src.a, clamp(edge, 0.0, 1.0)), src.a);
|
|
148
|
+
} else {
|
|
149
|
+
result = vec4f(src.rgb + (vec3f(src.a) - src.rgb) * clamp(edge, 0.0, 1.0) * p.colorB.rgb, src.a);
|
|
150
|
+
}
|
|
151
|
+
} else if (mode == 13) { // threshold a spatial gradient field
|
|
152
|
+
var field = uv.x;
|
|
153
|
+
if (p.time < 0.5) {
|
|
154
|
+
let direction = vec2f(cos(p.angle), sin(p.angle));
|
|
155
|
+
field = select(select(uv.x, 1.0 - uv.x, direction.x > 0.0), select(uv.y, 1.0 - uv.y, direction.y > 0.0), abs(direction.y) > 0.5);
|
|
156
|
+
} else if (p.time < 1.5) {
|
|
157
|
+
field = distance(uv, vec2f(0.5)) / 0.70710678;
|
|
158
|
+
} else {
|
|
159
|
+
field = clamp(fbm(uv * scale + vec2f(p.seed)), 0.0, 1.0);
|
|
160
|
+
}
|
|
161
|
+
let feather = max(0.001, p.softness);
|
|
162
|
+
let edge = strength * (1.0 + feather);
|
|
163
|
+
let reveal = 1.0 - smoothstep(edge - feather, edge, field);
|
|
164
|
+
result = src * reveal;
|
|
165
|
+
} else if (mode == 14) { // localized warm light leak over the picture
|
|
166
|
+
let center = vec2f(0.5 + sin(p.time * 6.2831853 + p.seed) * 0.3, 0.3);
|
|
167
|
+
let light = exp(-distance(uv, center) * scale * 3.0) * strength;
|
|
168
|
+
result = vec4f(src.rgb + (vec3f(src.a) - src.rgb) * light * p.colorB.rgb, src.a);
|
|
169
|
+
} else if (mode >= 15) {
|
|
170
|
+
var v = 0.0;
|
|
171
|
+
if (mode == 15) { // noise
|
|
172
|
+
v = hash(floor(uv * dims / scale) + vec2f(p.seed, floor(p.time * 24.0)));
|
|
173
|
+
} else if (mode == 16) { // fractal texture
|
|
174
|
+
v = fbm(uv * scale + vec2f(p.time, p.seed));
|
|
175
|
+
} else if (mode == 17) { // conic gradient
|
|
176
|
+
v = fract(atan2(q.y, q.x) / 6.2831853 + p.angle / 6.2831853 + 1.0);
|
|
177
|
+
} else if (mode == 18) { // mesh gradient
|
|
178
|
+
v = 0.5 + 0.25 * sin(uv.x * scale + p.time) + 0.25 * cos(uv.y * scale * 0.7 - p.time);
|
|
179
|
+
} else if (mode == 19) { // animated gradient field
|
|
180
|
+
v = fbm(uv * scale + vec2f(p.time * 0.3, -p.time * 0.2));
|
|
181
|
+
} else if (mode == 20) { // particles
|
|
182
|
+
let cell = floor(uv * scale);
|
|
183
|
+
let local = fract(uv * scale);
|
|
184
|
+
var center = vec2f(hash(cell + vec2f(p.seed)), hash(cell + vec2f(p.seed + 17.0)));
|
|
185
|
+
center.y = fract(center.y + p.time * (0.1 + center.x * 0.2));
|
|
186
|
+
v = pow(1.0 - smoothstep(0.0, 0.15, distance(local, center)), 2.0);
|
|
187
|
+
} else if (mode == 21) { // light leak
|
|
188
|
+
let center = vec2f(0.5 + sin(p.time * 0.7 + p.seed) * 0.6, 0.2);
|
|
189
|
+
v = exp(-distance(uv, center) * scale * 0.5);
|
|
190
|
+
} else { // pattern grid
|
|
191
|
+
let grid = fract(uv * scale);
|
|
192
|
+
v = select(0.0, 1.0, min(min(grid.x, grid.y), min(1.0 - grid.x, 1.0 - grid.y)) < 0.04);
|
|
193
|
+
}
|
|
194
|
+
let color = mix(p.colorA, p.colorB, clamp(v * strength, 0.0, 1.0));
|
|
195
|
+
result = color;
|
|
196
|
+
}
|
|
197
|
+
let mixed = mix(src, result, cov);
|
|
198
|
+
return vec4f(clamp(mixed.rgb, vec3f(0.0), vec3f(mixed.a)), mixed.a);
|
|
199
|
+
}
|
|
200
|
+
`,
|
|
201
|
+
io: {
|
|
202
|
+
inputs: {
|
|
203
|
+
source: { colorSpace: "linear", alpha: "premultiplied", bindingKinds: ["texture_2d"] },
|
|
204
|
+
mask: { colorSpace: "linear", alpha: "premultiplied", bindingKinds: ["texture_2d"], optional: true }
|
|
205
|
+
},
|
|
206
|
+
output: { colorSpace: "linear", alpha: "premultiplied", format: "rgba8unorm", dimensions: "same-as:source" },
|
|
207
|
+
rod: "same-as:source"
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/shaders/filters/visualFx/v1/module.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,GAAG;IACX,MAAM,EAAE,CAAC,CAAC,GAAG;IACb,KAAK,EAAE,CAAC,CAAC,GAAG;IACZ,KAAK,EAAE,CAAC,CAAC,GAAG;IACZ,IAAI,EAAE,CAAC,CAAC,GAAG;IACX,IAAI,EAAE,CAAC,CAAC,GAAG;IACX,QAAQ,EAAE,CAAC,CAAC,GAAG;IACf,MAAM,EAAE,CAAC,CAAC,KAAK;IACf,MAAM,EAAE,CAAC,CAAC,KAAK;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;IACnC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC5B,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC1B,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;IAC5C,EAAE,EAAE,kBAAkB;IACtB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,kBAAkB;IAC7B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,cAAc;IACtB,aAAa,EAAE;QACb,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;KAClC;IACD,MAAM;IACN,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,eAAe;YAC7B,YAAY,EAAE,eAAe;SAC9B;KACF;IACD,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuJlB;IACC,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC,EAAE;YACtF,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrG;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE;QAC5G,GAAG,EAAE,gBAAgB;KACtB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Explicit shader barrel. The registry is populated from `ALL_SHADERS` (not
|
|
3
|
+
* `import.meta.glob`) so the catalog is Node-bundling-safe, grep-able, and
|
|
4
|
+
* tree-shakeable. Every module added in later phases appends here.
|
|
5
|
+
*
|
|
6
|
+
* Recipe modules (`kind: "recipe"`) live in {@link ALL_RECIPES} so consumers
|
|
7
|
+
* can filter the two kinds without instanceof checks; the union
|
|
8
|
+
* {@link ALL_CATALOG} is the registry's preload set.
|
|
9
|
+
*/
|
|
10
|
+
import type { ShaderModule } from "../module.js";
|
|
11
|
+
import type { RecipeModule } from "../recipe.js";
|
|
12
|
+
import { passthroughV1 } from "./_canary/passthrough/v1/module.js";
|
|
13
|
+
import { colorGradeV1 } from "./color/grade/v1/module.js";
|
|
14
|
+
import { colorInvertV1 } from "./color/invert/v1/module.js";
|
|
15
|
+
import { colorBrightnessContrastV1 } from "./color/brightnessContrast/v1/module.js";
|
|
16
|
+
import { colorHsbV1 } from "./color/hsb/v1/module.js";
|
|
17
|
+
import { colorExposureV1 } from "./color/exposure/v1/module.js";
|
|
18
|
+
import { colorPosterizeV1 } from "./color/posterize/v1/module.js";
|
|
19
|
+
import { colorCubeLutV1 } from "./color/cubeLut/v1/module.js";
|
|
20
|
+
import { colorChannelSplitV1 } from "./color/channelSplit/v1/module.js";
|
|
21
|
+
import { colorChannelShuffleV1 } from "./color/channelShuffle/v1/module.js";
|
|
22
|
+
import { colorChannelMergeV1 } from "./color/channelMerge/v1/module.js";
|
|
23
|
+
import { colorGrayscaleV1 } from "./color/grayscale/v1/module.js";
|
|
24
|
+
import { colorSolarizeV1 } from "./color/solarize/v1/module.js";
|
|
25
|
+
import { colorColorBalanceV1 } from "./color/colorBalance/v1/module.js";
|
|
26
|
+
import { colorExposureToneV1 } from "./color/exposureTone/v1/module.js";
|
|
27
|
+
import { colorLiftGammaGainV1 } from "./color/liftGammaGain/v1/module.js";
|
|
28
|
+
import { colorCdlV1 } from "./color/cdl/v1/module.js";
|
|
29
|
+
import { colorCurvesV1 } from "./color/curves/v1/module.js";
|
|
30
|
+
import { colorHslAdjustV1 } from "./color/hslAdjust/v1/module.js";
|
|
31
|
+
import { colorSplitToningV1 } from "./color/splitToning/v1/module.js";
|
|
32
|
+
import { colorFilmLookV1 } from "./color/filmLook/v1/module.js";
|
|
33
|
+
import { colorLevelsV1 } from "./color/levels/v1/module.js";
|
|
34
|
+
import { blurGaussianV1 } from "./filters/blur/gaussian/v1/module.js";
|
|
35
|
+
import { sharpenUnsharpMaskV1 } from "./filters/sharpen/unsharpMask/v1/module.js";
|
|
36
|
+
import { vignetteV1 } from "./filters/vignette/v1/module.js";
|
|
37
|
+
import { filtersGrainV1 } from "./filters/grain/v1/module.js";
|
|
38
|
+
import { filtersPixelateV1 } from "./filters/pixelate/v1/module.js";
|
|
39
|
+
import { filtersVisualFxV1 } from "./filters/visualFx/v1/module.js";
|
|
40
|
+
import { filtersThresholdV1 } from "./filters/threshold/v1/module.js";
|
|
41
|
+
import { filtersConvolve3x3V1 } from "./filters/convolve3x3/v1/module.js";
|
|
42
|
+
import { filtersGlowV1 } from "./filters/glow/v1/module.js";
|
|
43
|
+
import { filtersBlurSeparableV1 } from "./filters/blur/separable/v1/module.js";
|
|
44
|
+
import { chromaKeyV1 } from "./keyer/chromaKey/v1/module.js";
|
|
45
|
+
import { keyerLumaKeyV1 } from "./keyer/lumaKey/v1/module.js";
|
|
46
|
+
import { maskApplyV1 } from "./mask/apply/v1/module.js";
|
|
47
|
+
import { maskFromImageV1 } from "./mask/fromImage/v1/module.js";
|
|
48
|
+
import { maskInvertV1 } from "./mask/invert/v1/module.js";
|
|
49
|
+
import { sourcesSolidV1 } from "./sources/solid/v1/module.js";
|
|
50
|
+
import { sourcesLinearGradientV1 } from "./sources/linearGradient/v1/module.js";
|
|
51
|
+
import { sourcesCheckerboardV1 } from "./sources/checkerboard/v1/module.js";
|
|
52
|
+
import { sourcesRadialGradientV1 } from "./sources/radialGradient/v1/module.js";
|
|
53
|
+
import { sourcesAngularGradientV1 } from "./sources/angularGradient/v1/module.js";
|
|
54
|
+
import { sourcesDiamondGradientV1 } from "./sources/diamondGradient/v1/module.js";
|
|
55
|
+
import { sourcesGaussianNoiseV1 } from "./sources/gaussianNoise/v1/module.js";
|
|
56
|
+
import { mixerAddV1 } from "./mixer/add/v1/module.js";
|
|
57
|
+
import { mixerColorOverlayV1 } from "./mixer/colorOverlay/v1/module.js";
|
|
58
|
+
import { mixerOutlineV1 } from "./mixer/outline/v1/module.js";
|
|
59
|
+
import { mixerShadowComposeV1 } from "./mixer/shadowCompose/v1/module.js";
|
|
60
|
+
import { mixerDropShadowV1 } from "./mixer/dropShadow/v1/module.js";
|
|
61
|
+
import { mixerOverV1 } from "./mixer/over/v1/module.js";
|
|
62
|
+
import { transformMirrorV1 } from "./transform/mirror/v1/module.js";
|
|
63
|
+
import { transformOffsetV1 } from "./transform/offset/v1/module.js";
|
|
64
|
+
import { transformCropV1 } from "./transform/crop/v1/module.js";
|
|
65
|
+
import { transformPadV1 } from "./transform/pad/v1/module.js";
|
|
66
|
+
import { transformTileV1 } from "./transform/tile/v1/module.js";
|
|
67
|
+
import { transformResizeV1 } from "./transform/resize/v1/module.js";
|
|
68
|
+
import { transformRotate90V1 } from "./transform/rotate90/v1/module.js";
|
|
69
|
+
import { transformAffineV1 } from "./transform/affine/v1/module.js";
|
|
70
|
+
import { transformCornerPinV1 } from "./transform/cornerPin/v1/module.js";
|
|
71
|
+
import { transformPolarRemapV1 } from "./transform/polarRemap/v1/module.js";
|
|
72
|
+
import { transformDisplaceV1 } from "./transform/displace/v1/module.js";
|
|
73
|
+
import { transformSpherizeV1 } from "./transform/spherize/v1/module.js";
|
|
74
|
+
import { alphaStraightToPremulV1 } from "./alpha/straightToPremul/v1/module.js";
|
|
75
|
+
import { alphaPremulToStraightV1 } from "./alpha/premulToStraight/v1/module.js";
|
|
76
|
+
export { passthroughV1, colorGradeV1, colorInvertV1, colorBrightnessContrastV1, colorHsbV1, colorExposureV1, colorPosterizeV1, colorCubeLutV1, colorChannelSplitV1, colorChannelShuffleV1, colorChannelMergeV1, colorGrayscaleV1, colorSolarizeV1, colorColorBalanceV1, colorExposureToneV1, colorLiftGammaGainV1, colorCdlV1, colorCurvesV1, colorHslAdjustV1, colorSplitToningV1, colorFilmLookV1, colorLevelsV1, blurGaussianV1, sharpenUnsharpMaskV1, vignetteV1, filtersGrainV1, filtersPixelateV1, filtersVisualFxV1, filtersThresholdV1, filtersConvolve3x3V1, filtersGlowV1, filtersBlurSeparableV1, chromaKeyV1, keyerLumaKeyV1, maskApplyV1, maskFromImageV1, maskInvertV1, sourcesSolidV1, sourcesLinearGradientV1, sourcesCheckerboardV1, sourcesRadialGradientV1, sourcesAngularGradientV1, sourcesDiamondGradientV1, sourcesGaussianNoiseV1, mixerAddV1, mixerColorOverlayV1, mixerOutlineV1, mixerShadowComposeV1, mixerDropShadowV1, mixerOverV1, transformMirrorV1, transformOffsetV1, transformCropV1, transformPadV1, transformTileV1, transformResizeV1, transformRotate90V1, transformAffineV1, transformCornerPinV1, transformPolarRemapV1, transformDisplaceV1, transformSpherizeV1, alphaStraightToPremulV1, alphaPremulToStraightV1 };
|
|
77
|
+
/**
|
|
78
|
+
* Every shader-style module (fragment + compute) registered by default.
|
|
79
|
+
* Recipes live in {@link ALL_RECIPES}.
|
|
80
|
+
*/
|
|
81
|
+
export declare const ALL_SHADERS: readonly ShaderModule[];
|
|
82
|
+
/** Every recipe module registered by default. */
|
|
83
|
+
export declare const ALL_RECIPES: readonly RecipeModule[];
|
|
84
|
+
/** Both kinds, in catalog order. The registry's preload set. */
|
|
85
|
+
export declare const ALL_CATALOG: readonly (ShaderModule | RecipeModule)[];
|
|
86
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shaders/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Explicit shader barrel. The registry is populated from `ALL_SHADERS` (not
|
|
3
|
+
* `import.meta.glob`) so the catalog is Node-bundling-safe, grep-able, and
|
|
4
|
+
* tree-shakeable. Every module added in later phases appends here.
|
|
5
|
+
*
|
|
6
|
+
* Recipe modules (`kind: "recipe"`) live in {@link ALL_RECIPES} so consumers
|
|
7
|
+
* can filter the two kinds without instanceof checks; the union
|
|
8
|
+
* {@link ALL_CATALOG} is the registry's preload set.
|
|
9
|
+
*/
|
|
10
|
+
import { passthroughV1 } from "./_canary/passthrough/v1/module.js";
|
|
11
|
+
import { colorGradeV1 } from "./color/grade/v1/module.js";
|
|
12
|
+
import { colorInvertV1 } from "./color/invert/v1/module.js";
|
|
13
|
+
import { colorBrightnessContrastV1 } from "./color/brightnessContrast/v1/module.js";
|
|
14
|
+
import { colorHsbV1 } from "./color/hsb/v1/module.js";
|
|
15
|
+
import { colorExposureV1 } from "./color/exposure/v1/module.js";
|
|
16
|
+
import { colorPosterizeV1 } from "./color/posterize/v1/module.js";
|
|
17
|
+
import { colorCubeLutV1 } from "./color/cubeLut/v1/module.js";
|
|
18
|
+
import { colorChannelSplitV1 } from "./color/channelSplit/v1/module.js";
|
|
19
|
+
import { colorChannelShuffleV1 } from "./color/channelShuffle/v1/module.js";
|
|
20
|
+
import { colorChannelMergeV1 } from "./color/channelMerge/v1/module.js";
|
|
21
|
+
import { colorGrayscaleV1 } from "./color/grayscale/v1/module.js";
|
|
22
|
+
import { colorSolarizeV1 } from "./color/solarize/v1/module.js";
|
|
23
|
+
import { colorColorBalanceV1 } from "./color/colorBalance/v1/module.js";
|
|
24
|
+
import { colorExposureToneV1 } from "./color/exposureTone/v1/module.js";
|
|
25
|
+
import { colorLiftGammaGainV1 } from "./color/liftGammaGain/v1/module.js";
|
|
26
|
+
import { colorCdlV1 } from "./color/cdl/v1/module.js";
|
|
27
|
+
import { colorCurvesV1 } from "./color/curves/v1/module.js";
|
|
28
|
+
import { colorHslAdjustV1 } from "./color/hslAdjust/v1/module.js";
|
|
29
|
+
import { colorSplitToningV1 } from "./color/splitToning/v1/module.js";
|
|
30
|
+
import { colorFilmLookV1 } from "./color/filmLook/v1/module.js";
|
|
31
|
+
import { colorLevelsV1 } from "./color/levels/v1/module.js";
|
|
32
|
+
import { blurGaussianV1 } from "./filters/blur/gaussian/v1/module.js";
|
|
33
|
+
import { sharpenUnsharpMaskV1 } from "./filters/sharpen/unsharpMask/v1/module.js";
|
|
34
|
+
import { vignetteV1 } from "./filters/vignette/v1/module.js";
|
|
35
|
+
import { filtersGrainV1 } from "./filters/grain/v1/module.js";
|
|
36
|
+
import { filtersPixelateV1 } from "./filters/pixelate/v1/module.js";
|
|
37
|
+
import { filtersVisualFxV1 } from "./filters/visualFx/v1/module.js";
|
|
38
|
+
import { filtersThresholdV1 } from "./filters/threshold/v1/module.js";
|
|
39
|
+
import { filtersConvolve3x3V1 } from "./filters/convolve3x3/v1/module.js";
|
|
40
|
+
import { filtersGlowV1 } from "./filters/glow/v1/module.js";
|
|
41
|
+
import { filtersBlurSeparableV1 } from "./filters/blur/separable/v1/module.js";
|
|
42
|
+
import { chromaKeyV1 } from "./keyer/chromaKey/v1/module.js";
|
|
43
|
+
import { keyerLumaKeyV1 } from "./keyer/lumaKey/v1/module.js";
|
|
44
|
+
import { maskApplyV1 } from "./mask/apply/v1/module.js";
|
|
45
|
+
import { maskFromImageV1 } from "./mask/fromImage/v1/module.js";
|
|
46
|
+
import { maskInvertV1 } from "./mask/invert/v1/module.js";
|
|
47
|
+
import { sourcesSolidV1 } from "./sources/solid/v1/module.js";
|
|
48
|
+
import { sourcesLinearGradientV1 } from "./sources/linearGradient/v1/module.js";
|
|
49
|
+
import { sourcesCheckerboardV1 } from "./sources/checkerboard/v1/module.js";
|
|
50
|
+
import { sourcesRadialGradientV1 } from "./sources/radialGradient/v1/module.js";
|
|
51
|
+
import { sourcesAngularGradientV1 } from "./sources/angularGradient/v1/module.js";
|
|
52
|
+
import { sourcesDiamondGradientV1 } from "./sources/diamondGradient/v1/module.js";
|
|
53
|
+
import { sourcesGaussianNoiseV1 } from "./sources/gaussianNoise/v1/module.js";
|
|
54
|
+
import { mixerAddV1 } from "./mixer/add/v1/module.js";
|
|
55
|
+
import { mixerColorOverlayV1 } from "./mixer/colorOverlay/v1/module.js";
|
|
56
|
+
import { mixerOutlineV1 } from "./mixer/outline/v1/module.js";
|
|
57
|
+
import { mixerShadowComposeV1 } from "./mixer/shadowCompose/v1/module.js";
|
|
58
|
+
import { mixerDropShadowV1 } from "./mixer/dropShadow/v1/module.js";
|
|
59
|
+
import { mixerOverV1 } from "./mixer/over/v1/module.js";
|
|
60
|
+
import { transformMirrorV1 } from "./transform/mirror/v1/module.js";
|
|
61
|
+
import { transformOffsetV1 } from "./transform/offset/v1/module.js";
|
|
62
|
+
import { transformCropV1 } from "./transform/crop/v1/module.js";
|
|
63
|
+
import { transformPadV1 } from "./transform/pad/v1/module.js";
|
|
64
|
+
import { transformTileV1 } from "./transform/tile/v1/module.js";
|
|
65
|
+
import { transformResizeV1 } from "./transform/resize/v1/module.js";
|
|
66
|
+
import { transformRotate90V1 } from "./transform/rotate90/v1/module.js";
|
|
67
|
+
import { transformAffineV1 } from "./transform/affine/v1/module.js";
|
|
68
|
+
import { transformCornerPinV1 } from "./transform/cornerPin/v1/module.js";
|
|
69
|
+
import { transformPolarRemapV1 } from "./transform/polarRemap/v1/module.js";
|
|
70
|
+
import { transformDisplaceV1 } from "./transform/displace/v1/module.js";
|
|
71
|
+
import { transformSpherizeV1 } from "./transform/spherize/v1/module.js";
|
|
72
|
+
import { alphaStraightToPremulV1 } from "./alpha/straightToPremul/v1/module.js";
|
|
73
|
+
import { alphaPremulToStraightV1 } from "./alpha/premulToStraight/v1/module.js";
|
|
74
|
+
export { passthroughV1, colorGradeV1, colorInvertV1, colorBrightnessContrastV1, colorHsbV1, colorExposureV1, colorPosterizeV1, colorCubeLutV1, colorChannelSplitV1, colorChannelShuffleV1, colorChannelMergeV1, colorGrayscaleV1, colorSolarizeV1, colorColorBalanceV1, colorExposureToneV1, colorLiftGammaGainV1, colorCdlV1, colorCurvesV1, colorHslAdjustV1, colorSplitToningV1, colorFilmLookV1, colorLevelsV1, blurGaussianV1, sharpenUnsharpMaskV1, vignetteV1, filtersGrainV1, filtersPixelateV1, filtersVisualFxV1, filtersThresholdV1, filtersConvolve3x3V1, filtersGlowV1, filtersBlurSeparableV1, chromaKeyV1, keyerLumaKeyV1, maskApplyV1, maskFromImageV1, maskInvertV1, sourcesSolidV1, sourcesLinearGradientV1, sourcesCheckerboardV1, sourcesRadialGradientV1, sourcesAngularGradientV1, sourcesDiamondGradientV1, sourcesGaussianNoiseV1, mixerAddV1, mixerColorOverlayV1, mixerOutlineV1, mixerShadowComposeV1, mixerDropShadowV1, mixerOverV1, transformMirrorV1, transformOffsetV1, transformCropV1, transformPadV1, transformTileV1, transformResizeV1, transformRotate90V1, transformAffineV1, transformCornerPinV1, transformPolarRemapV1, transformDisplaceV1, transformSpherizeV1, alphaStraightToPremulV1, alphaPremulToStraightV1 };
|
|
75
|
+
/**
|
|
76
|
+
* Every shader-style module (fragment + compute) registered by default.
|
|
77
|
+
* Recipes live in {@link ALL_RECIPES}.
|
|
78
|
+
*/
|
|
79
|
+
export const ALL_SHADERS = [
|
|
80
|
+
passthroughV1,
|
|
81
|
+
// color
|
|
82
|
+
colorGradeV1,
|
|
83
|
+
colorInvertV1,
|
|
84
|
+
colorBrightnessContrastV1,
|
|
85
|
+
colorHsbV1,
|
|
86
|
+
colorExposureV1,
|
|
87
|
+
colorPosterizeV1,
|
|
88
|
+
colorCubeLutV1,
|
|
89
|
+
colorChannelSplitV1,
|
|
90
|
+
colorChannelShuffleV1,
|
|
91
|
+
colorChannelMergeV1,
|
|
92
|
+
colorGrayscaleV1,
|
|
93
|
+
colorSolarizeV1,
|
|
94
|
+
colorColorBalanceV1,
|
|
95
|
+
colorExposureToneV1,
|
|
96
|
+
colorLiftGammaGainV1,
|
|
97
|
+
colorCdlV1,
|
|
98
|
+
colorCurvesV1,
|
|
99
|
+
colorHslAdjustV1,
|
|
100
|
+
colorSplitToningV1,
|
|
101
|
+
colorFilmLookV1,
|
|
102
|
+
colorLevelsV1,
|
|
103
|
+
// filters
|
|
104
|
+
blurGaussianV1,
|
|
105
|
+
sharpenUnsharpMaskV1,
|
|
106
|
+
vignetteV1,
|
|
107
|
+
filtersGrainV1,
|
|
108
|
+
filtersPixelateV1,
|
|
109
|
+
filtersVisualFxV1,
|
|
110
|
+
filtersThresholdV1,
|
|
111
|
+
filtersConvolve3x3V1,
|
|
112
|
+
// keyer
|
|
113
|
+
chromaKeyV1,
|
|
114
|
+
keyerLumaKeyV1,
|
|
115
|
+
// mask
|
|
116
|
+
maskApplyV1,
|
|
117
|
+
maskFromImageV1,
|
|
118
|
+
maskInvertV1,
|
|
119
|
+
// sources
|
|
120
|
+
sourcesSolidV1,
|
|
121
|
+
sourcesLinearGradientV1,
|
|
122
|
+
sourcesCheckerboardV1,
|
|
123
|
+
sourcesRadialGradientV1,
|
|
124
|
+
sourcesAngularGradientV1,
|
|
125
|
+
sourcesDiamondGradientV1,
|
|
126
|
+
sourcesGaussianNoiseV1,
|
|
127
|
+
// mixer
|
|
128
|
+
mixerAddV1,
|
|
129
|
+
mixerColorOverlayV1,
|
|
130
|
+
mixerOutlineV1,
|
|
131
|
+
mixerShadowComposeV1,
|
|
132
|
+
mixerOverV1,
|
|
133
|
+
// transform
|
|
134
|
+
transformMirrorV1,
|
|
135
|
+
transformOffsetV1,
|
|
136
|
+
transformCropV1,
|
|
137
|
+
transformPadV1,
|
|
138
|
+
transformTileV1,
|
|
139
|
+
transformResizeV1,
|
|
140
|
+
transformRotate90V1,
|
|
141
|
+
transformAffineV1,
|
|
142
|
+
transformCornerPinV1,
|
|
143
|
+
transformPolarRemapV1,
|
|
144
|
+
transformDisplaceV1,
|
|
145
|
+
transformSpherizeV1,
|
|
146
|
+
// alpha
|
|
147
|
+
alphaStraightToPremulV1,
|
|
148
|
+
alphaPremulToStraightV1
|
|
149
|
+
];
|
|
150
|
+
/** Every recipe module registered by default. */
|
|
151
|
+
export const ALL_RECIPES = [
|
|
152
|
+
filtersGlowV1,
|
|
153
|
+
filtersBlurSeparableV1,
|
|
154
|
+
mixerDropShadowV1
|
|
155
|
+
];
|
|
156
|
+
/** Both kinds, in catalog order. The registry's preload set. */
|
|
157
|
+
export const ALL_CATALOG = [
|
|
158
|
+
...ALL_SHADERS,
|
|
159
|
+
...ALL_RECIPES
|
|
160
|
+
];
|
|
161
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shaders/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `keyer.chromaKey@1` — clears pixels matching a key color, with tolerance,
|
|
3
|
+
* edge softness, and key-channel spill suppression.
|
|
4
|
+
*
|
|
5
|
+
* Migrated verbatim from the timeline preview's `chromaKeyComputeShader`. The
|
|
6
|
+
* host converts the `#rrggbb` key color to a normalized sRGB `vec3f` (channels
|
|
7
|
+
* in `0..1`, no linearization) and the comparison runs in that same encoded
|
|
8
|
+
* space the texture is stored in — behavior-preserving with the legacy path.
|
|
9
|
+
* Hand-packed uniform → TypeGPU `ChromaKeyParams` (the leading `vec3f` forces
|
|
10
|
+
* the same 16-byte alignment the legacy struct had).
|
|
11
|
+
*/
|
|
12
|
+
import * as d from "typegpu/data";
|
|
13
|
+
export declare const ChromaKeyParams: d.WgslStruct<{
|
|
14
|
+
keyColor: d.Vec3f;
|
|
15
|
+
tolerance: d.F32;
|
|
16
|
+
softness: d.F32;
|
|
17
|
+
spill: d.F32;
|
|
18
|
+
}>;
|
|
19
|
+
export declare const chromaKeyV1: import("../../../../module.js").ShaderModule<d.WgslStruct<{
|
|
20
|
+
keyColor: d.Vec3f;
|
|
21
|
+
tolerance: d.F32;
|
|
22
|
+
softness: d.F32;
|
|
23
|
+
spill: d.F32;
|
|
24
|
+
}>>;
|
|
25
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/keyer/chromaKey/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,eAAO,MAAM,eAAe;;;;;EAK1B,CAAC;AAQH,eAAO,MAAM,WAAW;;;;;GAoFtB,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `keyer.chromaKey@1` — clears pixels matching a key color, with tolerance,
|
|
3
|
+
* edge softness, and key-channel spill suppression.
|
|
4
|
+
*
|
|
5
|
+
* Migrated verbatim from the timeline preview's `chromaKeyComputeShader`. The
|
|
6
|
+
* host converts the `#rrggbb` key color to a normalized sRGB `vec3f` (channels
|
|
7
|
+
* in `0..1`, no linearization) and the comparison runs in that same encoded
|
|
8
|
+
* space the texture is stored in — behavior-preserving with the legacy path.
|
|
9
|
+
* Hand-packed uniform → TypeGPU `ChromaKeyParams` (the leading `vec3f` forces
|
|
10
|
+
* the same 16-byte alignment the legacy struct had).
|
|
11
|
+
*/
|
|
12
|
+
import tgpu from "typegpu";
|
|
13
|
+
import * as d from "typegpu/data";
|
|
14
|
+
import { defineModule } from "../../../../module.js";
|
|
15
|
+
export const ChromaKeyParams = d.struct({
|
|
16
|
+
keyColor: d.vec3f,
|
|
17
|
+
tolerance: d.f32,
|
|
18
|
+
softness: d.f32,
|
|
19
|
+
spill: d.f32
|
|
20
|
+
});
|
|
21
|
+
const layout = tgpu.bindGroupLayout({
|
|
22
|
+
source: { texture: "float" },
|
|
23
|
+
outputTexture: { storageTexture: "rgba8unorm" },
|
|
24
|
+
params: { uniform: ChromaKeyParams }
|
|
25
|
+
});
|
|
26
|
+
export const chromaKeyV1 = defineModule({
|
|
27
|
+
id: "keyer.chromaKey",
|
|
28
|
+
version: 1,
|
|
29
|
+
// Stable param schema (keyColor, tolerance, softness, spill); the canonical
|
|
30
|
+
// green/blue-screen keyer.
|
|
31
|
+
surface: "published",
|
|
32
|
+
category: "keyer",
|
|
33
|
+
linearity: "nonlinear-in-rgb",
|
|
34
|
+
kind: "compute",
|
|
35
|
+
params: ChromaKeyParams,
|
|
36
|
+
paramDefaults: {
|
|
37
|
+
keyColor: d.vec3f(0, 1, 0),
|
|
38
|
+
tolerance: 0,
|
|
39
|
+
softness: 0.1,
|
|
40
|
+
spill: 0.5
|
|
41
|
+
},
|
|
42
|
+
paramUi: {
|
|
43
|
+
keyColor: { label: "Key color", notes: "normalized sRGB, 0..1 per channel" },
|
|
44
|
+
tolerance: { min: 0, max: 1, step: 0.01, label: "Tolerance" },
|
|
45
|
+
softness: { min: 0, max: 1, step: 0.01, label: "Softness" },
|
|
46
|
+
spill: { min: 0, max: 1, step: 0.01, label: "Spill" }
|
|
47
|
+
},
|
|
48
|
+
layout,
|
|
49
|
+
workgroupSize: [16, 16, 1],
|
|
50
|
+
wgsl: /* wgsl */ `
|
|
51
|
+
@compute @workgroup_size(16, 16, 1)
|
|
52
|
+
fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
53
|
+
let dims = textureDimensions(layout.$.source);
|
|
54
|
+
if (gid.x >= dims.x || gid.y >= dims.y) { return; }
|
|
55
|
+
let coords = vec2<i32>(i32(gid.x), i32(gid.y));
|
|
56
|
+
let ck = layout.$.params;
|
|
57
|
+
let color = textureLoad(layout.$.source, coords, 0);
|
|
58
|
+
|
|
59
|
+
let dist = length(color.rgb - ck.keyColor);
|
|
60
|
+
let inner = ck.tolerance;
|
|
61
|
+
let outer = ck.tolerance + max(ck.softness, 0.001);
|
|
62
|
+
let mask = clamp((dist - inner) / (outer - inner), 0.0, 1.0);
|
|
63
|
+
let smoothMask = mask * mask * (3.0 - 2.0 * mask);
|
|
64
|
+
|
|
65
|
+
// Spill suppression: reduce the key channel toward the average of the
|
|
66
|
+
// other two channels for pixels that are near (but not fully) the key.
|
|
67
|
+
var rgb = color.rgb;
|
|
68
|
+
if (ck.spill > 0.001) {
|
|
69
|
+
let other = (color.r + color.g + color.b - max(color.r, max(color.g, color.b))) * 0.5;
|
|
70
|
+
let keyDom = ck.keyColor.g - max(ck.keyColor.r, ck.keyColor.b);
|
|
71
|
+
if (keyDom > 0.0) {
|
|
72
|
+
rgb.g = mix(rgb.g, min(rgb.g, other), ck.spill * (1.0 - smoothMask));
|
|
73
|
+
} else if (ck.keyColor.b - max(ck.keyColor.r, ck.keyColor.g) > 0.0) {
|
|
74
|
+
rgb.b = mix(rgb.b, min(rgb.b, other), ck.spill * (1.0 - smoothMask));
|
|
75
|
+
} else if (ck.keyColor.r - max(ck.keyColor.g, ck.keyColor.b) > 0.0) {
|
|
76
|
+
rgb.r = mix(rgb.r, min(rgb.r, other), ck.spill * (1.0 - smoothMask));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Input is straight per the IO contract: rgb and color.a are independent.
|
|
81
|
+
// Key comparison + spill suppression above are correct in that space. The
|
|
82
|
+
// pool downstream expects premultiplied, so fold the new alpha into rgb on
|
|
83
|
+
// the way out.
|
|
84
|
+
let outAlpha = color.a * smoothMask;
|
|
85
|
+
textureStore(layout.$.outputTexture, coords, vec4<f32>(rgb * outAlpha, outAlpha));
|
|
86
|
+
}
|
|
87
|
+
`,
|
|
88
|
+
io: {
|
|
89
|
+
inputs: {
|
|
90
|
+
source: {
|
|
91
|
+
// Keying compares `color.rgb` against the straight sRGB key color, so
|
|
92
|
+
// the shader genuinely needs straight input — the Executor's
|
|
93
|
+
// auto-bridge inserts `alpha.premulToStraight` ahead of this pass when
|
|
94
|
+
// a premultiplied chain feeds in.
|
|
95
|
+
colorSpace: "srgb",
|
|
96
|
+
alpha: "straight",
|
|
97
|
+
bindingKinds: ["texture_2d"]
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
output: {
|
|
101
|
+
// RGB is multiplied by the new alpha (`a * mask`) on store so the result
|
|
102
|
+
// re-enters the pool's premultiplied accumulation correctly.
|
|
103
|
+
colorSpace: "srgb",
|
|
104
|
+
alpha: "premultiplied",
|
|
105
|
+
format: "rgba8unorm",
|
|
106
|
+
dimensions: "same-as:source"
|
|
107
|
+
},
|
|
108
|
+
rod: "same-as:source"
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/shaders/keyer/chromaKey/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,KAAK;IACjB,SAAS,EAAE,CAAC,CAAC,GAAG;IAChB,QAAQ,EAAE,CAAC,CAAC,GAAG;IACf,KAAK,EAAE,CAAC,CAAC,GAAG;CACb,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC5B,aAAa,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;IAC/C,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;IACtC,EAAE,EAAE,iBAAiB;IACrB,OAAO,EAAE,CAAC;IACV,4EAA4E;IAC5E,2BAA2B;IAC3B,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,kBAAkB;IAC7B,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,eAAe;IACvB,aAAa,EAAE;QACb,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,GAAG;KACX;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,mCAAmC,EAAE;QAC5E,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;QAC7D,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;QAC3D,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;KACtD;IACD,MAAM;IACN,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqClB;IACC,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,sEAAsE;gBACtE,6DAA6D;gBAC7D,uEAAuE;gBACvE,kCAAkC;gBAClC,UAAU,EAAE,MAAM;gBAClB,KAAK,EAAE,UAAU;gBACjB,YAAY,EAAE,CAAC,YAAY,CAAC;aAC7B;SACF;QACD,MAAM,EAAE;YACN,yEAAyE;YACzE,6DAA6D;YAC7D,UAAU,EAAE,MAAM;YAClB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,gBAAgB;SAC7B;QACD,GAAG,EAAE,gBAAgB;KACtB;CACF,CAAC,CAAC"}
|