<<< 

Now render all gathered Shadowmap in a preprocess (Deferred Shadowing) -> Shadow collector

   Render each Shadowmap collected from the viewer point of view and store the shadow factor in a screen-sized texture

   Render Cascaded Shadowmap (Put the 4 light space matrix in constant register and select the right light projection to use via compare/dot product)

   And store the shadow factor…

<<< 

You can render the four maps into the shadow collector in one pass.

You just fetch the shadow collector then as a screen-space texture for each object ... e.g. you use the vpos register in the pixel shader or calculate the screen space position in the vertex shader.

 

So overall five render passes: four to create the shadow maps, one into the shadow collector and the one in the shadow collector is also the Z pre-pass.

 

<<< 

When you said to store shadow factor in r, g or b channel, you mean that the different shadow factor must not be blend together and should be left separated

Until they are use for lighting calculation ? So in the above description, spot light should be render in r channel and cascaded in g, then at lighting do two texture fetch ?

<<< 

You might want to use different colors for different shadows. Cloud shadows should be more faint and the shadows casted by objects on the ground stronger.

 

Z pre-pass: you have to render like this anyway, why not just use the shadow collector pass for this :-)

 

- Wolfgang

 

 

 

From: gdalgorithms-list-bounces@lists.sourceforge.net [mailto:gdalgorithms-list-bounces@lists.sourceforge.net] On Behalf Of Lagarde Sébastien
Sent: Thursday, April 05, 2007 1:26 AM
To: 'Game Development Algorithms'
Subject: Re: [Algorithms] Deferred shadow mask generation

 

Alright, I have checked your article and the paper mentioned (PSSM), thanks for the pointer.

 

So If I have well understood:

 

In a first time you render all the shadowmap for your game:

Render Shadowmap for projected ligt

Render Shadowmap for omni light with cubemap or multiple frustum

Etc…

Render Cascaded Shadowmap for the sun light (with day and light cycle managed):

    Here for the directional light representing the Sun

    you render 4 Shadowmap for each 4 frustum slice transformed in light space in one texture (aka texture atlas)

 

Now render all gathered Shadowmap in a preprocess (Deferred Shadowing) -> Shadow collector

   Render each Shadowmap collected from the viewer point of view and store the shadow factor in a screen-sized texture

   Render Cascaded Shadowmap (Put the 4 light space matrix in constant register and select the right light projection to use via compare/dot product)

   And store the shadow factor…

 

When you said to store shadow factor in r, g or b channel, you mean that the different shadow factor must not be blend together and should be left separated

Until they are use for lighting calculation ? So in the above description, spot light should be render in r channel and cascaded in g, then at lighting do two texture fetch ?

And I not understand why shadow collector is the z-prepass, don’t you need to do a z-prepass before to render in the shadow collector,

You can save a lot of compare and texture fetch or I missed something ?

 

Thanks for your help.

 

Lagarde Sébastien

Software engineer

Neko entertainment

 

 


De : gdalgorithms-list-bounces@lists.sourceforge.net [mailto:gdalgorithms-list-bounces@lists.sourceforge.net] De la part de Wolfgang Engel
Envoyé : mercredi 4 avril 2007 14:34
À : 'Game Development Algorithms'
Objet : Re: [Algorithms] Deferred shadow mask generation

 

Oh and the shadow collector pass is the Z pre-pass …

 

From: gdalgorithms-list-bounces@lists.sourceforge.net [mailto:gdalgorithms-list-bounces@lists.sourceforge.net] On Behalf Of Lagarde Sébastien
Sent: Wednesday, April 04, 2007 4:55 AM
To: gdalgorithms-list@lists.sourceforge.net
Subject: [Algorithms] Deferred shadow mask generation

 

Hello,

I heard that the Crytech engine2 use a specific technique they call “deferred shadow mask generation” for blend all shadow buffer in one shadow buffer

Then practice a “smart blur” on it to get soft shadows.

This mask is then reuse later to render shadow in the scene.

 

Anyone heard about a similar technique like this or have some information on how to gather many shadow buffer in one ?

 

Thank you.

 

Lagarde Sébastien

Software engineer

Neko entertainment