Unity游戏图形渲染效果系列之SSAO篇

导言

在传统的MMO中,最常用的提升视觉显示效果的就是环境光遮蔽AO,传统的AO实现方法使用了光线追踪,路径追踪等方法,但是实时渲染效率下,所以现在常用的是屏幕空间环境光遮蔽SSAO,SSAO的效果表现出会让被遮挡的物体显示变暗,没有遮挡的地方显示更加明亮一些,使得整个视觉空间更有层次感。

章节

一.SSAO的视觉表现


如图左边为正常渲染的原图,中间加了SSAO的效果,可以看出石头后边的墙壁明显要比墙壁其他地方要稍微暗一点,右边的就是SSAO渲染出的结果。

二.SSAO的两种实现方式和原理

1.基于法线的半球积分

这是最常用也是效果最好的SSAO方法,在传统MMO中大多采用该方法, 对于场景中的任意像素计算它的环境遮蔽。计算方法如下: 

   假设需要计算的被遮挡像素为P,把所有周围的像素当做小球,计算小球对P的遮挡值的总和,小球的半径足够小,可以看做点。单个遮挡点对P的遮挡值主要取决于两个因素:    
1. 遮挡点到P的距离,假设为d;   
        2. P到遮挡点的向量V与P的法线N之间的夹角。    
根据这两个因素得出一个简单的计算公式:
  
    这个公式很好理解,如图看上方的凸点A,该点周围没有遮挡点,所以周围的采样点都在法向量反方向,比如B,那么AB向量在法线方向的投影(也就是cos值)为负数,说明该点不被遮挡,当和0取max后 就可以过滤这些点,也就是不被遮挡的点的AO值通常为0,。OK 这个时候来看该图下方的凹点,A被两面墙挡住了,那么周围的采样点都类似B点,B在法线方向的投影(cos值)与法相方向同向为正,我们都知道cos值最大值是1,所以该点的被遮挡系数AO值最大为1,所以通常情况下的AO值是为0-1之间的一个遮挡系数。
上述算法比较简单,单纯的公式也不复杂,具体复杂度和效果体现在采样点的选取和参数选取上面,实现时只要在P周围采样一些点
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值