real-time ray tracing for virtual reality applications
DESCRIPTION
Real-time Ray Tracing for Virtual Reality Applications. Iliyan Georgiev 1 , Dmitri Rubinstein 1 , Hilko Hoffmann 2 , Philipp Slusallek 1,2. 1 Saarland University, Germany 2 DFKI Saarbrücken, Germany. Intuition 2008 Exhibition. Intuition 2008 Exhibition. Why Ray Tracing?. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/1.jpg)
Real-time Ray Tracing for Virtual Reality Applications
Iliyan Georgiev1, Dmitri Rubinstein1,Hilko Hoffmann2, Philipp Slusallek1,2
1 Saarland University, Germany2 DFKI Saarbrücken, Germany
![Page 2: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/2.jpg)
![Page 3: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/3.jpg)
Intuition 2008 Exhibition
![Page 4: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/4.jpg)
Intuition 2008 Exhibition
![Page 5: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/5.jpg)
Why Ray Tracing?
Rasterization becomes… Too complicated Inefficient
Ray tracing delivers… Accurate visual simulation Physically correct results
Ray tracing just works Simple, well understood algorithm No input data tweaking
Ray tracing is useful not only for rendering… Collision detection, object picking, etc.
Ray tracing is becoming faster Ray tracing is becoming mainstream
Support by hardware manufacturers
![Page 6: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/6.jpg)
RTRT Achievements
![Page 7: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/7.jpg)
RTRT AchievementsOpenRT in Industry
![Page 8: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/8.jpg)
RTRT AchievementsOpenRT in Industry
![Page 9: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/9.jpg)
RTRT AchievementsOpenRT for Global Illumination
![Page 10: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/10.jpg)
RTRT AchievementsOpenRT for Games
![Page 11: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/11.jpg)
RTRT AchievementsDRPU – Hardware Prototype
![Page 12: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/12.jpg)
Rasterization Quality
![Page 13: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/13.jpg)
Ray Tracing Quality
![Page 14: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/14.jpg)
Trends
Faster and more capable hardware Increasing parallelism
Multiple cores SIMD
Increasing programmability GPUs Larrabee
Consequences Trend towards software-based graphics Need fast and flexible software architectures!
![Page 15: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/15.jpg)
Flexibility vs. Performance
OpenRT Fixed, non-extensible API
Could not adopt new technology Inefficient for highly dynamic scenes
Existing ray tracing systems Trade-offs between flexibility and performance Hand-coded low-level optimizations Object-oriented design
Ideally – both flexibility and performance
![Page 16: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/16.jpg)
RTfact
Generic building blocks Composable at design/compile time Decouples of algorithms and data structures Not only for rendering
Compatible Uses existing tools Integrates with other software
Portable Intuitive arbitrary-level abstractions High performance
Allows efficient code generation
![Page 17: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/17.jpg)
RTfactGeneral Infrastructure
Ray tracing
BuildingRendering
SIMD Primitives
Scene management
![Page 18: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/18.jpg)
RTfactExample Application
PinholeCamera camera; // initialization omittedOpenGLFrameBuffer fb; // initialization omitted
BasicScene<Triangle> scene; // initialization omittedBVH<Triangle> tree;BVHBuilder builder;BVHIntersector<PlueckerTriangleIntersector> intersector;RayTracingRenderer<PixelCenterSampler, DirectIlluminationIntegrator> renderer;
builder.build(tree, scene.prim.begin(), scene.prim.end());
renderer.render<64>(scene, camera, fb, fb.getClipRegion(), tree, intersector);
![Page 19: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/19.jpg)
RTfactExample Application
PinholeCamera camera; // initialization omittedOpenGLFrameBuffer fb; // initialization omitted
BasicScene<Triangle> scene; // initialization omittedBVH<Triangle> tree;BVHBuilder builder;BVHIntersector<PlueckerTriangleIntersector> intersector;RayTracingRenderer<PixelCenterSampler, DirectIlluminationIntegrator> renderer;
builder.build(tree, scene.prim.begin(), scene.prim.end());
renderer.render<64>(scene, camera, fb, fb.getClipRegion(), tree, intersector);
![Page 20: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/20.jpg)
RTfactExample Application
PinholeCamera camera; // initialization omittedOpenGLFrameBuffer fb; // initialization omitted
BasicScene<Triangle> scene; // initialization omittedBVH<Triangle> tree;BVHBuilder builder;BVHIntersector<PlueckerTriangleIntersector> intersector;RayTracingRenderer<PixelCenterSampler, DirectIlluminationIntegrator> renderer;
builder.build(tree, scene.prim.begin(), scene.prim.end());
renderer.render<64>(scene, camera, fb, fb.getClipRegion(), tree, intersector);
![Page 21: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/21.jpg)
RTfactExample Application
PinholeCamera camera; // initialization omittedOpenGLFrameBuffer fb; // initialization omitted
BasicScene<Triangle> scene; // initialization omittedBVH<Triangle> tree;BVHBuilder builder;BVHIntersector<PlueckerTriangleIntersector> intersector;RayTracingRenderer<PixelCenterSampler, DirectIlluminationIntegrator> renderer;
builder.build(tree, scene.prim.begin(), scene.prim.end());
renderer.render<64>(scene, camera, fb, fb.getClipRegion(), tree, intersector);
![Page 22: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/22.jpg)
RTfactExample Application
PinholeCamera camera; // initialization omittedOpenGLFrameBuffer fb; // initialization omitted
BasicScene<Triangle> scene; // initialization omittedBVH<Triangle> tree;BVHBuilder builder;BVHIntersector<PlueckerTriangleIntersector> intersector;RayTracingRenderer<PixelCenterSampler, DirectIlluminationIntegrator> renderer;
builder.build(tree, scene.prim.begin(), scene.prim.end());
renderer.render<64>(scene, camera, fb, fb.getClipRegion(), tree, intersector);
![Page 23: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/23.jpg)
RTfactExample Application
PinholeCamera camera; // initialization omittedOpenGLFrameBuffer fb; // initialization omitted
BasicScene<Triangle> scene; // initialization omittedBVH<Triangle> tree;BVHBuilder builder;BVHIntersector<PlueckerTriangleIntersector> intersector;RayTracingRenderer<PixelCenterSampler, DirectIlluminationIntegrator> renderer;
builder.build(tree, scene.prim.begin(), scene.prim.end());
renderer.render<64>(scene, camera, fb, fb.getClipRegion(), tree, intersector);
![Page 24: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/24.jpg)
RTfactExample Application
PinholeCamera camera; // initialization omittedOpenGLFrameBuffer fb; // initialization omitted
BasicScene<Triangle> scene; // initialization omittedBVH<Triangle> tree;BVHBuilder builder;BVHIntersector<PlueckerTriangleIntersector> intersector;RayTracingRenderer<PixelCenterSampler, DirectIlluminationIntegrator> renderer;
builder.build(tree, scene.prim.begin(), scene.prim.end());
renderer.render<64>(scene, camera, fb, fb.getClipRegion(), tree, intersector);
![Page 25: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/25.jpg)
RTfactExample Application
PinholeCamera camera; // initialization omittedOpenGLFrameBuffer fb; // initialization omitted
BasicScene<Triangle> scene; // initialization omittedBVH<Triangle> tree;BVHBuilder builder;BVHIntersector<PlueckerTriangleIntersector> intersector;RayTracingRenderer<PixelCenterSampler, DirectIlluminationIntegrator> renderer;
builder.build(tree, scene.prim.begin(), scene.prim.end());
renderer.render<64>(scene, camera, fb, fb.getClipRegion(), tree, intersector);
![Page 26: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/26.jpg)
RTfactExample Application
PinholeCamera camera; // initialization omittedOpenGLFrameBuffer fb; // initialization omitted
BasicScene<Point> scene; // initialization omittedLoDKdTree<Point> tree;LoDKdTreeBuilder builder;LoDKdTreeIntersector<PointIntersector> intersector;RayTracingRenderer<PixelCenterSampler, LoDIntegrator> renderer;
builder.build(tree, scene.prim.begin(), scene.prim.end());
renderer.render<16>(scene, camera, fb, fb.getClipRegion(), tree, intersector);
![Page 27: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/27.jpg)
RTfactResults
Packet kd-tree Sponza Conference Soda HallOpenRT 4.5 4.2 5.1Manta 4.7 4.2 5.4RTfact 6.8 6.4 6.5Frustum BVH Sponza Conference Soda HallDynBVH N/A 9.3 11.1Manta 4.5 4.8 5.6Arauna 13.2 11.3 N/ARTfact 13.1 11.6 11.4
Sponza (76k tri) Conference (280k tri) Soda Hall (2.5M tri)
David Engine
![Page 28: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/28.jpg)
Scene ManagementExisting Libraries E.g. OpenInventor
Deeply integrated with rasterization APIs Complete graph traversal each frame
Not efficient for ray tracing Optimized for rasterization-based rendering Need incremental scene updates
![Page 29: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/29.jpg)
RTSGOverview VRML 2.0 compliant
Full X3D support in progress CAD, animations, arbitrary shading, etc.
Extensible Renderer independent
Ray tracing RTfact, OpenRT
Rasterization OGRE (OpenGL, DirectX)
Incremental updates
![Page 30: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/30.jpg)
OpenGL DirectX
RTfact OpenRTOGRE
RTSGUsage
RTSG
Application
![Page 31: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/31.jpg)
RTSGResults
Venice Beetles TroopersBS Contact 151.6 14.8 11.6Flux Player 24.7 30.4 9.2InstantReality (crashes) 64.2 24.7Octaga Player 64.2 38.2 14.0Xj3D 123.4 26.8 27.2RTSG-OGRE 631.2 113.7 51.6
Venice (1M tri) Beetles (2.7M tri) Troopers (1M tri)
Boeing 777(350M tri)
Performance (FPS)
![Page 32: Real-time Ray Tracing for Virtual Reality Applications](https://reader030.vdocuments.us/reader030/viewer/2022032805/568132e3550346895d999f73/html5/thumbnails/32.jpg)
Wrap Up
Ray tracing will “always” be relevant Hardware gets massively parallel and programmable
Need flexible and fast software architectures RTfact
Generic and highly flexible Fast
RTSG VRML2.0 and X3D compliant Robust
Ray tracing based VR system in progress