Skip to content

Latest commit

 

History

History
37 lines (33 loc) · 3.38 KB

README.md

File metadata and controls

37 lines (33 loc) · 3.38 KB

Distributed Ray Tracing Module

This is the code base for my Final Year Computer Systems Project at the University of Limerick. The project is written entirely in the Julia programming language.

The goal of the project was to create a Julia module that allows users to create and render simple, static scenes using the ray tracing rendering technique, and to provide the option of performing rendering using a distributed computing cluster.

An overview of the functionality contained in the final version of the project is shown in the list below. A more detailed description of this functionality is given in the included report, and the Wiki section.

  • adding simple shapes (cuboids & spheres) to a scene
  • specifying the transparency, reflectivity, and refractive indices of shapes
  • adding a light source to a scene, and specifiying its brightness
  • adding a positionable camera to a scene
  • specifying a background colour
  • executing the rendering function concurrently
  • distributing the execution of the rendering function
  • simulation of total internal reflection and the Fresnel effect, using the Schlick approximation

Using The Module

Both the included report and the Wiki detail how to setup your Julia environment to use the module. They also provide a guide on how to use the module to create and render scenes. However, the information contained in the Wiki is more detailed.

Corrections To The Report

Section 4.4.1 (p.33-36) details how to scale the size of the viewing plane to match the scene a user wishes to render. It also details how to determine the position of the plane in the scene coordinate system. These processes invlove the use of the tangent trigonometric function. This function involves using the sides adjacent and opposite the relevant angle of a right-angle triangle. In Section 4.4.1, I mistakenly claim it uses the hypotenuse, rather than the adjacent side. This means that Figure 4.9 is also incorrect.

On page 62, in Section 4.9, a mistake in the implementation of the Phong Reflection Model is mentioned. This mistake is in the version of the module that was submitted for grading. I was unable to rectify the error before the project deadline. However, the version of the project that is present in this repository has had this error rectified.

Grade

The final grade received for the project and report was an A1, the highest possible.