diff --git a/ImageFilter.cpp b/ImageFilter.cpp index 8afe6c9..f1dcdec 100644 --- a/ImageFilter.cpp +++ b/ImageFilter.cpp @@ -215,6 +215,8 @@ ImageFilteringShader::ImageFilteringShader(): ImageShader() custom_shading_.setShaders("shaders/image.vs", shader_code_); timer_ = g_timer_new (); + iTime_ = 0.0; + iFrame_ = 0; ImageShader::reset(); } @@ -227,7 +229,7 @@ ImageFilteringShader::~ImageFilteringShader() void ImageFilteringShader::update(float dt) { - iTime_ += dt; + iTime_ += 0.001 * dt; if (iTime_ > FLT_MAX) iTime_ = 0.0; diff --git a/rsc/shaders/filters/debug.glsl b/rsc/shaders/filters/debug.glsl new file mode 100644 index 0000000..b051f23 --- /dev/null +++ b/rsc/shaders/filters/debug.glsl @@ -0,0 +1,77 @@ +// Created by inigo quilez - iq/2016 +// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. + +float udRoundBox( vec2 p, vec2 b, float r ) +{ + return length(max(abs(p)-b,0.0))-r; +} + +float sdBox( vec2 p, vec2 b ) +{ + vec2 d = abs(p) - b; + return min(max(d.x,d.y),0.0) + length(max(d,0.0)); +} + +//----------------------------------------------------------------- +// Digit drawing function by P_Malin (https://www.shadertoy.com/view/4sf3RN) + +float SampleDigit(const in float n, const in vec2 vUV) +{ + if(vUV.x < 0.0) return 0.0; + if(vUV.y < 0.0) return 0.0; + if(vUV.x >= 1.0) return 0.0; + if(vUV.y >= 1.0) return 0.0; + + float data = 0.0; + + if(n < 0.5) data = 7.0 + 5.0*16.0 + 5.0*256.0 + 5.0*4096.0 + 7.0*65536.0; + else if(n < 1.5) data = 2.0 + 2.0*16.0 + 2.0*256.0 + 2.0*4096.0 + 2.0*65536.0; + else if(n < 2.5) data = 7.0 + 1.0*16.0 + 7.0*256.0 + 4.0*4096.0 + 7.0*65536.0; + else if(n < 3.5) data = 7.0 + 4.0*16.0 + 7.0*256.0 + 4.0*4096.0 + 7.0*65536.0; + else if(n < 4.5) data = 4.0 + 7.0*16.0 + 5.0*256.0 + 1.0*4096.0 + 1.0*65536.0; + else if(n < 5.5) data = 7.0 + 4.0*16.0 + 7.0*256.0 + 1.0*4096.0 + 7.0*65536.0; + else if(n < 6.5) data = 7.0 + 5.0*16.0 + 7.0*256.0 + 1.0*4096.0 + 7.0*65536.0; + else if(n < 7.5) data = 4.0 + 4.0*16.0 + 4.0*256.0 + 4.0*4096.0 + 7.0*65536.0; + else if(n < 8.5) data = 7.0 + 5.0*16.0 + 7.0*256.0 + 5.0*4096.0 + 7.0*65536.0; + else if(n < 9.5) data = 7.0 + 4.0*16.0 + 7.0*256.0 + 5.0*4096.0 + 7.0*65536.0; + + vec2 vPixel = floor(vUV * vec2(4.0, 5.0)); + float fIndex = vPixel.x + (vPixel.y * 4.0); + + return mod(floor(data / pow(2.0, fIndex)), 2.0); +} + +float PrintInt(const in vec2 uv, const in float value ) +{ + float res = 0.0; + float maxDigits = 1.0+ceil(log2(value)/log2(10.0)); + float digitID = floor(uv.x); + if( digitID>0.0 && digitID