Jump to content

  • Log In with Google      Sign In   
  • Create Account

Z-fighting & the depthtest


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 TheQaa   Members   -  Reputation: 104

Like
0Likes
Like

Posted 17 November 2012 - 11:44 AM

Hello,
i'm rendering volumetric clouds, which works pretty well. For the next step, i wanted to render some terrain. Previously the depth buffer was disabled, because i sorted all vertices, so there was no need. But for the terrain i need an active depth buffer while rendering the clouds and then i get massive graphic problems. It looks like z-fighting, but i got no idea how to deal with it. Here are some pictures to show my problem.

Enabled depthtest:
http://imageshack.us...7/zfighting.png

Disabled depthtest:
http://imageshack.us...nozfighting.png

Anybody has an idea?
Another question:
Is it possible to write to the depth buffer without depthtesting?

Thanks Posted Image

Edited by TheQaa, 17 November 2012 - 11:57 AM.


Sponsor:

#2 MJP   Moderators   -  Reputation: 11774

Like
2Likes
Like

Posted 17 November 2012 - 01:10 PM

Normally for this sort of thing you would enable depth writes and depth tests for your opaque geometry, and then for your transparent geometry you render with depth tests enabled but depth writes disabled. To do that you will need to separate depth-stencil states. For the opaques, you'll want to set DepthEnable to TRUE and DepthWriteMask to D3D11_DEPTH_WRITE_MASK_ALL. Then for the transparents, you'll want to set DepthEnable to TRUE and DepthWriteMask to D3D11_DEPTH_WRITE_MASK_ZERO. This should solve your problems, as long as you draw the terrain first and the clouds second.

To answer your second question, you can enable depth writes without depth tests. Just Set DepthEnable to FALSE, and DepthWriteMask to D3D11_DEPTH_WRITE_MASK_ALL. You can also leave DepthEnable set to TRUE, and set DepthFunc to D3D11_COMPARISON_ALWAYS.

#3 TheQaa   Members   -  Reputation: 104

Like
0Likes
Like

Posted 18 November 2012 - 03:46 AM

Thanks for your reply,
with your settings, the z-fighting in the clouds is gone, but when terrain and clouds are intersecting there are still some problems.

http://img28.imageshack.us/img28/6195/cloudsfighting1.png

The depthbuffer description is following:

dsDesc.DepthEnable = true;
dsDesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL; // or D3D11_DEPTH_WRITE_MASK_ZERO
dsDesc.DepthFunc = D3D11_COMPARISON_LESS;
dsDesc.StencilEnable = true;
dsDesc.StencilReadMask = 0xFF;
dsDesc.StencilWriteMask = 0xFF;
dsDesc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
dsDesc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_INCR;
dsDesc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
dsDesc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
dsDesc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
dsDesc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_DECR;
dsDesc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
dsDesc.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS;

Maybe i missed something?

Edited by TheQaa, 18 November 2012 - 03:49 AM.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS