[osg-users] How does shadow technic work if geometry shaders are in use
Werner Modenbach
Werner.Modenbach at texion.eu
Mon Jun 8 05:20:46 PDT 2015
Sorry, was on a business trip for a while.
Here is my code (shortened a little):
osg::Group*rootNode=newosg::Group();
view->setSceneData(rootNode);
shadowedScene=newosgShadow::ShadowedScene;
shadowedScene->setReceivesShadowTraversalMask(ReceivesShadowTraversalMask);
shadowedScene->setCastsShadowTraversalMask(CastsShadowTraversalMask);
rootNode->addChild(shadowedScene.get());
objectSwitch=newosg::Switch;
shadowedScene->addChild(objectSwitch);
lightSource=newosg::LightSource;
lightSource->setLight(myLight);
lightSource->setReferenceFrame(osg::LightSource::ABSOLUTE_RF);
lightSource->setLocalStateSetModes(osg::StateAttribute::ON);
shadowedScene->addChild(lightSource.get());
osg::StateSet*stateset=objectSwitch->getOrCreateStateSet();
// setting uniforms etc. here
osg::Program*program=newosg::Program();
stateset->setAttribute(program);
program->addShader(Cl_ShaderGen::getShader(osg::Shader::VERTEX,forceGL3Mode,
...));program->addShader(Cl_ShaderGen::getShader(osg::Shader::GEOMETRY,forceGL3Mode,
...));program->addShader(Cl_ShaderGen::getShader(osg::Shader::FRAGMENT,forceGL3Mode,
...));
view->getCamera()->getGraphicsContext()->getState()->setUseModelViewAndProjectionUniforms(forceGL3Mode);
view->getCamera()->getGraphicsContext()->getState()->setUseVertexAttributeAliasing(forceGL3Mode);
If I use GL2 mode everything works like expected.
In GL3 mode without shadow technique everything works fine (using
geometry shader)
In GL3 mode assigning a shadow technique doesn't change anything i.e. no
shadow appears.
If I assign the schaders to the state set of shadowedScene in GL3 mode
without shadow technique
everything appears the normal way but when assigning a shadow technique
geometry shaders
don't do their work any more.
So my guess is that shadow technique just replaces the shaders.
Is my approach wrong? Do I do something in a non standard way?
Many thanks for hints and help.
- Werner -
Am 29.05.2015 um 18:53 schrieb Trajce Nikolov NICK:
> Hard to say without seeing your code .... I have modified shaders for
> the LSPSM. Can you share a sample app ?
>
> On Fri, May 29, 2015 at 6:38 PM, Werner Modenbach
> <Werner.Modenbach at texion.eu <mailto:Werner.Modenbach at texion.eu>> wrote:
>
> Hi Nick,
>
> I'm using LightSpacePerspective shadow technique as well.
> But I set the shaders only inside the scene graph where reqired.
> Do I have to set them anywhere else?
> My graph looks like that:
> *---------------
>
> * | RootNode |
>
> * ---------------
>
> * / \
>
> * --------------- ---------------------
>
> * | ShadowScene | |evtl. PPU-Prozessor|
>
> * --------------- ---------------------
>
> * / \
>
> * --------------- ---------------
>
> * | Switchnode | | LightSource |
>
> * --------------- ---------------
> * / \\\
>
>
>
> Am 29.05.2015 um 18:16 schrieb Trajce Nikolov NICK:
>> Hi Werner,
>>
>> I am doing the same and using the LightSpacePerspective shadow
>> techinque. In your program you have to set your vertex and
>> fragment shaders as well, and it will be picked up correctly if
>> you set the masks for receiving/cast shadows .... So it should
>> work. As long as they are part of the top ShadowedScene
>>
>> Nick
>>
>>
>> Nick
>>
>> On Fri, May 29, 2015 at 5:56 PM, Werner Modenbach
>> <Werner.Modenbach at texion.eu <mailto:Werner.Modenbach at texion.eu>>
>> wrote:
>>
>> Hi all,
>>
>> My scene contains many objects, which are created by geometry
>> shaders.
>> So no vertices are created outside the graphics card for
>> those objects.
>> So I use
>> state->setUseVertexAttributeAliasing(true)
>> and
>> state->setUseModelViewAndProjectionUniforms(true)
>>
>> Is it possible using a shadow technique in this case? If I'm
>> right the shadow technique installs it's own shaders.
>>
>> Thanks for any hint.
>>
>> - Werner -
>>
>> _______________________________________________
>> osg-users mailing list
>> osg-users at lists.openscenegraph.org
>> <mailto:osg-users at lists.openscenegraph.org>
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>>
>>
>>
>> --
>> trajce nikolov nick
>>
>>
>> _______________________________________________
>> osg-users mailing list
>> osg-users at lists.openscenegraph.org <mailto:osg-users at lists.openscenegraph.org>
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
> --
> *TEXION Software Solutions, Rotter Bruch 26a, D-52068 Aachen*
> Phone: +49 241 475757-0
> Fax: +49 241 475757-29 <tel:%2B49%20241%20475757-29>
> Web: http://texion.eu
> eMail: info at texion.eu <mailto:info at texion.eu>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> <mailto:osg-users at lists.openscenegraph.org>
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
>
>
> --
> trajce nikolov nick
>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
--
*TEXION Software Solutions, Rotter Bruch 26a, D-52068 Aachen*
Phone: +49 241 475757-0
Fax: +49 241 475757-29
Web: http://texion.eu
eMail: info at texion.eu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20150608/8e46bb9d/attachment-0002.htm>
More information about the osg-users
mailing list