567f127694bf39c5de5e5c0ec92bc34a97ebfd11
[demo_prior] / sdr / whitted.p.glsl
1 varying vec3 v_rorg, v_rdir;
2
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);
6
7 void main()
8 {
9         vec3 rdir = normalize(v_rdir);
10
11         float t = isect_floor(v_rorg, rdir);
12         if(t >= 0.0) {
13                 gl_FragColor.rgb = shade(v_rorg + rdir * t, vec3(0.0, 1.0, 0.0));
14         } else {
15                 gl_FragColor.rgb = backdrop(rdir);
16         }
17         gl_FragColor.a = 1.0;
18 }
19
20 vec3 shade(in vec3 pos, in vec3 norm)
21 {
22 }
23
24 vec3 backdrop(in vec3 dir)
25 {
26 }
27
28 float isect_floor(in vec3 ro, in vec3 rd)
29 {
30         float t = isect_plane(ro, rd, vec4(0.0, 1.0, 0.0, -1.0));
31         if(t < 0.0) return t;
32
33         vec3 p = ro + rd * t;
34         float d = max(abs(p.x), max(abs(p.y), abs(p.z)));
35         if(d >= 1.0) return -1.0;
36
37         return t;
38 }
39
40 float isect_plane(in vec3 ro, in vec3 rd, in vec4 plane)
41 {
42
43 }