Add chebyshev.glsl
This commit is contained in:
parent
282541ec53
commit
3c21556ef6
1 changed files with 54 additions and 0 deletions
54
chebyshev.glsl
Normal file
54
chebyshev.glsl
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
float chebyshev(float x, int n){
|
||||||
|
const int MAX_POWER = 16;
|
||||||
|
vec2 tvec = vec2( 1., x);
|
||||||
|
mat2 m = mat2 (0., -1., 1., 2.*x);
|
||||||
|
for( int i = 2; i < MAX_POWER; i += 1){
|
||||||
|
if( i > n ) return tvec.y;
|
||||||
|
tvec = m*tvec;
|
||||||
|
}
|
||||||
|
return tvec.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
//https://github.com/hughsk/glsl-hsv2rgb/blob/master/index.glsl
|
||||||
|
vec3 hsv2rgb(vec3 c) {
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mainImage( out vec4 fragColor, in vec2 fragCoord )
|
||||||
|
{
|
||||||
|
vec2 uv = fragCoord / max(iResolution.x, iResolution.y);
|
||||||
|
uv *= 2.5;
|
||||||
|
uv.x -= 1.2;
|
||||||
|
uv.y -= 0.5;
|
||||||
|
|
||||||
|
float timex = iTime * .21;
|
||||||
|
float tx = cos(timex)*chebyshev(uv.x, 2) + sin(timex)* chebyshev(uv.x, 5) ;
|
||||||
|
float timey = iTime * 0.2;
|
||||||
|
float ty = cos(timey)*chebyshev(uv.y, 3) + sin(timey)* chebyshev(uv.y, 7) ;
|
||||||
|
|
||||||
|
float t2 = iTime * .5;
|
||||||
|
float csigma = cos(t2);
|
||||||
|
float s2sigma = 1. - csigma*csigma;
|
||||||
|
//next formula was taken from this paper
|
||||||
|
//http://boj.pntic.mec.es/~jcastine/Trabajos%20matematicos_archivos/cmj122-127.pdf
|
||||||
|
float b = tx*tx + ty*ty - 2.0*tx*ty*csigma + s2sigma;
|
||||||
|
float w = 3.*fwidth(b);
|
||||||
|
//float w = .2;
|
||||||
|
|
||||||
|
b *= 2.;
|
||||||
|
float bFloor = floor(b);
|
||||||
|
b = smoothstep(w,0.,abs(fract(b) -.5))/fwidth(b);
|
||||||
|
|
||||||
|
//b*= step(abs(uv.x), 1.);
|
||||||
|
//b*= step(abs(uv.y), 1.);
|
||||||
|
|
||||||
|
vec3 color = hsv2rgb(vec3(bFloor/10.+fract(iTime*0.1),1.,1.));
|
||||||
|
|
||||||
|
color *= b;
|
||||||
|
|
||||||
|
fragColor = vec4(color, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://www.shadertoy.com/view/MtBBRG
|
Loading…
Add table
Add a link
Reference in a new issue