<div class="gmail_quote"><div> Hi</div><div><br></div><div>Have been doing a little work on this, the main hurdles I faced where getting hold of light / texture matrix information and adding the GLES2 precision stuff. So for the moment I copied the original shadergen func (<span class="Apple-style-span" style="font-family: Menlo; font-size: 12px; ">ShaderGenCache::createStateSet) </span>into my own material class for testing as it had direct access to the materials texture matrix and that was the main thing I needed at the time (if your not using them it won't matter, but it's something I think should certainly be available).</div>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="1038.35">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}
</style>


<div><br></div><div>So this won't work directly in osg as I added a few other bits as experimentation, but how to handle the precision and applying the texture matrix uniform is demonstrated.</div><div><br></div><div>
Attached is my material class, it basically just wraps a stateset and supplies some convenience functions. the function you're looking for is <span class="Apple-style-span" style="font-family: Menlo; font-size: 12px; ">ComposeShaderFromMaterialState and any variable I have added to the generated shader is prefixed with hb_, rather then osg_.</span></div>
<div><span class="Apple-style-span" style="font-family: Menlo; font-size: 12px; "><br></span></div><div><font class="Apple-style-span" face="Menlo">This is something I would like to get moved into core osg so would be happy to lend advice, as might be a while till I find the time to do this myself. The main issue I think is dynamic variables like texture matrices and light position. If we want people to be able to update these on the fly without having to redo the entire shadergen pass, then the uniforms would have to be retained some how so that they could be updated anytime the light was moved for example. This might be doable from the shader gen visitor, but updating all the uniforms every frame could be expensive.</font></div>
<div><font class="Apple-style-span" face="Menlo"><br></font></div><div><font class="Apple-style-span" face="Menlo">In the end though it would be nice just to get the existing gl2 version working in gles2 just as a fallback for the examples. Think it would a big help to anyone using gles2 for the first time.</font></div>
<div><span class="Apple-style-span" style="font-family: Menlo; font-size: 12px; "><br></span></div><div><span class="Apple-style-span" style="font-family: Menlo; font-size: 12px; ">Cheers</span></div><div><span class="Apple-style-span" style="font-family: Menlo; font-size: 12px; ">Tom</span></div>
<div><font class="Apple-style-span" face="Menlo"><br></font></div><div><font class="Apple-style-span" face="Menlo"><br></font></div><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="1038.35">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}
</style>


</div><br>