This document summarizes a class on acceleration structures for ray tracing. It discusses building bounding volume hierarchies and using them to accelerate ray intersection tests. Uniform grids, kd-trees, and binary space partitioning trees are covered as approaches for spatial subdivision. The role of acceleration structures in speeding up global illumination calculations is also discussed.
Estimating Human Pose from Occluded Images (ACCV 2009)Jia-Bin Huang
We address the problem of recovering 3D human pose from single 2D images, in which the pose estimation problem is formulated as a direct nonlinear regression from image observation to 3D joint positions. One key issue that has not been addressed in the literature is how to estimate 3D pose when humans in the scenes are partially or heavily occluded. When occlusions occur, features extracted from image observations (e.g., silhouettes-based shape features, histogram of oriented gradient, etc.) are seriously corrupted, and consequently the regressor (trained on un-occluded images) is unable to estimate pose states correctly. In this paper, we present a method that is capable of handling occlusions using sparse signal representations, in which each test sample is represented as a compact linear combination of training samples. The sparsest solution can then be efficiently obtained by solving a convex optimization problem with certain norms (such as l1-norm). The corrupted test image can be recovered with a sparse linear combination of un-occluded training images which can then be used for estimating human pose correctly (as if no occlusions exist). We also show that the proposed approach implicitly performs relevant feature selection with un-occluded test images. Experimental results on synthetic and real data sets bear out our theory that with sparse representation 3D human pose can be robustly estimated when humans are partially or heavily occluded in the scenes.
Siggraph2016 - The Devil is in the Details: idTech 666Tiago Sousa
A behind-the-scenes look into the latest renderer technology powering the critically acclaimed DOOM. The lecture will cover how technology was designed for balancing a good visual quality and performance ratio. Numerous topics will be covered, among them details about the lighting solution, techniques for decoupling costs frequency and GCN specific approaches.
Out-of-Core Construction of Sparse Voxel OctreesJeroen Baert
Voxel-based rendering has recently received significant attention due to its potential in the context of efficiently rendering massively large and highly detailed scenes. Unfortunately, few or no scenes are available in the form of sparse voxel octrees. In this paper, we present an out-of-core algorithm for constructing a sparse voxel octree from a triangle mesh. Our algorithm allows the input triangle mesh, the output sparse voxel octree, and, most importantly, the intermediate high-resolution 3D voxel grid, to be larger than available memory. We demonstrate that our out-of-core algorithm can construct sparse voxel octrees from triangle meshes using only a fraction of the memory required by an in-core algorithm in roughly the same time, and that our out-of-core algorithm can also handle extremely large triangle meshes.
Estimating Human Pose from Occluded Images (ACCV 2009)Jia-Bin Huang
We address the problem of recovering 3D human pose from single 2D images, in which the pose estimation problem is formulated as a direct nonlinear regression from image observation to 3D joint positions. One key issue that has not been addressed in the literature is how to estimate 3D pose when humans in the scenes are partially or heavily occluded. When occlusions occur, features extracted from image observations (e.g., silhouettes-based shape features, histogram of oriented gradient, etc.) are seriously corrupted, and consequently the regressor (trained on un-occluded images) is unable to estimate pose states correctly. In this paper, we present a method that is capable of handling occlusions using sparse signal representations, in which each test sample is represented as a compact linear combination of training samples. The sparsest solution can then be efficiently obtained by solving a convex optimization problem with certain norms (such as l1-norm). The corrupted test image can be recovered with a sparse linear combination of un-occluded training images which can then be used for estimating human pose correctly (as if no occlusions exist). We also show that the proposed approach implicitly performs relevant feature selection with un-occluded test images. Experimental results on synthetic and real data sets bear out our theory that with sparse representation 3D human pose can be robustly estimated when humans are partially or heavily occluded in the scenes.
Siggraph2016 - The Devil is in the Details: idTech 666Tiago Sousa
A behind-the-scenes look into the latest renderer technology powering the critically acclaimed DOOM. The lecture will cover how technology was designed for balancing a good visual quality and performance ratio. Numerous topics will be covered, among them details about the lighting solution, techniques for decoupling costs frequency and GCN specific approaches.
Out-of-Core Construction of Sparse Voxel OctreesJeroen Baert
Voxel-based rendering has recently received significant attention due to its potential in the context of efficiently rendering massively large and highly detailed scenes. Unfortunately, few or no scenes are available in the form of sparse voxel octrees. In this paper, we present an out-of-core algorithm for constructing a sparse voxel octree from a triangle mesh. Our algorithm allows the input triangle mesh, the output sparse voxel octree, and, most importantly, the intermediate high-resolution 3D voxel grid, to be larger than available memory. We demonstrate that our out-of-core algorithm can construct sparse voxel octrees from triangle meshes using only a fraction of the memory required by an in-core algorithm in roughly the same time, and that our out-of-core algorithm can also handle extremely large triangle meshes.
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingElectronic Arts / DICE
In this presentation part of the "Introduction to DirectX Raytracing" course, Colin Barré-Brisebois of SEED discusses some of the challenges the team had to go through when going from raster to real-time raytracing for Project PICA PICA.
IVR - Chapter 2 - Basics of filtering I: Spatial filters (25Mb) Charles Deledalle
Moving averages. Finite differences and edge detectors. Gradient, Sobel and Laplacian. Linear translations invariant filters, cross-correlation and convolution. Adaptive and non-linear filters. Median filters. Morphological filters. Local versus global filters. Sigma filter. Bilateral filter. Patches and non-local means. Applications to image denoising.
Presentación de la Universidad de Granada sobre cambios de color en escenarios naturales debidos a la interacción entre luz y atmósfera, realizada durante las jornadas HOIP 2010 organizadas por la Unidad de Sistemas de Información e Interacción TECNALIA.
Más información en http://www.tecnalia.com/es/ict-european-software-institute/index.htm
D11: a high-performance, protocol-optional, transport-optional, window system...Mark Kilgard
Consider the dual pressures toward a more tightly integrated workstation window system: 1) the need to efficiently handle high bandwidth services such as video, audio, and three-dimensional graphics; and 2) the desire to achieve the under-realized potential for local window system performance in X11.
This paper proposes a new window system architecture called D11 that seeks higher performance while preserving compatibility with the industry-standard X11 window system. D11 reinvents the X11 client/server architecture using a new operating system facility similar in concept to the Unix kernel's traditional implementation but designed for user-level execution. This new architecture allows local D11 programs to execute within the D11 window system kernel without compromising the window sytem's integrity. This scheme minimizes context switching, eliminates protocol packing and unpacking, and greatly reduces data copying. D11 programs fall back to the X11 protocol when running remote or connecting to an X11 server. A special D11 program acts as an X11 protocol translator to allow X11 programs to utilize a D11 window system.
[The described system was never implemented.]
NVIDIA OpenGL and Vulkan Support for 2017Mark Kilgard
Learn how NVIDIA continues improving both Vulkan and OpenGL for cross-platform graphics and compute development. This high-level talk is intended for anyone wanting to understand the state of Vulkan and OpenGL in 2017 on NVIDIA GPUs. For OpenGL, the latest standard update maintains the compatibility and feature-richness you expect. For Vulkan, NVIDIA has enabled the latest NVIDIA GPU hardware features and now provides explicit support for multiple GPUs. And for either API, NVIDIA's SDKs and Nsight tools help you develop and debug your application faster.
NVIDIA booth theater presentation at SIGGRAPH in Los Angeles, August 1, 2017.
http://www.nvidia.com/object/siggraph2017-schedule.html?id=sig1732
Get your SIGGRAPH driver release with OpenGL 4.6 and the latest Vulkan functionality from
https://developer.nvidia.com/opengl-driver
EXT_window_rectangles extends OpenGL with a new per-fragment test called the "window rectangles test" for use with FBOs that provides 8 or more inclusive or exclusive rectangles for rasterized fragments. Applications of this functionality include web browsers and virtual reality.
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...Mark Kilgard
Slides for SIGGRAPH paper presentation of "Accelerating Vector Graphics Rendering using the Graphics Hardware Pipeline".
Presented by Vineet Batra (Adobe) on Thursday, August 13, 2015 at 2:00 pm - 3:30 pm, Los Angeles Convention Center, Room 150/151.
Accelerating Vector Graphics Rendering using the Graphics Hardware PipelineMark Kilgard
SIGGRAPH 2015 paper.
We describe our successful initiative to accelerate Adobe Illustrator with the graphics hardware pipeline of modern GPUs. Relying on OpenGL 4.4 plus recent OpenGL extensions for advanced blend modes and first-class GPU-accelerated path rendering, we accelerate the Adobe Graphics Model (AGM) layer responsible for rendering sophisticated Illustrator scenes. Illustrator documents render in either an RGB or CMYK color mode. While GPUs are designed and optimized for RGB rendering, we orchestrate OpenGL rendering of vector content in the proper CMYK color space and accommodate the 5+ color components required. We support both non-isolated and isolated transparency groups, knockout, patterns, and arbitrary path clipping. We harness GPU tessellation to shade paths smoothly with gradient meshes. We do all this and render complex Illustrator scenes 2 to 6x faster than CPU rendering at Full HD resolutions; and 5 to 16x faster at Ultra HD resolutions.
NV_path_rendering is an OpenGL extension for GPU-accelerated path rendering. Recent functionality improvements provide better performance, better typography, rounded rectangles, conics, and OpenGL ES support. This functionality is available today with NVIDIA's 337.88 drivers.
The latest NV_path_rendering specification documents these new functional improvements:
https://www.opengl.org/registry/specs/NV/path_rendering.txt
You can find sample code here:
https://github.com/markkilgard/NVprSDK
presented at SIGGRAPH 2014 in Vancouver during NVIDIA's "Best of GTC" sponsored sessions
http://www.nvidia.com/object/siggraph2014-best-gtc.html
Watch the replay that includes a demo of GPU-accelerated Illustrator and several OpenGL 4 demos running on NVIDIA's Tegra Shield tablet.
http://www.ustream.tv/recorded/51255959
Find out more about the OpenGL examples for GameWorks:
https://developer.nvidia.com/gameworks-opengl-samples
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingMark Kilgard
Presented at SIGGRAPH Asia 2012 in Singapore on Friday, 30 November 14:15 - 16:00 during the "Points and Vectors" session.
Find the paper at http://developer.nvidia.com/game/gpu-accelerated-path-rendering or on Slideshare.
For thirty years, resolution-independent 2D standards (e.g. PostScript, SVG) have relied largely on CPU-based algorithms for the filling and stroking of paths. Learn about our approach to accelerate path rendering with our GPU-based "Stencil, then Cover" programming interface. We've built and productized our OpenGL-based system.
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondMark Kilgard
Location: Conference Hall K, Singapore EXPO
Date: Thursday, November 29, 2012
Time: 11:00 AM - 11:50 PM
Presenter: Mark Kilgard (Principal Software Engineer, NVIDIA, Austin, Texas)
Abstract: Attend this session to get the most out of OpenGL on NVIDIA Quadro and GeForce GPUs. Learn about the new features in OpenGL 4.3, particularly Compute Shaders. Other topics include bindless graphics; Linux improvements; and how to best use the modern OpenGL graphics pipeline. Learn how your application can benefit from NVIDIA's leadership driving OpenGL as a cross-platform, open industry standard.
Topic Areas: Computer Graphics; Development Tools & Libraries; Visualization; Image and Video Processing
Level: Intermediate
Preprint for SIGGRAPH Asia 2012
Copyright ACM, 2012
For thirty years, resolution-independent 2D standards (e.g. PostScript,
SVG) have depended on CPU-based algorithms for the filling and
stroking of paths. However advances in graphics hardware have largely
ignored the problem of accelerating resolution-independent 2D graphics
rendered from paths.
Our work builds on prior work to re-factor the path rendering task
to leverage existing capabilities of modern pipelined and massively
parallel GPUs. We introduce a two-step “Stencil, then Cover” (StC)
paradigm that explicitly decouples path rendering into one GPU
step to determine a path’s filled or stenciled coverage and a second
step to rasterize conservative geometry intended to test and reset the
coverage determinations of the first step while shading color samples
within the path. Our goals are completeness, correctness, quality, and
performance—but we go further to unify path rendering with OpenGL’s
established 3D rendering pipeline. We have built and productized our
approach to accelerate path rendering as an OpenGL extension.
SIGGRAPH 2012: GPU-Accelerated 2D and Web RenderingMark Kilgard
Video replay: http://nvidia.fullviewmedia.com/siggraph2012/ondemand/SS106.html
Location: West Hall Meeting Room 503, Los Angeles Convention Center
Date: Wednesday, August 8, 2012
Time: 2:40 PM – 3:40 PM
The future of GPU-based visual computing integrates the web, resolution-independent 2D graphics, and 3D to maximize interactivity and quality while minimizing consumed power. See what NVIDIA is doing today to accelerate resolution-independent 2D graphics for web content. This presentation explains NVIDIA's unique "stencil, then cover" approach to accelerating path rendering with OpenGL and demonstrates the wide variety of web content that can be accelerated with this approach.
More information: http://developer.nvidia.com/nv-path-rendering
Video replay: http://nvidia.fullviewmedia.com/siggraph2012/ondemand/SS104.html
Date: Wednesday, August 8, 2012
Time: 11:50 AM - 12:50 PM
Location: SIGGRAPH 2012, Los Angeles
Attend this session to get the most out of OpenGL on NVIDIA Quadro and GeForce GPUs. Learn about the new features in OpenGL 4.3, particularly Compute Shaders. Other topics include bindless graphics; Linux improvements; and how to best use the modern OpenGL graphics pipeline. Learn how your application can benefit from NVIDIA's leadership driving OpenGL as a cross-platform, open industry standard.
Get OpenGL 4.3 beta drivers for NVIDIA GPUs from http://www.nvidia.com/content/devzone/opengl-driver-4.3.html
Presented at the GPU Technology Conference 2012 in San Jose, California.
Tuesday, May 15, 2012.
Standards such as Scalable Vector Graphics (SVG), PostScript, TrueType outline fonts, and immersive web content such as Flash depend on a resolution-independent 2D rendering paradigm that GPUs have not traditionally accelerated. This tutorial explains a new opportunity to greatly accelerate vector graphics, path rendering, and immersive web standards using the GPU. By attending, you will learn how to write OpenGL applications that accelerate the full range of path rendering functionality. Not only will you learn how to render sophisticated 2D graphics with OpenGL, you will learn to mix such resolution-independent 2D rendering with 3D rendering and do so at dynamic, real-time rates.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
2. CS 354 2
Today’s material
In-class quiz
On global illumination lecture
Lecture topic
Project 4
Acceleration structures
3. CS 354 3
My Office Hours
Tuesday, before class
Painter (PAI) 5.35
8:45 a.m. to 9:15
Thursday, after class
ACE 6.302
11:00 a.m. to 12
Randy’s office hours
Monday & Wednesday
11 a.m. to 12:00
Painter (PAI) 5.33
4. CS 354 4
Last time, this time
Last lecture, we discussed
Global illumination
This lecture
Acceleration structures
Projects
Project 4 on ray tracing on Piazza
Due May 2, 2012
Get started!
5. CS 354 5
On a sheet of paper
Daily Quiz • Write your EID, name, and date
• Write #1, #2, #3, #4 followed by its answer
Multiple choice: In the Russian
Roulette approach to termination of Multiple choice: Modeling the
tracing recursive rays, termination influence of participating media
occurs simulates
a) after a fixed number of ray a) motion blur
traces
b) fog
b) after a random number of ray
casts between 1 and a fixed c) smoke
constant
d) a., b., and c.
c) when an analytic solution can
be reached e) b. and c.
d) every trace has a random True of False: Classic Radiosity
chance of being terminated assume the Bidirectional Reflectance
Distribution Function of all surfaces in
True or False: A bidirectional the scene are Lambertian.
reflectance distribution function
returns a negative value
approximately 50% of the time.
6. CS 354 6
Project 4
Provides ray tracing framework
Use FLTK toolkit for user interface
Includes sample scenes—.ray files
dragon.ray
12. CS 354 12
Two Versions of
Rendering Equation
Occlusion (G) is zero
o
Le (x, ω , λ , t ) +
Le (x, ω , λ , t ) +
Lo (x, ω , λ , t ) =
∫
Ω
f r (x, ω ′, ω , λ , t ) Li (x, ω ′, λ , t ) (−ω ′ • n) dω ′ Lo (x, ω , λ , t ) =
∫ f r (x, ωyx , ω , λ , t ) L(y, ωyx , λ , t ) G (x, y ) dy
y∈Γ
Integrate over hemisphere Integrate over all surface points
13. CS 354 13
Photon Mapping
Two-pass global illumination algorithm
Developed by Henrick Jensen (1996)
Two passes
Randomly distribute photons around the scene
Called “photon map construction”
Render treating photons as mini-light sources
Capable of efficiently generating otherwise very
expensive effects
Caustics
Diffuse inter-reflections, such as color bleed
Sub-surface scattering
14. CS 354 14
Light Tracing
Trace rays from the light
Contribution rays accumulate image samples
16. CS 354 16
Global Illumination Often Gated
by Ray Tracing Speed
Shooting rays tends to be the bottleneck
Why?
Lots of rays cast for quality
Shadow rays, lots for soft shadows
Reflection and refraction rays
Speeding up global illumination generally
means speeding up tracing of rays
Shading operations can be expensive too
But rays involve data structure traversal
17. CS 354 17
More bounces
Recursive Rays
Reflections and
refractions can spawn
lots of rays
Fewer bounces 17
19. CS 354 19
Distribution Ray Tracing
Soft shadows
Distribute shadow rays over light source region
All shadow rays No shadow rays Some shadow rays
hit light source, hit light source, hit light source,
fully illuminated fully shadowed partially shadowed
20. CS 354 20
Distribution Ray Tracing
Motion blur
Distribute rays over time
Pool Balls
Tom Porter
RenderMan
21. CS 354 21
Distribution Ray Tracing
Depth of field
Distribute rays across a discrete camera aperture
No depth-of-field More rays
Jittered
depth-of-field
More images for depth-of-field Even more rays
23. CS 354 23
Accelerating Ray Trace
Intersection Operations
Two key optimizations
3. Exploit binary searching
Rather than linear searches
4. Group objects spatially
Discard hierarchically
Use quick-and-coarse tests…
…to avoid slow-and-exact intersection tests
24. CS 354 24
Acceleration Structures:
Bounding Volume Hierarchies
Build hierarchy of bounding volumes
Bounding volume of interior node has its children
25. CS 354 25
Accelerate Ray Intersections
Traverse hierarchy to accelerate ray
intersections
Intersect node content
only if ray hits the
bounding volume
Skip intersection A, D, E, and F
26. CS 354 26
Accelerate Ray Intersection
Algorithm
Sort hits and detect early termination
FindIntersection( Ray ray, Node node )
{
// Find intersections with child node bounding volumes
…
// Sort intersections closest to farthest
…
// Process intersections, checking for early termination
min_t = infinity;
for each intersected child i {
if (min_t < bv_t[i]) break;
shape_t = FindIntersection(ray, child);
if (shape_t < min_t) { min_t = shape_t; }
}
return min_t; // closest intersection
}
27. CS 354 27
Bounding Volumes
Axis-Aligned Bounding Boxes (AABB)
min (x,y,z) & max(x,y,z)
Trivial plane equations
Bounding spheres
Point and radius
Ray and sphere intersection is easy
Solving a quadratic equation
Oriented Bounding Box
Might have tighter bounds than AABB
Convex Polyhedron (Polytope)
28. CS 354 28
Spatial Hierarchy
Uniform grid
Quadtree (2D) and Octree (3D)
Exactly four or eight children
Equal area/volume for each children
KD Tree
Two children, splitting in X, Y, or Z
Axis aligned splitting planes
Not necessarily equal area/volume
Binary Space Partitioning (BSP) Tree
Arbitrary splitting planes
Just two children
29. CS 354 29
Space Subdivision
Approaches
Uniform grid Octree
Quadtree
Binary
KD Tree Space
Partitioning
Tree
30. CS 354 30
Uniform Grid Construction
Preprocess scene
2. Find bounding box
3. Determine grid
resolution
31. CS 354 31
Uniform Grid Construction
Preprocess scene
2. Find bounding box
3. Determine grid
resolution
4. Place object in cell if
its bounding box
overlaps the cell
32. CS 354 32
Uniform Grid Construction
Preprocess scene
2. Find bounding box
3. Determine grid
resolution
4. Place object in cell if
its bounding box
overlaps the cell
5. Check that object
overlaps cell
33. CS 354 33
Uniform Grid Traversal
After processing…
Traverse grid
3D line = 3D-DDA
Digital Differential Analyzer
Advantages
Simple construction
Simple traversal
Disadvantage
Poor at sparse or huge
scenes
34. CS 354 34
Binary Space Partitioning Tree
2D view of BSP
35. CS 354 35
Binary Space Partitioning Trees
Recursive search
Partitioning plane has two nodes
FindIntersection( Ray ray, Node node )
{
if node is leaf {
intersect ray with each object in node
return closest object (or nil)
}
near = child of node in half space containing ray’s origin
far = the other child
hit = FindIntersection( ray, near )
if hit is null and ray intersections plane defined by node {
hit = FindIntersection( ray, far )
}
return hit;
}
37. CS 354 37
Optimizing Bounding Hierarchies
Complex meshes need to be partitioned
into bounding hierarchy
[Saut, Sidobre, 2012]
38. CS 354 38
Octree Building
Building octree from boundary representation
39. CS 354 39
KD-tree
Like an Octree
But dividing planes aren’t necessarily in even
octo squares
Tighter bounds
[Mahmoud Zidan]
40. CS 354 40
Close Cousin of Ray Tracing:
Volume Rendering
Common task: visualization of volumetric data
Data arranged in 3D “voxel” grid
Voxel = volume element
Applications: medical, oil & gas exploration
41. CS 354 41
Simple Case of Ray Casting
Rays are all coherent
GPU-oriented Volume rendering
Draw 3D textured polygons slicing through a 3D texture
Apply transfer function
Blend in ray order—use framebuffer blending
42. CS 354 42
Transfer Function
Give viewer control of how volumetric data
maps to color & opacity
Transfer functions enable visualization of
otherwise difficult-to-understand mass of data
43. CS 354 43
Volume Rendering Examples
Head with clip planes
Liver tumor
44. CS 354 44
Next Class
Next lecture
Performance analysis
Considerations for tuning interactive graphics
applications
Reading
Chapter 8, 455-460
Chapter 11, 578-601
Project 4
Project 4 is a simple ray tracer
Due Wednesday, May 2, 2012