02562 Rendering - Introduction

Course description from the DTU course catalogue.

Course Overview

Rendering is to use a mathematical model on a computer for creating a digital image that looks like the real three-dimensional world. The course objective is to introduce the ray tracing techniques commonly used in computer graphics systems for general/off-line rendering (photorealistic images, material appearance modelling, computer animation, scientific visualization, mapping techniques) as well as providing some experience with developing algorithms and implementing parts of such systems. In particular, it is the purpose to get acquainted with algorithms for simulating light-material interaction and to implement parts of a graphics system that can render relatively complicated objects, scenes, and illumination conditions.

Timetable

Calender weeks: 35-41 + 43-48.

Weekly timetable:

Wednesday 13-14 lecture Building 305, Room IT005 (and Zoom)
14-17 exercises Building 305, Room IT005

Hand-in deadline: Tuesday 19 December 2023 at 23:59.

Textbooks and Notes

The main textbook for this course is

B Steve Marschner and Peter Shirley et al. Fundamentals of Computer Graphics, fifth edition. CRC Press / Taylor and Francis, 2021.

In addition, we may upload papers to DTU Learn that serve sometimes as part of the curriculum, sometimes as supplementary reading material.

Prerequisites

When participating in this course, we assume that you know basic geometry, trigonometry, and vector algebra. Some knowledge of basic differential and integral calculus as well as matrix-vector equations is an advantage. We also expect you to have some previous programming experience. In particular, we assume that you are familiar with a programming language such as C/C++, Java, Python, or Matlab.

Lab Journal

You are expected to maintain a lab journal where you present the outcome of your work. The lab journal is a collection of files containing your solution for each part of each worksheet. A good way to work is to have a separate html and js file for each part of each worksheet. The lab journal must be submitted in a zip-file to DTU Learn (Assignments) before the deadline (see above).

Project

Toward the end of the course you must choose a minor project to work on. Some projects will be proposed at the lectures. A project of your own choosing is acceptable as long as it has a reasonable connection with the course. You can choose one of the proposed projects or hand in a short project description (one paragraph) and get it approved by the course responsible. The project must be submitted to DTU Learn (Assignments) before the deadline (see above). This submission must include a project report of the following structure: Introduction, Method, Implementation, Results, Discussion, so that it is possible to understand what you developed and the intentions and ideas behind the project. Include a zip-file containing the code.

Assessment

The assessment is based on your lab journal and project report (and associated code). These must be in pdf or html format and uploaded to DTU Learn (Assignments) before the deadline (see above). There is no oral examination in this course. Your work is assessed in its entirety and you will be graded using the 7-step scale.

As a rough guideline, the project is usually 40% to 50% of the grade because it is carried out more independently. The exercises are then roughly 50% to 60% of the grade. You need more than 50% to pass. This means that it is very difficult to pass the course if you do not hand in a project together with a project report, and it is not possible to pass if you do not hand in any solutions for any of the worksheets. On the other hand, if you do 75% of the exercise worksheets and work your way through the project and write a decent project report for this work, you will probably pass with a decent grade. The word "probably" in this context means "depending on the correctness of your solutions".

Individualization

In case you work in a group, it is important that proper credit is assigned to your collaborator(s) and that your final hand-in is individualized.

As an example, you can work on exercises and project in a group of two and each write your own lab journal and project report. These must then clearly state who you collaborated with.

It is allowed to write lab journal and project report in a group of two (or perhaps three), but then you must clearly state the main responsible for each part of the lab journal and the project. In the project report, you can share main responsibility for introduction and discussion. Having assigned main responsibility of a part to one person in the group does not mean that the other person did not contribute to this part. A statement saying that all group members contributed equally is inadequate.

Feedback

Use your current status with respect to solving the worksheets and completing your project as an indicator of your performance. Ask instructors during exercise sessions to get an indication of the correctness of your solutions or the level of ambition of your project work.

About the exercises

Computers with GPU hardware are available in the lab: Building 305, Room IT005. We recommend that you work on exercises in groups of two, but write individual lab journals. You must submit your final lab journal and project to DTU Learn individually. When submitting, it is important that you explain who you collaborated with (if any), see section above on individualization.

The user-id for the system is your ordinary DTU user-id. You can use the lab in the period reserved for the course. At other times you have to respect reservations. Remote login is not permitted. In vacant periods, you can use the workstations on a first come, first served basis. You need your student identity card to enter the lab and you have to show the card on any request.

Do not use the C-disk for storing your data. The lab computers should provide access to your student home directory. There is no back-up of the lab computers. The C-disk may be cleaned daily.

Preliminary Weekly Schedule

