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_);
|
||||
|
||||
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;
|
||||
|
||||
|
||||
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