Jump to content

  • Log In with Google      Sign In   
  • Create Account

Multi-pass engine architecture?


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
7 replies to this topic

#1 3DModelerMan   Members   -  Reputation: 1071

Like
0Likes
Like

Posted 20 March 2014 - 02:57 PM

I've got the graphics module of my engine running okay now for basic shader effects like textures and simple pixel shading. I want to extend it though, and add light pre-pass rendering, shadow maps, and post-processing. I also want to add a few instancing, tesselation, and geometry shader techniques, and maybe some SSAO later on. I've been looking around for examples of engine architectures that make this possible to add, but I haven't really found anything. What would the best way to add this be? Should I break up my simple architecture to allow custom passes to be added that derive from an interface class? For the tesselation and geometry shaders, is it possible to have some sort of geometry pass that gets run first and then that geometry would be operated on by the other rendering passes? And finally, how would special cases be able to be handled, like transparent objects, sky, and particles?



Sponsor:

#2 Jason Z   Crossbones+   -  Reputation: 5432

Like
2Likes
Like

Posted 20 March 2014 - 07:44 PM

You could take a look at Hieroglyph 3, which has an object oriented way of managing rendering passes and a quite a few samples to show variations on the standard rendering setup.



#3 3DModelerMan   Members   -  Reputation: 1071

Like
0Likes
Like

Posted 20 March 2014 - 07:49 PM

I'll take a look right now. One thing that I'm trying to find a way around is how to optimize my vertex, geometry, and tesselation shaders so that they don't have to run for every pass. Mainly because I want to do hardware skinning. I'll just use stream out from the vertex shader most likely, but I would need a fallback in case it wasn't supported.



#4 Jason Z   Crossbones+   -  Reputation: 5432

Like
1Likes
Like

Posted 20 March 2014 - 08:22 PM

Are you using OpenGL or Direct3D 11?  In either case, stream output should be supported anywhere that you are doing tessellation, so that shouldn't be a problem.



#5 Hodgman   Moderators   -  Reputation: 31968

Like
2Likes
Like

Posted 20 March 2014 - 09:40 PM


I've been looking around for examples of engine architectures that make this possible to add, but I haven't really found anything. What would the best way to add this be? Should I break up my simple architecture to allow custom passes to be added that derive from an interface class?
Check out Horde3D's data-driven pipeline solution:

http://horde3d.org/docs/manual.html

http://horde3d.org/wiki/index.php5?title=The_Flexible_Rendering_Pipeline

http://horde3d.org/wiki/index.php5?title=Basic_Pipeline_Tutorial



#6 3DModelerMan   Members   -  Reputation: 1071

Like
0Likes
Like

Posted 21 March 2014 - 07:11 AM

Are you using OpenGL or Direct3D 11?  In either case, stream output should be supported anywhere that you are doing tessellation, so that shouldn't be a problem.

The stream output isn't a problem for tessellation. It's mainly for skinning I'm worried about.



#7 Jason Z   Crossbones+   -  Reputation: 5432

Like
1Likes
Like

Posted 21 March 2014 - 07:55 PM

 

Are you using OpenGL or Direct3D 11?  In either case, stream output should be supported anywhere that you are doing tessellation, so that shouldn't be a problem.

The stream output isn't a problem for tessellation. It's mainly for skinning I'm worried about.

 

You might want to consider it for the tessellated content as well - skinning is not the only thing you wouldn't want to have to repeat in a multipass renderer...



#8 rouncer   Members   -  Reputation: 291

Like
0Likes
Like

Posted 21 March 2014 - 09:12 PM

unless im mistaken, streamoutput doesnt work in sli mode, so you got to be careful about that... if youd like to support it, thats if your using direct x 11, i dunno about opengl... it case you already knew. :)


Edited by rouncer, 21 March 2014 - 09:12 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