[eq-dev] Is it possible to build a multi-stage rendering pipeline with the Equalizer library?

1 view
Skip to first unread message

W.Xu

unread,
Mar 24, 2012, 7:37:15 AM3/24/12
to eq-...@equalizergraphics.com
For example, to render a scene with shadow there are two stages: first the
shadow map from the light's view, then the scene from the observer's view.
Each of these two steps requires entirely different settings including
viewport, frustum and output buffer sizes. And sort first/sort last
decomposition is needed by both stages to provide scalability.

When I tried to write a configuration with Equalizer I found it really hard.
Here's my first attempt, with some simplification:

In the above configuration, although I struggled to set a new view/frustum
for the shadow map, I cannot control its viewport size. As the viewport size
of "final_channel" changes, all the outputframes changes their sizes.

Is there any idea of implementing such kind of pipelined task with
Equalizer?

--
View this message in context: http://software.1713.n2.nabble.com/Is-it-possible-to-build-a-multi-stage-rendering-pipeline-with-the-Equalizer-library-tp7401123p7401123.html
Sent from the Equalizer - Parallel Rendering mailing list archive at Nabble.com.

_______________________________________________
eq-dev mailing list
eq-...@equalizergraphics.com
http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev
http://www.equalizergraphics.com

Stefan Eilemann

unread,
Mar 27, 2012, 2:46:05 AM3/27/12
to eq-...@equalizergraphics.com
Hello,

On 24. Mar 2012, at 12:37, W.Xu [via Software] wrote:

> For example, to render a scene with shadow there are two stages: first the shadow map from the light's view, then the scene from the observer's view. Each of these two steps requires entirely different settings including viewport, frustum and output buffer sizes. And sort first/sort last decomposition is needed by both stages to provide scalability.

Task decomposition is not something we support yet natively in Equalizer. Getting it to scale in a non-trivial setup is still a research topic. ;)

That said, you might be able to hard-configure something which suits your needs:

> compound
> {
> compound
> {
> channel "final_channel"
> inputframe { name "illumination0" }
> inputframe { name "illumination1" }
> compound
> {
> channel "illum0_channel"
> inputframe "shadow_map0"
> outputframe "illumination0"
> compound
> {
> channel "shadow0_channel"
> projection { ...... } # Shadow map need a different view
> outputframe "shadow_map0"
> }
> }
> ##############################
> # Another similar illumination channel
> ##############################


> }
> }
>
>
> In the above configuration, although I struggled to set a new view/frustum for the shadow map, I cannot control its viewport size. As the viewport size of "final_channel" changes, all the outputframes changes their sizes.

The pixel viewport is inherited from the destination channel down to all leafs. You can work around that by the following structure:

- compound
-- compound "final", 2x input frames
-- compound "illum", 1x output frame
-- compound "shadow" 1x output frame

In this case, you've got three destination channels, each controlling its own pixel viewport. If you use view/segment destination channels, you can control their frustum by setting the wall of the corresponding views.


HTH,

Stefan.

--
View this message in context: http://software.1713.n2.nabble.com/Is-it-possible-to-build-a-multi-stage-rendering-pipeline-with-the-Equalizer-library-tp7401123p7408566.html

Reply all
Reply to author
Forward
0 new messages