@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,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `color.channelShuffle@1` — permute / rebroadcast source channels onto the
|
|
3
|
+
* output.
|
|
4
|
+
*
|
|
5
|
+
* Four integer indices (`rFrom`, `gFrom`, `bFrom`, `aFrom`) pick which input
|
|
6
|
+
* channel feeds each output channel: `0` R, `1` G, `2` B, `3` A. The
|
|
7
|
+
* identity permutation `(0, 1, 2, 3)` is passthrough; common swaps include
|
|
8
|
+
* RGB↔BGR (`2, 1, 0, 3`) and "alpha to grayscale" (`3, 3, 3, 3`).
|
|
9
|
+
*
|
|
10
|
+
* Premultiplication: the pool's contract is that alpha is premultiplied
|
|
11
|
+
* between modules, so the shader un-premultiplies the source's RGB by its
|
|
12
|
+
* original alpha before picking, then re-premultiplies the result by the
|
|
13
|
+
* shuffled output alpha. That keeps the canonical premultiplied invariant
|
|
14
|
+
* intact regardless of which input channel `aFrom` points at.
|
|
15
|
+
*/
|
|
16
|
+
import tgpu from "typegpu";
|
|
17
|
+
import * as d from "typegpu/data";
|
|
18
|
+
import { defineModule } from "../../../../module.js";
|
|
19
|
+
export const ChannelShuffleParams = d.struct({
|
|
20
|
+
rFrom: d.f32,
|
|
21
|
+
gFrom: d.f32,
|
|
22
|
+
bFrom: d.f32,
|
|
23
|
+
aFrom: d.f32
|
|
24
|
+
});
|
|
25
|
+
const layout = tgpu.bindGroupLayout({
|
|
26
|
+
params: { uniform: ChannelShuffleParams },
|
|
27
|
+
source: { texture: "float" },
|
|
28
|
+
samp: { sampler: "filtering" }
|
|
29
|
+
});
|
|
30
|
+
const samplerDescriptor = {
|
|
31
|
+
magFilter: "linear",
|
|
32
|
+
minFilter: "linear",
|
|
33
|
+
addressModeU: "clamp-to-edge",
|
|
34
|
+
addressModeV: "clamp-to-edge"
|
|
35
|
+
};
|
|
36
|
+
export const colorChannelShuffleV1 = defineModule({
|
|
37
|
+
id: "color.channelShuffle",
|
|
38
|
+
version: 1,
|
|
39
|
+
surface: "internal",
|
|
40
|
+
category: "color",
|
|
41
|
+
linearity: "nonlinear-in-rgb",
|
|
42
|
+
kind: "fragment",
|
|
43
|
+
params: ChannelShuffleParams,
|
|
44
|
+
paramDefaults: { rFrom: 0, gFrom: 1, bFrom: 2, aFrom: 3 },
|
|
45
|
+
paramUi: {
|
|
46
|
+
rFrom: { min: 0, max: 3, step: 1, label: "R ← channel", notes: "0 R / 1 G / 2 B / 3 A" },
|
|
47
|
+
gFrom: { min: 0, max: 3, step: 1, label: "G ← channel", notes: "0 R / 1 G / 2 B / 3 A" },
|
|
48
|
+
bFrom: { min: 0, max: 3, step: 1, label: "B ← channel", notes: "0 R / 1 G / 2 B / 3 A" },
|
|
49
|
+
aFrom: { min: 0, max: 3, step: 1, label: "A ← channel", notes: "0 R / 1 G / 2 B / 3 A" }
|
|
50
|
+
},
|
|
51
|
+
layout,
|
|
52
|
+
samplers: { samp: samplerDescriptor },
|
|
53
|
+
wgsl: /* wgsl */ `
|
|
54
|
+
fn pick(src: vec4f, idx: i32) -> f32 {
|
|
55
|
+
if (idx == 0) { return src.r; }
|
|
56
|
+
if (idx == 1) { return src.g; }
|
|
57
|
+
if (idx == 2) { return src.b; }
|
|
58
|
+
return src.a;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@fragment
|
|
62
|
+
fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
|
|
63
|
+
let src = textureSample(layout.$.source, layout.$.samp, uv);
|
|
64
|
+
let p = layout.$.params;
|
|
65
|
+
// Un-premultiply by the source alpha so channels are picked in straight
|
|
66
|
+
// space, then re-premultiply by the chosen output alpha — keeps the pool's
|
|
67
|
+
// premultiplied-between-modules invariant regardless of aFrom.
|
|
68
|
+
let safeA = max(src.a, 0.0001);
|
|
69
|
+
let straight = vec4f(src.rgb / safeA, src.a);
|
|
70
|
+
let outA = pick(straight, i32(round(p.aFrom)) & 3);
|
|
71
|
+
let outR = pick(straight, i32(round(p.rFrom)) & 3) * outA;
|
|
72
|
+
let outG = pick(straight, i32(round(p.gFrom)) & 3) * outA;
|
|
73
|
+
let outB = pick(straight, i32(round(p.bFrom)) & 3) * outA;
|
|
74
|
+
return vec4f(outR, outG, outB, outA);
|
|
75
|
+
}
|
|
76
|
+
`,
|
|
77
|
+
io: {
|
|
78
|
+
inputs: {
|
|
79
|
+
source: {
|
|
80
|
+
colorSpace: "linear",
|
|
81
|
+
alpha: "premultiplied",
|
|
82
|
+
bindingKinds: ["texture_2d"]
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
output: {
|
|
86
|
+
colorSpace: "linear",
|
|
87
|
+
alpha: "premultiplied",
|
|
88
|
+
format: "rgba8unorm",
|
|
89
|
+
dimensions: "same-as:source"
|
|
90
|
+
},
|
|
91
|
+
rod: "same-as:source"
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/shaders/color/channelShuffle/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;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,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,GAAG;IACZ,KAAK,EAAE,CAAC,CAAC,GAAG;IACZ,KAAK,EAAE,CAAC,CAAC,GAAG;IACZ,KAAK,EAAE,CAAC,CAAC,GAAG;CACb,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACzC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC5B,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAyB;IAC9C,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;IAChD,EAAE,EAAE,sBAAsB;IAC1B,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,kBAAkB;IAC7B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,oBAAoB;IAC5B,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IACzD,OAAO,EAAE;QACP,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,uBAAuB,EAAE;QACxF,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,uBAAuB,EAAE;QACxF,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,uBAAuB,EAAE;QACxF,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,uBAAuB,EAAE;KACzF;IACD,MAAM;IACN,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACrC,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBlB;IACC,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,UAAU,EAAE,QAAQ;gBACpB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,CAAC,YAAY,CAAC;aAC7B;SACF;QACD,MAAM,EAAE;YACN,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,gBAAgB;SAC7B;QACD,GAAG,EAAE,gBAAgB;KACtB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `color.channelSplit@1` — output a single channel of the source as
|
|
3
|
+
* opaque grayscale RGB.
|
|
4
|
+
*
|
|
5
|
+
* `mode = 0` red, `1` green, `2` blue, `3` alpha, `4` luminance
|
|
6
|
+
* (`0.299R + 0.587G + 0.114B`). The selected value is broadcast to all three
|
|
7
|
+
* output RGB channels and the alpha is forced to `1.0`, so the result is a
|
|
8
|
+
* standard grayscale visualization safe to chain into any RGBA consumer.
|
|
9
|
+
* Pairs with `color.channelMerge` to build per-channel pipelines.
|
|
10
|
+
*/
|
|
11
|
+
import * as d from "typegpu/data";
|
|
12
|
+
export declare const ChannelSplitParams: d.WgslStruct<{
|
|
13
|
+
mode: d.F32;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const colorChannelSplitV1: import("../../../../module.js").ShaderModule<d.WgslStruct<{
|
|
16
|
+
mode: d.F32;
|
|
17
|
+
}>>;
|
|
18
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/color/channelSplit/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,eAAO,MAAM,kBAAkB;;EAE7B,CAAC;AAeH,eAAO,MAAM,mBAAmB;;GA6D9B,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `color.channelSplit@1` — output a single channel of the source as
|
|
3
|
+
* opaque grayscale RGB.
|
|
4
|
+
*
|
|
5
|
+
* `mode = 0` red, `1` green, `2` blue, `3` alpha, `4` luminance
|
|
6
|
+
* (`0.299R + 0.587G + 0.114B`). The selected value is broadcast to all three
|
|
7
|
+
* output RGB channels and the alpha is forced to `1.0`, so the result is a
|
|
8
|
+
* standard grayscale visualization safe to chain into any RGBA consumer.
|
|
9
|
+
* Pairs with `color.channelMerge` to build per-channel pipelines.
|
|
10
|
+
*/
|
|
11
|
+
import tgpu from "typegpu";
|
|
12
|
+
import * as d from "typegpu/data";
|
|
13
|
+
import { defineModule } from "../../../../module.js";
|
|
14
|
+
export const ChannelSplitParams = d.struct({
|
|
15
|
+
mode: d.f32
|
|
16
|
+
});
|
|
17
|
+
const layout = tgpu.bindGroupLayout({
|
|
18
|
+
params: { uniform: ChannelSplitParams },
|
|
19
|
+
source: { texture: "float" },
|
|
20
|
+
samp: { sampler: "filtering" }
|
|
21
|
+
});
|
|
22
|
+
const samplerDescriptor = {
|
|
23
|
+
magFilter: "linear",
|
|
24
|
+
minFilter: "linear",
|
|
25
|
+
addressModeU: "clamp-to-edge",
|
|
26
|
+
addressModeV: "clamp-to-edge"
|
|
27
|
+
};
|
|
28
|
+
export const colorChannelSplitV1 = defineModule({
|
|
29
|
+
id: "color.channelSplit",
|
|
30
|
+
version: 1,
|
|
31
|
+
surface: "internal",
|
|
32
|
+
category: "color",
|
|
33
|
+
linearity: "nonlinear-in-rgb",
|
|
34
|
+
kind: "fragment",
|
|
35
|
+
params: ChannelSplitParams,
|
|
36
|
+
paramDefaults: { mode: 0 },
|
|
37
|
+
paramUi: {
|
|
38
|
+
mode: {
|
|
39
|
+
min: 0,
|
|
40
|
+
max: 4,
|
|
41
|
+
step: 1,
|
|
42
|
+
label: "Channel",
|
|
43
|
+
notes: "0 R / 1 G / 2 B / 3 A / 4 luma"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
layout,
|
|
47
|
+
samplers: { samp: samplerDescriptor },
|
|
48
|
+
wgsl: /* wgsl */ `
|
|
49
|
+
@fragment
|
|
50
|
+
fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
|
|
51
|
+
let src = textureSample(layout.$.source, layout.$.samp, uv);
|
|
52
|
+
// Un-premultiply so the reported channel/luma reflects the underlying
|
|
53
|
+
// straight colour. Reading premultiplied rgb directly under-reports every
|
|
54
|
+
// channel on partial-alpha pixels (e.g. a 50%-transparent mid-grey reads at
|
|
55
|
+
// half its true value).
|
|
56
|
+
let straight = src.rgb / max(src.a, 1.0 / 255.0);
|
|
57
|
+
let mode = i32(round(layout.$.params.mode));
|
|
58
|
+
var v: f32 = 0.0;
|
|
59
|
+
if (mode == 0) {
|
|
60
|
+
v = straight.r;
|
|
61
|
+
} else if (mode == 1) {
|
|
62
|
+
v = straight.g;
|
|
63
|
+
} else if (mode == 2) {
|
|
64
|
+
v = straight.b;
|
|
65
|
+
} else if (mode == 3) {
|
|
66
|
+
v = src.a;
|
|
67
|
+
} else {
|
|
68
|
+
v = dot(straight, vec3f(0.299, 0.587, 0.114));
|
|
69
|
+
}
|
|
70
|
+
return vec4f(v, v, v, 1.0);
|
|
71
|
+
}
|
|
72
|
+
`,
|
|
73
|
+
io: {
|
|
74
|
+
inputs: {
|
|
75
|
+
source: {
|
|
76
|
+
colorSpace: "linear",
|
|
77
|
+
alpha: "premultiplied",
|
|
78
|
+
bindingKinds: ["texture_2d"]
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
output: {
|
|
82
|
+
colorSpace: "linear",
|
|
83
|
+
alpha: "premultiplied",
|
|
84
|
+
format: "rgba8unorm",
|
|
85
|
+
dimensions: "same-as:source"
|
|
86
|
+
},
|
|
87
|
+
rod: "same-as:source"
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/shaders/color/channelSplit/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;IACvC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC5B,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAyB;IAC9C,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;IAC9C,EAAE,EAAE,oBAAoB;IACxB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,kBAAkB;IAC7B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,kBAAkB;IAC1B,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;IAC1B,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,gCAAgC;SACxC;KACF;IACD,MAAM;IACN,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACrC,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAwBlB;IACC,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,UAAU,EAAE,QAAQ;gBACpB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,CAAC,YAAY,CAAC;aAC7B;SACF;QACD,MAAM,EAAE;YACN,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,gBAAgB;SAC7B;QACD,GAAG,EAAE,gBAAgB;KACtB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `color.colorBalance@1` — white-balance temperature / tint shift.
|
|
3
|
+
*
|
|
4
|
+
* Ported verbatim from the CPU `lib.image.color_grading.ColorBalance` loop:
|
|
5
|
+
* temperature pushes red up and blue down (warmer), tint trades green against
|
|
6
|
+
* magenta. Both knobs are scaled by `0.3` then applied additively to straight
|
|
7
|
+
* RGB. Fragment, with the canonical optional mask slot.
|
|
8
|
+
*/
|
|
9
|
+
import * as d from "typegpu/data";
|
|
10
|
+
export declare const ColorBalanceParams: d.WgslStruct<{
|
|
11
|
+
temperature: d.F32;
|
|
12
|
+
tint: d.F32;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const colorColorBalanceV1: import("../../../../module.js").ShaderModule<d.WgslStruct<{
|
|
15
|
+
temperature: d.F32;
|
|
16
|
+
tint: d.F32;
|
|
17
|
+
}>>;
|
|
18
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/color/colorBalance/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,eAAO,MAAM,kBAAkB;;;EAG7B,CAAC;AAgBH,eAAO,MAAM,mBAAmB;;;GAyD9B,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `color.colorBalance@1` — white-balance temperature / tint shift.
|
|
3
|
+
*
|
|
4
|
+
* Ported verbatim from the CPU `lib.image.color_grading.ColorBalance` loop:
|
|
5
|
+
* temperature pushes red up and blue down (warmer), tint trades green against
|
|
6
|
+
* magenta. Both knobs are scaled by `0.3` then applied additively to straight
|
|
7
|
+
* RGB. Fragment, with the canonical optional mask slot.
|
|
8
|
+
*/
|
|
9
|
+
import tgpu from "typegpu";
|
|
10
|
+
import * as d from "typegpu/data";
|
|
11
|
+
import { defineModule } from "../../../../module.js";
|
|
12
|
+
export const ColorBalanceParams = d.struct({
|
|
13
|
+
temperature: d.f32,
|
|
14
|
+
tint: d.f32
|
|
15
|
+
});
|
|
16
|
+
const layout = tgpu.bindGroupLayout({
|
|
17
|
+
params: { uniform: ColorBalanceParams },
|
|
18
|
+
source: { texture: "float" },
|
|
19
|
+
mask: { texture: "float" },
|
|
20
|
+
samp: { sampler: "filtering" }
|
|
21
|
+
});
|
|
22
|
+
const samplerDescriptor = {
|
|
23
|
+
magFilter: "linear",
|
|
24
|
+
minFilter: "linear",
|
|
25
|
+
addressModeU: "clamp-to-edge",
|
|
26
|
+
addressModeV: "clamp-to-edge"
|
|
27
|
+
};
|
|
28
|
+
export const colorColorBalanceV1 = defineModule({
|
|
29
|
+
id: "color.colorBalance",
|
|
30
|
+
version: 1,
|
|
31
|
+
surface: "internal",
|
|
32
|
+
category: "color",
|
|
33
|
+
linearity: "nonlinear-in-rgb",
|
|
34
|
+
kind: "fragment",
|
|
35
|
+
params: ColorBalanceParams,
|
|
36
|
+
paramDefaults: { temperature: 0, tint: 0 },
|
|
37
|
+
paramUi: {
|
|
38
|
+
temperature: { min: -1, max: 1, step: 0.01, label: "Temperature" },
|
|
39
|
+
tint: { min: -1, max: 1, step: 0.01, label: "Tint" }
|
|
40
|
+
},
|
|
41
|
+
layout,
|
|
42
|
+
samplers: { samp: samplerDescriptor },
|
|
43
|
+
wgsl: /* wgsl */ `
|
|
44
|
+
@fragment
|
|
45
|
+
fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
|
|
46
|
+
let src = textureSample(layout.$.source, layout.$.samp, uv);
|
|
47
|
+
let coverage = textureSample(layout.$.mask, layout.$.samp, uv).a;
|
|
48
|
+
let p = layout.$.params;
|
|
49
|
+
// Operate on straight color so the additive shifts act on the underlying
|
|
50
|
+
// colour, not the premultiplied magnitude. Re-premultiply on store.
|
|
51
|
+
let safeA = max(src.a, 1.0 / 255.0);
|
|
52
|
+
let straight = src.rgb / safeA;
|
|
53
|
+
let tempShift = p.temperature * 0.3;
|
|
54
|
+
let tintShift = p.tint * 0.3;
|
|
55
|
+
var rgb = straight;
|
|
56
|
+
rgb.r = rgb.r + tempShift + tintShift * 0.5;
|
|
57
|
+
rgb.g = rgb.g - tintShift;
|
|
58
|
+
rgb.b = rgb.b - tempShift + tintShift * 0.5;
|
|
59
|
+
let mixed = mix(straight, rgb, coverage);
|
|
60
|
+
return vec4f(clamp(mixed, vec3f(0.0), vec3f(1.0)) * src.a, src.a);
|
|
61
|
+
}
|
|
62
|
+
`,
|
|
63
|
+
io: {
|
|
64
|
+
inputs: {
|
|
65
|
+
source: {
|
|
66
|
+
colorSpace: "srgb",
|
|
67
|
+
alpha: "premultiplied",
|
|
68
|
+
bindingKinds: ["texture_2d"]
|
|
69
|
+
},
|
|
70
|
+
mask: {
|
|
71
|
+
colorSpace: "srgb",
|
|
72
|
+
alpha: "premultiplied",
|
|
73
|
+
bindingKinds: ["texture_2d"],
|
|
74
|
+
optional: true
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
output: {
|
|
78
|
+
colorSpace: "srgb",
|
|
79
|
+
alpha: "premultiplied",
|
|
80
|
+
format: "rgba8unorm",
|
|
81
|
+
dimensions: "same-as:source"
|
|
82
|
+
},
|
|
83
|
+
rod: "same-as:source"
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/shaders/color/colorBalance/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;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,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,GAAG;IAClB,IAAI,EAAE,CAAC,CAAC,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;IACvC,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,iBAAiB,GAAyB;IAC9C,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;IAC9C,EAAE,EAAE,oBAAoB;IACxB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,kBAAkB;IAC7B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,kBAAkB;IAC1B,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IAC1C,OAAO,EAAE;QACP,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE;QAClE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;KACrD;IACD,MAAM;IACN,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACrC,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;CAmBlB;IACC,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,UAAU,EAAE,MAAM;gBAClB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,CAAC,YAAY,CAAC;aAC7B;YACD,IAAI,EAAE;gBACJ,UAAU,EAAE,MAAM;gBAClB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,CAAC,YAAY,CAAC;gBAC5B,QAAQ,EAAE,IAAI;aACf;SACF;QACD,MAAM,EAAE;YACN,UAAU,EAAE,MAAM;YAClB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,gBAAgB;SAC7B;QACD,GAAG,EAAE,gBAAgB;KACtB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as d from "typegpu/data";
|
|
2
|
+
export declare const CubeLutParams: d.WgslStruct<{
|
|
3
|
+
size: d.F32;
|
|
4
|
+
intensity: d.F32;
|
|
5
|
+
domainMin: d.Vec4f;
|
|
6
|
+
domainMax: d.Vec4f;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const colorCubeLutV1: import("../../../../module.js").ShaderModule<d.WgslStruct<{
|
|
9
|
+
size: d.F32;
|
|
10
|
+
intensity: d.F32;
|
|
11
|
+
domainMin: d.Vec4f;
|
|
12
|
+
domainMax: d.Vec4f;
|
|
13
|
+
}>>;
|
|
14
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/color/cubeLut/v1/module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,eAAO,MAAM,aAAa;;;;;EAKxB,CAAC;AAUH,eAAO,MAAM,cAAc;;;;;GA4DzB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import tgpu from "typegpu";
|
|
2
|
+
import * as d from "typegpu/data";
|
|
3
|
+
import { defineModule } from "../../../../module.js";
|
|
4
|
+
export const CubeLutParams = d.struct({
|
|
5
|
+
size: d.f32,
|
|
6
|
+
intensity: d.f32,
|
|
7
|
+
domainMin: d.vec4f,
|
|
8
|
+
domainMax: d.vec4f
|
|
9
|
+
});
|
|
10
|
+
const layout = tgpu.bindGroupLayout({
|
|
11
|
+
params: { uniform: CubeLutParams },
|
|
12
|
+
source: { texture: "float" },
|
|
13
|
+
lut: { texture: "float" },
|
|
14
|
+
mask: { texture: "float" },
|
|
15
|
+
samp: { sampler: "filtering" }
|
|
16
|
+
});
|
|
17
|
+
export const colorCubeLutV1 = defineModule({
|
|
18
|
+
id: "color.cubeLut",
|
|
19
|
+
version: 1,
|
|
20
|
+
surface: "internal",
|
|
21
|
+
category: "color",
|
|
22
|
+
linearity: "nonlinear-in-rgb",
|
|
23
|
+
kind: "fragment",
|
|
24
|
+
params: CubeLutParams,
|
|
25
|
+
paramDefaults: {
|
|
26
|
+
size: 2,
|
|
27
|
+
intensity: 1,
|
|
28
|
+
domainMin: d.vec4f(0, 0, 0, 0),
|
|
29
|
+
domainMax: d.vec4f(1, 1, 1, 0)
|
|
30
|
+
},
|
|
31
|
+
layout,
|
|
32
|
+
samplers: { samp: { magFilter: "linear", minFilter: "linear", addressModeU: "clamp-to-edge", addressModeV: "clamp-to-edge" } },
|
|
33
|
+
wgsl: /* wgsl */ `
|
|
34
|
+
fn lookup(r: i32, g: i32, b: i32, size: i32) -> vec3f {
|
|
35
|
+
return textureLoad(layout.$.lut, vec2i(b * size + r, g), 0).rgb;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@fragment
|
|
39
|
+
fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
|
|
40
|
+
let p = layout.$.params;
|
|
41
|
+
let src = textureSample(layout.$.source, layout.$.samp, uv);
|
|
42
|
+
let coverage = textureSample(layout.$.mask, layout.$.samp, uv).a;
|
|
43
|
+
let size = i32(round(p.size));
|
|
44
|
+
let straight = src.rgb / max(src.a, 1.0 / 255.0);
|
|
45
|
+
let domain = max(p.domainMax.xyz - p.domainMin.xyz, vec3f(0.000001));
|
|
46
|
+
let coordinate = clamp((straight - p.domainMin.xyz) / domain, vec3f(0.0), vec3f(1.0)) * f32(size - 1);
|
|
47
|
+
let lo = vec3i(floor(coordinate));
|
|
48
|
+
let hi = min(lo + vec3i(1), vec3i(size - 1));
|
|
49
|
+
let f = fract(coordinate);
|
|
50
|
+
var graded = vec3f(0.0);
|
|
51
|
+
for (var bz = 0; bz <= 1; bz = bz + 1) {
|
|
52
|
+
for (var gy = 0; gy <= 1; gy = gy + 1) {
|
|
53
|
+
for (var rx = 0; rx <= 1; rx = rx + 1) {
|
|
54
|
+
let r = select(lo.x, hi.x, rx == 1);
|
|
55
|
+
let g = select(lo.y, hi.y, gy == 1);
|
|
56
|
+
let b = select(lo.z, hi.z, bz == 1);
|
|
57
|
+
let weight = select(1.0 - f.x, f.x, rx == 1)
|
|
58
|
+
* select(1.0 - f.y, f.y, gy == 1)
|
|
59
|
+
* select(1.0 - f.z, f.z, bz == 1);
|
|
60
|
+
graded = graded + lookup(r, g, b, size) * weight;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
let mixAmount = clamp(p.intensity * coverage, 0.0, 1.0);
|
|
65
|
+
return vec4f(clamp(mix(straight, graded, mixAmount), vec3f(0.0), vec3f(1.0)) * src.a, src.a);
|
|
66
|
+
}
|
|
67
|
+
`,
|
|
68
|
+
io: {
|
|
69
|
+
inputs: {
|
|
70
|
+
source: { colorSpace: "srgb", alpha: "premultiplied", bindingKinds: ["texture_2d"] },
|
|
71
|
+
lut: { colorSpace: "srgb", alpha: "premultiplied", bindingKinds: ["texture_2d"] },
|
|
72
|
+
mask: { colorSpace: "srgb", alpha: "premultiplied", bindingKinds: ["texture_2d"], optional: true }
|
|
73
|
+
},
|
|
74
|
+
output: { colorSpace: "srgb", alpha: "premultiplied", format: "rgba8unorm", dimensions: "same-as:source" },
|
|
75
|
+
rod: "same-as:source"
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/shaders/color/cubeLut/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,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,GAAG;IACX,SAAS,EAAE,CAAC,CAAC,GAAG;IAChB,SAAS,EAAE,CAAC,CAAC,KAAK;IAClB,SAAS,EAAE,CAAC,CAAC,KAAK;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC5B,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IACzB,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC1B,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;IACzC,EAAE,EAAE,eAAe;IACnB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,kBAAkB;IAC7B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,aAAa;IACrB,aAAa,EAAE;QACb,IAAI,EAAE,CAAC;QACP,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KAC/B;IACD,MAAM;IACN,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE;IAC9H,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkClB;IACC,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC,EAAE;YACpF,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC,EAAE;YACjF,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;SACnG;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE;QAC1G,GAAG,EAAE,gBAAgB;KACtB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `color.curves@1` — black/white-point levels plus shadow / midtone /
|
|
3
|
+
* highlight tonal bends, with per-channel midtone gamma.
|
|
4
|
+
*
|
|
5
|
+
* Ported verbatim from the CPU `lib.image.color_grading.Curves` loop:
|
|
6
|
+
* remap `[blackPoint, whitePoint]` to `[0, 1]`, apply a parametric shadow lift,
|
|
7
|
+
* a global midtone gamma, a highlight roll, then a per-channel midtone gamma.
|
|
8
|
+
* Fragment, with the canonical optional mask slot.
|
|
9
|
+
*/
|
|
10
|
+
import * as d from "typegpu/data";
|
|
11
|
+
export declare const CurvesParams: d.WgslStruct<{
|
|
12
|
+
blackPoint: d.F32;
|
|
13
|
+
whitePoint: d.F32;
|
|
14
|
+
shadows: d.F32;
|
|
15
|
+
midtones: d.F32;
|
|
16
|
+
highlights: d.F32;
|
|
17
|
+
redMidtones: d.F32;
|
|
18
|
+
greenMidtones: d.F32;
|
|
19
|
+
blueMidtones: d.F32;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const colorCurvesV1: import("../../../../module.js").ShaderModule<d.WgslStruct<{
|
|
22
|
+
blackPoint: d.F32;
|
|
23
|
+
whitePoint: d.F32;
|
|
24
|
+
shadows: d.F32;
|
|
25
|
+
midtones: d.F32;
|
|
26
|
+
highlights: d.F32;
|
|
27
|
+
redMidtones: d.F32;
|
|
28
|
+
greenMidtones: d.F32;
|
|
29
|
+
blueMidtones: d.F32;
|
|
30
|
+
}>>;
|
|
31
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/color/curves/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,eAAO,MAAM,YAAY;;;;;;;;;EASvB,CAAC;AAgBH,eAAO,MAAM,aAAa;;;;;;;;;GAkExB,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `color.curves@1` — black/white-point levels plus shadow / midtone /
|
|
3
|
+
* highlight tonal bends, with per-channel midtone gamma.
|
|
4
|
+
*
|
|
5
|
+
* Ported verbatim from the CPU `lib.image.color_grading.Curves` loop:
|
|
6
|
+
* remap `[blackPoint, whitePoint]` to `[0, 1]`, apply a parametric shadow lift,
|
|
7
|
+
* a global midtone gamma, a highlight roll, then a per-channel midtone gamma.
|
|
8
|
+
* Fragment, with the canonical optional mask slot.
|
|
9
|
+
*/
|
|
10
|
+
import tgpu from "typegpu";
|
|
11
|
+
import * as d from "typegpu/data";
|
|
12
|
+
import { defineModule } from "../../../../module.js";
|
|
13
|
+
export const CurvesParams = d.struct({
|
|
14
|
+
blackPoint: d.f32,
|
|
15
|
+
whitePoint: d.f32,
|
|
16
|
+
shadows: d.f32,
|
|
17
|
+
midtones: d.f32,
|
|
18
|
+
highlights: d.f32,
|
|
19
|
+
redMidtones: d.f32,
|
|
20
|
+
greenMidtones: d.f32,
|
|
21
|
+
blueMidtones: d.f32
|
|
22
|
+
});
|
|
23
|
+
const layout = tgpu.bindGroupLayout({
|
|
24
|
+
params: { uniform: CurvesParams },
|
|
25
|
+
source: { texture: "float" },
|
|
26
|
+
mask: { texture: "float" },
|
|
27
|
+
samp: { sampler: "filtering" }
|
|
28
|
+
});
|
|
29
|
+
const samplerDescriptor = {
|
|
30
|
+
magFilter: "linear",
|
|
31
|
+
minFilter: "linear",
|
|
32
|
+
addressModeU: "clamp-to-edge",
|
|
33
|
+
addressModeV: "clamp-to-edge"
|
|
34
|
+
};
|
|
35
|
+
export const colorCurvesV1 = defineModule({
|
|
36
|
+
id: "color.curves",
|
|
37
|
+
version: 1,
|
|
38
|
+
surface: "internal",
|
|
39
|
+
category: "color",
|
|
40
|
+
linearity: "nonlinear-in-rgb",
|
|
41
|
+
kind: "fragment",
|
|
42
|
+
params: CurvesParams,
|
|
43
|
+
paramDefaults: {
|
|
44
|
+
blackPoint: 0,
|
|
45
|
+
whitePoint: 1,
|
|
46
|
+
shadows: 0,
|
|
47
|
+
midtones: 0,
|
|
48
|
+
highlights: 0,
|
|
49
|
+
redMidtones: 0,
|
|
50
|
+
greenMidtones: 0,
|
|
51
|
+
blueMidtones: 0
|
|
52
|
+
},
|
|
53
|
+
layout,
|
|
54
|
+
samplers: { samp: samplerDescriptor },
|
|
55
|
+
wgsl: /* wgsl */ `
|
|
56
|
+
@fragment
|
|
57
|
+
fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
|
|
58
|
+
let src = textureSample(layout.$.source, layout.$.samp, uv);
|
|
59
|
+
let coverage = textureSample(layout.$.mask, layout.$.samp, uv).a;
|
|
60
|
+
let p = layout.$.params;
|
|
61
|
+
let safeA = max(src.a, 1.0 / 255.0);
|
|
62
|
+
let straight = src.rgb / safeA;
|
|
63
|
+
let range = max(0.001, p.whitePoint - p.blackPoint);
|
|
64
|
+
let gammaAll = 1.0 / max(0.01, 1.0 + p.midtones);
|
|
65
|
+
let gammaPer = vec3f(
|
|
66
|
+
1.0 / max(0.01, 1.0 + p.redMidtones),
|
|
67
|
+
1.0 / max(0.01, 1.0 + p.greenMidtones),
|
|
68
|
+
1.0 / max(0.01, 1.0 + p.blueMidtones)
|
|
69
|
+
);
|
|
70
|
+
var rgb = clamp((straight - vec3f(p.blackPoint)) / range, vec3f(0.0), vec3f(1.0));
|
|
71
|
+
rgb = rgb + p.shadows * (vec3f(1.0) - rgb) * rgb;
|
|
72
|
+
rgb = pow(max(rgb, vec3f(0.0)), vec3f(gammaAll));
|
|
73
|
+
rgb = rgb + p.highlights * rgb * (vec3f(1.0) - rgb);
|
|
74
|
+
rgb = pow(max(rgb, vec3f(0.0)), gammaPer);
|
|
75
|
+
let mixed = mix(straight, rgb, coverage);
|
|
76
|
+
return vec4f(clamp(mixed, vec3f(0.0), vec3f(1.0)) * src.a, src.a);
|
|
77
|
+
}
|
|
78
|
+
`,
|
|
79
|
+
io: {
|
|
80
|
+
inputs: {
|
|
81
|
+
source: {
|
|
82
|
+
colorSpace: "srgb",
|
|
83
|
+
alpha: "premultiplied",
|
|
84
|
+
bindingKinds: ["texture_2d"]
|
|
85
|
+
},
|
|
86
|
+
mask: {
|
|
87
|
+
colorSpace: "srgb",
|
|
88
|
+
alpha: "premultiplied",
|
|
89
|
+
bindingKinds: ["texture_2d"],
|
|
90
|
+
optional: true
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
output: {
|
|
94
|
+
colorSpace: "srgb",
|
|
95
|
+
alpha: "premultiplied",
|
|
96
|
+
format: "rgba8unorm",
|
|
97
|
+
dimensions: "same-as:source"
|
|
98
|
+
},
|
|
99
|
+
rod: "same-as:source"
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/shaders/color/curves/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,GAAG;IACjB,UAAU,EAAE,CAAC,CAAC,GAAG;IACjB,OAAO,EAAE,CAAC,CAAC,GAAG;IACd,QAAQ,EAAE,CAAC,CAAC,GAAG;IACf,UAAU,EAAE,CAAC,CAAC,GAAG;IACjB,WAAW,EAAE,CAAC,CAAC,GAAG;IAClB,aAAa,EAAE,CAAC,CAAC,GAAG;IACpB,YAAY,EAAE,CAAC,CAAC,GAAG;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;IACjC,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,iBAAiB,GAAyB;IAC9C,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;IACxC,EAAE,EAAE,cAAc;IAClB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,kBAAkB;IAC7B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE;QACb,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;KAChB;IACD,MAAM;IACN,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACrC,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBlB;IACC,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,UAAU,EAAE,MAAM;gBAClB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,CAAC,YAAY,CAAC;aAC7B;YACD,IAAI,EAAE;gBACJ,UAAU,EAAE,MAAM;gBAClB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,CAAC,YAAY,CAAC;gBAC5B,QAAQ,EAAE,IAAI;aACf;SACF;QACD,MAAM,EAAE;YACN,UAAU,EAAE,MAAM;YAClB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,gBAAgB;SAC7B;QACD,GAAG,EAAE,gBAAgB;KACtB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `color.exposure@1` — multiplicative exposure in stops (`rgb *= pow(2, stops)`).
|
|
3
|
+
*
|
|
4
|
+
* `0` stops is passthrough; `+1` doubles, `-1` halves. Clamps output to
|
|
5
|
+
* `[0, 1]` since the working format is SDR; HDR exposure ships with the
|
|
6
|
+
* separate HDR pipeline plan. Fragment, with the canonical mask slot.
|
|
7
|
+
*/
|
|
8
|
+
import * as d from "typegpu/data";
|
|
9
|
+
export declare const ExposureParams: d.WgslStruct<{
|
|
10
|
+
stops: d.F32;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const colorExposureV1: import("../../../../module.js").ShaderModule<d.WgslStruct<{
|
|
13
|
+
stops: d.F32;
|
|
14
|
+
}>>;
|
|
15
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/color/exposure/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,eAAO,MAAM,cAAc;;EAEzB,CAAC;AAgBH,eAAO,MAAM,eAAe;;GAmD1B,CAAC"}
|