<div dir="ltr"><div><div><br>If you want the hole to be specified in object local coordinates, use gl_Vertex.<br></div><div>Getting world coordinates is a bit more tricky, you would need to have the<br></div><div>transformation matrix between object coordinates and world coordinates accessible<br></div><div>in the vertex (or fragment) shader.<br></div><div><br></div>Definitely do not use gl_FragCoord - because this one is in 2D screen space.<br><br></div>Christian<br><br><div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-07-26 15:46 GMT+02:00 Glenn Waldron <span dir="ltr"><<a href="mailto:gwaldron@gmail.com" target="_blank">gwaldron@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Erick,<div>gl_FragCoord is almost certainly not what you want (Google it). Try something like this:</div><div><br></div><div>Vertex shader:</div><div><br></div><div>uniform vec3 center;</div><div>varying float dist;</div><div>void main()<br>{</div><div>    vec4 vertex = gl_ModelViewMatrix * gl_Vertex;</div><div>    dist = length(center - vertex.xyz);</div><div>}</div><div><br></div><div>Fragment shader:</div><div><br></div><div>uniform float rad;</div><div>varying float dist;</div><div>void main()</div><div>{</div><div>    if ( rad < dist )</div><div>        discard;</div><div>    else</div><div>        gl_FragColor = ...;</div><div>}</div><div><br></div><div>    </div></div><div class="gmail_extra"><br clear="all"><div><div>Glenn Waldron / @glennwaldron</div></div>
<br><div class="gmail_quote"><div><div class="h5">On Fri, Jul 24, 2015 at 9:22 AM, Erik Hensens <span dir="ltr"><<a href="mailto:ehensens@hunter.com" target="_blank">ehensens@hunter.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">Thanks Christian. It's funny you mention that because since I'm not setting the color, the quad looks like an old television tuned to a frequency not in service, i.e. "static" or "snow". I think every time the quad is rendered each fragment's color is set to whatever value is in some uninitialized portion of memory, and each fragment changes color each time it is rendered. Quite a funny effect!<br>
<br>
I added the following line to set the color, and now it is always blue, but it's still not putting a hole in my quad, it's all there or all gone depending on whether I say if (fDist < rad) or if (fDist > rad):<br>
<br>
<br>
Code:<br>
<span><br>
// The fragment shader program source code<br>
std::string szFragSource(<br>
"uniform vec3 center;\n"<br>
"uniform float rad;\n"<br>
"void main()\n"<br>
"{\n"<br>
"float fDistX = gl_FragCoord.x - center.x;\n"<br>
"float fDistY = gl_FragCoord.y - center.y;\n"<br>
"float fDistZ = gl_FragCoord.z - center.z;\n"<br>
"float fDist = sqrt(fDistX * fDistX + fDistY * fDistY + fDistZ * fDistZ);\n"<br>
</span>"gl_FragColor = vec4(0.0,0.0,1.0,1.0);\n"<br>
<span>"if (fDist < rad) discard;\n"<br>
"}\n"<br>
);<br>
<br>
<br>
<br>
<br>
</span>Any other ideas about why my code doesn't achieve what I want? For example, am I using gl_FragCoord correctly? Are there other errors in my frag source?<br>
<br>
Thanks again!<br>
<span><br>
<br>
cbuchner1 wrote:<br>
> I believe your fragment shader is not setting the output fragment color at all, which is a minimum requirement for a fragment shader to work.<br>
><br>
><br>
> Christian<br>
><br>
><br>
><br>
</span><span>> 2015-07-23 23:59 GMT+02:00 Erik Hensens < ()>:<br>
><br>
> > Sorry for the triplicate post, I received an error message on trying to post until I removed the quotes...<br>
> ><br>
> > ------------------<br>
> > Read this topic online here:<br>
</span></div></div>> > <a href="http://forum.openscenegraph.org/viewtopic.php?p=64458#64458" rel="noreferrer" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=64458#64458</a> (<a href="http://forum.openscenegraph.org/viewtopic.php?p=64458#64458" rel="noreferrer" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=64458#64458</a>)<span class=""><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > osg-users mailing list<br>
> >  ()<br></span>
> > <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> (<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>)<span class=""><br>
> ><br>
> ><br>
> ><br>
><br>
><br>
>  ------------------<br>
> Post generated by Mail2Forum<br>
<span><br>
<br>
------------------<br>
Read this topic online here:<br>
</span></span><a href="http://forum.openscenegraph.org/viewtopic.php?p=64467#64467" rel="noreferrer" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=64467#64467</a><br>
<div><div><br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
osg-users mailing list<span class=""><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>
</span></div></div></blockquote></div><br></div>
<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" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
<br></blockquote></div><br></div>