Hi Chrisitan,
Hi,

I am not sure if the original poster is aware of this, the osgvertexattributes osg sample code is able to generate shaders from fixed function pipeline state sets in the scene graph and applies these shaders to the geometry.

http://trac.openscenegraph.org/projects/osg//browser/OpenSceneGraph/trunk/examples/osgvertexattributes/osgvertexattributes.cpp
Thanks for the pointer, but I was under the impression this done automatically by osg when the core profile is used (setUseVertexAttributeAliasing and setUseModelViewAndProjectionUniforms on the State). Anyways, the example illustrates how to traverse a scene to adapt to modern OpenGL.

Cheers
Sebastian

Christian


Hi Sebastian,

Thanks for the reply.

    ------------------------------------------------------------------------
    *From:* osg-users [osg-users-boun...@lists.openscenegraph.org
    <mailto:osg-users-boun...@lists.openscenegraph.org>] on behalf of
    Sebastian Messerschmidt [sebastian.messerschm...@gmx.de
    <mailto:sebastian.messerschm...@gmx.de>]
    *Sent:* Sunday, March 13, 2016 4:03 AM
    *To:* OpenSceneGraph Users
    *Subject:* Re: [osg-users] Running OSG models on OpenGLES2.0

    Hi Hyun,


    Hi Chris,

    I tried most of examples. Now I'm focusing on glsl_simple.osgt as
    it looks simple, but only the second row of shapes shows. If I
    modify the vertex shader a little, I get to see both first/second
    row.
    Can you tell us which platform you are using?  You usually don't
    have to add precision qualifiers to make shaders work.

I have Xilinx ZynqMP SoC with MALI 400MP, and I'm running Ubuntu on it. I also have Yocto built rootfs. I've integrated the MALI OpenGLES2 library/driver there, and I'm building OSG manually. It fails to compile if I don't add the precision for float & int in shaders. The OSG build configuration is more or less as below (it's for 3.4.0), with some addition to point to EGL/OPENGLES2 libraries and headers:

    ...
    I've received some OSG model (file.osg) from someone, and I was
    able to run it on the desktop (OpenGL). I was told the OSG model
    runs on OpenGLES2.0. For me to run it on OpenGLES2, I added the
    precision qualifiers to build, but the result still doesn't look
    correct. I'm not sure if more / what modification is needed. For
    example, I modified the OSG shader generator, but it didn't help.
    Does OSG layers completely abstract underlying APIs (OpenGL,
    OpenGLES,,,), meaning the OSG models are API independent? or does
    each OSG model have some API specific code? For example, I don't
    see any precision qualifiers in OSG examples, and does that mean
    those models are not for OpenGLES2.0?
    OSG doesn't completely abstract the APIs, but it can be built
    specifically to work with OpenGL ES, by using the compiler flags
    you used. You will however have to put some work into it, since
    you will have to write shaders. Since you are not telling us which
    "shader generator" you are using, it is hard to guess what you are
    trying to achieve.
    There is not something like "models for OpenGLES2.0". You will
    have to write appropriate shaders and might have to run some
    visitors to change fixed function pipeline functions in to
    uniforms/attributes of the model.
    For instance osg::Material is not working outside the
    compatibility -profiles, so might have to run a visitor, that
    parses osg::Material instances and replaces them with uniforms or
    per-vertex attributes which you will have to evaluate in the shader.



    I'm trying to figure out where the issue comes from: OSG model,
    OSG layers, OpenGLES library.

    Chris asked you for an example model that is not working. You
    mentioned the glsl-simple model, which from a glance doesn't have
    ES-compatible code. The easiest thing to do is to start with a
    model(preferably not containing shaders) and a simple ES-Shader.
    Unfortunately the examples here are relatively rare. Might be a
    great opportunity to create some minimalistic core/ES-based shader
    example and to extend the OpenGL-ES pseudo loader.

If there are already OSG models confirmed to work with OpenGLES2, I'd use those to validate my platform. But, none of examples in OpenSceneGraph-Data shows correct results on my platform (nothing displayed except the glsl_simple.osgt)comparing to results from desktop with OpenGL. Once my platform is confirmed to work, I will be able to focus on debugging the model. With lack of OSG / shader experience, I can't easily tell where the issue comes from, and I'm looking for references for validation. Can't you try some other GLES applications(plain OpenGL-ES without OSG) and check their shader code? I believe there is a problem with your system/driver, as there is no need to explicitly issuing the precision in normal cases.

    All models should work in theory if you have some minimal shader
    for it.
    Out of my head a minimal shader should look like the following. It
    will display a red-colored version of your geometry.

    Vertex:
    #version 100
    attribute vec4 osg_Vertex;
    uniform mat4 osg_ModelViewProjectionMatrix;

    void main()
    {
        gl_Position = osg_ModelViewProjectionMatrix * osg_Vertex;
    }

    Fragment:

    #version 100

    void main()
    {
        gl_FragColor = vec4(1,0,0,1);
    }

    Setting this shader to you scene should display everything
    correct. If my code is valid, it should compile without any
    precision qualifiers.

    Cheers
    Sebastian


    Thanks,
    -hyun


        Thanks,
        -hyun


        Cheers
        Sebastian

        ------------------------------------------------------------------------
        *From:* osg-users
        [osg-users-boun...@lists.openscenegraph.org
        <mailto:osg-users-boun...@lists.openscenegraph.org>] on
        behalf of Chris Hanson [xe...@alphapixel.com
        <mailto:xe...@alphapixel.com>]
        *Sent:* Friday, March 11, 2016 5:27 PM
        *To:* OpenSceneGraph Users
        *Subject:* Re: [osg-users] Running OSG models on OpenGLES2.0

        OGL ES requires a shader.​

        Many of the OSG-Data models don't have shaders built into
        them, and will not transform and rasterize as a result.

        Which OSG model did you try that had most surfaces transparent?


        This email and any attachments are intended for the sole use
        of the named recipient(s) and contain(s) confidential
        information that may be proprietary, privileged or
        copyrighted under applicable law. If you are not the
        intended recipient, do not read, copy, or forward this email
        message or any attachments. Delete this email message and
any attachments immediately.


        _______________________________________________
        osg-users mailing list
        osg-users@lists.openscenegraph.org
        <mailto:osg-users@lists.openscenegraph.org>
        
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




    This email and any attachments are intended for the sole use of
    the named recipient(s) and contain(s) confidential information
    that may be proprietary, privileged or copyrighted under
    applicable law. If you are not the intended recipient, do not
    read, copy, or forward this email message or any attachments.
    Delete this email message and any attachments immediately.



    _______________________________________________
    osg-users mailing list
    osg-users@lists.openscenegraph.org
    <mailto:osg-users@lists.openscenegraph.org>
    http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


    _______________________________________________
    osg-users mailing list
    osg-users@lists.openscenegraph.org
    <mailto:osg-users@lists.openscenegraph.org>
    http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org




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

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

Reply via email to