Real time Shadows 1
最后更新于
最后更新于
阴影纹理
2-Pass Algorithm 两趟的算法
light pass:从光源方向渲染,记录物体深度,生成 shadow map
camera pass :从摄像机方向渲染物体时,使用 shadow map
Image-space algorithm
Well known rendering technique
Self occlusion ,阴影纹理精度造成的自遮挡
使用可以变动的 Bias 项,让阴影判定条件变宽
可能会造成阴影悬空问题
不常用,需要有两层的深度,深度测试时比较两层深度的中间深度
这样最上面的面深度下沉就不会被自己遮挡住
实时渲染不相信理论复杂度,只相信实际的效果
走样问题,image base 的方法的通用问题。
解决方案:
级联阴影
抗锯齿
实时渲染中,把不等式在一定条件下看成近似相等
重要公式:把两个函数,乘积的积分,拆成,积分的乘积
分母,归一化的常数,让 f(x) 的积分能量守恒
g(x) low support, low smooth : 实际的积分域小,变动小,两个满足一个即可
f(x) 用 V 表示,实际上是 Shadow Test,g(x) 是全局光线积分,其在单光线直接光,Diffuse 材质的时候积分域最小并且 smooth。
如果是 glossy 材质并且对全局环境光积分,此时该方程是最不准的
由大面积光源造成的,会产生本影和半影
本影:面积光全部被遮挡
半影:面积光部分被遮挡
一开始用来做抗锯齿
Filter:加权平均,可以是 3x3,5x5,7x7,9x9
不是对 Shadowmap 做 Filter ,而是在和场景物体像素深度测试计算出阴影值后做 Filter
接收物和遮挡物之间的距离越大,阴影越软,Filter 越大
下图也可以看出,Blocker 越高,面光源在 Shadow map 上的贡献域越广,半影就越大
Blocker search
Penumbra estimation 半影估计
Percentage Closer Filtter