Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIGGRAPH 2019 Technical Sessions


Published on

Explore practical examples of Intel® Embree and Intel® OSPRay in production rendering and the best practices of using the kernels in typical rendering pipelines.

Published in: Technology
  • How long does it take for VigRX Plus to start working? 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Ray Tracing with Intel® Embree and Intel® OSPRay: Use Cases and Updates | SIGGRAPH 2019 Technical Sessions

  1. 1. Thanos from Avengers Infinity War Rendered by V-Ray (with Intel® Embree) Courtesy of Digital Domain and Marvel Studios RAY TRACING WITH INTELEMBREEANDINTELOSPRAY USECASESAND UPDATES Jefferson Amstutz • Carsten Benthin • Stefan Werner (Intel) (Intel) (Tangent)
  2. 2. Legal Notices and Disclaimers No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document. Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade. You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel products described herein. You agree to grant Intel a non-exclusive, royalty-free license to any patent claim thereafter drafted which includes subject matter disclosed herein. The products and services described may contain defects or errors known as errata which may cause deviations from published specifications. Current characterized errata are available on request. Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer or learn more at []. Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products.   For more complete information visit   Optimization Notice: Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor- dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. Results have been estimated or simulated using internal Intel analysis or architecture simulation or modeling, and provided to you for informational purposes. Any differences in your system hardware, software or configuration may affect your actual performance. Intel, Core and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries. *Other names and brands may be claimed as the property of others © Intel Corporation. !2
  3. 3. !3
  4. 4. Embree OSPRay Open Image Denoise OpenVKL OpenSWR *Data courtesy Bentley, Disney
  5. 5. Embree Industry Leading CPU Performance 1.5-6x speedups reported by users Optimized Ray Tracing Kernels Acceleration Structures Ray Traversals Ray Intersections Embree: A Kernel Framework for Efficient CPU Ray Tracing Wald et al. (SIGGRAPH ’14) Open Source Apache* 2.0 License Many Use Cases Real-time applications Photorealism Simulation
  6. 6. OSPRay Open Scalable Portable Ray Tracing Engine Utilizes Embree Optimized for laptops, workstations, and multi-node clusters Open Source under Apache* 2.0 Distributed Rendering Multiple nodes for greater speed Larger cumulative memory In Situ applications Portable Plugin Interface Modular User Defined Geometry Multiple Use Cases Scientific Visualization Professional Rendering Simulations OSPRay - A CPU Ray Tracing Framework for Scientific Visualization Wald et al. (TVCG, IEEE SciVis ’16)
  7. 7. Open Image Denoise AI-based Denoising CPU-based SIMD optimized up to AVX-512 Can use larger system memory Interactive performance Open Source under Apache* 2.0 Open Source Open Source under Apache* 2.0 Binary packages for x86 Linux/Mac/Windows Fast Integration
  8. 8. OpenVKL Open Source Open Source under Apache* 2.0 Binary packages for x86 Linux/Mac/Windows Open Volume Kernel Library Integration and Sampling Kernels Not a renderer Reduces barrier to entry for adding efficient volume rendering
  9. 9. 9 OpenSWR Software Rasterizer MESA backend Orders of magnitude speeds for CPU rasterization Can be run with existing OpenGL programs Designed for Scientific Visualization on compute clusters Orders of magnitude speeds for CPU rasterization
  10. 10. Embree Overview
 Embree API
