Hi Jason,

The number of clip planes supported by OpenGL is typically limited to
6, so for a single subgraph this is the hard limit your can't work
around without doing your own shaders.  The advantage your own custom
clip plan class has is that it'd allow you to decorate multiple
subgraphs each with it's own setting for the 6 clip planes, this
overcomes the limitation the OSG adds by restricting you to 6 clip
planes per RenderStage.

Robert.

On Thu, Jun 17, 2010 at 3:44 AM, Jason Jerald <ja...@digitalartforms.com> wrote:
> Ok, I created my own subclass from osg::ClipPlane and override apply().  I
> confirmed that the code is actually entering my new apply() method and
> successfully set the clipping planes with the correct transforms.  However,
> it seems I am still limited to 6 clipping planes.  I do not see how
> pushing/popping the modelview matrix and setting a new modelview matrix gets
> around the 6 clip plane limit.  The modelview matrix already includes what I
> need (including the local geometric transform), so how does setting the
> matrix myself help?  I must be missing something or perhaps I misunderstood
> your suggestion.
>
> The only thing I did was override ClipPlane::apply(State).  I am not clear
> in your suggestion if you are saying this is the only thing that is needed
> or if I also need to set up a RenderBin (or a new RenderStage?) for each set
> of 6 clipping planes. Or perhaps I need to call apply() in a different way
> than how osg is already doing it? Or is there something else I am missing?
>
> Thanks!
>
> Jason
>
>
>
>
>
>
>
>
>
> -----Original Message-----
> From: osg-users-boun...@lists.openscenegraph.org
> [mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Robert
> Osfield
> Sent: Tuesday, May 18, 2010 12:58 AM
> To: OpenSceneGraph Users
> Subject: Re: [osg-users] reuse of clipping planes?
>
> Hi Jason,
>
> RenderBin's don't have any positional state setup so you can't use
> them directly to enable more clipping planes.  Only RenderStage's set
> up the positional state.
>
> The FlightGear's workaround isn't a general purpose approach so isn't
> appropriate for the core OSG, so there hasn't been any changes merged
> for this in any OSG version.  You can create you own equivilant by
> subclassing from osg::ClipPlane and overriding the apply() then
> setting the modelview matrix you want and applying the clipplanes and
> then restoring it afterwards before the end of the apply().
>
> Robert.
>
> On Tue, May 18, 2010 at 1:26 AM, Jason Jerald <ja...@digitalartforms.com>
> wrote:
>> Thank you Robert, this is some very useful information.
>>
>> The most recent related thread I could find on this topic is from Aug/Sept
>> 2007:
>> "RFC: Positional state container in the render bin, was: clip planes"
>>
>> There is discussion in that thread about using renderbins.  What are the
>> advantages of using renderbins versus renderstages?  The code attached in
>> that thread modifies RenderBin, RenderStage, CullVisitor, and osgClip.
>> However, it appears from doing a diff that those changes have not been
>> integrated into OSG 2.8.2.  Is this the FlightGear emulate solution you
>> mention below, and it is just not integrated into OSG 2.8.2, or are you
>> talking about a different solution implemented in a different way?
>> Unfortunately simgear.org which contains much of the osg code for
> flightgear
>> (at least from my understanding) has not been available for at least the
>> last few days.
>>
>> Thanks!
>>
>> Jason
>>
>>
>>
>>
>>
>>
>>
>> -----Original Message-----
>> From: osg-users-boun...@lists.openscenegraph.org
>> [mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Robert
>> Osfield
>> Sent: Thursday, May 13, 2010 1:21 AM
>> To: OpenSceneGraph Users
>> Subject: Re: [osg-users] reuse of clipping planes?
>>
>> Hi Jason,
>>
>> Clip planes are an example of positional state, other examples are
>> lights and eye linear texgen.  All positional state requires a
>> specific modelview matrix to be bound to them to position them
>> correctly in space, so unlike other OpenGL/OSG state you can't just
>> push/pop and state sort their state and expect to get the correct
>> results.
>>
>> This difference is handled by the OSG by binding the positional state
>> together with a modelview matrix found when encountering the
>> ClipNode/TexGenNode/LightSource nodes, and these positional state are
>> then applied once at the start of each RenderStage.  Applying the
>> state just once for whole RenderStage does enable us to position the
>> state uniquely but unfortauntely also means that the positional state
>> can only be in one place for the whole stage - you can't nest it.
>>
>> You can emulate having multiple sets of Clip planes/texgen/lights by
>> having multiple stages, or do what is currently done in FlightGear, to
>> use a custom StateAttribute that does the binding to the required
>> modelview matrix in the CustomAttribute::apply() method taking care to
>> push back the current modelview matrix to prevent the rest of the
>> scene being affected.
>>
>> Robert.
>>
>> On Thu, May 13, 2010 at 2:14 AM, Jason Jerald <ja...@digitalartforms.com>
>> wrote:
>>>
>>>
>>> Evidently most graphics hardware only supports 6-8 clipping planes and
> our
>>> application requires more than that so I  need to somehow reuse clipping
>>> planes.  I searched the archives and saw there was some discussion of
> this
>>> back in 2007 (something about possibly using the render bin instead of
> the
>>> render stage but it is not clear how to do so).  Has reuse of clipping
>>> planes since been implemented?  If so how do I do so (I have not been
> able
>>> to figure out how to do so by looking through clipnode)?  Or if not, does
>>> anyone have any ideas/example of how to implement reuse of clipping
>> planes?
>>>
>>>
>>>
>>> Thanks so much!
>>>
>>>
>>>
>>> Jason
>>>
>>>
>>>
>>> _______________________________________________
>>> osg-users mailing list
>>> osg-users@lists.openscenegraph.org
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>
>>>
>> _______________________________________________
>> osg-users mailing list
>> osg-users@lists.openscenegraph.org
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>> _______________________________________________
>> osg-users mailing list
>> osg-users@lists.openscenegraph.org
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to