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


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 : [] 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: [] On Behalf Of Lagarde Sébastien
Sent: Wednesday, April 04, 2007 4:55 AM
Subject: [Algorithms] Deferred shadow mask generation



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