Games202(9`第11章、第12章)
第11章
LTC线性变换的余弦
LTC:在多边形光源(面光源)快速求得不考虑V项任意一点的着色值
lobe/镜面波瓣:镜面BRDF的wi和wo任意一边固定,另一边形成的波瓣,从wi进入的光线向波瓣方向反射,从波瓣进来的光线向v方向反射
固定入射方向,把brdf的lobe通过线性变换M^-1转变为一个余弦函数,使得朝上
将多边形光源(每个顶点和p连接的向量)也进行M^-1变换使得朝上(需要归一化)
这样就将任意方向的brdf的lobe在任意多边形下的光源求积分问题,转化为在一个固定cos函数下对任意的多边形光源求积分的问题
我们需要改写渲染方程,假设多边形光源任何radiance都是uinform一致的,因此作为常量可以提取到积分外,由于不考虑V项,积分内剩下F项和cos项组合一起,变为余弦函数,由于改变光源方向,M^-1*wi = wi`,即为M*wi`· = wi
现在无法解积分,需要把d项变为dwi`,因此引入雅克布项J
Disney’s principle BRDF迪士尼原则
microfacet models有一些问题
- 无法解释多层材质
- 让artist艺术家使用繁琐
设计原则
Disney’s principle BRDF诞生的首要目的就是为了让artist使用方便,因此它遵守这些设计原则
- 使用更直观的名词而不是使用物理名词参数(次表面反射,金属度,镜面反射程度, 镜面反射+颜色,粗糙度,各向异性程度,光晕,光晕+颜色,透明层的明显程度,透明层的光泽层)
- 最好有一个拖动条让艺术家拖动,定义左右范围,为了特殊效果允许超过范围
优缺点:
- 优点:混合使用显示不同的材质,更容易理解的参数
- 缺点:并不是完全基于物理的,参数冗余
NPR非照片真实感的渲染
照片真实感渲染:强调画面的真实感,无法分辨是照片还是渲染出来的
风格化渲染:做出艺术效果,远离真实感,它的做法首先渲染真实效果,再变为非真实效果
outline rendering 描边
- 基于法线着色:当v和n点乘结果小于某个阈值
- 基于几何:渲染一个更大的模型,整体颜色为描边色,不允许看见正面
- 基于模板测试:……
- 基于后期处理:先渲染一个正常的图像,利用kernel(卷积核)检测边缘,并对它们应用卷积,得到描边
color blocks.色块
想要亮灰暗部分界限分明,进行取整操作,以高光为例,如果一些值值超过了1.5,则认为全是1.5,没超过但大于0的,我们认为全都是0.8,而那些本来就是0的依旧是0.
Stroke surface stylization素描风格
- 设计不同线条密度的纹理
- 对于不同明暗的纹理使用不同的纹理
第12章 Real - Time Ray Tracing
temporal accumulation 时间累计——时间降噪
当前帧需要降噪(1spp有很大噪声),复用上一帧已降噪结果,这叫做时间(帧)上的复用
算法过程
找到当前帧i某像素,在上一帧i-1的位置
- 当前帧世界坐标:如果G-buffer中有世界坐标,可以拿来即用,如果没有需要计算,应用矩阵逆变换来得到
- 上一帧的世界坐标:由于知道所有移动信息,可以找到i-1帧物体的世界坐标,
- i-1的像素位置:应用变换
这样就获得了motion vector
i和i-1帧线性混合:在上一帧a像素查找的颜色*a + 在当前帧b像素查找的颜色*(1-a)
错误的情况
突然切换新场景,得到的信息不准确,比如突然更换了物体颜色,从红到绿,现在绿色去查找上一帧的红色,结果不正确
周围信息增多,新的信息没有上一帧对应的位置,不知道如何查找,比如向后移动
场景不变,移动一个物体,背后墙面显示,墙面的当前颜色,和上一帧物体颜色混合,结果不正确,会出现物体拖尾现象,特别是当i-1帧权重占比多时
当不移动物体,一直复用上一帧结果,就会导致拖影的阴影出现
当我们移动物体时,其地板需要一定的时间适应,再反射出当今场景中的物体,也就是反射滞后
解决方法
clamping:让上一帧的颜色值接近当前帧颜色,再混合
detection检测:检测是否是同一物体,如果非同一物体,就减少i-1权重占比,否则增加
