Is this runtime modification of the configuration to be expected?
Cheers,
Juan
_______________________________________________
eq-dev mailing list
eq-...@equalizergraphics.com
http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev
http://www.equalizergraphics.com
On 30. May 2011, at 19:48, Juan Hernando wrote:
> I'm playing with configuration files and I've found out some funny behaviour that may be a bug of the startup configuration auto-completion mechanism.
This is not a bug, but rather a misunderstanding about the way the Layout API works.
> The test case can be easily reproduced with the 1-pipe.eqc configuration file from the distribution. If a simple compound like this is
> added to the configuration file:
> compound
> {
> channel (canvas 0 segment 0 layout 0 view 0)
> }
> everything works fine.
This compound uses the destination channel resulting from the intersection of the first segment with the first view of the first layout on the first canvas. This channel is not the same as the output channel of segment 0. It is an internal copy of this output channel with a potentially different viewport, if the view does not cover the full segment.
> However is the channel is specified by its name, then Equalizer modifies the configuration to read as in:
Then you are using the channel you created in the configuration file, as in Equalizer 0.6. For compatibility the Loader creates a Canvas/Segment/Layout/View for this compound, uses the channel as an output channel and replaces the compound channel with the appropriate destination channel.
> compound
> {
> channel "channel"
> }
> compound
> {
> compound
> {
> channel ( canvas 0 segment 0 layout 0 view 0 )
> }
> }
> This causes Channel::frameDraw to be called as much as 6 times per frame for "channel". Twice for each eye (cyclop, left, right), the first one having undefined values for the head transform matrix.
This is weird. Can you post the full configuration file? It should be called only once for the cyclop eye.
HTH,
Stefan.
> This is weird. Can you post the full configuration file? It should be called only once for the cyclop eye.
Here you are
#Equalizer 1.1 ascii
# one-pipe fullscreen config, covering a 30" LCD one meter in
# front of the viewer
global
{
EQ_WINDOW_IATTR_HINT_FULLSCREEN ON
}
server
{
config
{
appNode
{
pipe
{
window
{
channel
{
name "channel"
}
}
}
}
observer{}
layout{ view { observer 0 }}
canvas
{
layout 0
wall {}
segment { channel "channel" }
}
compound
{
channel "channel"
//channel (canvas 0 segment 0 layout 0 view 0)
}
}
}
Juan
Your draw should be called four times:
- three times, once for each eye, on the channel declared in the eqc
- once for the view/segment dest channel on the cyclop eye
In any case the config does not make sense.
The first compound emits three draws since the all eyes are active (no eyes[] in compound and no view to select stereo mode). This is new in 1.0 with the runtime stereo switch. Before that, the compound default eye was cyclop and no runtime selection was possible.
The second compound emits only the cyclop eye. While the compound also has all eyes enable, the view is in its default mono mode causing only the cyclop pass to be active.
I hope this makes sense, if not poke me with questions.
Cheers,
Stefan.
Cheers,
Juan
On 31.05.2011, at 16:21, Juan Hernando <jher...@fi.upm.es> wrote:
> The, if I understood correctly, the head matrix of the explicit compound is undefined because there's no observer/projection/wall associated to neither the compound nor the channel. Is that right?
Yes.