nuclear@4: uniform sampler3D vol_tex; nuclear@4: uniform sampler1D xfer_tex; nuclear@4: nuclear@4: void main() nuclear@4: { nuclear@8: vec3 tc = gl_TexCoord[0].xyz; nuclear@8: float max_manh_dist = max(tc.x, max(tc.y, tc.z)); nuclear@8: float min_manh_dist = min(tc.x, min(tc.y, tc.z)); nuclear@8: float border = step(0.0, min_manh_dist) * (1.0 - step(1.0, max_manh_dist)); nuclear@8: nuclear@4: vec4 voxel = texture3D(vol_tex, gl_TexCoord[0].xyz); nuclear@4: vec4 color = texture1D(xfer_tex, voxel.a); nuclear@4: nuclear@8: float alpha = color.a * border; nuclear@8: if(alpha < 0.001) discard; nuclear@8: nuclear@8: gl_FragColor.rgb = voxel.rgb; nuclear@8: gl_FragColor.a = alpha; nuclear@4: }