当前位置:   article > 正文

【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)_环境光遮蔽ssao和hbao哪个好

环境光遮蔽ssao和hbao哪个好

笔记

SSAO介绍

AO

环境光遮蔽,AmbientOcclusion。一种模拟光线到达物体的能力和粗略的全局方法。

SSAO

屏幕环境光遮蔽,Screen Space Ambient Occlusion, 一种实现环境光遮蔽遮蔽效果的渲染技术。通过获取像素的深度缓冲、法线缓冲来计算实现,来近似的表现物体在间接光下产生的阴影

历史

AO在Siggraph 2002年会由ILM展示
2007年,Crytek将SSAO应用于孤岛危机

原理

在这里插入图片描述

  1. 获取深度、法线缓冲
  2. 利用深度值,反推每个像素在世界空间中的三维位置
  3. 利用法线,得到法向半球
  4. 利用法向半球产生随机向量,计算像素随机后的坐标(多次采样)
  5. 与采样点的深度进行比较,加权到AO中
  6. 后期(模糊等)

SSAO算法实现

获取深度、法线缓冲数据

C#

private void Start(){
	cam = this.GetComponent<Camera>();
    cam.depthTextureMode = cam.depthTextureMode | DepthTextureMode.DepthNormals;
}
  • 1
  • 2
  • 3
  • 4

获取相机组件
深度纹理模式设置为 带深度带法线

Shader
在这里插入图片描述
在这里插入图片描述
这里的UV是屏幕空间的UV

重建相机空间坐标

具体参考:https://zhuanlan.zhihu.com/p/92315967

在这里插入图片描述
在这里插入图片描述

构建法向量正交基

在这里插入图片描述
tangent其实是半球面上 随机的一个向量(随机的方法参考下文)
在这里插入图片描述

AO采样核心

在这里插入图片描述
第二步:
_SampleKeneralRadius : 采样半球的半径长度
第三步:
因为都是在观察空间下进行的计算,所以得到randomPos后,乘以投影矩阵,再视图映射即可得到相应的屏幕坐标
rclipPos :即是球面上的点

SSAO优化

1. 随机正交基

应用于求法向半球的正交基时,其第二步生成随机变量。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/579854
推荐阅读
相关标签
  

闽ICP备14008679号