1 varying vec3 v_rorg, v_rdir;
3 vec3 shade(in vec3 pos, in vec3 norm);
4 vec3 backdrop(in vec3 dir);
5 float isect_plane(in vec3 ro, in vec3 rd, out vec3 norm_ret);
9 vec3 rdir = normalize(v_rdir);
11 float t = isect_floor(v_rorg, rdir);
13 gl_FragColor.rgb = shade(v_rorg + rdir * t, vec3(0.0, 1.0, 0.0));
15 gl_FragColor.rgb = backdrop(rdir);
20 vec3 shade(in vec3 pos, in vec3 norm)
24 vec3 backdrop(in vec3 dir)
28 float isect_floor(in vec3 ro, in vec3 rd)
30 float t = isect_plane(ro, rd, vec4(0.0, 1.0, 0.0, -1.0));
34 float d = max(abs(p.x), max(abs(p.y), abs(p.z)));
35 if(d >= 1.0) return -1.0;
40 float isect_plane(in vec3 ro, in vec3 rd, in vec4 plane)