UNPKG

modern-canvas

Version:

A JavaScript WebGL rendering engine. only the ESM.

23 lines (22 loc) 2.04 kB
import type { GlRenderer } from '../../core'; import type { EffectProperties, Node, Viewport } from '../main'; import { Effect } from '../main/Effect'; export interface KawaseBlurEffectProperties extends EffectProperties { strength: number; quality: number; pixelSize: [number, number]; clamp: boolean; } export declare const frag = "varying vec2 vUv;\nuniform sampler2D sampler;\nuniform vec2 uOffset;\n\nvoid main(void) {\n vec4 color = vec4(0.0);\n color += texture2D(sampler, vec2(vUv.x - uOffset.x, vUv.y + uOffset.y));\n color += texture2D(sampler, vec2(vUv.x + uOffset.x, vUv.y + uOffset.y));\n color += texture2D(sampler, vec2(vUv.x + uOffset.x, vUv.y - uOffset.y));\n color += texture2D(sampler, vec2(vUv.x - uOffset.x, vUv.y - uOffset.y));\n color *= 0.25;\n gl_FragColor = color;\n}"; export declare const clampFrag = "precision highp float;\nvarying vec2 vUv;\nuniform sampler2D sampler;\nuniform vec2 uOffset;\nuniform vec4 uInputClamp;\nvoid main(void) {\n vec4 color = vec4(0.0);\n color += texture2D(sampler, clamp(vec2(vUv.x - uOffset.x, vUv.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));\n color += texture2D(sampler, clamp(vec2(vUv.x + uOffset.x, vUv.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));\n color += texture2D(sampler, clamp(vec2(vUv.x + uOffset.x, vUv.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));\n color += texture2D(sampler, clamp(vec2(vUv.x - uOffset.x, vUv.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));\n color *= 0.25;\n gl_FragColor = color;\n}"; export declare class KawaseBlurEffect extends Effect { strength: number; quality: number; pixelSize: [number, number]; protected _kernels: number[]; constructor(properties?: Partial<KawaseBlurEffectProperties>, children?: Node[]); protected _updateProperty(key: string, value: any, oldValue: any): void; /** Auto generate kernels by blur & quality */ protected _generateKernels(): void; apply(renderer: GlRenderer, viewport: Viewport): void; }