ssao

王朝百科·作者佚名  2010-06-07  
宽屏版  字体: |||超大  

SSAO全称“Screen-Space Ambient Occlusion” (屏幕空间环境光遮蔽)。其最先运用于 Crysis(孤岛危机) 游戏中,通过GPU的 shader实现

SSAO通过采样象素周围的信息,并进行简单的深度值对比来计算物体身上环境光照无法到达的范围,从而可以近似地表现出物体身上在环境光照下产生的轮廓阴影。可以利用“逐象素场景深度计算”技术计算得出的深度值直接参与运算。

现在的效果确实错误还比较大,应该先进行简单的空间划分(或类似处理)然后计算。

不过个人认为这种方法只是近似地模拟,效果并不正确,但确实能增强场景的层次感,让画面更细腻,让场景细节更加明显。

不同于显卡驱动中普通的AO选项,burnout的SSAO是全动态的,无需预处理,无loading时间,无需消耗内存,不使用CPU,全由GPU处理,对GPU有较大的消耗

SSAO默认是关闭的,可以在游戏视频选项中打开

评测

在7950GT下跑,加了ssao后,下降了15%。而且,显卡性能越低,下降的越厉害。效率消耗主要是在于要多渲染一遍场景到深度以及之后进行的ssao处理。这遍可以进行优化,如果物体的纹理不带alpha,则可以把他们都合在一批或几批渲染。至于深度图的尺寸 ,我采用了与窗口一样的尺寸,这样精度高。也可以采用低分辨率,但效果会有锯齿,还需要进行模糊处理才比较自然。当然,如果本来就用了延迟渲染技术,本来就有深度图了,那就可以直接拿来用了。

与PRT对比

PRT用于静态场景确实是个比较好的方案,毕竟可以预计算。但是对于动态的场景,还需要动态更新。另外,PRT的质量依赖于网格的细分程度,要是模型太简,则效果也糟糕。

因此 ,PRT对于虚拟现实项目里的高楼大厦等场景(这些模型都是很精简的)来说,就显得不合适了

目前已发行的游戏中,运用SSAO的游戏有

Crysis(孤岛危机)

Burnout(TM) Paradise The Ultimate Box(火爆狂飙5天堂)

帝国:全面战争

另外,星际争霸2的开发也运用到了SSAO

http://download8.5617.com/article/s/26-312385-0.htm

什么是SSAO?

从HL2开始,众多游戏公司开始对于如何表现“间接光照”进行研究,这些昙花一现的技术有:

运用于HL2的radiosity Normal Maps技术,效果比较垃圾

运用于Stalker的GI(?)技术,算法不好,开销巨大。

初期Crytek准备运用在Crysis上的Photon Mapping(光子映射)技术,开销同样比较垃圾,被抛弃。

随后Crytek又准备运用在Crysis上的Real-Time Ambient Map(实时环境光照贴图,简称RAM),这个是与之前Stalker使用的技术比较类似的,也是最接近SSAO的一个技术。

不过Crytek不愧为“间接光照”研究上的先锋,其技术员对于RAM进行了改进,新的算法成为了如今的SSAO

SSAO开与关的区别所在

SSAO(Screen-Space Ambient Occlusion)是一个纯粹的渲染技术,或者说,是一个算法。虽然从上文知道是为了实现“间接光照”的效果,不过从技术上讲,就是一个对于AO(Ambient Occlusion环境光吸收,也就是NV 185.20驱动加入的那个,一个渲染技术,我们可以在Maya等3D软件中可以见到)的一个逼近函数,并且以此为据进行实时渲染。

SSAO比起185.20驱动中AO的优点:

与场景复杂性无关

无数据预处理,无loading时间,无系统内存分配

动态渲染

每个像素工作方式始终一致

无CPU占用,完全通过GPU执行

与流行显卡的管线整合相当容易

缺点也是有的:

由于采样全部在可见点上进行的,对于不可见点的遮挡影响会有错误的估算。

颗粒感比较重,需要与动态模糊紧密配合才能取得较好效果。

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有