From 332a0f4e03f35132f86657c33814b577c0070a60 Mon Sep 17 00:00:00 2001 From: Mathias Paulin <mathias.paulin@irit.fr> Date: Wed, 14 Apr 2021 19:01:29 +0200 Subject: [PATCH] Prototype of LIC function --- .../ImageProcess.frag.glsl | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/src/libRender/RadiumNBR/Shaders/ImageProcessingPass/ImageProcess.frag.glsl b/src/libRender/RadiumNBR/Shaders/ImageProcessingPass/ImageProcess.frag.glsl index 721692b..0183a63 100644 --- a/src/libRender/RadiumNBR/Shaders/ImageProcessingPass/ImageProcess.frag.glsl +++ b/src/libRender/RadiumNBR/Shaders/ImageProcessingPass/ImageProcess.frag.glsl @@ -54,11 +54,47 @@ vec4 lic(in sampler2D desc,in bool invertdir) { */ +vec4 lic(in sampler2D desc,in bool invertdir, in vec2 imgSize) { + const int halfsize = 10; + vec2 coord = varTexcoord; + vec2 dir = texture(desc,coord).xy; + if ( length(dir) <0.0001 ) + return vec4(0); + if(invertdir) + dir = vec2(dir.y,-dir.x); + float res = whiteNoise( dir, imgSize); + + vec2 currentdir = dir; + + for(int i=1;i<=halfsize;i++) { + coord = coord + currentdir;//*halfsize; + currentdir = texture(desc,coord).xy; + res += whiteNoise( currentdir, imgSize); + if(invertdir) + currentdir = vec2(currentdir.y,-currentdir.x); + } + + coord = varTexcoord; + currentdir = dir; + for(int i=1;i<=halfsize;i++) { + coord = coord - currentdir;//*halfsize; + currentdir = texture(desc,coord).xy; + res += whiteNoise( currentdir, imgSize); + if(invertdir) + currentdir = vec2(currentdir.y,-currentdir.x); + } + res = res/(2.0f*float(halfsize)+1.0f); + return vec4(vec3(res), 0); +} + + + void main() { + vec2 imgSize = vec2(textureSize(image_sampler, 0)); /* // 4x4 filtering for test const int half_width = 2; - vec2 texelSize = 1.0 / vec2(textureSize(image_sampler, 0)); + vec2 texelSize = 1.0 / vec2(imgSize); vec3 result = vec3(0.0); for (int x = -half_width; x < half_width; ++x) { @@ -70,8 +106,10 @@ void main() { } out_color = vec4(result / (4 * half_width * half_width), 1); */ - - vec2 imgSize = vec2(textureSize(image_sampler, 0)); + /* out_color = vec4( vec3( whiteNoise( varTexcoord, imgSize) ), 1); + */ + out_color = lic(image_sampler, false, imgSize); + } -- GitLab