Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit


COMP 5812M: Rendering

2020-2021

 

ASSIGNMENT 2: Recursive Raytracing

 

In this assignment, you will raytrace your own version of an image into a second widget, completely abandoning OpenGL and parallel projection.

 

As in Assignment 1, you should render to a separate QImage which will be displayed in the interface. For a raytracer, it is of particular value to render asynchronously and show the incremental improvement of the image, as in the last assignment, but this is up to you.

 

It is strongly recommended that you start off by identifying a suitable set of intermediate steps so that you can build your raytracer in stages. If you are uncertain of how to do so, please consult the instructor.

 

You will probably find that you need to change the checkboxes in the interface, or add buttons to accommodate the stages you have chosen.

 

You may choose to multi-thread your raytracer if you wish, but it is not required.  Note also that modern implementations can choose to perform all of the computations in fragment shaders, but we will not do so.

 

Note that the first 25 marks are relatively straightforward and (except for the shadows) should produce the same images as the previous assignment.  For these stages, you should not need to modify the input files at all.

 

The rest of the marks involve upgrading to a full recursive raytracer, which may require modifying the input. Make sure you document any changes to the input format used.

 

You should construct the following data files and hand them in, documenting any changes you make to the input file format:

 

i) A textured triangle with a ground plane that uses a different texture

ii) The Cornell box

iii) A scene of your own choosing for showing off your raytracer

 

Marking:

[5 marks] Geometric Intersections (Rasterisation)

[5 marks] Barycentric Interpolation

[5 marks] Blinn-Phong Shading

[5 marks] Texture Lookup

[5 marks] Shadow Rays

[5 marks] Full floating-point accuracy and gamma correction

[5 marks] Custom models

[5 marks] Impulse reflection & refraction

[5 marks] Monte Carlo recursive scattering

[5 marks] Area light sources

 

You may use any code provided for COMP 5812M (but not COMP 5821M) as the basis for your submission, or may write your own code. Other than Qt and the code from COMP 5812M, ALL code must be written by you personally.

 

The code MUST run on the University's Linux system - i.e. on feng-linux.leeds.ac.uk or feng-linux.leeds.ac.uk/gpu.  You may implement on your own machine, but it will be tested on ours.