关于SSAO模拟阴影显示不常的几个调试要点

雨燕双飞 提交于 2020-07-29 11:24:40

1. TBN造成的斑驳闪烁问题.

造成这个问题的原因有两个, 一个是TBN[0]这里多用了一次normaliz 不用也是没问题的, 用了, 乘法运算后会有闪烁现象
TBN中的 tangent 是要用normalize的, 否则不正常, learnopengl-cn教程里也有用normalize
TBN 的默认旋转起点矢量是(0,0,1) 地面的旋转目标矢量也是(0,0,1) 这就出现闪烁问题了.

2. 采样方向好像没有XY偏移

原因是: TBN中的tangent没使用normalize
表现: 在地面上会有这个问题, 地面没阴影
地面上有立方体, 但地面不产生阴影, 那立方体却有阴影,
垂直于地面的物体, 物体靠近地面的地方有阴影, 但地面本身没有阴影.
另外, 斜坡越陡, 阴影越淡, 水平的地面没阴影, 比较平的斜坡阴影却更重. 这也是个迷(如图)

3. 斜坡问题



这个斜坡问题, 半球采样矢量加上(0,0,1)就基本解决, 但这么一来, 半球已经不是半球了.

4. 太远看不见, 太近也消失

场景模型的大小有时你没法控制
这就希望做成动态调整
顶点于场景的位置,经过透视除法后的w值, 可以拿来做距离乘法.
最大值限制为场景包围盒半径的某个数值, 最小值限制为几厘米, 看场景的建模单位是米还是厘米, 最小值用于保证拉近后还有阴影.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!