Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Managing your own Depth Buffer


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 Catwheel   Members   -  Reputation: 125

Like
0Likes
Like

Posted 14 August 2014 - 02:44 PM

So I have a program that draws to screen space. I would like to set up a depth buffer and draw and manage it myself. However, I am very unfamiliar with depth buffers and I'm not really sure how you can simply draw and manage it yourself.

Essentially, what I want to do, is take any call to drawprimitiveup on the back buffer, and make a similar call to the depth buffer, but have it simply say that the shape is as close as possible to the view. I also do not want it to clear the depth buffer, but rather degregate the vertexes in the depth buffer so that they are slightly further away.

 

Note: I plan to later use this depth buffer to create a left and right view of the image. I would rather do it in this manner than simply rendering the scene twice, because this method is more desirable for my project.

 

Any advice on how to bring this concept to practice would be appreciated, as well as references for depth buffer usage, besides just the pipeline doc, or just useful tidbits that I might be able to put together (for example, I am wondering if a depth buffer can be considered a surface in the same way as any other buffer). I'm very new to DirectX so you're advice is appreciated!

 

-Thanks!

 

Edit: Some other questions I have:

Is it possible to look at the backbuffer and "move" each pixel based on it's depth value? If so, what are the calls for that?


Edited by Catwheel, 14 August 2014 - 09:21 PM.


Sponsor:

#2 Catwheel   Members   -  Reputation: 125

Like
0Likes
Like

Posted 15 August 2014 - 02:47 PM

So I'm adding on to my previous post and giving this a bump since I'm still working on this. It looks like, although the draw calls are directly to screen space, they do specify a z value. Would this mean that I could simply enable the depth buffer and it will draw onto the depth buffer the same time that it draws onto the render target? It sounds like a no-brainer, but I still want to ask the community here.



#3 JohnnyCode   Members   -  Reputation: 291

Like
0Likes
Like

Posted 15 August 2014 - 09:24 PM

I did not undrstand what you want to do and why you cannot do it. But I will comment on some of your sentences giving general informations about targets with depth buffer.

 

 

Would this mean that I could simply enable the depth buffer and it will draw onto the depth buffer the same time that it draws onto the render target?

you can disable depthwrite for a single draw call, as well as disable/enable depth test. This allows you to test against depth buffer without altering it in draw call, or not test, or test and alter. You can also specify z function as to when the z test/z write, passes (greater,less,equal).

 

 

Is it possible to look at the backbuffer and "move" each pixel based on it's depth value? If so, what are the calls for that?

You would have to unbind the target of which z buffer you wish to read from and perform your resulting deeds to be drawn into another target buffer. You would simply use this previous buffer as a texture, and perform those "move" out to the other one. You cannot read from a buffer you are writing into.

 

but have it simply say that the shape is as close as possible to the view

it is not very possible to test depth buffer events on a draw call out onto the CPU. Occlusion queries will give you only an information wheather a drawcall has altered at least a single pixel.






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