当表面几乎平行于光的方向时,似乎不可能消除这种透视锯齿。
我测试了几种不同的暗影粉刺去除技术:
- 恒定偏差不起作用:在足够大的偏差上引入彼得平移以消除问题
- 斜率偏差不能完全起作用,只会稍微减轻问题
- 正常偏移阴影不起作用,并引入额外的阴影变形
- glPolygonOffset 不起作用,我怀疑它与斜率比例偏差相同
- PCL 只是稍微消除了图案的锯齿,实际上并没有解决问题。消除模式所需的过滤量会产生巨大的斑点阴影
- VSM 做的不多,只是稍微改变了模式
- 增加阴影贴图分辨率和像素深度可以减轻问题,但分辨率足够大以完全解决问题会显着降低帧速率
- 为创建阴影贴图扩展投影变换的近平面和远平面也无济于事
从我在谷歌和我的书中可以找到的所有内容来看,这基本上是一个无法解决的问题。不过我知道一定有办法绕过它,因为即使是一些独立游戏也有完美而平滑的阴影贴图阴影。
有人愿意分享这个严密的秘密吗?