Re: [osg-users] Setting vertex attribute array of float

2017-03-27 Thread Julien Valentin
Hi 
I think you are mixing old and new glsl syntax.
varying is old syntax
attribute is new syntax
 you should harmonize your shader (use #version GLSLSVERSION at the begin of 
your shader) all will become incremental with compiler errors
PS:
Code:
use the code tag to create expandable code section


Cheers

Bruno Oliveira wrote:
> Hello,
> 
> 
> I have a point cloud and I need to pass some float attribute. I need one flag 
> per vertex, so I am using vertex attribute array.
> 
> 
> Here's how I do it:
> 
> 
> osg::Geometry* geom = (...);
> 
> osg::ref_ptr vvv(new osg::FloatArray());
> 
> for (int i = 0; i < nPoints; i++) vvv->push_back(0.);
> 
> 
> geom->setVertexAttribArray(20, vvv);
> geom->setVertexAttribBinding(20, osg::Geometry::BIND_PER_VERTEX);
> 
> 
> 
> Then I create a osg::Program and bind the attribute as follows:
> 
> m_program->addBindAttribLocation("classif", 20); 
> 
> 
> 
> 
> And here's my vertex shader that paints the vertices as white if the 
> attribute "classif" is > 0.1 and red otherwise:
> 
>             // Vertex Shader
>             "varying   vec4 vcolor;n"
>             "attribute float classif;n"
>             "n"
>             "void main()n"
>             "{n"
>             "  vcolor  = ((classif > 0.1) ? vec4(1., 1., 1., 1.) : 
> vec4(1., 0., 0. ,1.));n"
>             "  gl_Position = ftransform();n"
>             "}n",
> 
> 
>             // Fragment Shader
>             "varying vec4 vcolor;n"
>             "void main() {n"
>             "  gl_FragColor = vcolor;n"
>             "}"
> 
> 
> 
> 
> Now, what happens is that, despite I set all attributes to 0., all the points 
> appear as white (i.e. the shader is interpreting the attribute as > 0.1). And 
> no matter what values I put on the attributes, the vertices are always 
> rendered as white.
> 
> 
> Any hints on why this is happening?
> 
>  --
> Post generated by Mail2Forum


--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=70563#70563





___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] Setting vertex attribute array of float

2017-03-20 Thread Bruno Oliveira
Hello,

I have a point cloud and I need to pass some float attribute. I need one
flag per vertex, so I am using vertex attribute array.

Here's how I do it:




*osg::Geometry* geom = (...);osg::ref_ptr vvv(new
osg::FloatArray());*


*for (int i = 0; i < nPoints; i++) vvv->push_back(0.);*

*geom->setVertexAttribArray(20, vvv);geom->setVertexAttribBinding(20,
osg::Geometry::BIND_PER_VERTEX);*


Then I create a osg::Program and bind the attribute as follows:


*m_program->addBindAttribLocation("classif", 20); *


And here's my vertex shader that paints the vertices as *white* if the
attribute "classif" is > 0.1 and *red* otherwise:
















*// Vertex Shader"varying   vec4 vcolor;\n"
"attribute float classif;\n""\n""void
main()\n""{\n""  vcolor  = ((classif > 0.1) ?
vec4(1., 1., 1., 1.) : vec4(1., 0., 0. ,1.));\n""  gl_Position
= ftransform();\n""}\n",// Fragment Shader
"varying vec4 vcolor;\n""void main() {\n""
gl_FragColor = vcolor;\n""}"*



Now, what happens is that, despite I set all attributes to 0., all the
points appear as white (i.e. the shader is interpreting the attribute as >
0.1). And no matter what values I put on the attributes, the vertices are
always rendered as white.

Any hints on why this is happening?
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org