This commit is contained in:
Loic Guegan 2020-07-07 06:40:50 +02:00
parent 29339928d7
commit aac94e911b
27 changed files with 40373 additions and 49 deletions

BIN
resources/fonts/arial.ttf Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
RayMarching(vec3 ro, vec3 rd){
}

View file

@ -18,9 +18,76 @@ uniform float time;
out vec3 color;
void main(){
vec2 coord=gl_FragCoord.xy/resolution;
coord-=0.5;
float d=length(coord);
color=vec3(d,1,1);
#define MAX_STEPS 100
#define MAX_DIST 100.
#define SURF_DIST .01
float GetDist(vec3 p) {
vec4 s = vec4(0, 1, 6, 1);
float sphereDist = length(p-s.xyz)-s.w;
float planeDist = p.y;
float d = min(sphereDist, planeDist);
return d;
}
float RayMarch(vec3 ro, vec3 rd) {
float dO=0.;
for(int i=0; i<MAX_STEPS; i++) {
vec3 p = ro + rd*dO;
float dS = GetDist(p);
dO += dS;
if(dO>MAX_DIST || dS<SURF_DIST) break;
}
return dO;
}
vec3 GetNormal(vec3 p) {
float d = GetDist(p);
vec2 e = vec2(.01, 0);
vec3 n = d - vec3(
GetDist(p-e.xyy),
GetDist(p-e.yxy),
GetDist(p-e.yyx));
return normalize(n);
}
float GetLight(vec3 p) {
vec3 lightPos = vec3(0, 5, 6);
lightPos.xz += vec2(sin(time), cos(time))*2.;
vec3 l = normalize(lightPos-p);
vec3 n = GetNormal(p);
float dif = clamp(dot(n, l), 0., 1.);
float d = RayMarch(p+n*SURF_DIST*2., l);
if(d<length(lightPos-p)) dif *= .1;
return dif;
}
void main()
{
vec2 uv = (gl_FragCoord.xy-.5*resolution.xy)/resolution.y;
vec3 col = vec3(0);
vec3 ro = vec3(0, 1, 0);
vec3 rd = normalize(vec3(uv.x, uv.y, 1));
float d = RayMarch(ro, rd);
vec3 p = ro + rd * d;
float dif = GetLight(p);
col = vec3(dif);
col = pow(col, vec3(.4545)); // gamma correction
color = col;
}

View file

@ -0,0 +1,4 @@
float Sphere(vec3 ray_position, vec3 sphere_position){
}