<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi,<br>
    <br>
    what we do is packing our instance parameters in a uniform array and
    access it via gl_InstanceID as an index into the array.<br>
    <br>
    - Werner -<br>
    <br>
    <div class="moz-cite-prefix">Am 01.08.2018 um 16:32 schrieb Julien
      Valentin:<br>
    </div>
    <blockquote type="cite"
      cite="mid:1533133957.m2f.74452@forum.openscenegraph.org">
      <pre wrap="">Hi
perhaps it's because of transaltion array 's default binding (UNDEFINED)
try
translation->setArrayBinding(Array::PER_VERTEX)
Cheers


ppsychrite wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">hello sorry if i did this wrong but i dont know how to use mailing lists

so ive been trying to do modern glsl/opengl 3.3+ with osg::Geometry and 
osg::Stateset and it's been working OK for basic triangle except for 
implementing instanced array data
am I doing it the wrong way? here's the .cpp code for it and for me it 
seems well enough and fine, position and color works fine


        osg::Vec3 coords[] = {
                { -0.05f,0.05f,0.f },
                { 0.05f,-0.05f,0.f },
                { 0.05f,0.05f,1.f }
        };
        osg::Vec3 colors[] = {
                {1.f,0.f,0.f},
                {0.f,1.f,0.f},
                {0.f,0.f,1.f}
        };

        osg::Vec2 instancetranslations[] = {
                { 0.0f, 0.0f },
                { 0.1f, 0.0f },
                { 0.2f, 0.0f }
        };

        osg::Vec3Array *pos = new osg::Vec3Array(sizeof(coords) / 
sizeof(osg::Vec3), coords);
        osg::Vec3Array *color = new osg::Vec3Array(sizeof(colors) / 
sizeof(osg::Vec3), colors);
        osg::Vec2Array *translation = new 
osg::Vec2Array(sizeof(instancetranslations) / sizeof(osg::Vec2), 
instancetranslations);

        osg::Geometry *vao = new osg::Geometry();
        vao->setUseDisplayList(false);
        vao->setUseVertexArrayObject(true);
        vao->setUseVertexBufferObjects(true);

        vao->setVertexAttribArray(0, pos, osg::Array::BIND_PER_VERTEX);
        vao->setVertexAttribArray(1, color, osg::Array::BIND_PER_VERTEX);
        vao->setVertexAttribArray(2, translation);

        vao->addPrimitiveSet(new osg::DrawArrays(GL_TRIANGLES, 0, 3, 3)); //3 
instances

        osg::ref_ptr<osg::Program> program = new osg::Program;

        program->addShader(osgDB::readShaderFile("shaders/basic.vert"));
        program->addShader(osgDB::readShaderFile("shaders/basic.frag"));

        osg::StateSet *stateset = geom->getOrCreateStateSet();
        stateset->setAttributeAndModes(program.get());
        stateset->setAttribute(new osg::VertexAttribDivisor(2, 1)); //set 3rd 
array as per-instance

here's the vertex shader code for it:


#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTrans;

out vec3 color;

void main()
{
color = aColor;
gl_Position = vec4(aPos.x+ aTrans.x,aPos.y+ aTrans.y,aPos.z,1.0);
}


aTrans doesn't move the triangle at all, it's just one. I know it isn't 
the shaders fault because instead of adding aTrans to aPos I've done 
(gl_InstanceID * 0.1f) and it's worked perfectly, seeing 3 instanced 
triangles

what am i doing wrong/how could i get per-instanced array working?





_______________________________________________
osg-users mailing list

<a class="moz-txt-link-freetext" href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a>

 ------------------
Post generated by Mail2Forum
</pre>
      </blockquote>
      <pre wrap="">

------------------------
Twirling twirling twirling toward freedom

------------------
Read this topic online here:
<a class="moz-txt-link-freetext" href="http://forum.openscenegraph.org/viewtopic.php?p=74452#74452">http://forum.openscenegraph.org/viewtopic.php?p=74452#74452</a>





_______________________________________________
osg-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a>
<a class="moz-txt-link-freetext" href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a>
</pre>
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      <b>TE<span style="color:red;">X</span>ION Software Solutions,
        Rotter Bruch 26a, D-52068 Aachen</b><br>
      Phone: +49 241 475757-0<br>
      Fax: +49 241 475757-29<br>
      Web: <a class="moz-txt-link-freetext" href="http://texion.eu">http://texion.eu</a><br>
      eMail: <a class="moz-txt-link-abbreviated" href="mailto:info@texion.eu">info@texion.eu</a><br>
    </div>
  </body>
</html>