Gallery of images from
CS500 Ray Tracing
CS500 (Ray Tracing) images are created via the path tracing
algorithm, a modern variant of the traditional Ray Tracing algorithm.
The algorithm is not realtime, but produces a highly accurate
accounting of all the light reflecting/refracting through a scene.
Many of these images use Image Based Lighting to provide a full
lighting environment and a modern, physically based, micro-facet BRDF
(Bidirection Reflection Distribution Function) to compute a surface's
interaction with light.
Jump to a specific semester, or just scroll to browse most recent
first:
RayTracing/2026 Spring
2026 Spring
2026 Spring:
Aditya Prakash
Aditya Prakash:
Aditya Prakash
Aditya Prakash:
Collin Longoria
Collin Longoria:
Collin Longoria
Collin Longoria:
Gavin Cooper
Gavin Cooper:
Gavin Cooper
Gavin Cooper:
Gavin Cooper
Gavin Cooper:
Gavin Cooper
Gavin Cooper:
Martin Chow
Martin Chow:
Martin Chow
Martin Chow:
Martin Chow
Martin Chow:
Martin Chow
Martin Chow:
Michael Haynes
Michael Haynes:
Rares Morosan
Rares Morosan:
Rares Morosan
Rares Morosan:
Rares Morosan
Rares Morosan:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
Swaroop Kishen
Swaroop Kishen:
RayTracing/2025 Spring
Jeyoon Yu
Jeyoon Yu:
Jeyoon Yu
Jeyoon Yu:
Jiayi Zheng Lin
Jiayi Zheng Lin:
Junyeong Cho
Junyeong Cho:
Junyeong Cho
Junyeong Cho:
Junyeong Cho
Junyeong Cho:
Yiyang Wang
Yiyang Wang:
Yiyang Wang
Yiyang Wang:
RayTracing/2024 Spring
Kelsey Wimberley
Kelsey Wimberley:
Kelsey Wimberley
Kelsey Wimberley:
Kelsey Wimberley
Kelsey Wimberley:
Kelsey Wimberley
Kelsey Wimberley:
Levi Beecher
Levi Beecher:
Levi Beecher
Levi Beecher:
Levi Beecher
Levi Beecher:
Levi Beecher
Levi Beecher:
Levi Beecher
Levi Beecher:
Siravich Sereepong
Siravich Sereepong:
Siravich Sereepong
Siravich Sereepong:
Sunny Elliott
Sunny Elliott:
Sunny Elliott
Sunny Elliott:
Sunny Elliott
Sunny Elliott:
Sunny Elliott
Sunny Elliott:
Sunny Elliott
Sunny Elliott:
RayTracing/2023 Spring
Andrew S Rudasics
Andrew S Rudasics:
Andrew S Rudasics
Andrew S Rudasics:
Anthony Bartholomew
Anthony Bartholomew:
Aseem Apastamb
Aseem Apastamb:
Aseem Apastamb
Aseem Apastamb:
Brian J Paradee
Brian J Paradee:
Brian J Paradee
Brian J Paradee:
Brillan Preston Morgan
Brillan Preston Morgan:
Sixteen spheres. Subtract from torus to create “Bit Doughnut.” Position and scale is a function of the torus minor radius. r = 0.5. Red diffuse surface.
Brillan Preston Morgan
Brillan Preston Morgan:
Sixteen spheres. Subtract from torus to create “Bit Doughnut.” Position and scale is a function of the torus minor radius. r = 0.5. Surface with specular reflection.
Brillan Preston Morgan
Brillan Preston Morgan:
“Levitator.” Union of two boxes. Intersect with “Bit Doughnut” to create “Sandwich” or subtract from “Bit Doughnut” to create “Pokey.” Position and scale is a function of the torus radii of “Bit Doughnut.” Edge length = 2R+r = 2.5. Red diffuse surface.
Brillan Preston Morgan
Brillan Preston Morgan:
“Levitator.” Union of two boxes. Intersect with “Bit Doughnut” to create “Sandwich” or subtract from “Bit Doughnut” to create “Pokey.” Position and scale is a function of the torus radii of “Bit Doughnut.” Edge length = 2R+r = 2.5. Surface with specular reflection.
Brillan Preston Morgan
Brillan Preston Morgan:
Torus. Basis shape of family of CSG composite shapes. Position and scale of all other subshapes are a function of the torus radii. R = 1.0, r = 0.5. Red diffuse surface.
Brillan Preston Morgan
Brillan Preston Morgan:
Torus. Basis shape of family of CSG composite shapes. Position and scale of all other subshapes are a function of the torus radii. R = 1.0, r = 0.5. Surface with specular reflection.
Brillan Preston Morgan
Brillan Preston Morgan:
“Bit Doughnut.” Result of subtracting sixteen spheres from the torus. CSG intermediate result. Becomes “Sandwich” when intersected with “Levitator.” Becomes “Pokey” when “Levitator” is subtracted from it. R = 1.0, r = 0.5. Red diffuse surface.
Brillan Preston Morgan
Brillan Preston Morgan:
“Bit Doughnut.” Result of subtracting sixteen spheres from the torus. CSG intermediate result. Becomes “Sandwich” when intersected with “Levitator.” Becomes “Pokey” when “Levitator” is subtracted from it. R = 1.0, r = 0.5. Surface with specular reflection.
Brillan Preston Morgan
Brillan Preston Morgan:
“Sandwich” Finished CSG composite shape. Result of “Bit Doughnut” intersected with “Levitator.” R = 1.0, r = 0.5. Red diffuse surface.
Brillan Preston Morgan
Brillan Preston Morgan:
“Sandwich” Finished CSG composite shape. Result of “Bit Doughnut” intersected with “Levitator.” R = 1.0, r = 0.5. Surface with specular reflection.
Brillan Preston Morgan
Brillan Preston Morgan:
“Sandwich” Finished CSG composite shape. Result of “Bit Doughnut” intersected with “Levitator.” R = 0.8, r = 0.7. Red diffuse surface.
Brillan Preston Morgan
Brillan Preston Morgan:
“Sandwich” Finished CSG composite shape. Result of “Bit Doughnut” intersected with “Levitator.” R = 0.8, r = 0.7. Surface with specular reflection.
Brillan Preston Morgan
Brillan Preston Morgan:
“Pokey.” Finished CSG composite shape. Result of “Levitator” subtracted from “Bit Doughnut.” R = 1.0, r = 0.5. Red diffuse surface.
Brillan Preston Morgan
Brillan Preston Morgan:
“Pokey.” Finished CSG composite shape. Result of “Levitator” subtracted from “Bit Doughnut.” R = 1.0, r = 0.5. Surface with specular reflection.
Brillan Preston Morgan
Brillan Preston Morgan:
“Pokey.” Finished CSG composite shape. Result of “Levitator” subtracted from “Bit Doughnut.” R = 0.8, r = 0.7. Red diffuse surface.
Brillan Preston Morgan
Brillan Preston Morgan:
“Pokey.” Finished CSG composite shape. Result of “Levitator” subtracted from “Bit Doughnut.” R = 0.8, r = 0.7. Surface with specular reflection.
David Wong Cascante
David Wong Cascante:
David Wong Cascante
David Wong Cascante:
Hyosang Jung
Hyosang Jung:
Jae Choi
Jae Choi:
Jinhyun Choi
Jinhyun Choi:
Jinwoo Choi
Jinwoo Choi:
Jinwoo Choi
Jinwoo Choi:
Lance Alexander Dobransky
Lance Alexander Dobransky:
Madeline Avis
Madeline Avis:
Chainbow
Madeline Avis
Madeline Avis:
oh my god twists take so long to render don’t do it save yourself while you still can
Madeline Avis
Madeline Avis:
A happy family of distance functions <3 Inigo Quilez <3
Srey Raychaudhuri
Srey Raychaudhuri:
Srey Raychaudhuri
Srey Raychaudhuri:
Sunwoo Lee
Sunwoo Lee:
Sunwoo Lee
Sunwoo Lee:
Zhiyi Zhan
Zhiyi Zhan:
RayTracing/2022 Spring
Adam Rhoades
Adam Rhoades:
Adam Rhoades
Adam Rhoades:
Brady Menendez
Brady Menendez:
Brady Menendez
Brady Menendez:
Brian Chen
Brian Chen:
Btayan Lopez
Btayan Lopez:
Christan Licona
Christan Licona:
Christan Licona
Christan Licona:
Christan Licona
Christan Licona:
Mook Kim
Mook Kim:
Sandy Jamieson
Sandy Jamieson:
Friends sitting on a table with out of focus sphere lights in the background. Implemented a custom bokeh (heart), the middle large light is from the environment map. 8192 samples per pixel.
Sandy Jamieson
Sandy Jamieson:
A glass bunny sitting on a table with friends on a sunny day. Image based lighting and depth of field. 4096 samples per pixel.
Seva Netrebchenko
Seva Netrebchenko:
Sinit Kang
Sinit Kang:
Sinit Kang
Sinit Kang:
Stone Kim
Stone Kim:
Stone Kim
Stone Kim:
RayTracing/2021 Spring
Arthur Chang
Arthur Chang:
Arthur Chang
Arthur Chang:
Arthur Estudillo
Arthur Estudillo:
Arthur Estudillo
Arthur Estudillo:
Arthur Estudillo
Arthur Estudillo:
Chau Nguyen
Chau Nguyen:
This image is 400x300 resolution with 4096 passes. We can see there is no actual light source. The
scene is lit entirely using the HDR environment image. By looking at the reflective sphere, we can see
the sun cast light rays from the left side onto the scene and we can see the shadow as well. There are
2 CSG shapes in the picture, the one on the left if created by taking the intersection between a sphere
and a box. The other CSG shape is created by taking the subtraction between a sphere and a box.
Chau Nguyen
Chau Nguyen:
This image is 400x300 resolution with 4096 passes. We can see there is no actual light source. The
scene is lit entirely using the HDR environment image. There are 2 CSG shapes in the picture, the one
on the left side is created by taking the intersection between a sphere and a box but now the box is
smaller than the sphere. Also, the other CSG shapes on the right side is now reflective.
Chau Nguyen
Chau Nguyen:
This image is 1080x720 resolution at 4096 passes. We can see this image is not fully converged yet
with some fireflies on the table surface. This image takes the longest time to produce but I am very
satisfied with the result. We can see the 2D texture sampling on the table surface and a sphere on the
right side. One CSG shape on the left side is created by taking the intersection between a larger
sphere and a smaller box and then taking another subtraction of the current shape with another
sphere. Also, the table frame is reflective.
Chris Newman
Chris Newman:
Chris Newman
Chris Newman:
Cody Morgan
Cody Morgan:
Guy Sirithong
Guy Sirithong:
Guy Sirithong
Guy Sirithong:
Guy Sirithong
Guy Sirithong:
Hun Yang
Hun Yang:
Jake Ryan
Jake Ryan:
Jake Ryan
Jake Ryan:
Jake Ryan
Jake Ryan:
Joe Jeong
Joe Jeong:
Joe Jeong
Joe Jeong:
Joe Jeong
Joe Jeong:
Leon Chen
Leon Chen:
Max Plum
Max Plum:
Max Plum
Max Plum:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Nick Miller
Nick Miller:
Rahil Momin
Rahil Momin:
Rahil Momin
Rahil Momin:
Richard Shen
Richard Shen:
Richard Shen
Richard Shen:
Richard Shen
Richard Shen:
Roman Timurson
Roman Timurson:
Roman Timurson
Roman Timurson:
Roman Timurson
Roman Timurson:
Russell Johnson
Russell Johnson:
Russell Johnson
Russell Johnson:
Russell Johnson
Russell Johnson:
Russell Johnson
Russell Johnson:
Russell Johnson
Russell Johnson:
Russell Johnson
Russell Johnson:
Xingyu Wang
Xingyu Wang:
Xingyu Wang
Xingyu Wang:
Xingyu Wang
Xingyu Wang:
Yi Qian
Yi Qian:
Yi Qian
Yi Qian:
Zach Rammell
Zach Rammell:
RayTracing/2020 Spring
Alex Daniel Harte
Alex Daniel Harte:
Charlie Jung
Charlie Jung:
Charlie Jung
Charlie Jung:
Coleman Paul Jonas
Coleman Paul Jonas:
Coleman Paul Jonas
Coleman Paul Jonas:
Coleman Paul Jonas
Coleman Paul Jonas:
Dushyant Shukla
Dushyant Shukla:
Edward Zerbe
Edward Zerbe:
Edward Zerbe
Edward Zerbe:
Hang Yu
Hang Yu:
Hang Yu
Hang Yu:
Herron
Herron:
Kyle Wang
Kyle Wang:
Kyle Wang
Kyle Wang:
Kyle Wang
Kyle Wang:
Kyle Wang
Kyle Wang:
Nicolas Akoni San Jose
Nicolas Akoni San Jose:
Nicolas Akoni San Jose
Nicolas Akoni San Jose:
Romil Tendulkar
Romil Tendulkar:
Romil Tendulkar
Romil Tendulkar:
Romil Tendulkar
Romil Tendulkar:
Ryan Adam Lewis Dugie
Ryan Adam Lewis Dugie:
Ryan Adam Lewis Dugie
Ryan Adam Lewis Dugie:
Sacchin Goban
Sacchin Goban:
Sacchin Goban
Sacchin Goban:
Sairaj Pradeep Padghe
Sairaj Pradeep Padghe:
Sairaj Pradeep Padghe
Sairaj Pradeep Padghe:
Sairaj Pradeep Padghe
Sairaj Pradeep Padghe:
Saveliy Baranov
Saveliy Baranov:
Saveliy Baranov
Saveliy Baranov:
Saveliy Baranov
Saveliy Baranov:
Seth Andrew Kohler
Seth Andrew Kohler:
Seth Andrew Kohler
Seth Andrew Kohler:
Seth Andrew Kohler
Seth Andrew Kohler:
Shantanu Chauhan
Shantanu Chauhan:
Shantanu Chauhan
Shantanu Chauhan:
Shantanu Chauhan
Shantanu Chauhan:
Shao Yang Huang
Shao Yang Huang:
Shao Yang Huang
Shao Yang Huang:
Shao Yang Huang
Shao Yang Huang:
Sidhant Shrihari Tumma
Sidhant Shrihari Tumma:
Supreeth Rao Pejawar
Supreeth Rao Pejawar:
Supreeth Rao Pejawar
Supreeth Rao Pejawar:
Supreeth Rao Pejawar
Supreeth Rao Pejawar:
Vishwas Sinh Solanki
Vishwas Sinh Solanki:
Vishwas Sinh Solanki
Vishwas Sinh Solanki:
Vishwas Sinh Solanki
Vishwas Sinh Solanki:
Vishwas Sinh Solanki
Vishwas Sinh Solanki:
RayTracing/2019 Summer
Herron
Herron:
Herron
Herron:
Herron
Herron:
Herron
Herron:
RayTracing/2019 Spring
Albert Hady
Albert Hady:
Albert Hady
Albert Hady:
Arnold George
Arnold George:
Brandon Haze
Brandon Haze:
Chase Rayment
Chase Rayment:
Chase Rayment
Chase Rayment:
Chase Rayment
Chase Rayment:
Chase Rayment
Chase Rayment:
Ching Yen Lin
Ching Yen Lin:
Ching Yen Lin
Ching Yen Lin:
Daxiao Ge
Daxiao Ge:
Devansh Maheshwari
Devansh Maheshwari:
Devansh Maheshwari
Devansh Maheshwari:
Dustin Conley
Dustin Conley:
Dustin Conley
Dustin Conley:
Dustin Conley
Dustin Conley:
Dustin Conley
Dustin Conley:
Evan Kau
Evan Kau:
Fan Jin
Fan Jin:
Fan Jin
Fan Jin:
Fei Ya Chiu
Fei Ya Chiu:
Fei Ya Chiu
Fei Ya Chiu:
Herron
Herron:
Herron
Herron:
Holden Profit
Holden Profit:
Ivan Lopez
Ivan Lopez:
Ivan Lopez
Ivan Lopez:
Ivan Lopez
Ivan Lopez:
Ivan Lopez
Ivan Lopez:
Ivan Lopez
Ivan Lopez:
Jay Coleman
Jay Coleman:
Jay Coleman
Jay Coleman:
Ka Cheong Li
Ka Cheong Li:
Ka Cheong Li
Ka Cheong Li:
Ka Cheong Li
Ka Cheong Li:
Konstantin Udovickij
Konstantin Udovickij:
Konstantin Udovickij
Konstantin Udovickij:
Konstantin Udovickij
Konstantin Udovickij:
Konstantin Udovickij
Konstantin Udovickij:
Konstantin Udovickij
Konstantin Udovickij:
Mark Smith
Mark Smith:
Mark Smith
Mark Smith:
Mark Smith
Mark Smith:
Shifeng Liang
Shifeng Liang:
Shifeng Liang
Shifeng Liang:
Zhongqiu Wang
Zhongqiu Wang:
Zhongqiu Wang
Zhongqiu Wang:
Zhongqiu Wang
Zhongqiu Wang:
Zhongqiu Wang
Zhongqiu Wang:
Zoheb Hynus
Zoheb Hynus:
Zoheb Hynus
Zoheb Hynus:
RayTracing/2018 Spring
Aaron Kitchen
Aaron Kitchen:
Aaron Kitchen
Aaron Kitchen:
Aaron Kitchen
Aaron Kitchen:
Aaron Kitchen
Aaron Kitchen:
Bailiang Gong
Bailiang Gong:
Chen Lu
Chen Lu:
Chen Lu
Chen Lu:
Chen Lu
Chen Lu:
Christopher Ben Hudson
Christopher Ben Hudson:
David Luca Westen
David Luca Westen:
David Luca Westen
David Luca Westen:
Esteban E Maldonado
Esteban E Maldonado:
Esteban E Maldonado
Esteban E Maldonado:
Esteban E Maldonado
Esteban E Maldonado:
Esteban E Maldonado
Esteban E Maldonado:
Ethan Edward Mori
Ethan Edward Mori:
Ethan Edward Mori
Ethan Edward Mori:
Gabriel Reece Chenier
Gabriel Reece Chenier:
Hyoyup Chung
Hyoyup Chung:
Jake Timothy Mathern
Jake Timothy Mathern:
Juan Pablo Ramos
Juan Pablo Ramos:
Juan Pablo Ramos
Juan Pablo Ramos:
Juan Pablo Ramos
Juan Pablo Ramos:
Matthew Oakes
Matthew Oakes:
Matthew Oakes
Matthew Oakes:
Matthew Oakes
Matthew Oakes:
Matthew Oakes
Matthew Oakes:
Oleg Konoplia
Oleg Konoplia:
Prof Herron
Prof Herron:
Riley Scott Alston
Riley Scott Alston:
Riley Scott Alston
Riley Scott Alston:
Robin Diaz Barranda
Robin Diaz Barranda:
Robin Diaz Barranda
Robin Diaz Barranda:
Robin Diaz Barranda
Robin Diaz Barranda:
Rohit Tolety
Rohit Tolety:
Rohit Tolety
Rohit Tolety:
Sujay Naresh Shah
Sujay Naresh Shah:
Sujay Naresh Shah
Sujay Naresh Shah:
Uddipon Das
Uddipon Das:
Uddipon Das
Uddipon Das:
Varun Premchandran
Varun Premchandran:
Varun Premchandran
Varun Premchandran:
Varun Premchandran
Varun Premchandran:
Vidhi Prakash Soni
Vidhi Prakash Soni:
Vidhi Prakash Soni
Vidhi Prakash Soni:
Vidhi Prakash Soni
Vidhi Prakash Soni:
RayTracing/2017 Spring
Andrew Aldwell
Andrew Aldwell:
Austin Brunkhorst
Austin Brunkhorst:
Chris Hoskins
Chris Hoskins:
Cole Ingram
Cole Ingram:
Cole Ingram
Cole Ingram:
Cole Ingram
Cole Ingram:
Cole Ingram
Cole Ingram:
Cole Ingram
Cole Ingram:
Matthew Yan
Matthew Yan:
1920x1080, 8192 passes.
40 Intel i7-7700 processors, 320 logical
cores.
Render time: 25 minutes.
An approximation of the familiar Cornell box.
Even after all these passes, some static noise
remains. This is probably due to the the setup
of the scene.
Matthew Yan
Matthew Yan:
1920x1080, 8192 passes.
40 Intel i7-7700 processors, 320 logical
cores.
Render time: 32 minutes.
An array of spheres, each with slightly
increased alpha-parameter. This scene
converged very nicely, due to the lack of
complex objects.
Sean Higgins
Sean Higgins:
Sean Higgins
Sean Higgins:
Tuoming Li
Tuoming Li:
Tuoming Li
Tuoming Li:
Tuoming Li
Tuoming Li:
Volkan İlbeyli (Case Conflict)
Volkan İlbeyli (Case Conflict):
The sphere behind and the X on the table is blurrred
due to Depth of Field focus plane being at the red sphere.
Volkan İlbeyli (Case Conflict)
Volkan İlbeyli (Case Conflict):
Finall Image: 1440x720 pixels, metallic Torus rendering. Although, the
reflection of the torus on the sphere is correct, the lighting
calculation on the torus itself isn’t correct.
volkan ilbeyli
volkan ilbeyli:
The sphere behind and the X on the table is blurrred
due to Depth of Field focus plane being at the red sphere.
volkan ilbeyli
volkan ilbeyli:
Finall Image: 1440x720 pixels, metallic Torus rendering. Although, the
reflection of the torus on the sphere is correct, the lighting
calculation on the torus itself isn’t correct.
RayTracing/2016 Spring
Akshay Dhok
Akshay Dhok:
To give proper effect of DOF (Depth Of Field) I have added some more spheres in the scene in the corner of table. I have to adjust the depth and circle of confusion value to properly set the centre sphere in focus and provide enough radius value for circle of confusion.
Antoine Michaelian
Antoine Michaelian:
The same Reventon as above but this one has an orange light inside the cockpit as well as the
image based lighting.
Antoine Michaelian
Antoine Michaelian:
A CSG sphere with displacement and a half translucent material inside a Gold CSG Cube minus
2 cylinders.
Antoine Michaelian
Antoine Michaelian:
Antoine Michaelian
Antoine Michaelian:
Reference scene
Antoine Michaelian
Antoine Michaelian:
Antoine Michaelian
Antoine Michaelian:
The Suzanne mesh from blender with a high number of vertices compared to the original one
and green translucent material.
Antoine Michaelian
Antoine Michaelian:
Centered CSG sphere using Displacement (sin waves added to the sphere) + nice lighting from
the image.
Antoine Michaelian
Antoine Michaelian:
Centered CSG sphere using Displacement (sin waves added to the sphere) + nice lighting from
the image.
Antoine Michaelian
Antoine Michaelian:
Two translated CSG sphere using Displacement (sin waves added to the sphere), the translation
affects the sin waves as well.
Antoine Michaelian
Antoine Michaelian:
A bunch of Images showing the Lamborghini Reventon car under different materials and different IBL’s. I want to say that those look the nicest as the model is pretty well done and the IBL has a very nice effect with reflective materials.
My favorite Reventon renders are the space and snow_copper.
Antoine Michaelian
Antoine Michaelian:
A bunch of Images showing the Lamborghini Reventon car under different materials and different IBL’s. I want to say that those look the nicest as the model is pretty well done and the IBL has a very nice effect with reflective materials.
My favorite Reventon renders are the space and snow_copper.
Antoine Michaelian
Antoine Michaelian:
A bunch of Images showing the Lamborghini Reventon car under different materials and different IBL’s. I want to say that those look the nicest as the model is pretty well done and the IBL has a very nice effect with reflective materials.
My favorite Reventon renders are the space and snow_copper.
Antoine Michaelian
Antoine Michaelian:
A bunch of Images showing the Lamborghini Reventon car under different materials and different IBL’s. I want to say that those look the nicest as the model is pretty well done and the IBL has a very nice effect with reflective materials.
My favorite Reventon renders are the space and snow_copper.
Antoine Michaelian
Antoine Michaelian:
A bunch of Images showing the Lamborghini Reventon car under different materials and different IBL’s. I want to say that those look the nicest as the model is pretty well done and the IBL has a very nice effect with reflective materials.
My favorite Reventon renders are the space and snow_copper.
Antoine Michaelian
Antoine Michaelian:
Antoine Michaelian
Antoine Michaelian:
CSG sphere with half translucent material and displacement.
Antoine Michaelian
Antoine Michaelian:
The best render I have.
A CSG cylinder using Displacement + a green translucent material. I placed 2 blurry mirrors
below and behind the shape.
Hiago DeSena
Hiago DeSena:
Hiago DeSena
Hiago DeSena:
Kurihi Chargualaf
Kurihi Chargualaf:
The scene consist of a translucent bunny and sphere in the pine desert environment map.
Niklas Bieck
Niklas Bieck:
Two shiny metal bunnies on a shiny table.
Niklas Bieck
Niklas Bieck:
Cube - Cone
Niklas Bieck
Niklas Bieck:
Cone - Cube
Niklas Bieck
Niklas Bieck:
Cone ∩ Cube
Niklas Bieck
Niklas Bieck:
Cone ∪ Cube
Niklas Bieck
Niklas Bieck:
A red glass bunny next to a reflective sphere. Caustics are already visible, but not particularly well converged.
Niklas Bieck
Niklas Bieck:
The Object in this picture was created by taking a cylinder centered around the origin, rotating it slightly to be out of alignment with the z-axis, and then twisting. I then rotated it to be horizontal and translated it into the right location in the scene. The object is using a nice matte gold material. At 800x600 running overnight got me 1691 iterations.
Niklas Bieck
Niklas Bieck:
This is the typical CSG object, created by intersecting a cube and a sphere and subtracting three cylinders. It is using a simple shiny metallic material. 11146 iterations.
Prof Herron
Prof Herron:
A test scene containing most of the features of a first semester path tracer. Includes reflection and transmission (with caustics), BRDFs (both metallic and non-metallic), soft shadows, indirect lighting (for instance, on the floor under the table), basic primitive objects (table body and legs), mesh object (70,000 triangle bunny), CSG (constructive solid object), and IBL (image based lighting).
Most of the picture converged within minutes, but the caustics took about 7 days of computation to converge.
Sagnik Chowdhury
Sagnik Chowdhury:
A bunny shaped light. This image uses the pinhole ‘lens’.
Sagnik Chowdhury
Sagnik Chowdhury:
The two back surfaces are actually reflective, not transmissive; I thought that'd make for a nicer image. This pic has 23,986 rays per pixel and has been rendering for about a week.
Siyu Chen
Siyu Chen:
1 is texture mapping, 1 is BRDF and another BTDF
RayTracing/2015 Spring
Austin Scholze
Austin Scholze:
Cody Duncan
Cody Duncan:
Cody Duncan
Cody Duncan:
Cody Duncan
Cody Duncan:
Cody Duncan
Cody Duncan:
Cody Duncan
Cody Duncan:
Gieta Nadhil Laksmana
Gieta Nadhil Laksmana:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Julian Wong
Julian Wong:
Kenneth Chun Hui Tan
Kenneth Chun Hui Tan:
Kenneth Chun Hui Tan
Kenneth Chun Hui Tan:
Kenneth Chun Hui Tan
Kenneth Chun Hui Tan:
Kevin Verholtz
Kevin Verholtz:
Kevin Verholtz
Kevin Verholtz:
Kevin Verholtz
Kevin Verholtz:
Kevin Verholtz
Kevin Verholtz:
Kevin Verholtz
Kevin Verholtz:
Kevin Verholtz
Kevin Verholtz:
Matt Hurliman
Matt Hurliman:
Matt Hurliman
Matt Hurliman:
Matt Hurliman
Matt Hurliman:
Matt Hurliman
Matt Hurliman:
Matt Hurliman
Matt Hurliman:
Matt Hurliman
Matt Hurliman:
Matt Hurliman
Matt Hurliman:
Sandra Jhee
Sandra Jhee:
Sandra Jhee
Sandra Jhee:
Sandra Jhee
Sandra Jhee:
RayTracing/2014 Spring
Abhijeet Yerram Reddy
Abhijeet Yerram Reddy:
I implemented CSG using Ray Marching.
The object is created by doing a intersection between a cube and a sphere and then subtracting three cylinders from it.
The image resolution is 960x722 and was rendered in 1000 Passes
Abhijeet Yerram Reddy
Abhijeet Yerram Reddy:
I implemented CSG using Ray Marching.
The object is created by doing a intersection between a cube and a sphere and then subtracting three cylinders from it.
I also placed the light source at the centre of the object to generate a nice image.
The image resolution is 960x722 and was rendered in 1000 Passes
Abhijeet Yerram Reddy
Abhijeet Yerram Reddy:
I implemented Depth of Field.
The image is focused on the sphere in front by taking the distance between this sphere and the camera. This shows off the nice blurring(out of focus) effect on the objects that are further away from the sphere.
The image resolution is 960x722 and was rendered in 1000 Passes
Axel Komair
Axel Komair:
In RED, Torus created using distance estimate, scale on one axis
using distance estimate aswell to bring out its shape into more
of a tube. Sphere created using distance estimate united using
the distance estimate formula with the resultant torus.
Purpose was to create a cave like shape
In BLUE, Sphere twisted by a broken twist, ended up looking like a tornado. See shadows for better reference.
In GRAY, Ground plane.
1 Light above the RED cave.
1 Light in the RED cave.
Axel Komair
Axel Komair:
Two spheres in a standard red green blue box.
Sphere 1: Diffuse
Sphere 2: Reflective.
1 Light above both spheres.
Axel Komair
Axel Komair:
On the left: Reflective sphere rendered on a path. Shows the motion blur algorithm in play.
On the right: Blobed sphere in front of the light. Shows good perspective and self shadowing.
1 Light behind the blob, and above the reflective sphere.
Bhanu Prakash Birur Jagannath
Bhanu Prakash Birur Jagannath:
Bhanu Prakash Birur Jagannath
Bhanu Prakash Birur Jagannath:
Douglas Schilling
Douglas Schilling:
Doug Schilling: A test of Beer's Law on a surface with a simple (sine wave-based) procedurally-generated texture.
Douglas Schilling
Douglas Schilling:
Doug Schilling: A test of Image-Based Lighting (IBL) with a sampling of diffuse, reflective and transmissive objects. While the "tabletop" object in the scene appears to have a nice, procedurally-generated texture, a possible error in the implementation of the Cumulative Distribution Function (CDF) is actually causing the lighting on the simple, green-tinted surface to converge very slowly (this image was rendering in 10000 passes).
Michael May
Michael May:
This sequence of images, converging to a final image, demonstrates two things:
1. The predictive power of a variance calculation in calculating the
number of passes needed to reduce the pixel variance down to a preset
value. That is, at each pass, the predicted number of passes to reach
a variance of .0001 stays remarkably constant.
0011 passes 1375 remaining.
0311 passes 1049 remaining.
1011 passes 0349 remaining.
1350 passes 0010 remaining.
1359 passes 0001 remaining.
2. The *unbiased* nature of Monte Carlo integration's approximation of
the final image. Rather than each pass summing light into pixels
(which would be a *biased* algorithm), each pass, right from the
first, approximates the final image.
Michael May
Michael May:
This sequence of images, converging to a final image, demonstrates two things:
1. The predictive power of a variance calculation in calculating the
number of passes needed to reduce the pixel variance down to a preset
value. That is, at each pass, the predicted number of passes to reach
a variance of .0001 stays remarkably constant.
0011 passes 1375 remaining.
0311 passes 1049 remaining.
1011 passes 0349 remaining.
1350 passes 0010 remaining.
1359 passes 0001 remaining.
2. The *unbiased* nature of Monte Carlo integration's approximation of
the final image. Rather than each pass summing light into pixels
(which would be a *biased* algorithm), each pass, right from the
first, approximates the final image.
Michael May
Michael May:
This sequence of images, converging to a final image, demonstrates two things:
1. The predictive power of a variance calculation in calculating the
number of passes needed to reduce the pixel variance down to a preset
value. That is, at each pass, the predicted number of passes to reach
a variance of .0001 stays remarkably constant.
0011 passes 1375 remaining.
0311 passes 1049 remaining.
1011 passes 0349 remaining.
1350 passes 0010 remaining.
1359 passes 0001 remaining.
2. The *unbiased* nature of Monte Carlo integration's approximation of
the final image. Rather than each pass summing light into pixels
(which would be a *biased* algorithm), each pass, right from the
first, approximates the final image.
Michael May
Michael May:
This sequence of images, converging to a final image, demonstrates two things:
1. The predictive power of a variance calculation in calculating the
number of passes needed to reduce the pixel variance down to a preset
value. That is, at each pass, the predicted number of passes to reach
a variance of .0001 stays remarkably constant.
0011 passes 1375 remaining.
0311 passes 1049 remaining.
1011 passes 0349 remaining.
1350 passes 0010 remaining.
1359 passes 0001 remaining.
2. The *unbiased* nature of Monte Carlo integration's approximation of
the final image. Rather than each pass summing light into pixels
(which would be a *biased* algorithm), each pass, right from the
first, approximates the final image.
Michael May
Michael May:
This sequence of images, converging to a final image, demonstrates two things:
1. The predictive power of a variance calculation in calculating the
number of passes needed to reduce the pixel variance down to a preset
value. That is, at each pass, the predicted number of passes to reach
a variance of .0001 stays remarkably constant.
0011 passes 1375 remaining.
0311 passes 1049 remaining.
1011 passes 0349 remaining.
1350 passes 0010 remaining.
1359 passes 0001 remaining.
2. The *unbiased* nature of Monte Carlo integration's approximation of
the final image. Rather than each pass summing light into pixels
(which would be a *biased* algorithm), each pass, right from the
first, approximates the final image.
Michael May
Michael May:
For project 5 I implemented Depth of Field (scene included with 4
reflective spheres of varying roughness, with only one in focus).
Michael May
Michael May:
Same scene as depthoffield, but without the depth of field.
Nathaniel Cox
Nathaniel Cox:
This scene was made using Image Base Lighting techniques, specifically
using cumulative density function and binary searches. This scene is
using a MilkyWay hdr picture with the gamma set to 2.2 and went
through 30,000 passes. The image itself probably would be better if
the background was set further away, and the gamma set lower.
Nathaniel Cox
Nathaniel Cox:
This scene was made using Image Base Lighting techniques, specifically
using cumulative density function and binary searches. This scene is
using a Subway hdr image with the gamma set to 2.2 and gone over
30,000 passes.
Nathaniel Cox
Nathaniel Cox:
This scene was made using Image Base Lighting techniques, specifically
using cumulative density function and binary searches. This scene is
using a Tropical hdr picture with the gamma set to 2.2 and gone over
30,000 passes.
Oscar Monge
Oscar Monge:
File CornellRoom_Suzane_R_10510p_x2.hdr is the same scene with Suzanne, but this one shows reflections only, it was rendered
after 10,510 passes with 4 rays per pixel.
Oscar Monge
Oscar Monge:
File CornellRoom_Suzabe_T_6520p_x3.hdr is a scene with Suzanne's model from Blender in a closed room, it was rendered after
6520 passes with 9 rays per pixel, a perfect example of transmissions.
Oscar Monge
Oscar Monge:
File test_2200p_x3.png is just the usual test scene with DoF, it was rendered after 2200 passes with 9 rays per pixel.
Prof Herron
Prof Herron:
A model from the previous year, but this time with very will
converged caustics -- no visible noise. This was helped by
implementing Multiple Importance Sampling.
Prof Herron
Prof Herron:
Clear-glass and frosted-glass bunnies (exponents 20000 and 40 respectively) at Burning Man festival.
Prof Herron
Prof Herron:
A nice test case for depth-of-field (and image based lighting). Focal plane is at the depth of the spherical hub.
Prof Herron
Prof Herron:
The Stanford dragon model (800,000+ triangles), depth-of-field, and a
nice tropical beach scene for image based lighting. Even after 150000
passes, there is still some graininess in the shadow.
Prof Herron
Prof Herron:
The canonical CSG object with a nice brass-like BRDF and image based
lighting. The sun, which is just off the left side can be seen to
reflect off the metallic surface onto the table.
Prof Herron
Prof Herron:
First rendering of motion-blur. For a frame in a film, the motion
blur should be evenly distributed across its full path of travel.
However, that makes for boring smeared-out still images, so here the
spheres spend most of their time at the endpoint of their travel, with
just a small amount of time distributed along their path.
Prof Herron
Prof Herron:
An early test of image-based-lighting. The sun is to the right (over)
lighting the sphere. The warm lighting on the lower left of the
sphere is supplied by a mountainside of rocks brightly lit by the sun.
Some of the blue sky above the sphere and behind the viewpoint can be
seen reflecting in the sphere. Several wood-colored bright spots on
the right can be seen to be lit by indirect illumination reflecting
off sun-facing surfaces.
Timothy Crossley
Timothy Crossley:
These images demonstrate the depth of field effect with two different focal planes: one in front focused on the blue box, and one behind focused on the pink box. In both cases, the initial rays are perturbed by a random distance up to 0.04 world units away in the camera's XY plane. I believe these were around 500-600 passes
Timothy Crossley
Timothy Crossley:
These images demonstrate the depth of field effect with two different focal planes: one in front focused on the blue box, and one behind focused on the pink box. In both cases, the initial rays are perturbed by a random distance up to 0.04 world units away in the camera's XY plane. I believe these were around 500-600 passes
Timothy Crossley
Timothy Crossley:
Playing around with CSG shapes. The cones on the side are much more complex than they look: each one is made up of a cone, 2 planes, and 2 spheres. This scene took a long time to render because of the complexity of all the CSG objects.
Timothy Crossley
Timothy Crossley:
Playing around with CSG shapes. The cones on the side are much more complex than they look: each one is made up of a cone, 2 planes, and 2 spheres. This scene took a long time to render because of the complexity of all the CSG objects.
Timothy Crossley
Timothy Crossley:
Playing around with CSG shapes. The cones on the side are much more complex than they look: each one is made up of a cone, 2 planes, and 2 spheres. This scene took a long time to render because of the complexity of all the CSG objects.
Timothy Crossley
Timothy Crossley:
A stereoscopic 3D image: cross your eyes and overlap the images to view. 3046 passes, I let this one run for a while because I didn't want noise getting in the way of the 3D effect. The 3D effect is done by tracing out 2 images, with the camera displaced a certain distance on the camera X axis. For this scene the two eyes were 0.4 world units apart.
Timothy Crossley
Timothy Crossley:
The indirect lighting scene, with a modified ground color to approximately match the wood texture used in the reference image. 1000 passes. Unsure where the lighter areas around the base of the walls are coming from.
RayTracing/2013 Spring
Adam Parker
Adam Parker:
The scene hallofcsg.scn demonstrates all CSG shapes and some operations.
Adam Parker
Adam Parker:
The scene hallofcsg.scn demonstrates all CSG shapes and some operations.
Alexander Ciccarelli
Alexander Ciccarelli:
This image features a mesh of infinite tori intersecting a perpendicular mesh of infinite
tori. You can see how the infinite plane calculation done with sphere tracing handles
objects larger than the unit box it replecates here. Each mesh has a different noise
texture applied; the blue ones are a really muddy looking sky, and the green ones are
a marble texture scaled to the point where it should look like a structure carved from
jade. Should. You can see some nice depth of field effect in this image as well.
Alexander Ciccarelli
Alexander Ciccarelli:
This picture shows off some simple transmissive spheres with various colors;
the colors are calculated using Beer's Law, although it's hard to tell that
light is being absorbed in this scene. The backdrop planes are sphere-traced,
but the spheres are traced using usual parametric calculations.
Alexander Ciccarelli
Alexander Ciccarelli:
Technically, there are only two objects here: a plane and a box. The plane is easy enough
to figure out, but the box has had horrible things done to it with sphere tracing
calculations. It starts out as a unit cube, which I scaled down to around half that size
and elongated along the z-axis. Then I gave the object a twist along the z axis, and
put it in a special distance calculation which returns the distance from an infinite plane
of evenly spaced objects (a unit grid). That infinite plane of green french fries was then
rotated, resulting in the whatever it is we're looking at here. Mmm.
Alexander Ciccarelli
Alexander Ciccarelli:
This scene is fully sphere-traced, save for the green glass part of the table. You can see
a few very blown-up textures in this image; the marble on the backdrop planes and the
poorly scaled "wood" on the table edge. It was a work in progress. The table edge and
spherical sculpture are both constructive solid geometry based, albeit simple differences
of objects (and some scales and translates).
Alexander Ciccarelli
Alexander Ciccarelli:
This image displays Beer's Law fairly well. Each cube has the same material properties,
the difference between colors is caused by the distance light travels through the object
to get out to the other side. This scene is completely sphere traced, and each cube
has different transforms applied to it (some scaling and translations), as well as
a different object subtracted from the center of each cube. The astute observer might
notice a bit of depth of field in this image (the focal plane is pretty much aligned with
the center box with the diamond shape in it).
Alexander Ciccarelli
Alexander Ciccarelli:
First of all, THERE... ARE... FOUR... LIGHTS!!! There really are; each of the cone-shades
has a different colored light in (red on the right, green on top and blue to the left).
Every shape but the sphere inside of the cage was made through various constructive solid
geometry operations done through sphere tracing. The cones are obvious cones with cones
cut out of them, and the central object is one of those CSG objects you see everywhere...
what is it supposed to be? Who knows, it just looks cool. The central sphere has a sky
texture applied to it, but it's nearly impossible to tell.
Alexander Smith
Alexander Smith:
I took the Cornell Spheres scene and changed the reflective ball on the left to use the Ashikhmin Shirley BRDF.
The sphere on the right I applied Sky colored Perlin Noise and Beer's Law to get a very murky and cloudy sphere.
Chad Zamzow
Chad Zamzow:
backdof-5000 (5000 passes):
Depth of field demon with the focus distance being at the back of the scene.
Chad Zamzow
Chad Zamzow:
frontdof-5000 (5000 passes):
Depth of field demo with the focus distance being at the front of the scene.
Chad Zamzow
Chad Zamzow:
perlinblur-30000 (30000 passes):
Plerin noise and motion blur demo with a sky box, a wood box, and a blur sphere.
Chia Wei Wu
Chia Wei Wu:
CSG object using Ray Marching
Chia Wei Wu
Chia Wei Wu:
CSG object using Ray Marching
Chia Wei Wu
Chia Wei Wu:
An infinite plane of spheres using Ray Marching
Chia Wei Wu
Chia Wei Wu:
An infinite plane of spheres using Ray Marching(different camera angel)
Chia Wei Wu
Chia Wei Wu:
Motion Blur (Motion in X axis)
Chia Wei Wu
Chia Wei Wu:
Motion Blur (Motion in Y axis)
Chia Wei Wu
Chia Wei Wu:
Depth of Field with camera focus on the back pillar
Chia Wei Wu
Chia Wei Wu:
Depth of Field with camera focus on the center sphere
Chia Wei Wu
Chia Wei Wu:
Depth of Field with camera focus on the front pillar
Colin Campbell
Colin Campbell:
An example of CSG objects formed using ray marching distance estimates along with Union/Intersection/Difference operations.
Colin Campbell
Colin Campbell:
This image uses ray marching distance estimates along with modulus division to replicate an object 'infinitely'.
Colin Campbell
Colin Campbell:
A rendering of a Sierpinski tetrahedra fractal with the number of iterations set to 9. This also uses a ray marching technique with distance estimates to trace rays into the fractal.
Colin Campbell
Colin Campbell:
Curtis Laboiteaux
Curtis Laboiteaux:
Depth of field can be noticed on the rim of the cylinder podium, as well as in the blurriness of the background.
Exposure control allowed me to light my entire scene comfortably with a single light source.
There are also two BRDF's in play in addition to the typical Phong.
The cylinders and spheres are rendered with Ashikhmin Shirley, displaying various levels of anisotropy as they climb the podiums. The box podiums and background triangle elements are rendered with Oren Nayar, allowing for a very flat diffuse, non reflective shaded object to contrast the reflectivity of the diamonds, spheres, and cylinders.
Juan Cifuentes
Juan Cifuentes:
For the floor and bases of the pillars a simple box was used applying to
each different scale and translate values.
Each pillar was created using a cylinder intersected with 2 planes, and
placed with translations.
Finally for the center shape, from a box we substract 3 perpendicular cylinders
using rotations. The resulting shape was intersected eith a sphere. Finally it
was rotated, scaled and translated to the center of the scene.
Juan Cifuentes
Juan Cifuentes:
The general scene was created the same way as the previous scenes.
For the central CSG shape a torus was created, and from it I substracted
the union of 4 thinner torus: 1 colliding with the top, 1 colliding with
the bottom, 1 colliding with the outer side and 1 colliding with the inner
part. This caused the identations on the torus. Finally for better view of
the previous part I removed a slice of the shape by substracting the
intersection of 2 planes.
Juan Cifuentes
Juan Cifuentes:
A Cornell Box was created using planes.
3 Spheres were placed at the scene at different depths to show the effect.
To focus the sphere at the back, the distance from the camera to the that
sphere was used as focal distance.(No_Depth_of_Field_*.ppm)
Juan Cifuentes
Juan Cifuentes:
The general scene was created the same way as the previous scenes.
At the center a sphere is placed appling the motion blur transform.
There are two renders for this scene:
- - Motion_Blur_Sphere_Big_Move_5850.ppm
- - Motion_Blur_Sphere_Small_Move_13900.ppm
The difference is in the distance between the start and end point of
the effect. The first one has more separation causing a more foggy
effect than the second one with a more constrained range of movement.
Juan Cifuentes
Juan Cifuentes:
The general scene was created the same way as the previous scenes.
At the center a sphere is placed appling the motion blur transform.
There are two renders for this scene:
- - Motion_Blur_Sphere_Big_Move_5850.ppm
- - Motion_Blur_Sphere_Small_Move_13900.ppm
The difference is in the distance between the start and end point of
the effect. The first one has more separation causing a more foggy
effect than the second one with a more constrained range of movement.
Kye Bae
Kye Bae:
CSG the extremely easy way: four cubes resulting from application of differences against four boxes and moving it further away from the eye (ray marching).
Kye Bae
Kye Bae:
An infinite array of spheres based on applying ray marching/distance estimate and depth-of-field.
Kye Bae
Kye Bae:
An infinite array of spheres based on applying ray marching/distance estimate and depth-of-field.
Kye Bae
Kye Bae:
Mandlebulb implementation based on ray marching/distance estimate found
here.
Myles Beaudoin
Myles Beaudoin:
For this scene I used depth of field, motion blur, and Perlin noise texturing. For the depth of field, I used
a medium sized square aperture to give some depth around the focal plane, which is located about through the
center of the red/black sphere. For motion blur, I gave objects an acceleration and a velocity, picked random
time values between zero and some max to render at, and averaged the results. For the Perlin noise, I implemented
functions for both a wood grain pattern and a marble pattern. This scene was rendered with 6200 passes overnight.
Nima Olang
Nima Olang:
This scene demonstrates an infinite field of objects as well as
constructive solid geometry. The icosahedrons are constructed of
the intersection of 20 different planes, which create an enclosed
volume. For the infinite field of objects, when a point is taken
to be used in ray marching, only the decimal of the x- and y-coordinates
is taken, so that the object collided with is repeated at every
unit on the planes specified (in this case, along the xy-plane).
This image is 400x300 pixels and was rendered in 500 passes in 1 hour.
Nima Olang
Nima Olang:
This scene applies motion blur to an infinite field of dodecahedrons.
After creating the infinite field, a random translation between 0 and
0.1, half of the inradius of the dodecahedron, was applied. Because of
this, each of the shapes appears to be in motion.
This image is 400x300 pixels and was rendered in 1400 passes in 30 minutes.
Nima Olang
Nima Olang:
A smaller reflective sphere was added at the front of the Cornell Spheres scene
in order to demonstrate depth-of-field. For the implementation, I used a focal
distance to focus a certain distance away from the camera's position and used
an aperture radius larger than the focal distance to emphasize the focus difference
between the small sphere which should be in focus and the larger spheres which
should be out of focus.
This image is 400x300 pixels and was rendered in 2500 passes in 1 hour.
Prof Herron
Prof Herron:
Cutting a torus with a plane can produce perfect circles if the plane is chosen carefully. There are four families of such circles. Planes containing the axis of the torus produce a family of paired small circles, and planes perpendicular to the axis produce another family of paired larger circles. The other two families of circles, called Villarceau circles, are produced by cutting planes at a very specific angle. Four member of one of those families are shown here as the center of the steel like bands. (The other family winds around the torus in the opposite direction.)
Except for the floor, this is produced completely with CSG operations on (seven) tori.
Prof Herron
Prof Herron:
This is an attempt to show the two Villarceau circles produced by a properly aligned cutting plane through a torus. One of the circles is outlined by a metallic looking band while the other is not.
Prof Herron
Prof Herron:
A test of beer's law, refraction and caustics. Beer's law allows for the calculation of light that survives passage thorough an absorbing medium. It can be seen here as darker (and greener) light passing out of the thicker spheres. Caustics are the concentrations of green light shining through the spheres and focused on the floor. They are still grainy, even after more than 150,000 passes. A successor algorithm to path tracing will be needed to smooth them out.
Prof Herron
Prof Herron:
Everyone's favorite CSG object sitting upon, reflecting in, and casting shadows onto, a slightly polished wood table that seems to have lost its legs.
Prof Herron
Prof Herron:
Everyone's favorite CSG object, this time transparent, and casting (very grainy for now) caustics onto the floor.
Prof Herron
Prof Herron:
Playing with indirect lighting. The scene is lit with a single (big bright) light straight above the building. The only light in the building's interior is indirect light reflecting from the ground outside the building. As expected things get darker near the center of the building, and then lighter again near the other entrance.
Prof Herron
Prof Herron:
A infinite family of torus-knots. The fat brass-like tubes may hide the fact that the center of tubes lie on an (invisible) torus, winding around the torus both the long-way-around and the short-way-around. Each knot lies on a grid point (p,q) where p specifies the number of wraps the long way around the torus, and q specifies the number of winds the short way around the torus. If p and q are coprime (a GCD of 1) then the object is a true knot -- composed of one strand. If p and q are not coprime, then it's called a LINK and is composed of GCD(p,q) interlocked strands.
The closest knot, at the bottom center of the image, is the (2,2) knot composed of two interlocked strands. Diagonally behind it in either direction are the (2,3)-knot, and the (3,2)-knot. These are both versions of the trefoil knot -- the common overhand knot.
The distance bound function for the ray-marching algorithm works well on the denser knots, but shows some errors on the closer, less dense knots.
Prof Herron
Prof Herron:
This was a test that the ray-marching modulus operator is as robust as one might hope. A single torus is repeated in an infinite lattice, and even though the torus flows outside its unit cell, the modulus operator works perfectly. Three such infinite lattices are interlaced without intersection.
Ralph Dsouza
Ralph Dsouza:
The base scene used is the Cornell scene. I rendered two CSG objects in this scene using ray-marching.
The first object is a die. To produce this object, I first took an intersection between a box and a sphere.
This produced the body of the die.
Next, I carried out the difference operation between the body and five small spheres. This produces the pips
on the surface of the die body.
The second object is a cage that I produced by creating another die body, and subtracting three cylinders from it.
There is a single light source in this scene and it is positioned within the cage.
Rodrigo Duenez Hurtado
Rodrigo Duenez Hurtado:
In this picture I wanted to show the capabilities of a BRDF other than the traditional, old fashioned Phong. Ashihkmin-Shirley's main appeal is anisotropy. Using linear tangent vectors on the objects I was able to create these effects which are specially noticeable in their specular reflections. All objects have slightly different parameters that show how the specular lobe can get stretched and how rough the material can be (The three spheres in the front, for example, go from a very rough material to a very polished one. You can also see how the middle sphere has a perfectly circular specular reflection, while the one on its right has a nice stretched reflection)
Depth of field is also present on this picture. The focus plane is located approximately at the middle cylinder.
All objects, except the two big spheres, have some kind of Perlin noise: Wood, marble and sky. I used sky for the middle cylinder trying to achieve a different kind of stone-like effect, perhaps like jade.
I used the noise as a grayscale multiplier of the object's diffuse color.
Finally, exposure control. This scene has a lone -not too bright- light on top. The picture therefore turns out very dark by itself as you can see on the first picture. The second picture is the same scene, with the exact same light, just with exposure control added. The benefit of using exposure control instead of manually adjusting the light is that we don't have to render all the passes once again in order to generate a new picture since it's a post-rendering effect.
The scene took 35,000 passes.
Rodrigo Duenez Hurtado
Rodrigo Duenez Hurtado:
In this picture I wanted to show the capabilities of a BRDF other than the traditional, old fashioned Phong. Ashihkmin-Shirley's main appeal is anisotropy. Using linear tangent vectors on the objects I was able to create these effects which are specially noticeable in their specular reflections. All objects have slightly different parameters that show how the specular lobe can get stretched and how rough the material can be (The three spheres in the front, for example, go from a very rough material to a very polished one. You can also see how the middle sphere has a perfectly circular specular reflection, while the one on its right has a nice stretched reflection)
Depth of field is also present on this picture. The focus plane is located approximately at the middle cylinder.
All objects, except the two big spheres, have some kind of Perlin noise: Wood, marble and sky. I used sky for the middle cylinder trying to achieve a different kind of stone-like effect, perhaps like jade.
I used the noise as a grayscale multiplier of the object's diffuse color.
Finally, exposure control. This scene has a lone -not too bright- light on top. The picture therefore turns out very dark by itself as you can see on the first picture. The second picture is the same scene, with the exact same light, just with exposure control added. The benefit of using exposure control instead of manually adjusting the light is that we don't have to render all the passes once again in order to generate a new picture since it's a post-rendering effect.
The scene took 35,000 passes.
Sanghyeok Hong
Sanghyeok Hong:
I implemented CSG for two model (one is for complex combination, the other is twisted column). And I implemented ambient occlusion
with distance field (for here, I add additional functionality for all shapes for calculating shortest distance, that's it! All that
needed to calculate AO is just shortest distance for all shape models) I made images for AO and result that not combined with AO and
the other image combined with AO. I also attached final image in .png form.
Sanghyeok Hong
Sanghyeok Hong:
I implemented CSG for two model (one is for complex combination, the other is twisted column). And I implemented ambient occlusion
with distance field (for here, I add additional functionality for all shapes for calculating shortest distance, that's it! All that
needed to calculate AO is just shortest distance for all shape models) I made images for AO and result that not combined with AO and
the other image combined with AO. I also attached final image in .png form.
Sanghyeok Hong
Sanghyeok Hong:
I implemented CSG for two model (one is for complex combination, the other is twisted column). And I implemented ambient occlusion
with distance field (for here, I add additional functionality for all shapes for calculating shortest distance, that's it! All that
needed to calculate AO is just shortest distance for all shape models) I made images for AO and result that not combined with AO and
the other image combined with AO. I also attached final image in .png form.
Santosh Shedbalkar
Santosh Shedbalkar:
I have only implemented the CSG in this project
Seon Chan
Seon Chan:
This image demonstrates real time shadows and reflections in a scene consisting of spheres. Shadows are achieved by casting a ray from the fragment to each light source to determine occlusion. Reflection is implemented as a recursive ray cast in the reflected direction. 3 small spheres in this image have phong lighting model applied and some reflectivity.
Seon Chan
Seon Chan:
This screenshot demonstrates rendering of a transmissive glass ball with high index of refraction. Glass ball in foreground distorts image of small red and blue ball in background, warping the image produced.
Seon Chan
Seon Chan:
Image demonstrates reflection in large reflective ball with a mirror-like surface. Relfection of the entire scene can be seen in the large ball. Note the transmissive distortion evident in the reflection of the glass ball seen in screenshot 2.
Seon Chan
Seon Chan
Click for video:
My project implements real time recursive ray tracing in a GLSL 2.0 shader.
Features:
- Recursive Ray Tracing
- Reflection and transmission achieved by recursively casting rays (4 levels)
- 2 BRDFs, Dielectric and Phong
- Only spheres supported (walls are really large spheres)
- Real time hard shadows
- Cast a ray to each light source to determine occlusion
Scene Details:
- 2 Light sources (small white ball in centre of room, player controls yellow ball which is also a yellow light source)
- 3 small balls with phong and reflectivity
- 2 Dielectric balls, one with high transmission, another with high reflectivity
Implementation:
- Raytracing performed in a GLSL shader
- Object data passed in as arrays of uniforms each frame
- Full screen quad drawn over screen
- UV coords of quad used to generate rays for screen
- 60 FPS on demo scene of a mid-range laptop
- Performance highly dependent on how many screen fragments are reflective/transmissive (non-reflective surfaces do not cast additional rays)
Sugu Lee
Sugu Lee:
For the object in the middle of the scene, I used a Julia Set. I ray-traced it using Sphere Tracing with Distance Estimate.
For the two spheres on the left and right side of the scene, I applied a Light Probe Texture on them.
Thomas McGrail
Thomas McGrail:
I implemented raymarching, constructive solid geometry, depth of field, and motion blur.
This shows a shape created using constructive solid geometry and a depth of field effect.
Thomas McGrail
Thomas McGrail:
I implemented raymarching, constructive solid geometry, depth of field, and motion blur.
This shows the same shape with motion blur applied.
This image also has the depth of field, but the effect is more subtle than the other image.
Vasileios Fezoulidis
Vasileios Fezoulidis:
I implemented Ray-Marching and CSG.
Supported shapes: Boxes, spheres, cylinders
The first image contains one oriented box and a sphere subtracted from the center of it and next to it is a sphere and 2 cylinders subtracted from it.
Vasileios Fezoulidis
Vasileios Fezoulidis:
I implemented Ray-Marching and CSG.
Supported shapes: Boxes, spheres, cylinders
The second image shows the intersectionf of a box and a sphere(rounded edges) and 2 spheres subtracted from it.
Zheng Dou
Zheng Dou
Click for video:
Recorded video are scenes running on my laptops which is not very powerful. Desktops with high-end graphics card can easily run it five times faster.
Implementation
- Path tracing is implemented on compute shader.
- Each thread on the GPU takes care of one ray traced out from the camera.
- Bounding Volume Hierarchy is used as acceleration structure.
- Traversing the BVH in the GPU is implemented as a loop with a static-sized stack.
- The algorithm that samples a random point on a triangle is implemented to support arbitrary shape of light source.
As an optimization, I first rasterize the scene and output the triangle ID to a render target, and when tracing the ray from the camera. It first test against this triangle which it has a greater chance to hit. Though this improves the speed a bit, it also causes some aliasing.
Zheng Dou
Zheng Dou
Click for video:
Recorded video are scenes running on my laptops which is not very powerful. Desktops with high-end graphics card can easily run it five times faster.
Implementation
- Path tracing is implemented on compute shader.
- Each thread on the GPU takes care of one ray traced out from the camera.
- Bounding Volume Hierarchy is used as acceleration structure.
- Traversing the BVH in the GPU is implemented as a loop with a static-sized stack.
- The algorithm that samples a random point on a triangle is implemented to support arbitrary shape of light source.
As an optimization, I first rasterize the scene and output the triangle ID to a render target, and when tracing the ray from the camera. It first test against this triangle which it has a greater chance to hit. Though this improves the speed a bit, it also causes some aliasing.
Zheng Dou
Zheng Dou
Click for video:
Recorded video are scenes running on my laptops which is not very powerful. Desktops with high-end graphics card can easily run it five times faster.
Implementation
- Path tracing is implemented on compute shader.
- Each thread on the GPU takes care of one ray traced out from the camera.
- Bounding Volume Hierarchy is used as acceleration structure.
- Traversing the BVH in the GPU is implemented as a loop with a static-sized stack.
- The algorithm that samples a random point on a triangle is implemented to support arbitrary shape of light source.
As an optimization, I first rasterize the scene and output the triangle ID to a render target, and when tracing the ray from the camera. It first test against this triangle which it has a greater chance to hit. Though this improves the speed a bit, it also causes some aliasing.
RayTracing/2012 Spring
Creighton Evans
Creighton Evans:
This project implements depth of field in a raytraced scene with kdops.
These scenes mimics the pt-CornellSpheres scene but instead of spheres,
kdops are used. The first scene has the focal plane near the forward
kdop, and the second scene has it near the further kdop
Creighton Evans
Creighton Evans:
This project implements depth of field in a raytraced scene with kdops.
These scenes mimics the pt-CornellSpheres scene but instead of spheres,
kdops are used. The first scene has the focal plane near the forward
kdop, and the second scene has it near the further kdop
Emory Myers
Emory Myers:
Rendered with the realtime raymarcher at around 3 fps, diffuse color only.
Emory Myers
Emory Myers:
Rendered with the realtime raymarcher at 60+ fps, diffuse and specular.
Emory Myers
Emory Myers:
60 passes on the distance-estimated mandlebulb in the path tracer.
Three light sources (red, green and blue) against a white mandlebulb.
Emory Myers
Emory Myers:
Illustrates the field of spheres primitive, with repetition of spheres
on the XZ axis.
Emory Myers
Emory Myers:
A simple fractal, another illustration of using distance estimated
shapes to achieve something which traditionally would be much more
expensive.
Emory Myers
Emory Myers:
Around 100 passes on a scene containing procedural textures (marble
and clouds) with a furry sphere. Everything is based on simplex
noise.
Emory Myers
Emory Myers
Click for video:
Shows realtime animation of objects using distance estimated
raymarching. The point to be estimated for the sphere is transformed
with an inverse translation matrix. The parameters of the torus are
varied.
Emory Myers
Emory Myers
Click for video:
Shows the rate at which frames are rendered (decidedly not realtime.)
Emory Myers
Emory Myers
Click for video:
Moving through the field of spheres (not sure what else to say!)
Emory Myers
Emory Myers
Click for video:
Shows realtime modification of the mandlebulb's power, hard shadows
and simple AO (based on the number of steps in the distance
estimator.) Employs jitter and a decreasing alpha for anti-aliasing.
Jason Nollan
Jason Nollan:
I built this model using Blender's sculpt tool, and textured it
using blenders texture paint mode. The scene has 1750714 objects
(mostly triangles), which are all contained within a hierarchical
bounding volume(AABB Tree). This helps speed up the rendering time
significantly, with the cost of about 30 seconds of tree building
time for this scene. The render time of this 2880x1800 image at
1000 passes was less than 8 hours on a 2 core x 2.53 Ghz cpu.
John Yednock
John Yednock:
Showing both depth-of-field and k-dop techniques in one image.
John Yednock
John Yednock:
Cornell spheres scene with two lights, a reflective octahedron, and a
reflective rhombic triacontahedron (30 sided die).
About the shape:
The k-dop is defined by: 3 values for center location, 1 value for scale
(distance of planes from center), and k * 3 values for the normals
corresponding to the k slabs that make up the k-dop. The ray to k-dop
intersection is the same as the ray to cube intersection except that
instead of 3 slabs, one must test against k slabs. The minimum value
for k is 3.
John Yednock
John Yednock:
One hundred purple spheres in a plane with the closer spheres in focus.
About the technique:
There are 3 parameters for the depth of field: lens distance from camera,
lens size (radius), and focal distance of the lens. A plane is created at
'lens distance' from the camera and another plane is created at 'focal
distance' from the lens plane ('lens distance' + 'focal distance' from
the camera). A ray is cast as usual from the camera through the focal plane.
Then, a random point is chosen around the intersection of that ray with the
lens plane within 'lens radius'. Now, a new ray is created originating from
this random point and passing through the point of intersection with the
original ray and the focal plane. This new ray is cast into the scene, and
the resulting color is stored in the image. After many passes, the blur
effect of depth of field will be apparent.
Jon Olson
Jon Olson:
3000x3000 image, 20 passes
This scene shows off the wonderful power of the simplest of path
tracing. It has radiance from the walls providing illumination for the
sides of the boxes in the center of the room. This high resolution
Stanford dragon is used to show off intricate light reflections from a
myriad of angles.
Jon Olson
Jon Olson:
1920x1080 pixels, 2000 passes
(requiring several months of rendering after the class had finished)
In this scene, some slight depth of field can be seen in the
background. In the foreground we can see a model of the Stanford
dragon. This model weighs in at 862k triangles. The ground on which it
sits is translucent with a diffuse transmission and participating
media applied.
Jon Olson
Jon Olson:
640x480 pixels, 100 passes
In this scene, depth of field was exaggerated to show proof of
implementation. The model is out of focus, while the columns behind it
are in focus. For this particular run, the model was switched to the
lower resolution version with only 11k triangles.
Michael Myers
Michael Myers:
In this image I took the standard cornell box scene and added one
reflective sphere and one transmissive sphere. I altered the
illumination rays so that they would refract through transmissive
objects; this provided the caustics seen in the image. I also
included motion blur for the cone in the ceter of the scene to
simulate it falling. This was done by sampling the object at
different positions during rendering.
Paolo Surricchio
Paolo Surricchio:
These images show volume lighting atmospheric effects around spheres
and capsules.
Paolo Surricchio
Paolo Surricchio:
These images show volume lighting atmospheric effects around spheres
and capsules.
Paolo Surricchio
Paolo Surricchio:
These images show volume lighting atmospheric effects around spheres
and capsules.
Prof Herron
Prof Herron:
Path tracing of a scene demonstrating indirect lighting, soft shadows,
and refraction among CSG (Constructive Solid Geometry) objects.
CSG: The tiles are infinite repetitions of a super-ellipsoid. The
lens is the intersection of two spheres (i.e., a "thin" lens). The
objects on the floor are the intersection of a sphere and cube minus
three cylinders.
Indirect lighting: All surfaces are indirectly lit by the diffuse
reflection off the brightly colored walls. The effect is subtle, but
easily visible if you look for it.
Refraction: The magnification produced by the lens is the result of
ray-tracing refractive rays. Notice also the room behind the viewer
is reflected in both surfaces of the lens, visible mostly as radiating
lines of tiles.
Soft shadows: Objects cast shadows with hard or soft edges as
appropriate for the distance to the receiving surface.
Prof Herron
Prof Herron:
Same scene as previous image, with the addition of a large amount of
specular reflection applied to the walls and floor. Careful
examination will show that all objects in the scene are lit by both
direct reflection and indirect reflection from the colored walls.
Prof Herron
Prof Herron:
The Mandelbulb fractal -- a 3D version of the famous Mandelbrot set;
see http://www.skytopia.com/project/fractal/mandelbulb.html for
details. The Mandelbulb and the ray marching were brought to the
attention of the class by student Emory Myers (who has his own images
of the object).
My lighting does not (yet) match the quality from the website.
Prof Herron
Prof Herron:
A high resolution long-running rendering. (Over 1000 path-tracing
passes over two full nights.)
Prof Herron
Prof Herron:
A closeup of the silhouette of one of the bumps of the Mandelbulb
fractal. Many smaller copies of this 'broccoli forest' can be seen in
the foreground.
Prof Herron
Prof Herron:
A closeup of the Mandelbulb.
Prof Herron
Prof Herron:
A cross-eyed stereo closeup of the Mandelbulb. Sit square in front of
the image, cross your eyes to bring the two images together, and relax
until your eyes focus, and enjoy a 3D image.
The holes in the beehive-like shape reveal lots of intriguing
complexity going on behind the front surface. That's the nature of
fractals.
Prof Herron
Prof Herron:
Another cross-eyed stereo image of the Mandelbulb, this time of the
broccoli forest in silhouette and its complex 'foamy' foreground.
Ryan Scheppler
Ryan Scheppler:
Cone shapes, and a better caustic lighting. What I did was extend
the shadow checking to more or less do a short ray trace of its own to
see if it hits a light source, as well as add some other colors that
could possibly get through any transmission or reflection.
Ryan Scheppler
Ryan Scheppler:
Cone shapes, and a better caustic lighting. What I did was extend
the shadow checking to more or less do a short ray trace of its own to
see if it hits a light source, as well as add some other colors that
could possibly get through any transmission or reflection.
Stephanie Cheng
Stephanie Cheng:
I implemented CSG shapes supporting unions, intersections, and
subtractions of all current shapes. I also added a new type of camera
that takes parameters for the focal length, the fstop (for aperature),
and the exposure length. I used these parameters to calculate both
depth of field and motion blur. For motion blur I also added a
velocity parameter to every shape.
For efficiency, I implemented a KD-tree and also added Russian
Roulette to randomly kill deep depth traversals.
My final scene file displays all of the above implementations. I have
two versions of the same final scene. One is looking straight into the
room and the other is a lower shot with the camera closer to the
die. I moved the objects around somewhat in the two different shots
but the objects themselves are the same.
There are three lights in the room. The right wall is red and the wall
behind the camera is blue. The far wall and the left wall are
reflective mirrors. In the front left there is a reflective
blue-tinted sphere that is in motion. In focus in the front is a
perfectly reflective CSG die constructed by intersecting a sphere and
box. In the back left is the classic CSG shape, a sphere and box
intersecting with 3 cylinders subtracted. In the back right is a
transmissive CSG that is a sphere subtracted from a sphere. Behind
that is a diffuse yellow box to show the transmission of the CSG in
front of it.
The angled image took 25 hours to run 5000 passes at 1920x1080 on an
Intel i7 2600K.
The straight shot took 22 hours to run 2150 passes at 1920x1080 on an
AMD FX6100.
Stephanie Cheng
Stephanie Cheng:
I implemented CSG shapes supporting unions, intersections, and
subtractions of all current shapes. I also added a new type of camera
that takes parameters for the focal length, the fstop (for aperature),
and the exposure length. I used these parameters to calculate both
depth of field and motion blur. For motion blur I also added a
velocity parameter to every shape.
For efficiency, I implemented a KD-tree and also added Russian
Roulette to randomly kill deep depth traversals.
My final scene file displays all of the above implementations. I have
two versions of the same final scene. One is looking straight into the
room and the other is a lower shot with the camera closer to the
die. I moved the objects around somewhat in the two different shots
but the objects themselves are the same.
There are three lights in the room. The right wall is red and the wall
behind the camera is blue. The far wall and the left wall are
reflective mirrors. In the front left there is a reflective
blue-tinted sphere that is in motion. In focus in the front is a
perfectly reflective CSG die constructed by intersecting a sphere and
box. In the back left is the classic CSG shape, a sphere and box
intersecting with 3 cylinders subtracted. In the back right is a
transmissive CSG that is a sphere subtracted from a sphere. Behind
that is a diffuse yellow box to show the transmission of the CSG in
front of it.
The angled image took 25 hours to run 5000 passes at 1920x1080 on an
Intel i7 2600K.
The straight shot took 22 hours to run 2150 passes at 1920x1080 on an
AMD FX6100.
Stephanie Cheng
Stephanie Cheng:
I implemented CSG shapes supporting unions, intersections, and
subtractions of all current shapes. I also added a new type of camera
that takes parameters for the focal length, the fstop (for aperature),
and the exposure length. I used these parameters to calculate both
depth of field and motion blur. For motion blur I also added a
velocity parameter to every shape.
For efficiency, I implemented a KD-tree and also added Russian
Roulette to randomly kill deep depth traversals.
My final scene file displays all of the above implementations. I have
two versions of the same final scene. One is looking straight into the
room and the other is a lower shot with the camera closer to the
die. I moved the objects around somewhat in the two different shots
but the objects themselves are the same.
There are three lights in the room. The right wall is red and the wall
behind the camera is blue. The far wall and the left wall are
reflective mirrors. In the front left there is a reflective
blue-tinted sphere that is in motion. In focus in the front is a
perfectly reflective CSG die constructed by intersecting a sphere and
box. In the back left is the classic CSG shape, a sphere and box
intersecting with 3 cylinders subtracted. In the back right is a
transmissive CSG that is a sphere subtracted from a sphere. Behind
that is a diffuse yellow box to show the transmission of the CSG in
front of it.
The angled image took 25 hours to run 5000 passes at 1920x1080 on an
Intel i7 2600K.
The straight shot took 22 hours to run 2150 passes at 1920x1080 on an
AMD FX6100.
Stephanie Cheng
Stephanie Cheng:
I implemented CSG shapes supporting unions, intersections, and
subtractions of all current shapes. I also added a new type of camera
that takes parameters for the focal length, the fstop (for aperature),
and the exposure length. I used these parameters to calculate both
depth of field and motion blur. For motion blur I also added a
velocity parameter to every shape.
For efficiency, I implemented a KD-tree and also added Russian
Roulette to randomly kill deep depth traversals.
My final scene file displays all of the above implementations. I have
two versions of the same final scene. One is looking straight into the
room and the other is a lower shot with the camera closer to the
die. I moved the objects around somewhat in the two different shots
but the objects themselves are the same.
There are three lights in the room. The right wall is red and the wall
behind the camera is blue. The far wall and the left wall are
reflective mirrors. In the front left there is a reflective
blue-tinted sphere that is in motion. In focus in the front is a
perfectly reflective CSG die constructed by intersecting a sphere and
box. In the back left is the classic CSG shape, a sphere and box
intersecting with 3 cylinders subtracted. In the back right is a
transmissive CSG that is a sphere subtracted from a sphere. Behind
that is a diffuse yellow box to show the transmission of the CSG in
front of it.
The angled image took 25 hours to run 5000 passes at 1920x1080 on an
Intel i7 2600K.
The straight shot took 22 hours to run 2150 passes at 1920x1080 on an
AMD FX6100.