Introduction and Overview

引言

GAMES202 高质量实时渲染是由闫令琪老师教授,本节主要介绍 GAMES202 课程的大纲和开课须知,包括之后的课程安排和实时渲染技术的历史简介。

Instructor

闫令琪

  • 2018 - now: Assistant Professor @ UCSB
  • 2013 - 2018: Ph.D @ UC Berkeley
  • 2009 - 2013: B.E. @ Tsinghua University
  • Website: www.cs.ucsb.edu/~lingqi/
  • Research: Rendering in Computer Graphics
  • Hobbies: research, video games, piano, traveling, NBA, etc.

老师主要做图形学中渲染、绘制这一方向,之前的研究成果被工业界采用:

What is GAMES202 about?

Real-Time High Quality Rendering

  • Speed: more than 30 FPS (frames per second), even more for Virtual / Augmented Reality (VR / AR): 90 FPS
  • Interactivity: Each frame generated on the fly

Real-Time High Quality Rendering

  • Realism: advanced approaches to make rendering more realistic
  • Dependability: all-time correctness (exact or approximate), no tolerance to (uncontrollable) failures

实时指的是一种速度,渲染中人们通常认为到达30FPS可以被称为实时,当然不同的领域有不同的标准,虚拟现实和增强现实会对实时的要求更高:90FPS。实时渲染讲究的是互动性,能够得到反馈肯定比一直渲染要好。

高质量也是需要强调的一点,指的是真实感,我们渲染的最终目标是以假乱真,但这个目标付出的代价很可能就是高额的计算。为了保证实时渲染,我们通常会牺牲一部分质量,但人们是贪婪的,如何两全其美也是实时渲染最大的挑战。

Real-Time High Quality Rendering

  • What is Rendering?

渲染是图形学的一个重要分支,它所做的事情是把一个三维的场景通过计算方式模拟光线如何从光源中发出并在场景中弹射最后进入人的眼睛的,我们在试图模拟一个虚拟的摄像机如何看到一个虚拟的场景,这就是渲染的事情。

Highest level: 4 different parts on real-time rendering

这门课我们会讲四个话题:阴影、全局光照、真实着色/基于物理着色以及实时光线追踪。但这门课和 GAMES101 一个重大的区别是它的知识点相对分散,更像是专题研讨会。

Course Topics

  • Shadow and Environment Mapping
  • Interactive Global Illumination Techniques
  • Precomputed Radiance Transfer
  • Real-Time Ray Tracing
  • Participating Media Rendering, Image Space Effects, etc.
  • Non-Photorealistic Rendering
  • Antialiasing and supersampling
  • Chatting about techs!
  • Chatting about games!

课程主题包括阴影和环境光、实时渲染技术等等。

What is GAMES202 NOT about?

  • 3D modeling or game development using Unreal Engine (where can I learn them?)

这门课不会讲怎么去做三维的建模以及怎么使用游戏引擎,这些内容学习的是怎么用这些工具,而这种课程网上已经有很多了,可以结合文档来学习熟练使用。

  • Expensive (but more accurate) light transport techniques in movies / animations (where can I learn this?)

image-20210414221015811

还有一个不会讲的内容是离线渲染。我认为渲染应该分为三门课:渲染入门、实时渲染和离线渲染,离线渲染应该单独开设一门课程。

另外还不会说神经渲染,NeRF 就是神经渲染做的非常好的例子。我们不提它是因为现在绝大多数神经渲染做不到实时和高质量,许多时候是需要人工 cherry picking。

  • Using OpenGL
  • Scene / shader optimization
  • Reverse engineering of shaders
  • High performance computing e.g. CUDA programming

和 GAMES101 一样,怎么用 OpenGL 或是 Shader Language 也不会在这门课提及。场景和着色器的优化也不会说,这是一项纯技术的事情,背后的科学知识是完全一样的。

How to study GAMES202?

Understand the difference between science and technology

  • Science != technology
  • Science == knowledge
  • Technology == engineering skills that turn science into product

Real-time rendering = fast & approximate offline rendering + systematic engineering

Fact: in real-time rendering technologies, the industry is way ahead of the academia

Practice makes perfect