Week Subject Curriculum Exercises
1
30/8
Introduction,
raster images,
ray casting.
B: Chapters 1-2
B: Chapter 3
B: Sections 4-4.3
Worksheet 1
2
6/9
Ray-object intersection,
point lights,
shading.
B: Section 4.4 [and 2.9]
B: Section 4.5
B: Chapter 5
Worksheet 1
3
13/9
Shadows,
reflections and refractions,
ray tracing.
B: Sections 4.5 and 14.3 Worksheet 2
4
20/9
Texture mapping,
anti-aliasing.
B: Chapter 11
B[4th]: Section 13.4.1
Worksheet 3
5
27/9
Physics of light,
radiometry,
photometry.
B: Sections 14.1 and 14.6
[and 2.3.4 and 2.5]
Worksheet 4
6
4/10
Meshes,
interpolation,
distant arealight.
B: Sections 12.1-12.1.2
[and 2.8-2.9]
B: Sections 14.7.1-14.8
Worksheet 5
7
11/10
Spatial data structures. B: Section 12.3 Worksheet 6
8
25/10
Sampling,
path tracing.
B: Chapter 13 [and 2.10-2.12]
B: Sections 14.8 and 14.10.
Worksheet 7
9
1/11
BRDF,
Fresnel reflectance,
absorption.
B: Sections 14.7 and 14.9
[and 14.2-14.3]
Worksheet 8
10
8/11
Environment lighting,
high dynamic range,
holdout shading.
B: Section 11.4.5
B: Sections 19.2.3, 20.2-20.3
[Debevec 1998]
Worksheet 9
11
15/11
Production rendering,
project proposals.
[Burley 2012]
[Burley 2015]
(B: Chapter 22, optional)
Worksheet 10
12
22/11
GPU acceleration. [Parker et al. 2010, Sections 1-5, 8-11] Project work
13
29/11
Tone reproduction.
Course finalization.
(B: Chapter 21, optional) Project work

Exercises

Worksheet 1: Ray casting

Worksheet 2: Ray tracing and Phong reflection

Worksheet 3: Texture mapping

Worksheet 4: Radiometric and photometric concepts

Worksheet 5: Triangle meshes and distant arealight

Worksheet 6: BSP tree for ray tracing

Worksheet 7: Progressive path tracing

Worksheet 8: Fresnel reflectance and absorption

Worksheet 9: Environment lighting

Worksheet 10: Rendering with a software toolset

Links to free books

Glassner, A. S. (ed.) An Introduction to Ray Tracing. Morgan Kaufmann, 1989.

Cohen, M., and Wallace, J. R. Radiosity and Realistic Image Synthesis. Academic Press, 1993.

Glassner, A. S. Principles of Digital Image Synthesis. Morgan Kaufmann, 1995.

Dutré, P. Global Illumination Compendium: The Concise Guide to Global Illumination Algorithms. August 2003.

Shirley, P. Ray Tracing in One Weekend - The Book Series. 2018-2020.

Pharr, M., Jakob, W., and Humphreys, G. Physically Based Rendering: From Theory to Implementation, third edition. Morgan Kaufmann/Elsevier, 2017. [webpage]

Haines, E., and Akenine-Möller, T. (eds.) Ray Tracing Gems. Apress, 2019.

Marrs, A., Shirley, P., and Wald, I. (eds.) Ray Tracing Gems II. Apress, 2021.

Graphics resources

Blender (free open source 3D creation suite)

The Stanford 3D Scanning Repository (bunny, dragon, happy Buddha, armadillo, Lucy, etc.)

The Stanford Bunny by Greg Turk

The Cornell Box (standard scene for testing global illumination algorithms)

The Utah Teapot at Computer History Museum

McGuire Computer Graphics Archive (useful OBJ meshes)

The MERL BRDF Database (measured BRDFs)

UTIA BTF Database (measured BTFs/BRDFs)

CUReT: Columbia-Utrecht Reflectance and Texture Database (measured BTFs/BRDFs)

The Disney BRDF Explorer (load and plot analytic and measured BRDFs)

Material Database by Dupuy and Jakob

Thingiverse (3D printable 3D models)

ShapeNet (large-scale dataset of 3D shapes)

Poly Haven (free HDR panoramic images, textures, and 3D models)

sIBL Archive (free high dynamic range panoramic images)

Paul Debevec's Light Probe Image Gallery (light probe images in different formats)

Paul Debevec's High-Resolution Light Probe Image Gallery (high dynamic range panoramic images)

WebGPU links

WebGPU specification (latest published version)

WGSL - WebGPU Shading Language - specification (latest published version)

WebGPU API reference

WebGPU/WGSL Reference

Can I use WebGPU? (browser WebGPU status)

Your first WebGPU app (Google Codelabs)

WebGPU fundamentals (articles to help learn WebGPU)

Web Programming Using the WebGPU API by Benjamin Kenwright [DTU access]

Introduction to Computer Graphics and Ray-Tracing Using the WebGPU API by Benjamin Kenwright [DTU access]

WebGPU Lab (editable code samples by Benjamin Kenwright)

From 0 to glTF with WebGPU by Will Usher

wgpu (graphics library for Rust based on the WebGPU API)

wgpu-py (a Python implementation of WebGPU)

Ray Tracing on the GPU

Rayground: Ray tracing prototyping on the web based on WebRays by Vitsas et al. [Chapter 18 of Ray Tracing Gems II]

Real-time ray tracing in WebGPU by Felix Maier

Dawn RT (fork of the WebGPU implementation for Chromium [Dawn] that includes a Ray-Tracing extension)

WebRTX (WebGPU Ray Tracing eXtension) and associated playground

NVIDIA OptiX and How to get started with OptiX 7 by Keith Morley

NVIDIA Vulkan ray tracing tutorial

Ray tracing in Vulkan by GPSnoopy (Shirley's Ray Tracing in One Weekend implemented in Vulkan)

Disclaimer

This course material was written by Jeppe Revall Frisvad, Associate Professor, DTU Compute, Technical University of Denmark.

© DTU Compute 2023.

Last updated 21 November 2023.