RenderKit / ospray

An Open, Scalable, Portable, Ray Tracing Based Rendering Engine for High-Fidelity Visualization
http://ospray.org
Apache License 2.0
982 stars 178 forks source link

Flt pt exceptions #502

Closed sankhesh closed 2 years ago

sankhesh commented 2 years ago

Fixes the following floating point exceptions when used with VTK.

PerspectiveCamera

21      0x7f1f731e0368 vtkXOpenGLRenderWindow::Render() + 158
20      0x7f1f730f6727 vtkOpenGLRenderWindow::Render() + 129
19      0x7f1f70de3619 vtkRenderWindow::Render() + 979
18      0x7f1f70de382e vtkRenderWindow::DoStereoRender() + 258
17      0x7f1f70e1b1a0 vtkRendererCollection::Render() + 232
16      0x7f1f70e0217d vtkRenderer::Render() + 3449
15      0x7f1f730f892b vtkOpenGLRenderer::DeviceRender() + 1611
14      0x7f1f73c128cb vtkOSPRayPass::Render(vtkRenderState const*) + 713
13      0x7f1f72fba025 vtkCameraPass::Render(vtkRenderState const*) + 2019
12      0x7f1f73199fe5 vtkSequencePass::Render(vtkRenderState const*) + 161
11      0x7f1f73c14851 /home/sankhesh/Projects/vtk/bld/lib/libvtkRenderingRayTracing-9.0.so.1(+0x67851) [0x7f1f73c14851]
10      0x7f1f73c12d25 vtkOSPRayPass::RenderInternal(vtkRenderState const*) + 1033
9       0x7f1f72c79d94 vtkViewNode::TraverseAllPasses() + 102
8       0x7f1f73c26c89 vtkOSPRayRendererNode::Traverse(int) + 383
7       0x7f1f72c79dda vtkViewNode::Traverse(int) + 66
6       0x7f1f72c7a1a2 vtkViewNode::Apply(int, bool) + 162
5       0x7f1f73bd8e54 vtkOSPRayCameraNode::Render(bool) + 2382
4       0x7f1f73c4018e /home/sankhesh/Projects/vtk/bld/lib/libvtkRenderingRayTracing-9.0.so.1(+0x9318e) [0x7f1f73c4018e]
3       0x7f1f72c18a64 ospCommit + 615
2       0x7f1f5ae52765 ospray::api::ISPCDevice::commit(osp::ManagedObject*) + 47
1       0x7f1f5aeb4f14 ospray::PerspectiveCamera::commit() + 710
0       0x7f1f73cb2da0 /usr/lib/libc.so.6(+0x3cda0) [0x7f1f73cb2da0]
(   0.218s) [main thread     ]                       :0     FATL| Signal: SIGFPE

DirectionalLight


22      0x7ff36ca3f368 vtkXOpenGLRenderWindow::Render() + 158
21      0x7ff36c955727 vtkOpenGLRenderWindow::Render() + 129
20      0x7ff36a642619 vtkRenderWindow::Render() + 979
19      0x7ff36a64282e vtkRenderWindow::DoStereoRender() + 258
18      0x7ff36a67a1a0 vtkRendererCollection::Render() + 232
17      0x7ff36a66117d vtkRenderer::Render() + 3449
16      0x7ff36c95792b vtkOpenGLRenderer::DeviceRender() + 1611
15      0x7ff36d4718cb vtkOSPRayPass::Render(vtkRenderState const*) + 713
14      0x7ff36c819025 vtkCameraPass::Render(vtkRenderState const*) + 2019
13      0x7ff36c9f8fe5 vtkSequencePass::Render(vtkRenderState const*) + 161
12      0x7ff36d473851 /home/sankhesh/Projects/vtk/bld/lib/libvtkRenderingRayTracing-9.0.so.1(+0x67851) [0x7ff36d473851]
11      0x7ff36d471d25 vtkOSPRayPass::RenderInternal(vtkRenderState const*) + 1033
10      0x7ff36c4d8d94 vtkViewNode::TraverseAllPasses() + 102
9       0x7ff36d485d9d vtkOSPRayRendererNode::Traverse(int) + 659
8       0x7ff36c4d8dda vtkViewNode::Traverse(int) + 66
7       0x7ff36c4d91a2 vtkViewNode::Apply(int, bool) + 162
6       0x7ff36d4406c4 vtkOSPRayLightNode::Render(bool) + 3524
5       0x7ff36d49f18e /home/sankhesh/Projects/vtk/bld/lib/libvtkRenderingRayTracing-9.0.so.1(+0x9318e) [0x7ff36d49f18e]
4       0x7ff36c477a64 ospCommit + 615
3       0x7ff360eed765 ospray::api::ISPCDevice::commit(osp::ManagedObject*) + 47
2       0x7ff360f67554 ospray::DirectionalLight::commit() + 194
1       0x7ff360f41d1e rkcommon::math::vec_t<float, 3, false> rkcommon::math::normalize<float, 3, false>(rkcommon::math::vec_t<float, 3, false> const&) + 283
0       0x7ff36d511da0 /usr/lib/libc.so.6(+0x3cda0) [0x7ff36d511da0]
(   0.219s) [main thread     ]                       :0     FATL| Signal: SIGFPE
johguenther commented 2 years ago

Thanks! Are those the only float exceptions?

We have some safe functions for normalize and divide, I'll reformulate using those.

sankhesh commented 2 years ago

There are some more that I ran into after these changes. Documented in #503.

johguenther commented 2 years ago

let's continue discussion in #503.