private void RaycastingSetupUniforms()
{
// setting uniforms such as
// ScreenSize
// StepSize
// TransferFunc
// ExitPoints i.e. the backface, the backface hold the ExitPoints of ray casting
// VolumeTex the texture that hold the volume data i.e. head256.raw
int[] viewport = OpenGL.GetViewport();
this.raycastRenderer.SetUniform("ScreenSize", new vec2(viewport[2], viewport[3]));
this.raycastRenderer.SetUniform("StepSize", g_stepSize);
this.raycastRenderer.SetUniform("TransferFunc",
this.transferFunc1DTexture);
this.raycastRenderer.SetUniform("ExitPoints",
this.backface2DTexture);
this.raycastRenderer.SetUniform("VolumeTex",
this.volume3DTexture);
var clearColor = new float[4];
OpenGL.GetFloat(GetTarget.ColorClearValue, clearColor);
//this.raycastRenderer.SetUniform("backgroundColor", clearColor.ToVec4());
this.raycastRenderer.SetUniform("backgroundColor", new vec4(0.4f, 0.8f, 1.0f, 1.0f));
}