Halo Reach Effects Tech

 

link:http://cmpmedia.vo.llnwd.net/o1/vault/gdc2011/slides/Chris_Tchou_Programming_Halo_Reach_Effects.pptx

 

halo reach的一些特效技术:

 


particles

 

首先提到bungie老的particle系统基于一个很大的uber shader,uber shader的一个坏处也体现的比较好,就是没法很精确的去保证每一个particle都按照其最精简的方式运行。

bungie的选择也很棒,就是用额外的一些系统来补充,一般的particle system用老的,新式的(带反弹功能的)就用新的particle。

这个看似简单的选择,结合之前的一些文章来看,其实不容易,不够老练的选手常常是想另立门户,然后写了很长时间,一切顺利的话,写出一个和原来差不多的东西。

 

新的particle系统擅长处理这样一类particle:

  • 数量多
  • 面积小
  • 生命期短
  • pixel shader简单

bungie使用28个byte就把这一类particle的信息表达清楚,并在build time存到texture里面。

 

在render particle的时候是cpu直接issue一个drawcall,gpu去sample texture,sample出来的值是particle 的property,根据这些在vs,ps里面去渲染。

当然quad实在vs里产生。

 

 


 

particle collision

 

使用depth buffer和normal buffer来碰撞particle,屏幕外的就不管了。

好像会很有问题,但是事实证明是可行的而且给力的。

 

 


 

ShieldEffect

这部分一些小技巧效果还很棒,赶紧实现个,组里同事还挺喜欢的。

这个我比较喜欢:使用depth信息调解下透明度就可以达到,很棒!

 

 


 

LowResolutionTransparency

使用1/4buffer来渲染透明物件由来已久了,bungie也采用了这个办法。

在360平台上,bungie使用了4xmsaa的技巧来做。

 

另外也不是所有的particle都放在quater buffer里就是最好,一些小的近的直接全分辨率就好。

 

然后文中提到一个transition的问题让我有点晕,不知道是什么的transition,high/low resolution的还是其他的什么。

远的大的可以低分辨率,这个就涉及到一个低高分辨率的转换问题。

暂且理解为resolution的transition吧,看起来只有这个是和depth相关的。

 

总之是把particles进行了分group的划分来做的,这一块不是很懂目前,有哪位看的很明白麻烦指教一下。

 

 


 

最后务虚部分提到了

 

  • 程序员不要埋头猛做,需要看下项目需要什么
  • 质量和速度是可以互相转换的,有时候就是要牺牲一些质量,
  • 君不见cod那大量的粗糙的大normalmapping和particle一样赢得了玩家的心么?

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值