CS 6620 Render with Ray Tracing

u1511054 (Gunasekhar Athuluri)

Course Project

Fall 2025

  • Project 1 - Ray Casting

  • Read the given XML scene file with the format explained below.
    Generate camera rays.
    Compute ray-sphere intersections for all spheres in the scene.
    If a ray doesn't hit any object, the corresponding pixel should be black.
    If a ray hits an object, the corresponding pixel should be white.
    Create a normalized z-buffer image.
  • Project 2 - Shading

  • Read material and light properties from the scene file.
    Render spheres with Blinn-Phong shading model using ray tracing.
    Render spheres with Phong shading model using ray tracing, using "phong" as the material "type" in the scene definition.
  • Project 3 - Shadows

  • Render one or more scenes showing ray traced shadows.
  • Project 4 - Reflections and Refractions

  • Render one or more scenes with objects that have reflections, and objects that have refractions.
    Incorporate Fresnel reflections that turn a part of reflections to refractions.
  • Project 5 - Triangle Meshes

  • Implement plane, triangle, and bounding box intersections. Render a scene that includes a triangle mesh with lighting and shading.
    Report render times with and without bounding box tests.
  • Project 6 - Acceleration Structures

  • Build BVH for all triangular mesh objects in the scene.
    Use BVH to avoid unnecessary triangle intersection computation.
    Report render times with and without BVH.
    Use BVH for the node structure as well.
    Implement different ways of building the BVH tree (such as using median splitting or Surface Area Heuristic) and compare the results.
  • Project 7 - Textures

  • Use an image as background.
    Use an image as reflection/refraction environment.
    Compute texture coordinates for objects and use textures in material shading.
    Implement MIP mapping and anisotropic filtering for efficient texture filtering.
    Trace ray differentials and use them for texture filtering.
  • Project 8 - Antialiasing

  • Implement antialiasing with multiple samples per pixel.
    Render multiple images of one or more scenes using antialiasing with different parameters and compare results.
    Implement adaptive antialiasing with a varying number of samples per pixel.
    Generate images that show the number of samples per pixel as pixel intensity, and report minimum and maximum number of samples per pixel.
    Implement reconstruction filtering.
  • Project 9 - Depth of Field & Motion Blur

  • Implement depth of field and render one or more images showing depth of field.
    Include images that show the number of samples per pixel as pixel intensity.
    Implement motion-blur for camera motion.
    Implement motion-blur for objects moving with a constant speed.
  • Project 10 - Soft Shadows and Glossy Surfaces

  • Implement soft shadows for area lights.
    Implement glossy reflections and refractions.
    Render images showing your results with different parameters.
    Implement area lights for shading.
    Use a Quasy Monte-Carlo sequence for glossy reflections/refractions as well as area lights.
  • Project 11 - Monte Carlo Global Illumination

  • Monte Carlo sampling for diffuse indirect illumination with a single bounce.
    Compare results with uniform hemisphere sampling and cosine-weighted importance sampling using the same sample count.
    Make sure to use gamma correction.
    Implement inverse square attenuation for point lights.
    Implement energy conserving Blinn material.
    Optional: You can implement indirect illumination as a new ambient light source type.
    Given a point and a surface normal, the Illuminate method of this light source generates Monte Carlo samples over the hemisphere and returns an average light intensity. This average is computed by weighting each sample using the geometry term.
    Multiple bounces for indirect illumination.
    Quasy Monte Carlo sampling for indirect illumination.
  • Project 12 - Photon Mapping

  • Implement photon mapping.
    Render a scene using only photon mapping for illumination (direct and indirect).
    Render a scene using photon mapping for indirect illumination only.
    Add a Monte Carlo sampling bounce for indirect illumination.
    Make sure that point lights have inverse square fall-off for direct illumination. Implement precomputed irradiances to achieve higher performance.
    Implement final gathering using importance sampling based on the photon map information.
  • Project 13 - Path Tracer

  • Implement path tracing with a large number of bounces using Russian roulette.
    Implement multiple importance sampling.
    Render one or more scenes with indirect illumination.
    Compare rendered images with different numbers of bounces.
    Make sure to use gamma correction.
  • Final Project - Teapot Rendering Competition

  • Design one or more original scenes, each including at least one Utah teapot, and render using the renderer you have developed in this course.
    Try to demonstrate the technical capabilities of your renderer with visually pleasing images/videos.
    Present your images/videos at the Teapot Rendering Competition. Collaborations with others for preparing the original scenes are permitted and encouraged.
    You can use any software for designing the scene, but the final results must be rendered using the renderer you have developed in this course.
    Post editing for images and videos are permitted, as long as they are limited to color corrections, cropping, and fading between scenes (for videos).