Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
COMP 5812M
ASSIGNMENT 2: Recursive Raytracing [50 marks]
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.
PENALTIES:
Poorly structured or badly commented code may be penalised by up to 25% of the marks available.
Poorly formatted output files may also be penalised by up to a further 25% of the marks available.
Code without a readme or makefile may be penalised by up to 10% of the marks available.
Code that does not compile properly will be assigned a mark of 0, but I will usually give the student
one chance to correct this.