Games202学习记录(1)

Shadows
ShadowMap
硬阴影实现后存在自相交问题→ 解决方式为根据角度计算动态bias。
引发新的问题部分阴影不显示→ 学术界解决方式为记录second depth。虽然不增加时间复杂度,但是2n比n还是增加了性能损耗(if else导致的)。
Games202学习记录(1)_第1张图片

近似什么时候比较准确呢? g(x) smooth即变化不大 ,比如常数,small support积分范围小的时候。
Games202学习记录(1)_第2张图片

eg:shadingpoint上brdf而言diffuse就是smooth的,glossy brdf就不适合。面光源作为Li的时候也适合

Percentage Closer Filtering(PCF) ——本意用于抗锯齿
不是基于quad的后处理
不是基于DepthMap的图片处理
是对DepthMap多采样求平均用于反走样
PCSS(Percentage Closer Soft Shadows ) ——用于软阴影,有噪点可以通过等TAA去噪
PCF filter 因子比较大会使得阴影变的更软,引申出大的比如9*9的filter可以用于实现软阴影

step1:以一定filterSize采样求得平均深度。Games202学习记录(1)_第3张图片

step2:根据平均深度 及 相似三角形中light长度求得filterSize。Games202学习记录(1)_第4张图片
Games202学习记录(1)_第5张图片

阴影软硬程度与 投影着色点到遮挡物的距离 有关,距离越近,filter size应该设置越小,反之越大。
Blocker本身采样的大小可以通过lightArea动态计算blocker size。
step3: fragmentShader按filterSize逐像素做采样平均。
Variance Soft Shadow Mapping(VSSM)——使用很多近似计算,性能高,无噪声
核心:对Step1 和 Step3性能优化
Games202学习记录(1)_第6张图片
Games202学习记录(1)_第7张图片

pcf本身是想知道已知depth值,其在shadowmap上某一区域内排第几名。所以为了提高效果,可以近似使用正态分布(或者切比雪夫直接估计)的期望mean和方差variance来预估结果。

生成shadowMap时同时生成square-depth map写入depthMap的g分量即可。如何根据一张图和区域,快速得到其均值和方差?mipmap → 如何生成用于范围查询的mipmap呢?

求得均值和方差后如何求出CDF即灰色部分面积?

使用切比雪夫不等式近似求结果Games202学习记录(1)_第8张图片
Games202学习记录(1)_第9张图片

Step1未解决问题——如何实现快查询
Games202学习记录(1)_第10张图片Games202学习记录(1)_第11张图片

遮挡物概率和被遮挡物概率可以用切比雪夫,Zunocc大胆假设其为t深度本身(是挺大胆的233),可得结果Zocc

解决方案:MipMap&&SAT(Summed Area Table) For Range Query
Games202学习记录(1)_第12张图片
一维情况
Games202学习记录(1)_第13张图片

二维:每个点记录其左上到右下角值的和并计算。性能:时间复杂度O(n像素数)以及存储空间。

Moment Shadow mapping 通过高次矩增加精度
对于右图,由于假设不太对导致VSSM效果不好。
Games202学习记录(1)_第14张图片Games202学习记录(1)_第15张图片
在这里插入图片描述
Games202学习记录(1)_第16张图片
MomentShadowMapping目的是:更准确的描述分布。Moment是矩,而VSSM保留了一次和二次的矩。保留m阶的矩,可以近似表示m/2 steps

特点:与vssm相似,此外需要存储z,z2,z3,z4。效果更好,但是耗费存储以及性能(重建时)

Distance Field Soft Shadows
S(Signed)DF距离函数的用处:1.距离函数用于步进式算法求交 2.用于步进式算法计算安全角,用于软阴影计算。通过对边比斜边,近似对比安全角。并设置系数K,K越大,阴影越硬。
Games202学习记录(1)_第17张图片
Games202学习记录(1)_第18张图片

SDF可用于计算相交或者说安全距离

0–Games202学习记录(1)_第19张图片
SDF也可用于近似计算遮挡概率,或者说安全角度

.4=6321·bGames202学习记录(1)_第20张图片Games202学习记录(1)_第21张图片

k越大,阴影越硬

优缺点:好处是快(只是SDF查询快,生成慢且有存储需求)和高质量。缺点在于需要预计算SDF距离场,且如果有形变需要重新生成距离场。接缝处可能有artifact。存储量大,类似三维纹理。

其它ShaowMap方式参考:https://zhuanlan.zhihu.com/p/26853641(包括Consolution ShadowMap and Expontial Shadow Map)·*

