From 675bdf4c877226d276860a87ba2a8d32eb544990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kol=C3=A1=C5=99?= Date: Wed, 2 Nov 2022 13:19:12 +0100 Subject: [PATCH] edge webgl frag --- src/nodes/WebGL/Edge.ts | 71 +++++++++++++++++++++++++++++++++++++++++ src/nodes/index.ts | 1 + 2 files changed, 72 insertions(+) create mode 100644 src/nodes/WebGL/Edge.ts diff --git a/src/nodes/WebGL/Edge.ts b/src/nodes/WebGL/Edge.ts new file mode 100644 index 0000000..60c4e99 --- /dev/null +++ b/src/nodes/WebGL/Edge.ts @@ -0,0 +1,71 @@ +import WebGL from './WebGl'; +import { + NumberVar +} from '../io/AbstractIOSet'; + +const inputs = { + dx: { + type: 'Number', + default: 0, + } as NumberVar, + dy: { + type: 'Number', + default: 0, + } as NumberVar, +} + +export default class Edge extends WebGL { + + constructor() { + super('Edge', inputs) + } + + get frag() { + return ` + precision mediump float; + + // our texture + uniform sampler2D u_image; + + uniform vec2 u_resolution; + uniform vec2 u_textureSize; + + // the texCoords passed in from the vertex shader. + varying vec2 v_texCoord; + + + uniform vec2 delta; + + void main() { + vec2 onePixel = vec2(1.0, 1.0) / u_textureSize; + + gl_FragColor = vec4( + ( + ( + texture2D(u_image, v_texCoord + onePixel * vec2(0, 0)) - + texture2D(u_image, v_texCoord + onePixel * delta) + ) / 2.0 + 0.5 + ).xyz, + 1 + ); + } + ` + } + + get dx() { + return this.in.dx.value; + } + + get dy() { + return this.in.dy.value; + } + + /** + * + * @param {WebGLRenderingContext} gl + * @param {*} program + */ + _setParams(gl, program) { + gl.uniform2f(gl.getUniformLocation(program, "delta"), this.dx, this.dy); + } +} diff --git a/src/nodes/index.ts b/src/nodes/index.ts index 47e63a3..02ce76b 100644 --- a/src/nodes/index.ts +++ b/src/nodes/index.ts @@ -17,6 +17,7 @@ export {default as GradientMap} from './WebGL/GradientMap'; export {default as ColorLookupTable} from './WebGL/ColorLookupTable'; export {default as Vignette} from './WebGL/Vignette'; // export {default as Blur} from './WebGL/Blur'; +export {default as Edge} from './WebGL/Edge'; // Math export {default as Numbers} from './Math/Numbers'; export {default as NumberBinaryOperation} from './Math/NumberBinaryOperation';