Vesi optimoitu
This commit is contained in:
37
shader.glsl
37
shader.glsl
@ -51,20 +51,10 @@ float displacement( vec3 p )
|
|||||||
// GEOMETRY //
|
// GEOMETRY //
|
||||||
/////////////////
|
/////////////////
|
||||||
|
|
||||||
float sdCylinder(vec3 p, vec3 a, vec3 b, float r)
|
float sdCappedCylinder( vec3 p, float h, float r )
|
||||||
{
|
{
|
||||||
vec3 ba = b - a;
|
vec2 d = abs(vec2(length(p.xy),p.z)) - vec2(r,h);
|
||||||
vec3 pa = p - a;
|
return min(max(d.x,d.y),0.0) + length(max(d,0.0));
|
||||||
float baba = dot(ba,ba);
|
|
||||||
float paba = dot(pa,ba);
|
|
||||||
float x = length(pa*baba-ba*paba) - r*baba;
|
|
||||||
float y = abs(paba-baba*0.5)-baba*0.5;
|
|
||||||
float x2 = x*x;
|
|
||||||
float y2 = y*y*baba;
|
|
||||||
|
|
||||||
float d = (max(x,y)<0.0)?-min(x2,y2):(((x>0.0)?x2:0.0)+((y>0.0)?y2:0.0));
|
|
||||||
|
|
||||||
return sign(d)*sqrt(abs(d))/baba;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float sdBox( in vec2 p, in vec2 r )
|
float sdBox( in vec2 p, in vec2 r )
|
||||||
@ -281,9 +271,9 @@ vec2 map(in vec3 p)
|
|||||||
d = min(d,sand);
|
d = min(d,sand);
|
||||||
|
|
||||||
float water = 1000.;
|
float water = 1000.;
|
||||||
float cylinder1 = sdCylinder ( p, vec3(0.,0.,0.0), vec3(0.,0.,-0.01), 1.6);
|
float cylinder1 = sdCappedCylinder ( p, .025, 1.6);
|
||||||
float cylinder2 = sdCylinder ( p, vec3(0.,0.,1.), vec3(0.,0.,-1), clamp((2.0 - (u_time*2.0 - 2.0*23.0)),0.,2.0));
|
float cylinder2 = sdCappedCylinder ( p, 2.0, clamp((2.0 - (u_time*2.0 - 2.0*23.0)),0.,2.0));
|
||||||
float cylinder3 = sdCylinder ( p, vec3(0.,0.,1.), vec3(0.,0.,-1.), 1.6);
|
float cylinder3 = sdCappedCylinder ( p, 0.3, 1.6);
|
||||||
float disp = 0.;
|
float disp = 0.;
|
||||||
disp = displacement(p)*clamp(((u_time-24.0)*0.5), 0., 0.25);
|
disp = displacement(p)*clamp(((u_time-24.0)*0.5), 0., 0.25);
|
||||||
cylinder1 = cylinder1 + disp;
|
cylinder1 = cylinder1 + disp;
|
||||||
@ -459,8 +449,6 @@ void main()
|
|||||||
|
|
||||||
float d = rayMarch(ro, rd);
|
float d = rayMarch(ro, rd);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (d < 500.) {
|
if (d < 500.) {
|
||||||
// Lighting
|
// Lighting
|
||||||
vec3 p = ro + rd * d;
|
vec3 p = ro + rd * d;
|
||||||
@ -475,13 +463,6 @@ void main()
|
|||||||
float dif = 0.; //getLight(p, vec3( 2, 50, 2), .5, .2);
|
float dif = 0.; //getLight(p, vec3( 2, 50, 2), .5, .2);
|
||||||
// Color for light 1
|
// Color for light 1
|
||||||
// col = vec3(dif * vec3(0.9216, 0.9294, 0.9412));
|
// col = vec3(dif * vec3(0.9216, 0.9294, 0.9412));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Light 2
|
// Light 2
|
||||||
dif = getLight(p, vec3( -3, 5, 5), 1., 0.2);
|
dif = getLight(p, vec3( -3, 5, 5), 1., 0.2);
|
||||||
// Color for light 2
|
// Color for light 2
|
||||||
@ -491,8 +472,6 @@ void main()
|
|||||||
// Color for light 2
|
// Color for light 2
|
||||||
col += vec3(dif * light2Color);
|
col += vec3(dif * light2Color);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
vec3 lightPosition = glyph1Pos;
|
vec3 lightPosition = glyph1Pos;
|
||||||
lightPosition.z = lightPosition.z + 0.3;
|
lightPosition.z = lightPosition.z + 0.3;
|
||||||
// dif = getLight(p, lightPosition, 3.75, 1.0);
|
// dif = getLight(p, lightPosition, 3.75, 1.0);
|
||||||
@ -514,10 +493,6 @@ void main()
|
|||||||
col += vec3(dif * glyphColor * att);
|
col += vec3(dif * glyphColor * att);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
vec3 n = getNormal(p);
|
vec3 n = getNormal(p);
|
||||||
vec3 dir = vec3(1. , 10., 1.);
|
vec3 dir = vec3(1. , 10., 1.);
|
||||||
float ind = clamp( dot( n, normalize(dir )), 0.0, 1.0 );
|
float ind = clamp( dot( n, normalize(dir )), 0.0, 1.0 );
|
||||||
|
|||||||
Reference in New Issue
Block a user