Shading from Environment Lighting(ImageBasedLighting、4
Games202学习记录(1)_第22张图片
所以可以用近似等式Games202学习记录(1)_第23张图片
Games202学习记录(1)_第24张图片
蒙特卡洛积分采样大量样本,得到近似结果
The Split sum approximation
1st Stage 通过prefiltering预计算环境光贴图
将环境光贴图做filter,这样左上角积分其实可以近似于prefilter之后的光照强度。
Games202学习记录(1)_第25张图片Games202学习记录(1)_第26张图片
Games202学习记录(1)_第27张图片
与阴影对比,由于光照比较smallSupport或反射积分比较smooth,所以可以将光照提取出来,改为上式。
2nd Stage 右边的积分也需要预计算
Games202学习记录(1)_第28张图片
大量使用预计算,但是人们无法承受高纬度的预计算
BRDF只预计算菲涅尔项和法线分布项。
Games202学习记录(1)_第29张图片
Games202学习记录(1)_第30张图片

自变量有3个,分别为R0(基本颜色)、入射角cos theta、Roughness。
Games202学习记录(1)_第31张图片
把R0拆出来,这样就只有两个变量了-》 入射角cos theta、Roughness。
Games202学习记录(1)_第32张图片
将积分结果通过Roughness和cos theta预计算得到表格(一张texture),并用于查询。
Shadow from Environment Lighting
环境光下的实时阴影实现十分困难。

如果将其看成是多光源问题,光源越多消耗越大;

如果将其看成采样问题,难度不在于采样而是visibility项未知;

RealTime environment lighting(&global illumination)
背景知识
傅里叶变换
Games202学习记录(1)_第33张图片
基函数
图片频域上对应频谱显示出来

低通滤波及处理结果(留下最低频率)Games202学习记录(1)_第34张图片

卷积其实就是一种滤波操作,对于时域做卷积,实际上是对频域上做乘积。二者可转换。Games202学习记录(1)_第35张图片

任意乘积的积分可以被视为滤波Games202学习记录(1)_第36张图片

Spherical Harmonics 球面谐波函数
Games202学习记录(1)_第37张图片

理解1:球面坐标是二维的,对应一个结果。

理解2:一维的傅里叶变换。

TIPS:为什么不把球面映射到平面上再做傅里叶变换? A: 这样可能会导致出现一条缝,即不连续的情况发生。而球面谐波可以保证连续。
在这里插入图片描述

根据函数f(w)以及基函数求基函数的系数ci。如果为l阶,就需要算出2 l + 1个系数。然后组合2* l + 1个系数乘上基函数相加根据theta和fi就能反算出f(w)结果。

Prefiltered env.lighting
Games202学习记录(1)_第38张图片
Games202学习记录(1)_第39张图片
Games202学习记录(1)_第40张图片

diffuse的BRDF项低频所以3阶够了,光照项3阶也够了

Precomputed Radiance Transfer(PRT) 处理阴影和全局光照
可见性函数不应该是不同的吗?怎么办呢?PRT规定场景不变,只有光照可变。这是该方法的大问题,后面会提。
Games202学习记录(1)_第41张图片

Diffuse BRDF PRT
以diffuse情况下RenderEquation计算为例
Games202学习记录(1)_第42张图片
Games202学习记录(1)_第43张图片

PRT存在问题:light不能旋转,可视性不能变化导致场景也不能变化
Games202学习记录(1)_第44张图片
Games202学习记录(1)_第45张图片

总结

正交性:相乘并积分结果为0
旋转后,基函数可以被同阶基函数组合得到
一般只需要低阶基函数就可以描述
Specular/Glossy BRDF PRT
向量乘矩阵
Games202学习记录(1)_第46张图片

PRT的缺陷

Games202学习记录(1)_第47张图片

只适用于低频
不支持动态光照,动态场景
大量的预计算数据
Games202学习记录(1)_第48张图片

更多的基函数
wavelet小波函数:在很多维度上趋近0,所以可以只记录前几个最大系数。支持全频率的表示,因此展示效果较好,但是不支持旋转。

对于cubemap,分别对6张图做小波变换。类似JPEG压缩方式。
Games202学习记录(1)_第49张图片
Games202学习记录(1)_第50张图片
Games202学习记录(1)_第51张图片

Global Illumination
Reflective Shadow maps(RSM) --image space
Games202学习记录(1)_第52张图片

visibility不好算,直接不算

好处:容易实现

问题:性能与直接光源个数成正比;没有间接光照的可见性判断;很多假设:diffuse反射物,深度作为距离等等;采样率和质量的tardeoff;

Light Propagation Volumes(LPV) --3d空间
第一步

第二步:计算并保存每个体素的光照,通过SphereHarmonics函数记录
Games202学习记录(1)_第53张图片
第三步:迭代56次传播
Games202学习记录(1)_第54张图片
第四步:渲染
Games202学习记录(1)_第55张图片

问题:LigthLeaking -》解决方法:细粒度一点

你可能感兴趣的:(图形学,图形渲染)