Multidimensional transfer functions in volume rendering of medical datasets
Hva oppgaven går ut på Teste ut forskjellige flerdimensjonale transfer funksjoner Se på hvordan flerdimensjonale transfer funksjoner kan genereres automatisk
Hva slags funksjoner er aktuelle? Voxel verdi – voxel gradient Voxel verdi – voxel gradient – voxel dobbelt derivert Voxel verdi – voxel posisjon Voxel verdi – lys
Simian
Raycasting på GPU Tegn forsiden av fargekuben til et buffer Tegn baksiden av fargekuben til et buffer Trekk forsiden fra baksiden lagret i et buffer Tegn forsiden igjen med raycaster shaderen
Raycaster shader uniform sampler2DRect vmap; uniform sampler3D voltex; uniform sampler1D tf; void main(void) { float intervalSize = 0.01; vec2 wincoord = gl_FragCoord.xy; vec4 dir = texture2DRect(vmap, wincoord); vec3 direction = vec3(dir.rgb*intervalSize); float steps = dir.a*(1.0/intervalSize); vec3 rgb; float alpha = 0.0; vec3 new_pos = gl_Color.rgb; for(int i=0; i<steps; i++) { float voxel = texture3D(voltex, new_pos).a; vec4 tf_value = texture1D(tf, voxel); rgb = rgb + (1-alpha) * tf_value.a * tf_value.rgb; alpha = alpha + tf_value.a * (1-alpha); new_pos += direction; } gl_FragColor = vec4(rgb, alpha); }
Geforce 6600GT NV43 på 500MHz 256Mb GDDR3 RAM 146 millioner transistorer 8 pixel pipelines 3 vertex shadere 14.4 Gb/s Shader model 3.0