[osg-users] Running OSG models on OpenGLES2.0

Sebastian Messerschmidt sebastian.messerschmidt at gmx.de
Mon Mar 14 06:36:32 PDT 2016


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-bounces at lists.openscenegraph.org
>     <mailto:osg-users-bounces at lists.openscenegraph.org>] on behalf of
>     Sebastian Messerschmidt [sebastian.messerschmidt at gmx.de
>     <mailto:sebastian.messerschmidt at 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-bounces at lists.openscenegraph.org
>>>         <mailto:osg-users-bounces at lists.openscenegraph.org>] on
>>>         behalf of Chris Hanson [xenon at alphapixel.com
>>>         <mailto:xenon at 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 at lists.openscenegraph.org
>>>         <mailto:osg-users at 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 at lists.openscenegraph.org
>>     <mailto:osg-users at lists.openscenegraph.org>
>>     http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
>     _______________________________________________
>     osg-users mailing list
>     osg-users at lists.openscenegraph.org
>     <mailto:osg-users at lists.openscenegraph.org>
>     http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20160314/0092164a/attachment-0003.htm>


More information about the osg-users mailing list