Fast Precomputed Ambient Occlusion for Proximity Shadows

提起AO,大家一定会想到SSAO,SSAO不需要美术进行过多的参与,只需要调一下参数就万事大吉了,但是SSAO也有一些缺陷,噪声比较明显,有时候给人的感觉不是ao而是halo让人感觉画面变脏了,至于性能如果用一个quarter精度的搞一下,8600GT下720分辨率也是需要接近2ms的开销,这还是在没有Bilateral Filter下的开销,如果加了Bilateral Filter就会开销更多一些。这篇Paper采用预计算的方式达到很高的AO质量,上个图看下真相:


算法描述:

这篇Papaer的算法分为以下步骤:

预计算部分:对物体周围的3d格子中的每一个点计算Occlusion,然后保存到3d贴图里,每个物体对应一个3d贴图。


运行时:对于渲染的每个像素我们从3d贴图里得到ao。通过以下步骤来获得ao的数据:

1.画一个grid包围盒的后半部分

2.对于每个像素计算它对应的世界位置

3.将世界坐标的位置转化到grid空间

4.根据grid空间计算3d贴图的uv,然后读取对应的ao值。

5.读取的ao值和frame buffer进行alpha blend,这样就可以处理多个Occluder cast到同一个像素的情况了,尽管alpha blend不是一个数学正确的方式,在实际应用中已经表现的足够好了

2-3都是在同一个PS里完成的,简单来说就是将Projection空间的位置转换到Occluder空间,然后采ao的3d贴图即可

float4 worldpos = texRECT(PositionTex, screenpos)
float3 gridpos.xyz = mul(WorldToGridMtx, worldpos)
 out.color = tex3D(GridTexture, gridpos.xyz)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值