import { d } from './index'; /** Luminance (ITU-R BT.709). */ export declare const luminance: import('typegpu').TgpuFn<(rgb: d.Vec3f) => d.F32>; /** * Premultiplied-alpha → straight-alpha. RTT boundaries produce premultiplied data (the "over" * composite accumulates RGB weighted by alpha), so effects that SAMPLE an RTT and return into the * blend pipeline (which expects straight alpha) must convert back. No-op at alpha 1. Used by the * uvRemap-distortion / RTT-filter effects (Twirl, Bulge, Liquify, …). * straightRGB = alpha > 0.001 ? rgb / alpha : vec3(0); returns vec4(straightRGB, alpha). */ export declare const unpremultiplyAlpha: import('typegpu').TgpuFn<(color: d.Vec4f) => d.Vec4f>; export declare const normal: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const normalOklch: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const normalOklab: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const multiply: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const screen: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const linearDodge: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const overlay: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const difference: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const colorDodge: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const exclusion: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const color: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const luminosity: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const darken: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const lighten: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const colorBurn: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const linearBurn: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const softLight: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const hardLight: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const hue: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; export declare const saturation: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; /** * All 20 blend modes keyed by the exact mode names used by the design editor / presets. * The composer references these as externals. */ export declare const blendModes: { readonly normal: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly 'normal-oklch': import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly 'normal-oklab': import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly multiply: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly screen: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly linearDodge: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly overlay: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly difference: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly colorDodge: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly exclusion: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly color: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly luminosity: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly darken: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly lighten: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly colorBurn: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly linearBurn: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly softLight: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly hardLight: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly hue: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; readonly saturation: import('typegpu').TgpuFn<(base: d.Vec4f, overlay: d.Vec4f, opacity: d.F32) => d.Vec4f>; }; export type BlendMode = keyof typeof blendModes; /** * Blend two colors using the named mode — CPU/builder-level dispatcher. `blendMode` is * compile-time (part of the pipeline hash), so selection stays on the CPU. Inside a `'use gpu'` * body, reference `blendModes[mode]` (a `tgpu.fn`) instead. */ export declare const applyBlendMode: (base: d.v4f, overlay: d.v4f, blendMode?: BlendMode, opacity?: number) => d.v4f; //# sourceMappingURL=blend.d.ts.map