Introduction to Graphics (Michaelmas 2020)
Click here to check the course website.
Please remember to hand in your work by 5pm (17:00) on the day before the supervision!
Supervision 1
Warmup questions
- What is an image?
- What is colour banding?
- What are the ray parameters of the intersection points between ray (1,1,1) + t(−1,−1,−1) and the sphere centered at the origin with radius 1?
- Why do we need anti-aliasing? Why is a random grid better than a regular grid?
Longer questions
- Explain the three components of the Phong reflection model. What colour should the specular highlights be?
- What information would you need to define a ray-tracing viewing volume / frustum (look these up if you are not sure what they mean)?
- Write pseudo-code for the ray tracing algorithm, where the first line of code is:
for each pixel: ...
- Explain how Ray tracing can achieve the following effects:
- reflections
- refraction
- shadows
- Provide two examples for distributed ray tracing and explain how the selected techniques works
Supervision 2
Warmup questions
- What is OpenGL? What does it mean that it's an API?
- How is Vulkan different from OpenGL?
- We use a lot of triangles to approximate stuff in computer graphics. Why are they good? Why are they bad? Can you think of any alternatives?
- Put the the following stages of the OpenGL rendering pipeline in the correct order. Very briefly explain what each stage does and comment whether each stage is programmable.
- Rasterization
- Vertex shader
- Fragment shader
- Primitive setup
- Clipping
- What are “in”, “out” and “uniform” variables in GLSL? How are the values of these variables set?
Longer questions
- Similarly to last supervision, write a few lines of pseudo-code for rendering with OpenGL (rasterisation):
function draw_triangles(triangles): ...
- Describe the Model, View, and Projection transformations. Comment on why we use homogeneous co-ordinates.
- When transforming objects into world co-ordinates using matrix M, position vectors are pre-multiplied with M. Discuss whether this matrix is suitable to transform the objects' normals. If not, can you suggest an alternative?
- 2010 Paper 4 Question 4
- 2017 Paper 4 Question 3
- Describe the z buffering algorithm. Compare the projection matrix on slide 86 with the projection matrix in the 2010P4Q4 past paper, and discuss which one you need to use for Z buffering
- What is the worst case scenario, in terms of a number of times a pixel colour is computed, when rendering N triangles using the Z-buffer algorithm? How could we avoid such a worst-case scenario?
Supervision 3
Texturing
- How could you use the following texture types to texture a sphere in OpenGL?
- 2D
- 3D
- CUBE_MAP
- For downsampling an image, explain how each of the following sampling techniques work (feel free to use khronos.org when unsure). Discuss performance, storage and visual quality.
- GL_NEAREST
- GL_LINEAR
- GL_NEAREST_MIPMAP_NEAREST
- GL_LINEAR_MIPMAP_NEAREST
- GL_NEAREST_MIPMAP_LINEAR
- GL_LINEAR_MIPMAP_LINEAR
- Search for "normal map" images on the internet. Why do they tend have an overall blue shade?
- How could you implement a reflective water surface in OpenGL using Frame Buffer Objects? What if you wanted to add reflection onto a spherical surface? (Ray tracing is tempting, but you are to think about the OpenGL way here :) ).
Colour / perception
- What is the difference between luma and luminance?
- Why is gamma correction needed?
- What are the differences between rods and cones?
- How can two colour spectra appear the same? What are these called then?
- What is the relation between LMS cone sensitivities, CIE XYZ and the RGB space of a monitor?
- Explain the purpose of tone-mapping and display-encoding steps in a rendering pipeline.
- What is the rationale behind sigmoidal tone-curves?