<div dir="ltr">For OpenGL 3.2, I've taken the approach of using an uniform block to replace the materials, (if you think about this materials are currently treated as something that is shared between all shaders, which is how they are implemented in the fixed function pipeline) each material has a buffer on the GPU, and I just switch the uniform block pointer as part of the material apply. I found using callbacks really slowed down the scene graph update as the scene got larger. And there were also a number of bugs I hit by using material uniforms where scene graph optimizations seemed to lose them.<div><br></div><div>-Gedalia</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 1, 2017 at 10:12 AM, Robert Osfield <span dir="ltr"><<a href="mailto:robert.osfield@gmail.com" target="_blank">robert.osfield@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Goran,<br>
<br>
In standard OSG (3.2.x, 3.4.0 or the 3.5.x dev series) there isn't any<br>
way to automatically remap osg::Material to uniforms so you'll have to<br>
run a traverser through the scene graph and replace the osg::Material<br>
to osg::Uniform's.<br>
<br>
If you are willing to experiment with bleeding edge experimental code<br>
then have a look at the shader_pipeline branch of the OSG, in this<br>
branch I'm working on a new scheme for automatically mapping old fixed<br>
function state like osg::Material to uniforms and #define settings<br>
that can then be used by #pragma(tic) shader composition to provide a<br>
fully integrated shader+fixed function state solution.<br>
<span class="HOEnZb"><font color="#888888"><br>
Robert.<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On 15 May 2017 at 14:18, Goran Pantar <<a href="mailto:gpantar@logicbricks.com">gpantar@logicbricks.com</a>> wrote:<br>
> Hi,<br>
><br>
> I'm using OpenGL ES 2.0 and having dificulties to pass the old style material properties (ambient, difusse, specular, shininess) to the uniforms used in my fragment shader.<br>
><br>
> For the 3d model I use models in 3ds format with multiple materials and multiple drawables.<br>
><br>
><br>
> As a dirty hack I changed the Material.cpp Material::apply(State&) function. This worked properly and I was able to modify this several global uniforms used by my shader.<br>
><br>
> Now I'm trying to do this the OSG way using updateCallbacks and visitors but the uniform are not updated during the rendering. Probably only the last drawable material properties are set to the uniform and than this is used when rendering.<br>
><br>
><br>
> I expect that there is some perfectly elegant way to do this, so please point me in the right direction.<br>
><br>
> Thank you!<br>
><br>
> Cheers,<br>
> Goran<br>
><br>
> ------------------<br>
> Read this topic online here:<br>
> <a href="http://forum.openscenegraph.org/viewtopic.php?p=70931#70931" rel="noreferrer" target="_blank">http://forum.openscenegraph.<wbr>org/viewtopic.php?p=70931#<wbr>70931</a><br>
><br>
><br>
><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> osg-users mailing list<br>
> <a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.<wbr>openscenegraph.org</a><br>
> <a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.<wbr>org/listinfo.cgi/osg-users-<wbr>openscenegraph.org</a><br>
______________________________<wbr>_________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.<wbr>openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.<wbr>org/listinfo.cgi/osg-users-<wbr>openscenegraph.org</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">DI-Guy Engineering Lead, <span style="font-family:arial,sans-serif;background-color:rgb(255,255,255)"><span style="font-size:9pt;line-height:13px;color:black">VT MÄK</span></span><br><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">150 Cambridge Park Drive, </span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">3rd Floor, </span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Cambridge, MA 02140</span><span style="font-family:arial,sans-serif;background-color:rgb(255,255,255)"><br></span><br></div></div>
</div>