zoukankan      html  css  js  c++  java
  • SSAO

      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

    什么是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执行
      与流行显卡的管线整合相当容易
      缺点也是有的:
      由于采样全部在可见点上进行的,对于不可见点的遮挡影响会有错误的估算。
      颗粒感比较重,需要与动态模糊紧密配合才能取得较好效果。

    SSAO屏幕空间环境光遮蔽的运作方式

      其实了解了AO环境光遮蔽的原理,SSAO(屏幕空间环境光遮蔽)已经可以融会贯通,SSAO通过采样像素周围的信息,并进行简单的深度值对比来计算物体身上环境光照无法到达的范围,从而可以近似地表现出物体身上在环境光照下产生的轮廓阴影。
      具体的运作方式上,SSAO会利用GPU计算出指定像素的空间坐标,然后以此坐标为基点,在周围选择数个采样点进行采样,然后将采样点的空间坐标投影回屏幕坐标,对深度缓冲进行采样,最后得到采样点的深度值,再进行后续计算,最终得到一个遮挡值。
      
      

    SSAO实现了较好的全局光照效果

  • 相关阅读:
    数据库访问性能优化--应用开发
    苹果终端wifi图标点亮慢和portal弹窗机制分析以及处理办法和建议
    蓝牙固件升级(OTA升级)原理设计
    C语言:内存字节对齐详解
    linux du与ls查看文件大小时的区别
    80211 组播速率及组播转单播
    视频帧、码流计算
    IEEE802.11数据帧在Linux上的抓取 80211格式转8023帧格式
    wifidog源码分析
    无线路由:关于WDS,Repeater等模式的说明
  • 原文地址:https://www.cnblogs.com/lancidie/p/2132356.html
Copyright © 2011-2022 走看看