Jump to content

  • Log In with Google      Sign In   
  • Create Account

Handling Post Processing after Deferred Shading


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 KoldGames   Members   -  Reputation: 222

Like
0Likes
Like

Posted 22 February 2014 - 08:26 PM

Hello everyone!  I finally finished implementing Deferred Shading as well as Deferred Lighting in my engine.  I am now to point where I would like to add some Post Processing Effects and was wondering, what is the most efficient way to set this up and allow multiple effects?  I was thinking that I'd have something like this: For each effect, set to render to a single target, call the effects Render method, in the effect's Render method, create a copy of the target before clearing, render the effect using the target I copied (the last effects output texture), set to the back buffer, then render the target.

void NXPPBloom::Render(NXRenderTarget& target)
{
   //Get the last effect output texture before I clear
   NXTexture2D before = target.Texture;

   target.Clear(0, 0, 0, 0);
   
   //Bloom code...
} 

Do you guys think this will work? Is there a more efficient or easier way to do this? Thanks! :)



Sponsor:

#2 C0lumbo   Crossbones+   -  Reputation: 2501

Like
1Likes
Like

Posted 23 February 2014 - 02:21 AM

Usually the approach is to have 2 render targets and 'ping pong' between them. Let's say the result of your deferred rendering scene ends up in RT1.

 

Post Effect A renders to RT2 using RT1 as a texture.

Post Effect B renders to RT1 using RT2 as a texture

Post Effect C renders to RT2 using RT1 as a texture

 

etc.

 

That's the basic approach, although the details can get a bit messy. e.g. You might want to reuse some of your G-buffer render targets rather than allocating new ones. You might want to do some of your post effects at reduced resolution. You might want to combine some post effects into single passes to better balance ALU and bandwidth usage in your shaders.



#3 KoldGames   Members   -  Reputation: 222

Like
0Likes
Like

Posted 24 February 2014 - 04:57 PM

Hey everyone!  I setup a quick post process effect system and got laying effects working! I'm really excited! Haha! It seems to be working fine.  I'll post here if I encounter any problems in the future.  I'm actually using 5 targets (color, normal, depth, lighting, and final image) in deferred shading, then passing my final image target to my post process manager which then uses one single render target to layer effects! So six targets! (because I couldn't get it working with taking one of my original targets and re-using it lol).

 

Original Image

b82h.png

 

Grayscale Effect Added to Manager:

jy9k.png

 

Blur Added:
2w0w.png

 

Grayscale Disabled:
wiw9.png

 

Thanks! smile.png
 


Edited by KoldGames, 24 February 2014 - 04:58 PM.





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