Hi Sebastian, The baseColor is applied to the sphere, so I can see my shader is in use. No differences when using osgShadow or not.
Cheers Patrik On Tue, May 13, 2014 at 10:03 AM, Sebastian Messerschmidt < [email protected]> wrote: > Hi Patrick, > > from a glimpse it seems you are setting up the shader to the geode while > using osgShadow, which will override your shaders. > I guess you need to set the shaders at the shadowTechnique. Could you try > it without osgShadow or simply do some shader debugging by setting the > gl_FragColor to some debug value to see if your shader is used at all? > > cheers > Sebastian > > HI, > > I'm trying to implement Image Based Lighting in a scene. but I think I > miss something essential. > I have copied the fragment shader and vertex shader from the orange book, > ch 12/Image Based Lighting. Created a sphere which shall be the emissive > surface. > > When I run I receive following warning/error msg: > Warning: detected OpenGL error 'invalid operation' at After > Renderer::compile. > > The sphere is colored by the base-color, but it is not emissive. What > kind of attributes do I need to set to get it work, or should I make things > in a different order? See code below. > > Kind regards > Patrik > > This is the main code: > [code] > osgShadow::ShadowedScene* scene(new osgShadow::ShadowedScene()); > osgShadow::ShadowMap* sm(new osgShadow::ShadowMap()); > sm->setTextureSize(osg::Vec2s(512,512)); > scene->setShadowTechnique(sm); > osg::Group* root = new osg::Group; > osg::Geode* em = new osg::Geode(); > em->addDrawable(new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(0,0,0), > 10.0) ) ); > osg::Geode* geode = new osg::Geode(); > geode->addDrawable(new osg::ShapeDrawable( new > osg::Cylinder(osg::Vec3(0,0,-3.0),10,0.2 > ) )) ; > geode->setCullingActive(true); > root->addChild(em); > root->addChild(geode); > scene->addChild(root); > osg::TextureCubeMap* tex = readCubeMap(); > > { > osg::StateSet* ss = em->getOrCreateStateSet(); > osg::Program* program = new osg::Program; > program->setName( "IBL" ); > program->addShader( new osg::Shader( osg::Shader::VERTEX, IBLVertSource > ) ); > program->addShader( new osg::Shader( osg::Shader::FRAGMENT, > IBLFragSource ) ); > > ss->setAttributeAndModes( program, osg::StateAttribute::ON ); > osg::Uniform* baseColor = new osg::Uniform( "BaseColor", osg::Vec3(0.2, > 0.4, 0.6) ); > osg::Uniform* specular = new osg::Uniform( "SpecularPercent", 0); > osg::Uniform* diffuse = new osg::Uniform( "DiffusePercent", 1.0); > osg::Uniform* specEnvMap = new osg::Uniform("SpecularEnvMap", 0); > osg::Uniform* diffEnvMap = new osg::Uniform( "DiffuseEnvMap", 0); > ss->setTextureAttributeAndModes(0, tex, osg::StateAttribute::ON ); > ss->addUniform( baseColor ); > ss->addUniform( specular ); > ss->addUniform( diffuse ); > ss->addUniform( specEnvMap ); > ss->addUniform( diffEnvMap ); > } > > viewer.setSceneData(scene); > viewer.run(); > [/code] > > > _______________________________________________ > osg-users mailing > [email protected]http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

