PDA

View Full Version : laying down depth



zed
07-07-2007, 02:41 PM
a bit embarrassed to ask ( as i should know it ) but whats the best way to lay down depth info, from a depthtexture.

i could do it with glsl + gl_FragDepth
but is there a way to do it with the fixed function pipeline?

ta zed

ZbuffeR
07-08-2007, 04:03 AM
glReadPixels ?

Michael Gold
07-08-2007, 07:16 AM
If you have the depth info in host memory, you can copy it to the depth buffer via glDrawPixels(GL_DEPTH_COMPONENT). You must enable DEPTH_TEST and depth writes, set the DepthFunc appropriately and you may wish to disable color buffer writes.

If you have the depth info in a depth texture already, you may associate it with a FBO and copy it directly with BlitFramebufferEXT:

http://www.opengl.org/registry/specs/EXT/framebuffer_blit.txt

zed
07-08-2007, 03:19 PM
cheers, framebuffer blit looks ideal unfortunatly i cant do it cause


11) Should blits be allowed between buffers of different bit sizes?
Resolved: Yes, for color buffers only. Attempting to blit
between depth or stencil buffers of different size generates
INVALID_OPERATION.heres what im doing
i have the main scene as a fullsized FBO (color + depth textures)

+ i have 2 other FBOs, glow buffer + particle system buffer.
both these are 1/4 sized (to conserve fillrate).
now to get these to display correctly i need to take into consideration the depth info when i draw into the FBOs.

zed
07-08-2007, 04:11 PM
ok got it working with the following (just in case someone wants to do the same)

glTexParameteri( GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE );

g_GL->draw_fullsize_quad_rectangle( g_Program.options.renderbuffer_width, g_Program.options.renderbuffer_height );

/////////////////////
// fragment shader //
/////////////////////
#extension GL_ARB_texture_rectangle : enable

uniform sampler2DRect depthtex;
varying vec2 texcoord;

void main( void )
{
gl_FragDepth = texture2DRect( depthtex, texcoord );
}

another thing since im writing the depth to the whole screen, is it worthwhile turning off the clear( GL_DEPTH ) ?

dorbie
07-23-2007, 12:03 PM
Yes, make sure your depth test is set to GL_ALWAYS when drawing the depth values, that compare_mode is just the depth shadow comparrison (fragment z vs. texture R), you still need the depth fragments to wuin when tested against the framebuffer and so that clear may be saving you for now.