Jump to content
  • Advertisement
Sign in to follow this  
CombatHammie

A few questions before I give up on deferred rendering

This topic is 2811 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I gave deferred rendering a try to at least experience the advantages and disadvantages first hand. XNA's D3D-only support made it a bit of a pain. I gave SlimDX a shot, but the project is for my graduate work, limiting my time, and forcing me to stick with XNA.

For transparent objects, I don't mind doing hybrid rendering (forward for transparent + deferred for the rest).

Unfortunately, it's the anti-aliasing that kills me. I found some techniques here and there (MJP's blog has DX10/D11 stuff), but in the end, XNA's D3D limitation makes everything just plain ugly and unrealistic. The edge detect + buffer blur just doesn't work for me.

Any comments/suggestions before I abandon it and stick with forward renderer's limitations?

Share this post


Link to post
Share on other sites
Advertisement
Quote:
Original post by CombatHammie
but in the end, XNA's D3D limitation makes everything just plain ugly and unrealistic. The edge detect + buffer blur just doesn't work for me.
I am not sure what you mean by this. Do you mean its D3D 9 limitation?

Share this post


Link to post
Share on other sites
Are you doing edge detection on the colour buffer or the depth buffer?


There are two derivatives of 'deferred' rendering, 'light pre-pass' and 'inferred' rendering, that both support MSAA on DX9, and inferred supports transparent objects without a forward pass.

Share this post


Link to post
Share on other sites
Yeah anti-aliasing is pretty much impractical with D3D9-level feature set. The only options that work are some sort of screen-space approach (edge blur, MLAA, or similar), supersampling, or using MSAA when rendering the geometry for a light prepass renderer. Supersampling is usually too expensive to be practical, but if performance isn't an issue it's an easy way to deal with aliasing. Enabling MSAA when rendering geometry for a light prepass renderer kinda works, but isn't so great without applying lighting at a sub-pixel level. Edge blur, as you've already noted, sucks big time. Personally I think it makes it worse. MLAA is a good option, but isn't trivial to implement. Something like what these guys are doing would probably be great, but they haven't released source code yet. You could probably adapt the Intel CPU version to C#, but it would probably be slow without SIMD support. You could also check out what this guy is doing, since he seems to be getting decent results. Another possibility is some sort of temporal AA, where you blend the pixel colors with the result from a previous frame based on either a reprojection or after slightly offsetting your projection matrix. Halo Reach seems to be using something similar to this.

Share this post


Link to post
Share on other sites
Quote:
Original post by Promit
Quote:
Original post by CombatHammie
but in the end, XNA's D3D limitation makes everything just plain ugly and unrealistic. The edge detect + buffer blur just doesn't work for me.
I am not sure what you mean by this. Do you mean its D3D 9 limitation?


Sorry. I meant D3D9.


Quote:
Original post by Hodgman
Are you doing edge detection on the colour buffer or the depth buffer?


There are two derivatives of 'deferred' rendering, 'light pre-pass' and 'inferred' rendering, that both support MSAA on DX9, and inferred supports transparent objects without a forward pass.


Depth (http://http.developer.nvidia.com/GPUGems3/gpugems3_ch19.html). I am yet to look into those techniques.


Quote:
Original post by MJP
Yeah anti-aliasing is pretty much impractical with D3D9-level feature set. The only options that work are some sort of screen-space approach (edge blur, MLAA, or similar), supersampling, or using MSAA when rendering the geometry for a light prepass renderer. Supersampling is usually too expensive to be practical, but if performance isn't an issue it's an easy way to deal with aliasing. Enabling MSAA when rendering geometry for a light prepass renderer kinda works, but isn't so great without applying lighting at a sub-pixel level. Edge blur, as you've already noted, sucks big time. Personally I think it makes it worse. MLAA is a good option, but isn't trivial to implement. Something like what these guys are doing would probably be great, but they haven't released source code yet. You could probably adapt the Intel CPU version to C#, but it would probably be slow without SIMD support. You could also check out what this guy is doing, since he seems to be getting decent results. Another possibility is some sort of temporal AA, where you blend the pixel colors with the result from a previous frame based on either a reprojection or after slightly offsetting your projection matrix. Halo Reach seems to be using something similar to this.


I'll keep an eye on those guy's work (specifically the first mention).

But I think I'll give up on my attempt for now. I'll see what I can do in terms of Light Pre-Pass and Inferred (I think you have a post about it).

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!