革命性DX11架构!GTX480/470权威评测
第八章/第六节 GTX480 Demo:Hair飘逸的长发
还记得6800Ultra美人鱼Nalu那一头飘逸的长发吗?那可纯粹是用暴力模型堆积出来的效果,由于要求太高,时至今日都没有什么游戏使用这种方法来刻画毛发效果。直到DX10时代,有了几何着色之后,可以通过简单的复制粘贴方式来营造一些比较短的毛发效果,但对于长发依然无能为力,因为一根根头发之间相互干涉的交互效果并不容易实现。
DX11时代,NVIDIA使用Tessellation技术攻克了这一难题,启动Hair Demo之后的动画马上给人耳目一新的感觉:
同样是基于Tessellation技术的演示Demo,上一页Island11中细分水面的效果大家很容易理解,而在这款Hair中大家很难想像到被称为“细分曲面”的这项技术居然可以被用来“细分头发丝”!?
关闭阴影之后,FPS大幅提升,看来造成性能下降的主要原因并非是Tessellation的效率关系,而是由于模型太过丰富,光线经过如此众多头发之后的计算量非常大。看来如果要将头发Tessellation技术应用在实际游戏中的话,由头发所产生的光影应该适当的缩水,不然就会消耗太多的GPU资源。
短发似乎更为出色,而且性能更好(毕竟干涉计算量下降了)
如果把Tessellation关闭的话,就看到了这样一副惨不忍睹的画面,这实际上就是这个女孩“真实”的头发数,前面大家看到的稠密的秀发都是用Tessellation技术虚构出来的。
一般来说,在视角拉远时,为了降低GPU负载,Tessellation技术会自动减少“复制”出来的头发数量,此时人物的头发太少影响视觉效果,为了弥补这个不足,特意设计了加宽头发的功能,从而保证远距离观察时头发的稠密程度,此时由于距离较远,玩家很难注意到这些细节的变化。
通过这幅截图,大家就可以非常清楚的看到,原来密密麻麻的头发都是一组一组的,每一组头发其实都只有一根是真实的,其它的几十跟都是由Tessellation自动生成。在受到空气流动或者摇头动作时,头发是以真实的头发丝为核心、以Tessellation生成的组为单位运动,当然这些细节如果不刻意指出的话很难察觉。
在DiRT2这款游戏中,Tessellation技术被用来渲染布料、水洼、人物和地形,但都是轻量级的。此次NVIDIA的两款Demo用Tessellation生成水面和头发不但很有创意,而且极具视觉冲击力,但对GPU的Tessellator运算能力提出了更高的要求,那么HD5000在运行这两款Demo时的性能如何呢?后文中见分晓。