Selected Advanced Features New Features in 3.x
 Embree Performance + Tangent Use Case !10 Embree
  11. 11. !11 CPU/Embree OnlyCorona Renderer Vray Embree Hair PrimitivesDWA HowTo Train YourDragon 2 ADSK 360 Cloud –>50M Renders ParaView with OSPRAy ANL VL3 Dark Matter - OpenSWR SURVICE StingRay Rendered with FluidRay RT Cinema4D Wide Adoption - 60+ Apps
  12. 12. Usage of Ray Tracing Today Movie industry intensively uses ray tracing today
 (better image quality, faster feedback) High quality rendering for commercials, prints, etc. Provides higher fidelity for virtual design 
 (automotive industry, architectural design, etc.) Various kind of simulations 
 (lighting, sound, particles, collision detection, etc.) Prebaked lighting in games, realtime tech demos for ray traced lighting effecs !12*data courtesy Blender
  13. 13. Fast Ray Tracing Challenges Need to multi-thread
 Easy for rendering but difficult for hierarchy construction Need to vectorize
 Efficient use of SIMD units, different ISAs (SSE, AVX, AVX2, AVX-512) Need to support different CPUs
 Different ISAs/CPUs favor different data structures, data layouts, and algorithms Need deep domain knowledge
 Many different data structures and algorithms to choose from Different usage scenarios
 Large model visualization favors memory conservative algorithms !13
  14. 14. Embree Ray Tracing Kernels Targets professional rendering applications Provides highly optimized and scalable ray tracing kernels • 1.5–6× speedup reported by users Provides rich functionality and flexibility Support for latest CPUs and ISAs (e.g. AVX-512) Windows (64 and 32 bit), Mac OS X 10.X, Linux API for easy integration into applications Open Source under Apache 2.0 license: !14*car model courtesy Mazda
  15. 15. Embree Timeline !15
  16. 16. !16 • Triangle meshes • Quad meshes • Grid meshes • Subdivision meshes • Flat curves • Round curves • Normal oriented curves • Instances • User-defined ➔ extensible Geometry Types • Point-based (NEW) • Catmull-Rom basis curves (NEW)
  17. 17. Embree Features Find closest hit (rtcIntersect), find any hit (rtcOccluded) Single rays, ray packets (4, 8, 16), ray streams (N) High-quality and high-performance BVH builders Multi segment motion blur Intel® SPMD Program Compiler (ISPC) support Intel® Threading Building Blocks (TBB) support !17
  18. 18. Embree System Overview !18 Embree API (C99 and ISPC) Ray Tracing Kernel Selection Acceleration Structures bvh4.triangle4 bvh8.triangle4 bvh4.quad4v … Builders SAH Builder Mblur builder Spatial Split Builder Morton Builder BVH Refitter Traversal Single Ray Packet/Hybrid Ray Stream Common Vector and SIMD Library 
 (Vec3f, Vec3fa, vfloat4, vfloat8, vfloat16, …, SSE2, SSE4.1, AVX, AVX2, AVX-512) Intersection Möller-Trumbore Plücker Flat Curve Round Curve Oriented Curve Grid Subdiv Engine B-Spline Patch Gregory Patch Tessellation Cache Displ. Mapping
  19. 19. Outlook Denoising Quaternian interpolation for transformation motion blur New primitive types (Disk, Sphere, Bilinear Patch) Improve ray/geometry masking and instancing performance Point projection onto geometry (robust manifold next event estimation) Partial double support !19
  20. 20. Embree Overview
 Embree API
 Selected Advanced Features New Features in 3.x
 Embree Performance + Tangent Use Case !20 Embree
  21. 21. Embree API Overview Version 3 of the Embree API C99 and ISPC version Object oriented Reference counted Device concept Compact and easy to use Hides implementation details (e.g. ISA and acceleration structure selection) For details visit !21
  22. 22. Advantages of new API Cleanup of previous API (e.g. consistent use of intersection context) Improved flexibility (e.g. change BVH builder, geometries as stand alone objects) Easier to use (e.g. attach geometry by ID, intersection filter inside context) Fixes some API bugs (e.g. incompatible Ray1 and Packet<1> layout) Conversion script makes adoption easy !22
  23. 23. Example: Scene creation Scene contains a vector of geometries Scene geometry changes have to get commited (rtcCommit), which triggers BVH build !23 // include Embree headers #include <embree3/rtcore.h> int main() { // create Embree device at application startup RTCDevice device = rtcNewDevice (); // create scene RTCScene scene = rtcNewScene (device); // attach geometries ... later slide ... // commit changes rtcCommit(scene); // trace rays ... later slide ... // release objects rtcReleaseScene(scene); rtcReleaseDevice(device); }
  24. 24. Example: Triangle Mesh creation Triangle mesh contains vertex and index buffers Shared buffers of flexible layout (offset + stride) supported !24 // application vertex and index layout struct Vertex { float x, y, z, s, t; }; struct Triangle { int materialID, v0, v1, v2; }; // create triangle mesh RTCGeometry geom = rtcNewGeometry (device, RTC_GEOMETRY_TYPE_TRIANGLE); // share data buffers rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX, 0, RTC_FORMAT_FLOAT3, vertexPtr, 0, sizeof(Vertex)); rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_INDEX, 0, RTC_FORMAT_UINT3, indexPtr, 4, sizeof(Triangle)); // commit geometry rtcCommitGeometry(geom); // attach geometry to scene rtcAttachGeometryByID(scene,geom,user_provided_geomID); // commit changes rtcCommit(scene);
  25. 25. Example: Tracing Single Rays Context passed to potential callbacks Use RTCRayHit for normal rays (and RTCRay for occlusion rays) Hit data and ray.tfar set in case of hit. !25 // create intersection context RTCIntersectContext context; rtcInitIntersectContext(&context); // create ray RTCRayHit query; query.ray.org_x = 0.0f; query.ray.org_y = 0.0f; query.ray.org_z = 0.0f; query.ray.dir_x = 1.0f; query.ray.dir_y = 0.0f; query.ray.dir_z = 0.0f; query.ray.tnear = eps; query.ray.tfar = inf; query.ray.time = 0.0f; query.hit.geomID = RTC_INVALID_GEOMETRY_ID; query.hit.primID = RTC_INVALID_GEOMETRY_ID; // trace ray rtcIntersect1(scene,&context,query); // hit data filled on hit if (query.hit.geomID == RTC_INVALID_GEOMETRY_ID) return; // hit data filled on hit float u = query.hit.u; float v = query.hit.v; float t = query.ray.tfar;
  26. 26. Intel® SPMD Program Compiler (ISPC) C99-based language plus vector extensions Simplifies writing vectorized renderer Scalar looking code that gets vectorized automatically Guaranteed vectorization Compilation to different vector ISAs (SSE, AVX, AVX2, AVX-512) Available as Open Source from !26
  27. 27. Example: Rendering using ISPC !27 // loop over all screen pixels foreach (y=0 ... screenHeight-1, x=0 ... screenWidth-1) { // create and trace primary ray RTCRayHit primary = make_RayHit(p, normalize(x*vx + y*vy + vz), eps, inf); rtcIntersectV(scene, &context, ray); // environment shading if (primary.hit.geomID == RTC_INVALID_GEOMETRY_ID) { pixels[y*screenWidth+x] = make_Vec3f(0.0f); continue; } // calculate hard shadows RTCRay shadow = make_Ray(primary.ray.hitPoint(), neg(lightDir), eps, inf); rtcOccludedV(scene, &context, shadow); if (shadow.tfar < 0.0f) pixels[y*width+x] = colors[ray.primID]*0.5f; else pixels[y*width+x] = colors[ray.primID]*(0.5f + clamp(-dot(lightDir,normalize(primary.hit.Ng)),0.0f,1.0f)); }
  28. 28. Embree Overview
 Embree API
 Selected Advanced Features
 New Features in 3.x Embree Performance + Tangent Use Case !28 Embree
  29. 29. Quad Meshes Quad rendered as pairs of triangles 
 (v0,v1,v3 and v2,v3,v1) Mixed Triangle/Quad mesh supported as triangles encoded as quads (v0,v1,v3,v3) Most 3D modeling packages produce quad meshes Lower memory consumption Faster BVH building Ray tracing performance slightly slower than for triangles !29 v0 v1 v2 v3
  30. 30. Grid Meshes Primitives are grids of vertices rendered using regular triangulation Good choice for displaced surfaces with higher tessellation level (use quad meshes for low tessellation levels) Extremely low memory consumption (4 bytes per triangle) Best use grid mesh instead of subdivision mesh with displacement function !30
  31. 31. Catmull Clark Subdivision Surfaces Converts coarse mesh into smooth surface by subdivision (C2 continous almost everywhere) Support for arbitrary topology (generalization of B-spline surface, no trimming required as with NURBS) Established as standard in movie production Embree implementation compatible with 
 OpenSubdiv 3.0 (creases, boundary modes, etc.) Evaluation of surface supported Walking mesh topology supported !31
  32. 32. Curve Geometry Curve Basis Linear (for very distant curves) Cubic Bézier (widely used representation) Cubic B-spline (most compact) Cubic Hermite (compact and interpolating) Curve types Flat curves (for distant geometry) Round curves for close-ups (swept circle) Normal oriented curves (for grass) !32
  33. 33. Curve Geometry Supports varying radius along the curve High performance through use of oriented bounding boxes [Woop et al. 2014] Low memory consumption through direct ray/curve intersection !33
  34. 34. User Defined Geometries Enables implementing custom primitives and features (not provided by Embree) Sphere, disk, multi level instancing, rotation motion blur, etc. User provides Bounding function Intersect and occluded functions !34
  35. 35. Intersection Filter Functions Per geometry callback that is called during traversal for each primitive intersection Callback can accept or reject hit Can be used for: Trimming curves (e.g. modeling tree leaves) Transparent shadows (reject and accumulate) Find all hits (reject and collect) Advanced self intersection avoidance !35
  36. 36. Multi Segment Motion Blur Important to render fast curved motion (e.g. rotating wheel, fight scenes, spinning dancer, etc.) Sequence of time steps to be linearly interpolated provided to renderer. Typically equidistant time steps and often different number of time steps per geometry. 4D-BVH which stores linear spatial and temporal bounds BVH can spatially separate geometries BVH can reduce time ranges where required !36
  37. 37. Embree Overview Embree API Select Advanced Features
 New Features in 3.x Embree Performance + Tangent Use Case !37 Embree
  38. 38. Point-BASED PRIMITIVES Support for spheres, ray-oriented and normal oriented disks !38
  39. 39. NEW CURVES TYPES Support for Catmull-Rom basis !39
  41. 41. HIERACHICAL INSTANCING Nesting instances into instances Shading requires copy of instance to world transformation stack During traversal current instance ID stack stored in ray context Final instance ID stack stored in instID[] array in hit structure Max instance levels compile time constant (RTC_MAX_INSTANCE_LEVEL_COUNT) Default is 1, need to recompile to enable hierarchical instancing !41
  42. 42. Point QUERIES !42 Nearest Neighbor Closest Point
  43. 43. Point QUERIES Support for BVH traversal given point and radius Invokes user defined callback for each primitive within search radius Provides geomID, primID to callback Supports shrinking radius Supports instancing !43
  44. 44. GENERAL IMPROVEMENTS Motion Blur: time range per object Geometries can appear disappear during camera shutter Improved performance due to selecting CPU frequency level Get higher CPU frequency if app only uses a specific SIMD width Reduced memory consumption Small scenes take 4x less memory Many usability fixes !44
  45. 45. SUMMARY OUTLOOK New features primarily ISV-request driven Reduce memory consumption Performance improvements for complex scenes New natively supported primitive types GPU support coming !45
  46. 46. !46
  47. 47. Embree Overview Embree API Select Advanced Features
 New Features in 3.x Embree Performance + Tangent Use Case !47 Embree
  48. 48. TANGENT !48
  49. 49. Tangent • TODO - Tangent will supply slides on Blender + Embree !49
  50. 50. 
 OSPRay Overview OSPRay API
 Use Cases New Features Extending OSPRay !50 OSPRay
  51. 51. OSPRay Overview Real-time preview/scientific rendering High-fidelity interactive path traced rendering Volume visualization Surface visualization Distributed rendering Simulation !51
  52. 52. !52 VBrayns Power CTNASA VL3Brayns Polio Virus Courtesy John Stone,Beckman Institute, Univ. Illinois at Urbana- Champaignwnlee, Data: Salman Habib, Katrin Heitmann, and the HACC team. Visualization: Joe Insley, Slivio Rizzi, ANL Data and Visualizationcourtesy Cyrille Favreau, EPFLCourtesy Sean Ahern, CEI and General Motors Courtesy Hank Childs,U Oregon, Jian Huang and AlokHota, UTenn Polio Courtesy John Stone,Be Institute, Univ. Illinois at Champaign Data courtesy Kitware. Visualization, Carson Brownlee, Intel Courtesy Sean Ahern, CEI and General Motors Courtesy Hank Childs,U Oregon, Jian Huang and AlokHota, UTenn *OTHERNAMESANDBRANDSMAYBECLAIMEDASTHEPROPERTYOFOTHERS. Broad Industry + Academic Support USD Plugin
  53. 53. 
 OSPRay Overview OSPRay API
 Use Cases New Features Extending OSPRay !53 OSPRay
  54. 54. OSPRay 1.x API !54
  55. 55. OSPRay 1.x API !55
  56. 56. OSPRay 1.x API !56
  57. 57. OSPRay 2.x API !57 Not fully finalized Incompatible with 1.x
  58. 58. 
 OSPRay Overview OSPRay API
 Use Cases New Features Extending OSPRay !58 OSPRay
  59. 59. HdOSPRay USD Integration Fast AO previews and full path tracer Interactive to real-time performance Denoiser Hydra backend -> will run in other applications implementing Hydra !59
  60. 60. !60*Moana Island Scene courtesy Disney
  61. 61. PARAVIEW-BRAINTUMOR !61 Brain Tumor monitoring and treatment 3D interactive @ 10-20fps Intel® Xeon Phi™ processor cluster Ambient occlusion plus shadows Data courtesy Kitware. Visualization Dave Demarle, Carson Brownlee
  62. 62. !62 dataset: parachute; simulation: Dr M. Barad, NASA Ames; visualization: Tim Sandstrom, NASA Ames Rendered on Pleiades Vis wall cluster NASAAMES
  63. 63. !63 GRCHOMBO-GRAVITATIONALWAVESStephen Hawking Centre for Theoretical Cosmology – ParaView / VTK with OSPRay Gravational Waves : GRChombo AMR Data, Stephen Hawking CTC, UCambridge; Queens College, London; Visualization: Carson Brownlee, Intel 600 GB Memory Footprint 36 TB Simulation Data Set 4 Intel® Xeon Phi™ 7230 Processors 1 Intel® Xeon® E5 v4 Dual Socket node Intel® Omni-Path Fabric ~10 fps
  64. 64. !64 ‘WALLS’INSITUStephen Hawking Centre for Theoretical Cosmology 10 TB Memory Footprint SGI UV-300 16TB SMP >1000 Shared memory Intel® Xeon® E5 v3 processors ~15 fps Domain Wall formation in the universe from Big Bang to today (13.8 billion years) Simulation code by Shellard et al, Visualizaiton by Johannes Gunther (Intel)
  65. 65. !65 DKRZ-WEATHERMODEL Niklas Rober, DKRZ. Carson Brownlee, Intel. 200 timesteps 2TB data total Rendered in ParaView Intel® Omni-Path Fabric ~15 fps
  66. 66. !66 CLOUD-BASEDRENDERING Raji et al. Scalable Web-Embedded Volume Rendering. LDAV 2017, Best Paper
  67. 67. 
 OSPRay Overview OSPRay API
 Use Cases New Features !67 OSPRay
  68. 68. OSPRay 1.6+ Features Modern CMake targets OSPRay studio Current viewer and scenegraph deprecated Tutorial apps Subdivision Geometry Ptex support OpenImageDenoise support in viewer/studio !68
  69. 69. OSP_FB_NORMAL + OSP_FB_ALBEDO Progress function, can cancel rendering Lights independent of renderer Principled and CarPaint materials Improved unstructured volume support Quad geometry type !69 OSPRay 1.6+ Features
  70. 70. OSPRAY2.0 Asynchronous rendering built-in Revamped instancing and model specifications Volume instancing Material instancing OpenVKL support API is incompatible with 1.x !70
  71. 71. OSPRAYDATA-DISTRIBUTEDINSITU • The MPI Distributed device allows each rank to make independent OSPRay MPI calls, allowing to make different Volume and Geometry as needed • The OSPModel then takes a list of bounding boxes specifying a set of “regions” owned by each node, must be disjoint for sort-last compositing • See MPI module apps for more examples !71 ospLoadModule(“mpi”); // Use the new MPI Distributed device for distributed app OSPDevice device = ospNewDevice(“mpi_distributed”); ospCommit(device); ospSetCurrentDevice(device); OSPVolume vol = ospNewVolume(“block_bricked_volume”); // Set other params as usual… ospSetRegion(vol, localData, start, size); OSPModel model = ospNewModel(); // Slices of volume along the x-axis const float region = { rank * 128, 0, 0, (rank + 1 ) * 128, 128, 128 }; // Specify the region for this rank’s local data OSPData regionData = ospNewData(2, OSP_FLOAT3, region, 0); ospSetData(model, “regions”, regionData); // Exchange bounds with other ranks ospCommit(model);
  72. 72. AMR/UNSTRUCTUREDTYPES • Adaptive Mesh Refinement (AMR) data • Berger-Colella format • Unstructured Meshes • Tetrahedra + Hexahedra !72 *To Appear: Wald et al. CPU Volume Rendering of Adaptive Mesh Refinement Data, Siggraph Asia 2017 *Data courtesy NASA Ames
  73. 73. PARAVIEW Released with ParaView binaries Standalone volume rendering - composites with OpenGL OSPRay rendering mode - renders everything with OSPRay Similar user experience to traditional ParaView rendering pipeline or optionally extend with additional rendering effects Catalyst support for In Situ Path Tracer AMR + Unstructured Data !73
  74. 74. OSPRAYSTUDIO Replacing OSPRay viewer Broad range of data loaders Includes OSPRay scenegraph Designed for data visualization, exploration of OSPRay functionality !74
  75. 75. Tiled Displays *Data courtesy Eastern Graphics
  76. 76. 
 OSPRay Overview OSPRay API
 Use Cases New Features Extending OSPRay !76 OSPRay
  77. 77. EXTENDINGOSPRAY !77 Blue Brain Custom User Defined Geometry StingRay Radio Frequency Simulation * C. Gribble and J. Amstutz. Effective Parallelization Strategies for Scalable, High Performance Radio Frequency Ray Tracing, IEEE High Performance Extreme Computing, September 2015. *Cyrille Favreau * Eilemann et al. From Big Data to Big Displays High-Performance Visualization at Blue Brain. ISC 2017 Visualization at Scale workshop
  78. 78. !78 PKD Module Multi-Hit Module PLUGINMODULES Wald et al. CPU ray tracing large particle data with balanced P-k-d trees. IEEE SciVis 2015. Gribble et al. Implementing Node Culling Multi-Hit BVH Traversal in Embree. JCGT 2016.
  79. 79. EXTENDINGOSPRAY:THE“OSPRAYSDK” Extending OSPRay without the OSPRay source Recommended for writing extensions in production applications ie ospNewGeometry(“my_new_geometry”) Many OSPRay infrastructure components exposed in CMake find_package() Detecting OSPRay features enabled in the library, ISA support, etc. Don’t depend on our sample app code! Those will probably never make it into our “public API” !79
  80. 80. COMMUNITYINTERACTION We want our collaborators and users involved! Modules and SDK make OSPRay relatively straightforward to extend We have limited ability to implement everyone’s feature requests We are not experts in everyone’s domain…we do rendering! We welcome contributions back into OSPRay We can get more done together If you use OSPRay (or have even just tried it), let us know! It helps us understand what our users are interested in and how to best serve those interests !80
  81. 81. OPENIMAGEDENOISE !81 Open Image Denoise
  82. 82. • TODO: describe how awesome Unity is !82
  83. 83. OPENVKL !83 OpenVKL
  84. 84. !84 Open source Volume Kernel Library
  85. 85. OpenVKL: Open source volume kernel library Coming soon! Alpha release available in August Optimized volume traversal and sampling kernels Support for multiple volume types: Structured Unstructured Adaptive mesh refinement (AMR) … and more coming Runs on any modern Intel® Architecture CPU (SSE4.1 AVX-512) Windows (64-bit), macOS, Linux Free and open source under Apache 2.0 license !85
  86. 86. OpenVKL API Overview C99 API, similar to the Embree and OSPRay APIs Reference counted Device concept API components: Samples masks: indicate volume values of interest Ray iterators: iteratively traverse volume ray intervals / surface hits Sampling: sample values from any volume type Trivially construct volume renderers using these APIs !86
  87. 87. Volume integration example !87
  88. 88. Isosurface rendering example !88
  89. 89. Combined volume + isosurface rendering Straightforward extension of previous code combining both forms of iteration !89
  90. 90. THANKYOU !90
  91. 91. !91