关于 GAMES202,需要记住科学和技术是不等同的,科学等同于知识,技术是表示技巧与工程能力。对于实时渲染来说,应用的科学知识就是对离线渲染的简化使其变得更快。

在实时渲染中,技术方面工业界远远领先于学界。因为工业界比如游戏公司,它们自己做游戏过程中就能看到最新的问题,而这些问题学术界可能根本不知道,所以由自己提出解决方案。

Why study GAMES202?

Computer GraphicsisAWESOME!

Course Logistics

Prerequisites

  • 需要对图形学和渲染有浓厚兴趣
  • 最好上过图形学课程比如 GAMES101,以及一点微积分知识
  • 作业0 把环境配通,以后的作业基本上就是在写着色器,不会涉及到 OpenGL
General Information

这门课作为现代化的实时渲染内容涵盖不少内容,但是它不需要用这么好的硬件,笔记本上的显卡已经足够了,体现的差别只有跑得快慢的问题。

References

Q & A

Assignments

No Need to Use An IDE!

有一点和 GAMES101 不同的地方在于不需要集成开发环境 IDE,一个 IDE 可以帮助你更好的理解完整的工程,而本门课主要在写 Shader,基本上就几个文件没有必要。

Academic integrity

尽量不要把代码框架拿到网络上,这门课之后还会有很多同学要学习,提前看到答案就不太好了。

Today’s Lecture

Motivation

目前来说渲染要求做到照片级真实感,它里面涉及到大量复杂的运算需要处理,比如光照、材质、阴影等等。在各种各样的领域如电影都会用到特效,这些都是和图形学相关的东西,大家希望把这些东西做的非常真实。

大家也能做得非常真实,但这些方法往往不能兼顾质量与速度。这些算得比较慢但比较准的方法被称为 offline rendering 离线渲染,一个典型的例子是在《Zootopia》渲染一帧需要 10000 个 CPU core hour,是一个非常烧钱的事情。

对于实时渲染来说,就是要在合理的近似下找到最接近的结果。

Evolution of real-time rendering

实时渲染有着非常丰富的历史,甚至比离线渲染还要悠久。最早如图看到人们可以用实时渲染生成一些古老的图像。

而 20 年之前 3D 的实时渲染进入了游戏行业,典型的代表就是《最终幻想7》、同时代的《反恐精英》,也许现在看可能会觉得怎么那么多三角面,但在当时可以说画质非常顶尖了。

在此之后是飞速发展的 10 年,可编程渲染管线让人们自由控制渲染策略,为编程人员提供了非常大的便利,可以得到非常好的效果。短短十年,在《刺客信条2》就可以看到不错的效果了,同时代《生化危机5》即便今天看来仍然是不错的。

到了今天虚假的”战神”,画面非常明亮,现在大家追求真正的 stuning 图形效果。

还想提一点,实时渲染运用的更加广泛了。这一点和我们说的游戏一脉是不一样的,现在的实时渲染被广泛应用于虚拟现实和增强现实中,当然受制于移动设备的表现能力,它们会有很大的画质牺牲,当然就给了实时渲染的更大的研究机会。

一个更有意思的事情是甚至以后可能成为一个趋势:有人开始用实时渲染技术去制作平常我们认为只有离线渲染技术可以制作的电影,比如之前提到的 UE5 已经可以做到电影级别的画面了。

未来是什么情况没有人会知道,也许会是《黑客帝国》或是《头号玩家》。

Technological and algorithmic milestones

Programmable graphics hardware

这么长时间的发展,可编程渲染管线是非常重要的,如图在当时可以说是跨时代的作品。

Precomputation-based methods

另外一个非常重要的东西是预计算,我可以把很多复杂的效果在渲染之前算好,然后利用一些存储上的代价在渲染上达到实时。也就是说如果我把计算转移到渲染之前,那我在渲染时就非常快了。

Interactive Ray Tracing

在 8~10 年前一个里程碑式的研究是 Interactive 级别的 RayTracing,在 GPU 上用非常低的采样率得到一个噪声很多的结果,但我之后可以快速做一遍降噪,在很多 GPU 的加持下就可以做得非常好。

皮克斯很早就拿这些东西给艺术家们去帮助设计场景。这说明实时光线追踪的理论基础很早就已经有了,现在又有 RTX 硬件的加持,那它背后的挑战又是什么呢?