快速跳转:
1、矩阵变换原理Transform(旋转、位移、缩放、正交投影、透视投影)
2、光栅化(反走样、傅里叶变换、卷积)
3、着色计算(深度缓存、着色模型、着色频率)
4、纹理映射(重心坐标插值、透视投影矫正、双线性插值MipMap、环境光遮蔽AO)
5、几何(距离函数SDF、点云、贝塞尔曲线、曲面细分、曲面简化)
6、阴影映射(Shadow Mapping)
7、光线追踪原理(线面求交、预处理光追加速)
8、辐射度量学与光线追踪
9、蒙特卡洛路径追踪(Path Tracing)(光源采样)
10、材质(BRDF)(折射、菲涅尔项、微表面模型、各向异性材质)
11、渲染前沿技术介绍(双向路径追踪BDPT、MLT、光子映射、实时辐射度、外观建模)
12、相机(视场、曝光、光圈(F-Stop)、薄棱镜近似、CoC、景深)
13、光场、颜色与感知
14、动画(物理模拟、质点弹簧系统、粒子系统、运动学、动作捕捉、欧拉方法)
学习辐射度量学是为得到更好的更真实的光照计算效果(Whitted光线追踪、Blinn-phong着色计算是不真实的)
辐射度量学:可以准确的测量空间中的光照的系统方法,定义了一系列属性,但是依然是在几何光学中的描述,不涉及光的波动性、互相干扰等
学习三板斧:
why–为什么学?
what–这是个什么玩意儿?
how–怎么实现?学了就忘,所以how其实并不太重要
定义:指电磁波中电场能量和磁场能量的总和,也叫电磁波的能量。符号:Q;单位:焦耳
图中表示意义:符号[单位]
定义:单位时间内产生的、反射的、接收的能量。符号:Φ;单位:瓦特、流明
微分如dy/dx中的d全称为differential
定义:单位立体角上,产生的、反射的、接收的辐射通量。符号:I;单位:瓦特/sr、lm/sr、candela、cd
立体角(solid angle)是有方向的,所以辐射强度是一个方向有关的属性,
二重积分计算,总的立体角 = 球面上无数个单位立体角的加和,即∫∫sinθdθdφ
积分限也比较好理解:θ:0 → π,一个半圆弧, φ:0 → 2π,用半圆转一整圈得到球面
物体单位投影面积上接收到的能量。符号:E,单位:W/m2、lm/m2、lux
Irradiance和intensity是同级不同角度的概念,辐照度是辐射通量/面积,辐射强度是辐射通量/立体角
有了照度的定义,就可以比较好的理解曾经学过的一些知识了
法线
和光线方向的余弦
成正比辐照度
(Irradiance:某个点接受到的来自所有方向的辐射通量)只有来自该单个光源方向的辐射通量。辐射通量恒定不变,随着距离越远,辐射球的表面积却不断增大,因此球面的每个点分到的能量就少了。描述光沿着一条线传播的属性,与路径追踪比较有关系,所以是比较重要的一个概念
定义: 单位投影面积收到/发出的单位立体角上的辐射通量、符号:L
Radiance也能用下面两种方法求得
Radiance = irradiance per solid angle,这个后面会用
Radiance = intensity per projected unit area
intensity公式为dφ/dω
irradiance为dφ/dA
入射辐亮度incident Radiance —— 从光线接收者的角度理解Radiance
出射辐亮度Exiting Radiance —— 从光源的角度理解Radiance
注意:所有前面的属性,都可以两个角度来理解,光源或接收者
这俩在图形学中用得特别频繁,所以务必确保搞清楚他俩的区别和联系
反射的理解:接收到入射光后,自身变成新的光源,向空间中辐射,这样理解有助于利用Radiance和Irradiance解释反射
单位面积dA接收到 ωi 方向来的Radiance,下图中用 L(ωi) 表示,也能理解成辐照度的一个微元dE(ωi),然后再辐射到四面八方 ωr 中去,这时候辐射出去的又是Radiance(因为反射出去无数多条,power会被均分,而其中特定的一条分到的能量就是一个微元,用 dLr(x, ωr))表示
双面反射分布函数 Bidirectional Reflectance Distribution Function(BRDF): 描述了入射光线经过某个表面反射后在各个可能的出射方向上能量分布(反射率)。比如已经知道入射方向 ωi 传入任意 **ωr**反射方向,能得到值域在[0,1]的浮点数返回值。返回值意义:定义某个点在 ωr 方向的反射光线的能量跟 ωi 方向射入的光线能量的比值
BRDF是定义光线在不透明表面反射的四元函数,基本式为f(ωi,ωr) ,ωi 指光线的入射方向, ωr 指光线反射的方向,除此之外,还有一个N代表法线。每一个方向ω可以被参数化为方位角φ和天顶角θ,因此BRDF是一个四维函数。 BRDF的单位是 1/sr, sr是球面度的单位
就是BRDF项定义了物体不同的材质
换句话说,BRDF就是物体的材质在数学中的表达方式。
怎么理解?—— 如果我想要定义很光滑的金属材质(只发生镜面反射),那么我就把BRDF设置成镜面反射方向100%,其他方向为0; 如果我想定义一个石膏材质(只发生漫反射),则BRDF设置成所有方向都均等的,比如0.001。
我们把出射方向固定到相机方向,那么每一个入射方向对应一个BRDF项,把这所有的入射方向的强度,乘以BRDF后得到的出射方向的强度加起来,作为最终反射强度。反射方程如下
fr(p,ωi → ωr): BRDF项,返回值值域[0,1]
Li(p,ωi)cosθidωi: 相乘的结果其实是dE(p, ωi)——单位面积收到的irradiance,仅考虑一条入射光
最后做个积分,把半球上每个入射光的在Lr方向的贡献全部加起来,就得到最终的结果,即此着色点在所有可能的入射光下,反射给相机看到的光亮度是什么样的。
提醒:入射光不止来自光源,也可能是其他物体反射的光。递归思想,反射出去的光Lr也可被当做其他物体的入射光Li。如果只考虑光线弹射一次,那么Li只能是光源,不止一次那就不一定是光源了。
反射方程没考虑物体自发光的特性
渲染方程就更一般的考虑了自发光,增加一项物体自发光Le,并且把方程写得比较一般化,其实就只是多了个自发光
虽然入射光是从外向内的,但是我们规定入射方向的表示都是向外的(类似于之前着色计算的方向规定)
(新补充关键点:其实积分部分就是求半球上的所有方向的照度微元dE(ωi)之和,即 ∫ fr dE(ωi) ,其中照度微元又能用辐亮度式子替换掉,即dE(ωi) = Li cosθdωi)
更深入理解渲染方程,推导过程
将渲染方程简写成积分方程
全局光照(Global illumination,)(gi):既考虑场景中来自光源的直接光照,又考虑经过场景中其他物体反射后的间接光照
全局光照 = 直接光照(Direct Light) + 间接光照(Indirect Light)
课中展示的案例图,应用渲染方程