Jump to content
  • Advertisement
Sign in to follow this  
Alundra

Abstract Post Processing

This topic is 2162 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

Hi all,

Using a simple MRT (albedo + normal + depth) you can send that to use in a post process effect.

But, you have differents way to do that, one way is to make a post processing class and write the effect in particular.

The second way is to make post process effect and make a chain to create one post process effect.

Nowadays, what is the good solution ?

Thanks

Share this post


Link to post
Share on other sites
Advertisement

A usual graph + graph editor (could be a second step).

The editor is on my roadmap, haven't done it for now.

Share this post


Link to post
Share on other sites

Do you mean a graph of "post-process component" who will be one chain and after set this graph on an instance who create an array of IPostProcessComponent and use this instance to add in a post process chain of the render window ?

Share this post


Link to post
Share on other sites

All of the post-processing classes and chains I've used... sucked.

 

I much prefer to not use a system for this. Insetad, I'd have:

* a render-target pool class, which lets you grab render-targets as needed. It should also have helper functions to grab a render-target that's the same size & format as an existing target, or to get one that's the same format by a scaled size (e.g. give my a half-resolution render-target).

* individual effects contained in their own draw functions.

* a post-processing function that strings together each of the effects in the appropriate order.

void PostProcess( Texture a, RenderTargetPool pool )
{
  Texture b = pool.Allocate_CopySizeAndFormat(a);
  bloom.Draw( b, a );// args= output, input
  dof.Draw( a, b );
  pool.Release( b );
  return a;
}

 

The main reason for this is that in complex situations, a simply chain doesn't work; you need a graph instead. So either build a big complex graph/node-based system, or do the above (each line of code in the PostProcess function above is basically a node in a directed graph).

Share this post


Link to post
Share on other sites

Actually I have an abstract node graph editor who can be linked to a system who use it but I don't have in my head the design of a good post processing using a node graph.

My node graph was mainly designed to be used for material editor/animation graph but I think for a post processing it should be the same.

The big part is to design the good node, write the editor took only 2 days it's not the big part.

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.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!