Hi Patrik,
Okay, I've digged a bit deeper into your code. Somehow your code to add
the textures seems awkward. You are assigning the cubemap to the first
texture unit and create 3 uniforms to texture unit 0.
It is hard to tell what is going wrong on your side, given that small
piece of code, but since you get an OpenGL error you should chase it
down. It might be related to binding the texture to multiple sampler
objects on the same texture unit. Try to step back and bind the cubemap
to a simple program with exactly one cubemap sampler and do some
debugging with a simple cubemapping shader.
There is a osgcubemap example which you could extend to use shaders
(beware that TexGen will not work with shaders, so you will have to
write your own in the vertex shader, which is not complicated though)
I don't know the specific example you are referring to, so I cannot
really give your more pointers unless you prepare a small compiling
example.
Hi Sebastian,
Yes, that works as well, the sphere is red.
cheers
Patrik
On Tue, May 13, 2014 at 10:32 AM, Sebastian Messerschmidt
<[email protected]
<mailto:[email protected]>> wrote:
Hi Patrik,
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.
Yes because it is the first texture unit. Fixed function pipeline
and osgShadow will handle it. Please follwo my advice and change
the output of the fragment shader to
gl_FragColor = vec4(1,0,0,1) or gl_FragData[0] = vec4(1,0,0,1)
to see if it is _really_ your shader.
cheers
Sebastian
Cheers
Patrik
On Tue, May 13, 2014 at 10:03 AM, Sebastian Messerschmidt
<[email protected]
<mailto:[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 list
[email protected]
<mailto:[email protected]>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
<mailto:[email protected]>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
<mailto:[email protected]>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
<mailto:[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