3D texture rendering artifacts

Hi all,

I have encountered a problem of rendering artifacts of 3D texture as below:

Rendering artifacts(texture get hidden when viewed from certain angle)

I have searched on net as to find solution of this problem, and most answer pointed towards the problem in regards of depth buffer bit.
While i have tried to change the depth buffer bit to 24 bit from GL_DEPTH to GL_STENCIL in GLUT, the result remains the same as the texture(or geometry-not really sure) get hidden when viewed from certain angle…

So, can i know what is exactly the problem that results in this kind of artifacts??

Below is the fragment shader code snippet(OpenGL Development Cookbook)

void main()
{ 
	//get the 3D texture coordinates for lookup into the volume dataset
	vec3 dataPos = vUV;
 
	vec3 geomDir = normalize((vec3(0.556,0.614,0.201)*vUV-vec3(0.278,0.307,0.1005)) - camPos); 
 
	vec3 dirStep = geomDir * step_size; 	
 
	//flag to indicate if the raymarch loop should terminate
	bool stop = false; 
 
	//for all samples along the ray
	for (int i = 0; i < MAX_SAMPLES; i++) {
		// advance ray by dirstep
		dataPos = dataPos + dirStep;
 
		stop = dot(sign(dataPos-texMin),sign(texMax-dataPos)) < 3.0f;
 
		//if the stopping condition is true we brek out of the ray marching loop
		if (stop) 
			break;
 
		// data fetching from the red channel of volume texture
		float sample = texture(volume, dataPos).r;	
 
 
		float prev_alpha = sample - (sample * vFragColor.a);
		vFragColor.rgb = (prev_alpha) * vec3(sample) + vFragColor.rgb; 
		vFragColor.a += prev_alpha; 
 
 
		if( vFragColor.a>0.99)
			break;
	}

Thanks a lot…