<div dir="ltr">

 GL_CLIP_PLANE0 is deprecated in GL3+ and unavailable in CORE profile. <div><br></div><div>Instead, use GL_CLIP_DISTANCE0, pass your clip plane into your shader in a uniform, and use it to set gl_ClipDistance[0].<div><br></div><div>Example: <a href="https://github.com/gwaldron/osgearth/blob/master/src/osgEarth/ClipPlane.glsl">https://github.com/gwaldron/osgearth/blob/master/src/osgEarth/ClipPlane.glsl</a>  </div><div><div><br><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Glenn Waldron / osgEarth</div></div></div></div><br></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Sep 19, 2019 at 3:44 AM Dan johansson <<a href="mailto:johansson_dan@hotmail.com">johansson_dan@hotmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
New user here, doing a fairly simple program test so far with core profile settings. <br>
<br>
I'm rendering the program through Qt's QOpenGLWidget, even though i don't think this is causing any particular issues.<br>
<br>
I'm setting up my Cube model and personal shaders like this <br>
<br>
<br>
Code:<br>
<br>
OSGModel::OSGModel()<br>
{<br>
    modelPAT_ = new osg::PositionAttitudeTransform;<br>
    modelGeode_ = CubeCreator::buildCube();<br>
<br>
    osg::StateSet* stateset = modelGeode_->getOrCreateStateSet();<br>
    osg::ref_ptr<osg::Program> shaderProgram = new osg::Program;<br>
    osg::Shader* vShader = osgDB::readShaderFile(osg::Shader::VERTEX, "../VertexShader.glsl");<br>
    osg::Shader* fShader = osgDB::readShaderFile(osg::Shader::FRAGMENT, "../FragmentShader.glsl");<br>
<br>
    if (!vShader && !fShader)<br>
    {<br>
        osg::notify(osg::NOTICE) << "Effect Not Supported !" << std::endl;<br>
    }<br>
    shaderProgram->addShader(vShader);<br>
    shaderProgram->addShader(fShader);<br>
<br>
    //wireframe mode<br>
    //activateWireframeMode(stateset);<br>
<br>
    stateset->setAttributeAndModes(shaderProgram, osg::StateAttribute::OVERRIDE|osg::StateAttribute::ON);<br>
    stateset->setMode(GL_CLIP_PLANE0, osg::StateAttribute::ON);<br>
    stateset->setMode(GL_BLEND, osg::StateAttribute::ON);<br>
<br>
    auto lightColor = osg::Vec3f(0.5f, 0.2f, 0.35f);<br>
    auto lightSourcePosition = osg::Vec3f(1.2f, 1.0f, 2.0f);<br>
    // add uniforms<br>
<br>
    osg::ref_ptr<osg::Uniform> uniformLightColor = new osg::Uniform(osg::Uniform::FLOAT_VEC3, "UlightColor");<br>
    osg::ref_ptr<osg::Uniform> uniformLightSourcePosition = new osg::Uniform(osg::Uniform::FLOAT_VEC3, "UlightPosition");<br>
<br>
    uniformLightColor->setElement(0, lightColor);<br>
    uniformLightSourcePosition->setElement(0, lightSourcePosition);<br>
<br>
    stateset->addUniform(uniformLightColor.get());<br>
    stateset->addUniform(uniformLightSourcePosition.get());<br>
    //adds normal vectors to the model<br>
    modelGeode_->accept(geodeNormals); //Node Visitor<br>
    modelGeode_->addChild(geodeNormals.toNormalsGeomtery(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f)));<br>
<br>
    modelPAT_->addChild(modelGeode_);<br>
}<br>
<br>
<br>
<br>
<br>
where i activate the first clip plane GL_CLIP_PLANE0 for the shader. The uniforms are parsed for future implementation of lightning effects.<br>
<br>
For experiment, i wanted to pass the vertex position for the fragment shader but for some reason the model is clipped at x = 0. This can be removed by not enable CLIP_PLANE0 but i don't understand why this effect occurs as i havent specified the clip plane and do no calculation for gl_ClipDistance[0]. <br>
<br>
<br>
<br>
<br>
<br>
<br>
Following is my vertex and fragment shader<br>
<br>
<br>
Code:<br>
<br>
#version 330 core<br>
<br>
out vec4 ourPosition;<br>
out vec3 ourNormal;<br>
<br>
//lightsource uniforms<br>
uniform vec3 UlightColor;<br>
uniform vec3 UlightPosition;<br>
<br>
out vec3 lightResult;<br>
<br>
void main (void)<br>
{<br>
    ourNormal   = gl_NormalMatrix * gl_Normal;<br>
    ourPosition = gl_ModelViewMatrix *  gl_Vertex;<br>
    gl_Position = gl_ProjectionMatrix  * ourPosition;<br>
}<br>
<br>
<br>
<br>
<br>
<br>
Code:<br>
<br>
#version 330 core<br>
<br>
//object color<br>
vec3 objectColor = vec3(1.0f, 0.5f, 0.31f);<br>
in vec4 ourPosition;<br>
<br>
void main(void)<br>
{<br>
    gl_FragColor = vec4(ourPosition.xyz, 1.0f);<br>
}<br>
<br>
<br>
<br>
<br>
Any leads to why this is happening and what i can do to solve it would be appreciated. Thanks for reading, i will supply more details if necessary. <br>
<br>
Best regards Dan<br>
<br>
------------------<br>
Read this topic online here:<br>
<a href="http://forum.openscenegraph.org/viewtopic.php?p=76676#76676" rel="noreferrer" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=76676#76676</a><br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div>