AMD的海飞丝技术TressFX Hair,彻底解决游戏人物毛发如丝渲染问题

星级:
在2013年AMD推出TressFX Hair之前,游戏CG中生物毛发的渲染因为渲染极其复杂,对GPU的计算压力极大,因此渲染效果一直很差。直到TressFX Hair推出之后,彻底解决游戏人物毛发如丝渲染问题,游戏CG中的人物毛发才开始呈现出现在人们看到的一根一根头发分明的效果。

自从电脑3D图像渲染技术发明以来,如何解决3D CG图像中的人物毛发渲染问题就一直是科技界的最为复杂最具挑战性的项目。对大型3D游戏而言,这更是一项挑战,因为游戏中的人物每一帧位置都不一样,都需要重新渲染。

在2D时代,因为游戏CG中的人物普遍都是高度卡通化,游戏中人物的头发普遍都只是画出一块大致区域,然后往区域内填充各种颜色就行,这个最典型的例子就是以《七龙珠》为代表的日本动漫。

不过,到了3D时代,CG人物因为进一步远离卡通,渐渐往真人化靠拢。于是,再以一块色域示意毛发就显得违和了。以《七龙珠》中的孙悟空超级赛亚人模式为例,这样渲染出来的孙悟空的头发就会像是顶了一把香蕉。在电脑3D图像渲染技术问世前期,因为技术原因,各大CG公司因为没有其他更好的办法,只能以这种方式渲染人物,能改进的最多也就是在头发上多作出几根线条,将头发做得飘逸一些。为什么游戏CG中人物毛发渲染这么困难呢?这主要是因为CG人物的毛发成千上万,且各自独立的微小细丝都是半透明的,都有复杂的阴影,还需要抗锯齿,而且为了配合人物动作,这些计算都需要每秒钟进行几十次,这对GPU来说是无比巨大的压力。


不过,2013年AMD公司推出的TressFX Hair彻底解决了游戏人物毛发如丝渲染问题,并且通过与Crystal Dynamics工作室的紧密合作,2013年新版《古墓丽影9》第一个引入了这种技术。

TressFX Hair使用了DirectCompute接口,结合AMD GCN架构(Radeon HD 7000系列)的强大并行计算能力,可以理解成将头发渲染的工作部分转到了后期处理中。AMD还利用了此前的顺序无关透明(OIT)技术,使用“Per-pixel Linked List”(每像素链接清单/PPLL)数据结构来管理渲染的复杂性和显存使用。

TressFX Hair就这样构建了一套实时物理模拟系统,将每一根头发作为几十条链接中的一环,让重力、风雨、头部运动等因素以更真实的方式描绘头发。还有碰撞检测机制,确保发丝不会彼此穿越,或者跑到头皮、衣服、身体等其它实体表面之下。

此外,头发在受到外力影响而发生变化之后,会逐渐回到最初状态。