泡泡网显卡频道 PCPOP首页      /      显卡     /      新闻    /    正文

图形API再革命!DirectX 11新技术预览

● Tessellation镶嵌处理

    大家都知道,计算机上所显示出来的3D图形都是有无数个多边形组成,那么想要生成一幅3D图形,就必须经历多边形的生成这一个步骤。但是在DirectX 10到来之前,多边形的生成都是CPU的工作,而GPU只能对像素进行处理。比如基于DirectX 9的GPU如果需要建立3D模型,必须先依赖CPU生成多边形,然后由GPU调入进行贴图处理。这个现象在DirectX 10时代有所改观,加入了几何渲染单元(Geometry Shader)。但是,在我们之前介绍G80的时候就提到过,几何渲染单元的作用是将CPU生成的多边形进行加强、复制,并没有生成三角形的功能。比如CPU给出多边形信息,GPU利用几何渲染单元将同类的多边形加以复制处理,然后再进行贴图等后续操作。

    可以看出,在DirectX 10中,三角形的生成实际上还是由CPU在完成。而DirectX 11新增加的镶嵌处理则可以在一定程度上生成多边形,在顶点渲染和几何渲染的中间加入了Hull Shader、Tessellator和Domain Shader这三个单元,这三个单元的目的正式为了完成生成多边形的工作。如下图:

    那么,镶嵌处理是如何工作的呢?首先,GPU依然从CPU那里获得多边形的数据和资料,然后顶点渲染单元(Vertex Shader)生成定点,并制定控制点;接下来,处理好的资料会被传输到Hull Shader模块,Hull Shader模块会根据程序载入控制点,生成如贝塞尔曲线等平滑曲线,并对数据进行基础处理;之后Hull Shader再将调整好的数据传输给Tessellator模块,利用Tessellator生成大批量的、确定数量的点(需要注意的是Tessellator并不知道控制点的相关信息),这样Tessellator就会在原有多边形区域内(控制点所确定的区域内)确定大量的点;而得到数据的Domain Shader模块会将这些点转换成3D处理中的顶点,最后GPU生成曲线以及多边形。

   

    Tessellation镶嵌处理所带来的好处非常多,首先CPU的压力被转移到了GPU,从而释放了GPU的资源占用率,而CPU空闲出来的性能可以更好的完成AI处理等工作。同时,Tessellation仅仅需要少量的数据点就可以生成大量的多边形,智能调节远/近景图像的生成。比如,比较远的图像可以使用低档次的特效等级,主要对轮廓进行生成;而比较近的图像可以使用高等级的特效,体现出图像细节。

1人已赞

关注我们

泡泡网

手机扫码关注