Skip to content

CS-440-Fall-2021/Ray-tracer-engine-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open in Visual Studio Code

Project 2: Extending the Ray Tracer

CS 440 Computer Graphics, Fall 2021


Purpose

This project extends the ray tracer developed in Homework 3. It implements some of the ray tracing topics we have covered, namely:

  • ray casting
  • shading
  • anti-aliasing
  • light sources
  • acceleration structures

Background

For this homework, you must

  • have a working solution to Homework 3
  • know how to read and write object oriented code in C++
  • understand the concepts listed above
  • know how to compile a C++ project spanning multiple files in multiple directories
  • know vector arithmetic

The Problem Set

The problems are defined in proj2.tex which is to be compiled using a LaTeX compiler.

Time Requirement

Based on feedback from the last set of students that attempted this assignment, the number of hours that your team will require to complete this homework are as follows.

  • (min, max) : (37, 160)
  • (mean, median, st.dev.) : (83.6, 50, 47.1)

Last year's feedback

A summary of the feedback on this project from last year is included in old-feedback.md. It did not have the "Improvement" question. Similar comments have been merged and condensed and some comments specific to the offering have been redacted. Based on the feedback, a longer time period is assigned with ample time after final exams.

Submission

There are 2 parts to the submission.

1 Problem Set

Submit all code files in the raytracer folder. World.cpp should #include the relevant file from the build folder corresponding to the high-res version of your showcase scene. Other World::build implementations (e.g. for the low-res version, or used to generate other pictures on your web page) should be included in the build folder. Compiling and running raytracer.cpp in the raytracer folder should generate the high-res image.

Include a website folder that includes your website, either as HTML, markdown, or a URL. The submitted web page must be complete, i.e. all the required assets are submitted and no links are broken.

This is a team submission on GitHub and contributes to your Submission Score.

Deadline: 2359h on Sunday, 19 December

2 Feedback Form

You will provide feedback on your buddies and on the project. The feedback form will be available on LMS with further instructions and will be due at the same time as the problem set.

This is an individual submission on LMS and contributes to your individual Team Factor which is 1 by default and penalized for non-submission of the feedback or non-participation in the team as assessed through peer feedback or GitHub contribution.

Deadline: 2359h on Sunday, 19 December

Grading

Your submission will be graded as per the criteria specified in the accompanying file, rubric.xlsx. This will contribute to your Submission Score.

Your individual score in this homework is the product of your Submission Score and Team Factor.

Resources

Please find useful resources for the project on the Project 2 Resources page on LMS.

Fun Stuff

The engine can be extended ad infinitum. Below are some recommendations but these need not limit you.

  • adding interesting materials
  • adding texturing
  • adding optical effects
  • adding a variety of acceleration structures
  • implementing parallelization
  • adding bump or normal mapping
  • adding sophisticated ray tracers

Discussion

There is a lot to handle and there are bound to be confusions and queries. Please utilize the following avenues.

There is a lot to handle and there are bound to be confusions and queries. Please share them using the following avenues.

  • discuss with your buddies,
  • the corresponding discussion thread on LMS,
  • discuss with your peers,
  • consult with course staff.

Tips

  • Do not include identifying information in your submission.
  • Only include images which you are comfortable sharing publicly.
  • There is no late submission. Submit whatever you have by the deadline.
  • viel Spaß!

Compile Instructions

Make sure g++ is added to your PATH. You can check by typing g++ --version in your terminal and hitting enter. If you see the version number, all is well. Otherwise, please config your environment variables before proceeding any further.

You can also swap the build function using the given world:build functions in build folder and further tweak the parameters using SimulationParameters.hpp

Change your current working directory to raytracer and run the following:

g++ raytracer.cpp "cameras/Parallel.cpp" "cameras/Perspective.cpp" "geometry/Sphere.cpp" "geometry/Triangle.cpp" "geometry/Plane.cpp" "geometry/Geometry.cpp" "materials/Cosine.cpp" "samplers/Sampler.cpp" "samplers/Simple.cpp" "utilities/BBox.cpp" "utilities/helpers.cpp" "utilities/Image.cpp" "utilities/Point3D.cpp" "utilities/Vector3D.cpp" "utilities/Ray.cpp" "utilities/RGBColor.cpp" "utilities/ShadeInfo.cpp" "world/World.cpp" "world/ViewPlane.cpp" "lenses/Lens.cpp" "lights/Light.cpp" "acceleration/Accelerator.cpp" "materials/Wall.cpp" "materials/Matte.cpp" "materials/Glossy.cpp" -o main.exe

Finally, execute main.exe to run the raytracer.

Showcase Files

The following link showcases all our work:

https://owais2399.github.io/pipeline-raytracer/

About

p2-p2-pipeline created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •