j00hi
j00hi

Reputation: 5941

How to write/prevent writing to OpenGL depth buffer in GLSL

I want to write to the OpenGL depth buffer only if the current pixel has an alpha > 0.5 how to do that?

If the pixel has alpha < 0.5, i want to render the color but not write it's depth to the depth buffer. The command discard isn't what I'm looking for, since it discards both, color and depth information; I only want to discard depth information.

There is the gl_FragDepth variable that can be set, but to which value? And for the case alpha < 0.5, how to leave gl_FragDepth unchanged?

Do I have to use FBOs for this, or should it also work without? The project I'm working on, is a GLES 2.0 Android project

Upvotes: 9

Views: 7311

Answers (1)

j00hi
j00hi

Reputation: 5941

I've solved the problem for me by using

glDepthMask(false)

This command disables writing to to the depth buffer but still performs depth-testing. I've simply rendered my transparent objects after all other objects and got exactly the result I was looking for.

Upvotes: 19

Related Questions