mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-12 18:59:59 +01:00
BugFix ImageFilter timing
new debuging shader
This commit is contained in:
@@ -215,6 +215,8 @@ ImageFilteringShader::ImageFilteringShader(): ImageShader()
|
|||||||
custom_shading_.setShaders("shaders/image.vs", shader_code_);
|
custom_shading_.setShaders("shaders/image.vs", shader_code_);
|
||||||
|
|
||||||
timer_ = g_timer_new ();
|
timer_ = g_timer_new ();
|
||||||
|
iTime_ = 0.0;
|
||||||
|
iFrame_ = 0;
|
||||||
|
|
||||||
ImageShader::reset();
|
ImageShader::reset();
|
||||||
}
|
}
|
||||||
@@ -227,7 +229,7 @@ ImageFilteringShader::~ImageFilteringShader()
|
|||||||
|
|
||||||
void ImageFilteringShader::update(float dt)
|
void ImageFilteringShader::update(float dt)
|
||||||
{
|
{
|
||||||
iTime_ += dt;
|
iTime_ += 0.001 * dt;
|
||||||
if (iTime_ > FLT_MAX)
|
if (iTime_ > FLT_MAX)
|
||||||
iTime_ = 0.0;
|
iTime_ = 0.0;
|
||||||
|
|
||||||
|
|||||||
77
rsc/shaders/filters/debug.glsl
Normal file
77
rsc/shaders/filters/debug.glsl
Normal file
@@ -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<maxDigits )
|
||||||
|
{
|
||||||
|
float digitVa = mod( floor( value/pow(10.0,maxDigits-1.0-digitID) ), 10.0 );
|
||||||
|
res = SampleDigit( digitVa, vec2(fract(uv.x), uv.y) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void mainImage( out vec4 fragColor, in vec2 fragCoord )
|
||||||
|
{
|
||||||
|
float px = 1.0 / iResolution.y;
|
||||||
|
vec2 uv = vec2( fragCoord.x, iResolution.y- fragCoord.y) * px;
|
||||||
|
|
||||||
|
// top: 1.0/iTimeDelta as an integer
|
||||||
|
float col = PrintInt( (uv-vec2(0.2,0.75))*10.0, floor( 1.0/iTimeDelta + 0.5) );
|
||||||
|
|
||||||
|
// middle; time
|
||||||
|
col += PrintInt( (uv-vec2(0.2,0.5))*10.0, int( iTime * 100) );
|
||||||
|
|
||||||
|
// bottom: frame
|
||||||
|
col += PrintInt( (uv-vec2(0.2,0.25))*10.0, iFrame );
|
||||||
|
|
||||||
|
// iTimeDelta as vertical bar
|
||||||
|
col += (1.0-smoothstep( 0.0, px, sdBox( uv-vec2(0.1,0.0), vec2(0.02,60.0*iTimeDelta) )));
|
||||||
|
|
||||||
|
fragColor = vec4(col,col,col,1.0);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user