so, I plan on using deferred rendering, but I also want dx11 tesselation.
Maps I need are depth maps, normal maps, diffuse maps, and coordinate maps.
I figure I could do 4 passes of the actual geometry to get front faces, back faces of a worldspace coordinate render and diffuse render, then I could make the normal and depth maps from the worldspace coordinate render in image space.
I would then have all the maps I needed... only problem is, it took 4 whole renders to get there, that means I had to tesselate the whole scene over 4 times to do it...
Is there some way to do the tesselation once and get colour and coordinate maps at the same time?
Even maybe front faces and back faces?
deferred rendering and tesselation
Usually, depth (position), normal and diffuse are all rendered at the same time using MRT (multiple render-targets). This gives you a back-buffer with many layers, so you can write diffuse to one layer, normal to another, etc...
Why do you need to render out both the front and the back faces for?
Why do you need to render out both the front and the back faces for?
If you're doing it right, you would only need the depth and the normals. And both of these should be rendered in just a single pass by using multiple render targets...
Ah yes! So there is a way!
Thanks alot for telling me this... so you set each render target to its own pixel shader, and you tesselate "once" and you get multiple effects out of the single render.
Hodgeman, I need back faces to compute my ambient occlusion algorythm (which is more realistic than ssao, but requires more work) and sub surface scattering, they both need back faces.
I have another question tho, and im still pretty far from understanding this properly...
Can even the vertex shader be different between render targets and you would still only tesselate once?
Cause id still like to twist the idea to somehow get back faces out of it, and also, if you could do that, you could get a shadow map render out of it as well, which is also very important.
Thanks alot for telling me this... so you set each render target to its own pixel shader, and you tesselate "once" and you get multiple effects out of the single render.
Hodgeman, I need back faces to compute my ambient occlusion algorythm (which is more realistic than ssao, but requires more work) and sub surface scattering, they both need back faces.
I have another question tho, and im still pretty far from understanding this properly...
Can even the vertex shader be different between render targets and you would still only tesselate once?
Cause id still like to twist the idea to somehow get back faces out of it, and also, if you could do that, you could get a shadow map render out of it as well, which is also very important.
You don't need backfaces for subsurface scattering... You need translucent shadow maps... And if you swear that you won't tell anyone about it, I could give you my new ambient occlusion technique that improves the efficiency of both SSAO and baked AO in a way that they are both superior than PRT without any noticeable additional cost (fps stays the same).
Also take a look at the Light Pre-Pass technique... It requires way less RAM than deferred rendering... And you won't even need a buffer for albedo (textures)...
The multiple render targets are only affected by the pixel shader... You just need to calculate multiple colors in the pixel shader and define a PS_Out struct with multiple colors (COLOR0, COLOR1, ...)
[Edited by - DarkChris on October 16, 2010 7:05:51 AM]
Also take a look at the Light Pre-Pass technique... It requires way less RAM than deferred rendering... And you won't even need a buffer for albedo (textures)...
The multiple render targets are only affected by the pixel shader... You just need to calculate multiple colors in the pixel shader and define a PS_Out struct with multiple colors (COLOR0, COLOR1, ...)
[Edited by - DarkChris on October 16, 2010 7:05:51 AM]
Oh thats a bummer, only different pixel shader methods are allowed with MRT...
Even if you used translucent shadow maps, youd still have to render more than once.
Im interested, id like to check out your ao technique, got any screen shots or movies?
">If its less quality than this im sorta not interested tho, cause I want quality over speed.
Since id like back faces im sorta stuck, cause even front facing polys would tesselate to create back facing triangles, so I dont know what to do - is back face culling done before or after tesselation?
Even if you used translucent shadow maps, youd still have to render more than once.
Im interested, id like to check out your ao technique, got any screen shots or movies?
">If its less quality than this im sorta not interested tho, cause I want quality over speed.
Since id like back faces im sorta stuck, cause even front facing polys would tesselate to create back facing triangles, so I dont know what to do - is back face culling done before or after tesselation?
Quote:Original post by rouncED
Oh thats a bummer, only different pixel shader methods are allowed with MRT...
Since when, it works with shader model 1, 2 and 3. I can't think of an explanation why they should've changed it for shader model 5?!
Quote:Original post by rouncED
Even if you used translucent shadow maps, youd still have to render more than once.
But using the backfaces is not how it's meant to work. You have to use a ray that goes from your surfaces point through the object in the direction of the light, not in the view direction.
Quote:Original post by rouncED
Im interested, id like to check out your ao technique, got any screen shots or movies?
The technique is not meant to be used instead of yours. It's meant to improve yours even more. It can easily be implemented in any engine and provides more realistic lighting / shadowing and not better ambient occlusion. I'm currently trying to improve it even more by adding a global illumination effect, but that drastically decreases the fps (compared to almost 0fps of the standard implementation).
Here are a few pics:
And a vid:
">Youtube - Unlimited Engine - Shadow Casting Ambient Occlusion
I don't know if I want to release the implementation yet, since I don't know how and if I can take any advantages from it. I definitely will release it at some point in the future.
I see it goes really fast, but the ambient occlusion isnt as good as mine, yours looks harder than raytraced, my image is a lot softer. But probably yours is more useful, cause who wants to play a game at 12fps at 640 480... i know... i know...
Quote:Original post by rouncEDYou can't set a render target to a pixel shader...
so you set each render target to its own pixel shader, and you tesselate "once" and you get multiple effects out of the single render.
When you render geometry, it uses a pixel shader.
Normally, the pixel shader outputs a single (float4) value, which is stored in the render-target.
With MRT, your pixel shaders can output more than one value (e.g. 4 x float4's), which are stored in the many layers of the render-target.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement