Advanced Computer Graphics II (CS6620)
In this course I implemented ray tracing algorithm for computer graphics. I dealt with topics like intersection methods for 3-D objects, including basic and advanced objects, lighting models, reflection and refraction. I also explored ways of dealing with surface, solid, and volume texturing, sampling theory and the aliasing problem. Special effects such as bump mapping, soft shadows, depth-of-field, motion-blur tracing were also implemented.
Assignment No1:
Download: Report
In this assignment, I Implemented classes for Point, Vector, Ray, Sphere, Color and Image. I implement all of the legal operators including arithmetic operators, dot product, cross product, vector length and vector normalize. For extra credit I implemented integrated image viewer. I used C++ for programming and glut for the graphical user interface.
Image generated for this assignment
Assignment No2:
Download: Report
In this assignment, I Implemented the basic architecture of your ray tracer, including base classes for Object, Primitive, Light, Material, Background, and Camera. I also Implemented a Scene class to hold pointers to the appropriate top-level objects. My ray tracer also supported sphere and plane primitives, basic lambertian shading (with shadows), and a pinhole camera model. For extra credit, I also implemented orthographic camera and extended my integrated image viewer.
Images generated for this assignment
Assignment No3:
Download: Report
In this assignment, I extended my ray tracer with the primitives like Box, Disk, Ring, and Triangle. For extra credit, I submitted a creative image, which was a show-off of the features of the ray tracer. . I used C++ for programming and glut for the graphical user interface.
Images generated for this assignment
Assignment No4:
Download: Report
In this assignment, I extended my ray tracer by adding a heightfield primitive and it used bilinear patches for each cell. For extra credit, I produce an image of my choice that shows off the features of my ray tracer. I used C++ for programming and glut for the graphical user interface.
Images generated for this assignment
Assignment No5:
Download: Report
In this assignment, I extended my ray tracer to include the materials like Phong shading, dielectrics, and metal. For extra credit I implemented an advanced shading model called Oren Nayar material model.
Images generated for this assignment
Assignment No6:
Download: Report
In this assignment, I used grids to Implement an acceleration structure for my ray tracer. As an output, I rendered triangle mesh data for the Stanford bunny using grid acceleration structure.
Images generated for this assignment
Assignment No7:
Download: Report
In this assignment, I Implemented texture mapping in my ray tracer. I also implemented a checkerboard texture (that toggles between two different materials), a noise-based marble texture, and an image-mapped texture. There was support for two different types of texture coordinates: linear (no transformations), and polar coordinates.
Images generated for this assignment
Assignment No8:
Download: Report
In this assignment, I Implemented jittered sampling and three filtering methods in my ray tracer. I implemented box, triangle and Gaussian filters.
Images generated for this assignment
Assignment No9:
Download: Report
In this assignment, I extended my ray tracer by adding instancing feature to my ray tracer. I created instance class and a matrix class to implement the feature well.
Images generated for this assignment
Assignment No10:
Download: Report
In this assignment, I extended my ray tracer by adding effects based on Monte Carlo ray tracing to my ray tracer. I implemented soft shadows for the purpose. For extra credit, I implemented depth of field features using C++.
Images generated for this assignment
Final Project: