Computer Laboratory

Further Graphics (Michaelmas 2018)

Click here to check the course website.

The supervision work for this course consists of a mixture of written and practical exercises.

Please hand in your work by 5pm (17:00) on the day before the supervision. Partial work is fine as long as you made an attempt.

Supervision 1

Written Questions

  1. Please have a go at exercise 1, 2, 3 and 5 from the exercise sheet from the course site
  2. Parts (b), (c), (d) and (e) from Year 2013 Paper 4 Question 3

Practical Exercises

  1. To refresh your glsl knowledge a bit, write a shadertoy shader which renders a Voronoi diagram based on a constant array of co-ordinates and colours. Please send me the shader code when finished.

    You should use a number of random co-ordinates and colours (let's say at least 12). E.g.

    const int NUMBER_OF_POINTS = 12;
    const vec2[NUMBER_OF_POINTS] points = vec2[](vec2(0.f,0.1f), vec2(0.2f,0.3f).....
  2. (optional): make the points in Exercise 1. float in random directions with time. "random" is a bit hard to get in glsl, so you might want to look into some clever noise or hash solution.

Supervision 2

Written Questions

  1. Please have a go at exercise 4 from the first exercise sheet from the course site
  2. All the exercises from the second exercise sheet on the course site
  3. All of Year 2015 Paper 7 Question 1

Practical Exercises

  1. Write a Java program which renders a rotating unit blue cube on screen using OpenGL / LWJGL. You can use any previous tick as a starting point, but make sure you use the proper OpenGL path, not Ray Tracing.
  2. Modify the shader to render in wireframe mode with a border thickness of approx. 0.05.
  3. Add procedural texturing to map a brick pattern onto the mesh.
  4. (recommended) After some event (keyboard, mouse or timer), subdivide the mesh using the Butterfly scheme (see written exercises). This should give you another triagle soup with a new vertex along each old edge.
  5. (optional) Add Phong shading
  6. (optional) Add normal mapping
  7. (optional) Do some reading on Parallax Occlusion Mapping (POM), e.g. this article on Gamedev How is POM better than normal mapping? How does it relate to ray tracing? Try to add this technique to your renderer.