Skip to main content
GameDev.net gamedev.net
🔒 Locked

Depth Test and Early ray termination

Started by happymonkey Sep 5, 2012 at 8:41 PM 0 replies 1.5k views
Original Post
happymonkey
happymonkey
I am in the process of implementing early ray termination using multipple interation. My colde is like this:

glClearDepth(1.0); //Set all the depth to the maximum
glBindFramebuffer(GL_FRAMEBUFFER, _framebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex_dst, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, _vol_buffer_tex_mult_depth, 0);
glClear(GL_DEPTH_BUFFER_BIT);
glDepthMask(GL_TRUE);
glDepthFunc(GL_ALWAYS);
///////////////////////Shader to change the depth, draw a quad
glBindFramebuffer(GL_FRAMEBUFFER, 0);

///////////////////////////////////////////////////
glBindFramebuffer(GL_FRAMEBUFFER, _framebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex_dst, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, _vol_buffer_tex_mult_depth, 0);
glDepthMask(GL_FALSE); //Do not change the depth value
glDepthFunc(GL_LEQUAL);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);

/////////////////////Shader to change the color, draw a quad
glBindFramebuffer(GL_FRAMEBUFFER, 0);


I use: glClearDepth(1.0); glDepthFunc(GL_ALWAYS) to make the shader update the depth buffer.
It works right. The problem I met is when I change glClearDepth(1.0) to glClearDepth(0.0), there is no display anymore. It seems
that, at this case, the first part will fail in the depth test, why? I already used glDepthFunc(GL_ALWAYS) which should pass the test
at anytime. Thanks for any hint.
lauris71
lauris71
Are you sure it is not driver problem?
I have encountered various kinds of erratic driver behaviour related to z-tests. I suspect these were mostly caused by overoptimizing early z-culling.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.