<div dir="ltr"><div><div><div>Hi Alexander,<br><br></div>If you want to use the osg_ModelViewMatrix then you need to enable it via the osg::State object for the graphics context.  See the osgsimplegl3 example, it has:<br><br>    // for non GL3/GL4 and non GLES2 platforms we need enable the osg_ uniforms that the shaders will use,<br>    // you don't need thse two lines on GL3/GL4 and GLES2 specific builds as these will be enable by default.<br>    gc->getState()->setUseModelViewAndProjectionUniforms(true);<br>    gc->getState()->setUseVertexAttributeAliasing(true);<br><br></div>If you don't need to use GL3 or GL4 core profile, then you can just use GL2 profile which is the default for the OSG, here you can happily use gl_ModelViewMatrix etc.  Most of the other OSG shader examples use this approach.  Just do a search for osg::Shader in the OSG code base and you'll find plenty of the examples to learn from.<br><br></div>Robert.<br><div><div><br><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 11 April 2015 at 18:21, Alexander Wieser <span dir="ltr"><<a href="mailto:alexander.wieser@crystalbyte.de" target="_blank">alexander.wieser@crystalbyte.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I am currently working on my bachelor thesis using which involves the OpenSceneGraph. One task is to apply a distortion Shader to a rendered texture.<br>
<br>
Unfortunately I am failing in getting any Shader to work at all.<br>
After spending the last couple of days researching and reading books, I managed to get several shaders running in other libraries, be it online using WebGL or directly using OpenGL. I simply can't get it running using OSG.<br>
<br>
The code initializing the program is this.<br>
<br>
<br>
Code:<br>
<br>
// A simple 4 vertex rectangular geometry drawable.<br>
Plane* plane = new Plane(40);<br>
this->addDrawable(plane);<br>
<br>
osg::Program* program = new osg::Program();<br>
program->setName("Debug Shader");<br>
<br>
// This refers to a Geode.<br>
osg::StateSet& state = *this->getOrCreateStateSet();<br>
state.setAttributeAndModes(program, osg::StateAttribute::ON);<br>
<br>
boost::filesystem::path currentPath(boost::filesystem::current_path());<br>
<br>
// Init vertex shader.<br>
RTT::log(RTT::Debug) << "Loading vertex shader."<< RTT::endlog();<br>
osg::Shader* vertexShader = new osg::Shader(osg::Shader::VERTEX);<br>
vertexShader->loadShaderSourceFromFile(currentPath.string() + "/../resources/shaders/debug.vert");<br>
program->addShader(vertexShader);<br>
<br>
// Init fragment shader.<br>
RTT::log(RTT::Debug) << "Loading fragment shader."<< RTT::endlog();<br>
osg::Shader* fragmentShader = new osg::Shader(osg::Shader::FRAGMENT);<br>
fragmentShader->loadShaderSourceFromFile(currentPath.string() + "/../resources/shaders/debug.frag");<br>
program->addShader(fragmentShader);<br>
<br>
<br>
<br>
<br>
<br>
Vertex Shader<br>
<br>
Code:<br>
<br>
#version 430<br>
<br>
uniform mat4 osg_ModelViewProjectionMatrix;<br>
in vec4 osg_Vertex;<br>
<br>
void main() {<br>
gl_Position = osg_ModelViewProjectionMatrix * osg_Vertex;<br>
}<br>
<br>
<br>
<br>
<br>
<br>
Fragment Shader<br>
<br>
Code:<br>
<br>
#version 430<br>
<br>
layout(location = 0) out vec4 FragColor;<br>
<br>
void main() {<br>
FragColor = vec4(1.0, 0.0, 0.0, 1.0);<br>
}<br>
<br>
<br>
<br>
<br>
As you can see, the program is not that complicated and does compile fine.<br>
Unfortunately I don't see anything on the screen. There is no model.<br>
If I remove the program and simply use the built in lighting, coloring and texturing support it renders fine.<br>
<br>
Any help is greatly appreciated.<br>
<br>
<br>
Thank you!<br>
<br>
Cheers,<br>
Alexander<br>
<br>
------------------<br>
Read this topic online here:<br>
<a href="http://forum.openscenegraph.org/viewtopic.php?p=63328#63328" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=63328#63328</a><br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div><br></div>