X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=demo_prior;a=blobdiff_plain;f=sdr%2Fwhitted.p.glsl;fp=sdr%2Fwhitted.p.glsl;h=567f127694bf39c5de5e5c0ec92bc34a97ebfd11;hp=0000000000000000000000000000000000000000;hb=a89e74326444df1da625ad9614919bb7ad2352cb;hpb=62b77ed50ec986237224f6fbb396df13e559f1ab diff --git a/sdr/whitted.p.glsl b/sdr/whitted.p.glsl new file mode 100644 index 0000000..567f127 --- /dev/null +++ b/sdr/whitted.p.glsl @@ -0,0 +1,43 @@ +varying vec3 v_rorg, v_rdir; + +vec3 shade(in vec3 pos, in vec3 norm); +vec3 backdrop(in vec3 dir); +float isect_plane(in vec3 ro, in vec3 rd, out vec3 norm_ret); + +void main() +{ + vec3 rdir = normalize(v_rdir); + + float t = isect_floor(v_rorg, rdir); + if(t >= 0.0) { + gl_FragColor.rgb = shade(v_rorg + rdir * t, vec3(0.0, 1.0, 0.0)); + } else { + gl_FragColor.rgb = backdrop(rdir); + } + gl_FragColor.a = 1.0; +} + +vec3 shade(in vec3 pos, in vec3 norm) +{ +} + +vec3 backdrop(in vec3 dir) +{ +} + +float isect_floor(in vec3 ro, in vec3 rd) +{ + float t = isect_plane(ro, rd, vec4(0.0, 1.0, 0.0, -1.0)); + if(t < 0.0) return t; + + vec3 p = ro + rd * t; + float d = max(abs(p.x), max(abs(p.y), abs(p.z))); + if(d >= 1.0) return -1.0; + + return t; +} + +float isect_plane(in vec3 ro, in vec3 rd, in vec4 plane) +{ + +}