[GPUPro4]PracticalPlanarReflectionUsingCubemapsAndImageProxies


<RememberMe>里面使用的用于反射的技术,实战的文章,非常不错。


文章本身很不错的,总结了不少反射用的技术,包括:

  • 简单的cubemap(envmap)这个常常有parallax(视差)问题
  • screen space reflection
  • real time ray tracing : 当然是比较简化版的,举的例子是UE的SamaritanDemo
在吸收了各家之长的基础上,提出了自己的想法,主要是两点:
矫正过的env mapping:

最左边的那个图里的方法就是最粗暴的texCube(envmap, dir)这种做法,对的差了远了去了。

然后是矫正过得做法,

从图里一目了然,就是反射到的一个点,投回envmap所在的空间,计算出方向,然后sample,这样就准确了,很赞。

ImageProxy
可以理解为Billboard,Imposter,其实都是一个意思 ,就是把模型渲染到一个小render target里面,然后拿来使用,这样在reflect的时候,就很节省。
ImageProxy用于静态capture的cubemap hold不住的情况,人物,精度不足的情况等等。

工具&Detail
上面说的都是基本的思路,工程中不会这么简单了

    • envmap的覆盖区域和反射平面是定义好的
  • 在角色身上有一些小技巧,可以使用一些quad挂在骨骼上,然后使用animation来更新这些quad,然后render出来,和人物本身的样子和动画大体符合,也能蒙混一下(阴险啊)


LocalImageBasedLighting
通俗说就是:这个就是EnvMap使用到比较光滑的物体上,金属物体有环境反射的那个感觉,采集的EnvMap是空间里预先放好的一个个小球(Probe),在金属物体位置发生变化的时候,在不同EnvMap之间插值切换。
刚好上一篇的Killzone4的文章也提到了,使用了之后,结合glossy reflection可以有效的达成很棒的secondary specular lighting,《remember me》在多个EnvMapProbe之间的切换的时候,blending weight美术是可以自己来定义的,这样效果有时候就是需要人为干预一下。

性能
一般场景里面是2个cubemap,10到15个image proxy。
ps3上面是0.17ms的贴图生成时间+0.16ms的mipmap生成时间
xbox360上面是0.1ms的贴图生成时间+0.009的mipmap生成时间。
应该说效率非常可以了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值