Re: Transparent Sorting Bug(?) in Performer

New Message Reply Date view Thread view Subject view Author view

From: Angus Dorbie (dorbie++at++sgi.com)
Date: 04/11/2000 15:49:37


This is not a bug.

After a bit of investigation it looks like you had a draw callback above
the geosets on the logo geode added in the logoNode function, it isn't
#if'ed with ADD_DRAW_CALLBACK. Draw callbacks stop sorting below the
node. Maybe the DCS fixed this because of some undocumented behaviour,
since we don't sort state below a DCS it perhaps didn't see a problem
sorting with dept major. Removing the geode draw callback fixed the
problem.

Also (and I haven't checked the permutations with this) I added the
following calls:

    chan->setBinSort(PFSORT_TRANSP_BIN, PFSORT_BACK_TO_FRONT, NULL);
    chan->setTravMode(PFTRAV_CULL, PFCULL_VIEW | PFCULL_SORT |
PFCULL_GSET);

At least one of these is the default but I'm just being explicit here to
make it clear where all the hooks for this stuff are and what's required
to make it work.

Cheers,ANgus.

MLM Veraart wrote:
>
> Hello,
>
> I think I have found a bug in Iris Performer.
> It is about sorting of transparent geometry.
> In a testcase have located the error. It can be solved
> by putting an Identity pfDCS() in front of the geometry
> that is wrong sorted.
>
> The performer scene graph of the NON working case is
>
> pfScene
> |
> +-- pfGeode -- pfGeoset (cube flt file)
> |
> +-- pfDCS[T(20,3,0)] -- pfGeode -- pfGeoset
> | (quad with iris texture around 0,0,0)
> |
> +-- pfGeode -- pfGeoset
> | (quad with logo texture around 20,6,0)
> |
> +-- pfDCS[T(20,9,0)] -- pfGeode -- pfGeoset
> | (quad with iris texture around 0,0,0)
> |
> +-- pfGeode -- pfGeoset
> (quad with logo texture around 20,12,0)
>
> When viewed the two logo quads are drawn first and the the two iris quads.
> But when I add a pfDCS with an identity matrix in front of the logo quads
> the sorting is done in the right way.
>
> The performer scene graph of the working case is
>
> pfScene
> |
> +-- pfGeode -- pfGeoset (cube flt file)
> |
> +-- pfDCS[T(20,3,0)] -- pfGeode -- pfGeoset
> | (quad with iris texture around 0,0,0)
> |
> +-- pfDCS[T(0,0,0)] -- pfGeode -- pfGeoset
> | (quad with logo texture around 20,6,0)
> |
> +-- pfDCS[T(20,9,0)] -- pfGeode -- pfGeoset
> | (quad with iris texture around 0,0,0)
> |
> +-- pfDCS[T(0,0,0)] -- pfGeode -- pfGeoset
> (quad with logo texture around 20,12,0)
>
> For me this is a workaround for the application I have now.
>
> Is this a bug in performer 2.2.4?
>
> You can find the files of the test program based on complex.C
> at the following URL http://alley.fel.tno.nl/~rioj7/TransparentSorting/
>
> Thanks in advance.
>
> Mario Veraart
> -----------------------------------------------------------------------
> List Archives, FAQ, FTP: http://www.sgi.com/software/performer/
> Submissions: info-performer++at++sgi.com
> Admin. requests: info-performer-request++at++sgi.com

-- 
For Performer+OpenGL tutorials http://www.dorbie.com/

"In the middle of difficulty lies opportunity." --Albert Einstein


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2b29 : Tue Apr 11 2000 - 15:49:49 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.