优化前
- predepth生成深度图,法线根据深度在shader中计算出来,也可以通过渲染生成。
- 生成AO图
- 高斯模糊,横一遍竖一遍
- 根据法线,重新计算AO图
- 在不透明物体渲染的时候,正常采样AO即可
问题
最主要的还是depthonly的太费了,多了好多pass
优化
- 在渲染skybox后,拷贝深度图
- 生成AO图
- 高斯模糊,横一遍竖一遍,利用多uv方式来规避随机采样,以及downsample提升效率
- 根据法线,重新计算AO,并直接渲染到颜色缓存区,控制blend方式来达到把ao乘以原来的颜色
优化后问题
- 开启了msaa,又需要拷贝深度图,只能软resolve了(取深度最大值),不能利用on-chip msaa。而且可能有兼容性问题
优化前后对比
无ssao效果
unity内置ssao效果
FastSSAO效果
效果感觉还可以
渲染流程对比
unity内置ssao
FastSSAO
可以看出来depthprepass没了