[osg-users] RayTracedTechnique hangs with Intel HD Graphics - Update

Robert Osfield robert.osfield at gmail.com
Fri Sep 1 01:29:29 PDT 2017


Hi Clement,

The numerical issue you have found causing a crash is a curious one.

The gl_Vertex isn't a normalized on any system,
osgVolume::RayTracedTechnique does use a unit cube for it's geometry
though, so the vertex data should all be in the 0.0f to 1.0f range.
Perhaps the intel driver/hardware combination is resulting in some
numerical precision issue so that the values are going slightly outside the
0 to 1.0f range, but even if it does I wouldn't expect the fragment shaders
to suddenly have problems.

Is there are specific line in the shader that you think is cause the crash?

FYI, osgVolume checks for the shader/volume.vert and shader/volume.frag
filenames first then fallsback to the built in shaders that are found in
the src/osgVolume/Shaders/volume_frag.cpp.  The shader/volume.frag can be
found in OpenSceneGraph-Data/shader so if you have this available and it's
on the OSG_FILE_PATH then you should be able to edit the shader files
without recompiling the application.

Robert.

Robert.

On 1 September 2017 at 08:11, <Clement.Chu at csiro.au> wrote:

> Hi,
>
>    Finally I found where causes the problem.  For some reasons, gl_Vertex
> is not normalized.  I looked at osg shader source code
> (src\osgVolume\Shaders).  For example, in file volume_frag.cpp,
>
> vec4 t0 = vertexPos;
> vec4 te = cameraPos;
>
> // by default te did to check the range (0 and 1), but t0 did not.
> // If I added  some codes to check the range, then the problem is
> completed gone.
>
> if (t0.x<0.0) t0.x = 0.0; if (t0.x>1.0) t0.x = 1.0;
> if (t0.y<0.0) t0.y = 0.0; if (t0.y>1.0) t0.y = 1.0;
> f (t0.z<0.0) t0.z = 0.0; if (t0.z>1.0) t0.z = 1.0;
>
>
> I believe the problem is related to GLSL version and latest Intel HD
> Graphics driver is using higher version of GLSL, but gl_Vertex does not
> normalize or the value is just over 1 or less then 0 (eg. 1.00001).  Then
> it causes the crash when running the sampling loop.  I am not an expert on
> GLSL, so I would like to confirm the best solution to handle this problem.
> Thanks.
>
>
> Regards,
> Clement Chu
>
> ________________________________________
> From: osg-users <osg-users-bounces at lists.openscenegraph.org> on behalf of
> Clement.Chu at csiro.au <Clement.Chu at csiro.au>
> Sent: Wednesday, 30 August 2017 17:31
> To: osg-users at lists.openscenegraph.org
> Subject: [ExternalEmail] [osg-users] RayTracedTechnique hangs with Intel
> HD Graphics
>
> Hi,
>
>    My program uses RayTracedTechnique for volume rendering, but it hangs
> with Intel HD graphics 520, 530 and 620. My old laptop works fine which is
> using Intel HD Graphic 3000.  Other machines with Nvidia cards are working
> fine too.  I believe the problem is on shaders in the sampling loop.  My
> program is using osg 3.2.3.  I also tried to upgrade to osg 3.4.1, but the
> same problem occurred with Intel HD Graphic 520, 530 and 620.  Do anyone
> have similar problem and any solution to fix it?  Many thanks.
>
>
> Regards,
> Clement Chu
> _______________________________________________
> osg-users mailing list
> 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/20170901/efba25f9/attachment.htm>


More information about the osg-users mailing list