# HG changeset patch # User John Tsiombikas # Date 1334115814 -10800 # Node ID 68c6eb619d1ca73d6b748af6e648fc14f085f838 # Parent 9d2396738b60d76790d038a6dd0d909fb40f8519 normals from gradient map diff -r 9d2396738b60 -r 68c6eb619d1c sdr/slice.p.glsl --- a/sdr/slice.p.glsl Sun Apr 08 14:31:03 2012 +0300 +++ b/sdr/slice.p.glsl Wed Apr 11 06:43:34 2012 +0300 @@ -3,6 +3,7 @@ void main() { - float val = texture3D(volume, gl_TexCoord[0].xyz).a; - gl_FragColor = vec4(texture1D(xfer_tex, val).xxx, 1.0); + vec3 val = texture3D(volume, gl_TexCoord[0].xyz).xyz * 0.5 + 0.5; + //gl_FragColor = vec4(texture1D(xfer_tex, val).xxx, 1.0); + gl_FragColor = vec4(val, 1.0); } diff -r 9d2396738b60 -r 68c6eb619d1c sdr/volray.p.glsl --- a/sdr/volray.p.glsl Sun Apr 08 14:31:03 2012 +0300 +++ b/sdr/volray.p.glsl Wed Apr 11 06:43:34 2012 +0300 @@ -40,15 +40,19 @@ gl_FragColor = vec4(color, 1.0); } -float eval(vec3 pos) +float eval(vec3 pos, out vec3 grad) { vec3 tc = pos * 0.5 + 0.5; if(tc.x < 0.0 || tc.y < 0.0 || tc.z < zclip || tc.x > 1.0 || tc.y > 1.0 || tc.z > 1.0) { + grad = vec3(0.0, 0.0, 0.0); return 0.0; } - return texture1D(xfer_tex, texture3D(volume, tc).a).x; + vec4 texel = texture3D(volume, tc); + grad = texel.xyz; + + return texture1D(xfer_tex, texel.a).x; } #define OFFS 0.01 @@ -63,14 +67,10 @@ vec3 pos = ray.origin + ray.dir * t; t += ray_step; - float val = eval(pos); vec3 norm; + float val = eval(pos, norm); - norm.x = eval(pos + vec3(OFFS, 0.0, 0.0)) - val; - norm.y = eval(pos + vec3(0.0, OFFS, 0.0)) - val; - norm.z = eval(pos + vec3(0.0, 0.0, OFFS)) - val; - - col += shade(ray, pos, normalize(norm)) * val * energy; + col += /*shade(ray, pos, normalize(norm))*/ norm * val * energy; energy -= val; if(energy < 0.001) { break;