TheTechBehindDx11UnrealEngine"Samaritan"Demo

 

 

link:

http://www.nvidia.com/content/PDF/GDC2011/Epic.pdf

 

 

 


 

deferred shading

轻描淡写的提了一下,实在是在业界已经普及了,epic大肆宣扬就没意思了,只是更新下大家的knowledge base,unreal engine 3现在也defer了。

 

 


 

short hair

 

使用camera aligned triangle strip, 然后配上贴图,很类似grass的渲染。

重点在alias的处理,在单纯的1x buffer怎么做都是达不到高质量:

alpha test:alis

alpha blend:sort, fogging, dof

alpha to coverage:problems with many layers

最后选择是在4xmsaa buffer上做alphatest,然后resolve,可以说是super sample anti alias

 


 

per fragment AA

MSAA会出现左边白边的问题,原因是边缘处depth远近不一样,而必须有一个值。

unreal使用stencil把这个部分标出来,然后先做perpixel shading,这个过程stencil被全写过的部分就可以无视,被半写过部分就是可能白边的地方,再做一次perfragment shading就好了。

的确是比较不错地办法。

 


 

subsurface scattering

效果很棒,牵涉的论文读起来要费挺多的事情,pdf里面martin也就淡淡的一句,screenspace搜集lighting contribution,随机的搜集周围16个sample。

 

 

 


 

Reflection

 

使用billboard+raytrace的方式来完成。

平面反射,也就是把camera相对于反射面翻转,然后render场景的方法只能适合水或者单纯的平地面,对于复杂形状不行。

unreal的方式非常针对夜晚情形,只反射一些亮的东西,把这些东西做成billboard在反射中使用。

使用raytrace来sample反射的内容,由于是billboard,所以计算还是相对轻量级。

 

至于各种奇怪的反射,拉长条的,blurry的,就在这个算法下把reflection ray稍加变动就可以。

 

reflection shadow, epic做的真是够纠结的,

static是用一个offline生成的存在volume texture里的distance field

dynamic是用传统planar reflection的方法用反射camera画depth,根据depth的每一个texel来画quad产生final mask。

final mask与billboard一起作用营造出有shadow的反射。

这里的消耗感觉有点惊人。

 

 


 

Bokeh

 

估计这届gdc之后最明显普及的一个东东就是这个了,背景中亮片的效果。

 

基本算法还是brightpass检测,在亮的pixel上画quad或者类似的一些形状。

epic的dof solution还包括近景和远景的blur,所以使用了3个layer来区分,避免出现artifact。

 

由于这个效果是不需要准确的效果,所以low resolution的方案是肯定要使用的了。

 


 

其他,

文中提到一个能量守恒(energy preserving),就是对光照模型做一些矫正,保证radiance和irradiance能量上一致,这。。。玩家的火轮眼真的有能力识别这个么?

 

screen space subsurface scattering里面reference有点多,需要慢慢看一下,但是由于这个和手头工作相去有点远,所以优先级要降低了。

 

 


 

其实看下,这个demo里面的技术也没有太多特别的,但是拿出来就是震撼。

再次诠释了游戏发展至今绝不是一条腿可以跑的,tech,art,design三者都强的才是王者。

carmack那个单纯靠技术和单人能力就能杀出一条血路的时代已经过去了。

 

反射的部分是我的最爱,的确很不错。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值