[osg-users] How to access material properties from a GLSL shader?

Chris Djali / AnyOldName3 krizdjali at gmail.com
Wed Jan 8 15:21:34 PST 2020


osg::Material pretty much encapsulates OpenGL's fixed-function material 
state, so things like glMaterialfv (that controls material settings for 
whole draw calls) and glColorMaterial (that controls what vertex colours 
actually affect). If you're using a suitably old GLSL version, you can 
access this state through the built-in uniforms. These aren't featured 
prominently in lots of the modern OpenGL documentation like the wiki as 
they're removed in modern OpenGL, but I have this bookmarked and it at 
least says what's there: http://mew.cx/glsl_quickref.pdf. Once you know an 
actual uniform name, relevant stuff should show up in a search engine. The 
one problem you'll hit is that there's no built-in uniform to say whether 
glColorMaterial is enabled or what mode it's in, so you'll have to set that 
up yourself with a uniform or shader define.

I *think* that with the right combination of settings, OSG exposes similar 
uniforms in newer OpenGL/GLSL versions where the fixed function pipeline 
has been removed, so that's something to look into. I've never needed this, 
though, so don't know if it just happens when OSG is compiled with GL3 
support, or whether there's more that you need to do.

Hope this helps,


On Wednesday, 8 January 2020 22:53:28 UTC, Armin Samii wrote:
> Does openscenegraph provide easy access to osg::Material values in the 
> shaders? If so, in which Uniforms are the various properties set? If not, 
> is the best path forward to set my own Uniforms based on osg::Material?
> For context: I had an OBJ/MTL that loaded and rendered fine by default, 
> but when I turn on `setUseVertexAttributeAliasing`, the texture coordinates 
> seem to break. I am trying to replace the default rendering with my own 
> shader instead, but can't reproduce the original look and feel. While 
> texture coordinates and texture loading does work with shaders, I cannot 
> seem to find how to access the colors specified in the MTL files.
> (A google search shows several results for "openscenegraph material 
> shaders" which looks helpful, but they are all in the forum, which is now 
> inaccessible. Apologies if this question has been asked and answered 
> elsewhere.)

You received this message because you are subscribed to the Google Groups "OpenSceneGraph Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to osg-users+unsubscribe at googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osg-users/5b4d4380-6d02-4726-a13f-2068c47d70d6%40googlegroups.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20200108/23018d81/attachment.html>

More information about the osg-users mailing list