Tessellation.docx

上传人:b****5 文档编号:8001222 上传时间:2023-01-27 格式:DOCX 页数:32 大小:3.14MB
下载 相关 举报
Tessellation.docx_第1页
第1页 / 共32页
Tessellation.docx_第2页
第2页 / 共32页
Tessellation.docx_第3页
第3页 / 共32页
Tessellation.docx_第4页
第4页 / 共32页
Tessellation.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

Tessellation.docx

《Tessellation.docx》由会员分享,可在线阅读,更多相关《Tessellation.docx(32页珍藏版)》请在冰豆网上搜索。

Tessellation.docx

Tessellation

第1页:

DX11的灵魂Tessellation技术深度解析

2009年10月23日,微软正式发布最新一代操作系统——Windows7。

与之同时公布的还有玩家最为关注的DirectX11应用程序接口(API)。

作为DirectX11的首款硬件产品,ATI早在Windows7发布一个月前就已经发布了RadeonHD5000系列产品。

而NVIDIA方面由于在架构方面的大幅调整,在今年的3月27日才正式发布首款DirectX11显卡——GeForceGTX480。

至此,DX11显卡的大战已经箭拔弩张,在一轮接一轮的价格、产品大战前,我们今天将为大家从显卡的基本架构说起,为大家讨论一下ATI以及NVIDIA的两款顶级显卡在DX11特效方面的改进,尤其是DX11的灵魂所在——Tessellation。

Tessellation(曲面细分)是微软在DirectX11当中加入的一项非常重要的技术,这一技术的诞生让游戏画质再次有了质的提升。

不过对于Tessellation技术而言,ATI以及NVIDIA的设计思路再次出现了重大分歧,直接导致了DX11显卡在DX11游戏性能方面的大幅差距。

那么究竟是哪些原因造成的呢?

ATI以及NVIDIA的设计思路又差别在哪里?

我们今天将为大家详细解析。

第2页:

[第一章]Tessellation意义何在?

◆DirectX11的改进

随着Windows7操作系统的发布,DirectX11也随之到来,在DirectX11当中究竟进行了哪些改进,无论是在我们之前RadeonHD5870的评测文章还是GeForceGTX480文章当中都已经为大家介绍过了。

本文将这些新特性归纳为下表以便读者了解:

DirectX11主要新特性

Tessellator成为了DX11的重点

DirectX11大致有五点重要的改进,他们分别是:

多线程处理、ShaderModel5.0、DirectComputer11、Tessellation、HDR纹理压缩。

其中,除了Tessellation需要在架构方面进行较大改动外,其他方面主要都是通过指令代码等方式来实现。

因此,想要辨别显卡在DX11架构方面改进的幅度,则主要归结到了Tessellation方面的改进。

在我们了解ATI以及NVIDIA产品在Tessellation方面进行的架构改进前,有必要为大家详细介绍以下Tessellation究竟是一个怎样的技术。

◆Tessellation技术解析

Tessellation(曲面细分)是一个晦涩难懂的技术词眼,下面我们将用比较易懂的语言来为读者解释一下。

实际上Tessellation就是把一些粗大无序的几何模型图形分成很多更小的图形,从而实现更细致的几何模型表现。

下图就是一个很简单的例子:

通过上图可以看到Tessellation能够将普通的几何模型重新拆分,将每个平面(实际上是三角形)重新细分为更多的平面,让物体看起来更加细致,更加接近现实当中的效果。

Tessellation技术的加入能够大幅降低CPU资源,同时还能够让图像质量得到大幅提升。

实际上,Tessellation最早由ATI提出,并且ATI在R6xx以及R7xx产品当中已经加入了这一功能,但是限于这个技术的独有性,因此能够为这一技术提供支持的游戏厂商少之又少。

而微软将这一技术重新优化,纳入了DX11当中,也为Tessellation技术的普及提供了强劲的支持。

第3页:

——Tessellation工作流程解析

◆Tessellation工作流程

DirectX11Tessellation的处理单元我们称之为Tessellator单元,Tessellator单元本身不具备可编程性,因此DirectX11向tesselator单元输入或者从中输出的过程是通过两个传统的管线阶段完成的:

HullShader(HS,外壳着色器)和DomainShader(DS,域着色器)。

HullShader负责接收琐碎的图形数据和资料,而controlpoints将会基于如何配置Tessellator来产生数据。

这些琐碎的图形数据和资料会形成一个新的primitive单元(类似于顶点单元和像素单元),这种primitive单元可以将平面的一段分块处理。

Controlpoints用来定义想要得到的图形(比如说一个曲面或者其他)的图形参数变量。

如果您经常用Photoshop绘图软件的话,不妨把Controlpoints理解为PS的钢笔工具:

用平面代替线的贝塞尔曲线功能。

HullShader采用controlpoints来决定如何安排tessellator处理数据,利用Tessellator生成大批量的、确定数量的点,然后将数据传送给DomainShader,DomainShader将这些点转换成3D处理中的顶点,最后GPU生成曲线以及多边形。

Tessellator只负责分块处理。

Tessellator将HullShader基于某种参数而传送给自己的琐碎图形数据和资料分离成点,再将分离出来的一系列点发送给DomainShader,后者将会完成这些点到图形的过程的处理。

那么,编程人员就得为他们的代码编写HullShader程序,而不需要考虑TS的变成任务。

可以说,Tessellator就是一个固定功能模块,用来处理一些基于一定参数的输入数据。

DomainShader将会接收由Tessellator产生出的点,并依照终点控制(controlpoints)置换贴图将这些点形成一个合适的几何图形。

DomainShader通过运行开发者设计的DS程序来执行这些操作,这些DS程序控制这些新产生的点如何转移或者如何按照终点控制以及纹理渲染取代这些数据。

处理完毕这些点之后,DomainShader将会输出一个个顶点。

我们很可能就会看到大量DomainShader输出并直接进行光栅化,以便几何图形可以分散到屏幕上进行像素处理。

第4页:

——Tessellation技术优势体现

◆Tessellation的优势

看完前面的技术介绍,可能有朋友会问:

Tessellation技术是不是真的很先进、是不是一种进步呢?

我们知道,Tessellator本身是一种固定功能模块,而不具备可编程性。

Tessellator的输入和输出从一定程度上讲也可以通过HullShader以及DomainShader模块来操作。

GeometryShader(GS,几何着色渲染)是管线中一种可编程性模块,尽管这种管线不仅兼具Tessellation功能,而且还具备其他功能,但是GS却不能在任何一个有用的范围内执行Tessellation操作。

在渲染管线中大举向可编程性进军基本上已经成为业界的前进方向,而现在我们却后退了一步,为什么会这样呢?

固定功能硬件与可编程硬件之间的争论,一直主要是性能对特性以及性能对实用性孰重孰轻的问题。

起初,固定功能模块对于硬件性能的高低至关重要。

随着时间的推移,人们开始认识到在绘图芯片中植入固定功能模块根本不切实际。

比如说,如果开发者不能编出一套能充分挖掘硬件性能的程序的话,在这种硬件中加入再多的晶体管也是徒劳的。

这就促使开发者们设法在核心架构上做文章,让这种架构不断扩展运算源,这种运算源可以被共享,而且可以被大量不同的任务采用,但是这并不意味着固定功能硬件就失去了存在的意义。

现在我们依然面临着一个问题:

除非开发者能够尽可能的挖掘硬件的潜力,否则在Tessellator中堆砌晶体管是没有用的。

但是让其有意义的理由是:

如果开发者可以充分利用硬件的话,ROI(投资回报比)是非常高的:

这样可以轻松的从一种固定功能硬件Tessellator中获得巨大的Tessellation性能,这样做要比把必要的资源加入几何渲染单元以便获得同样的可编程Tessellation性能要来得容易。

当然了,这并不意味着我们将会看到固定功能模块可以在绘图硬件中再次兴起,因为这一先进的特性如果要继续向前发展的话,这一特性的早期应用就必须以牺牲可编程性为代价。

目前,绝大部分任务将会继续以灵活的编程性为最终目的,而且在不久的将来,我们可能看到Tessellator将会加入越来越多特性,直到tessellator具备完全的可编程性。

以上所有这些关于固定功能Tessellation的技术性评价并不代表我们就对Tessellator的优势漠不关心。

现在让我们来了解一下Tessellator的优势。

目前,美工需要做的就是为某一物体的不同LOD(LevelofDetail,随着物体或近或远的移动,物体的复杂性降低或者增加)制作不同的图像,而每个LOD里通过纹理渲染的几何模拟由像素着色器负责。

这样的话,对于美工和编程人员而言就有了额外的工作要做,而且会在性能方面下很多功夫。

Tessellation是创造更多纹理细节、阴影以及平滑边缘的几何图形的最佳途径之一。

而且,高级几何图形同时也需要真正的、完美的位移贴图。

当前,大部分几何图形都是通过纹理渲染和某些诸如凹凸贴图、视差贴图之类的技术模拟实现的。

即便是高质量几何图形,我们还是想用大量的普通贴图技术,以便可以利用光学算法,这样使最终画面出现裂缝、爆炸、山脊等效果就变得不那么难了。

这是一种快速、有效的方案,而且还可以产生非常细微的图像效果,并解放像素着色器资源以供他用。

在Tessellation技术的帮助下,美工便可以创造出一个极为细腻的表面图像,这种细腻的表面图像具有一个动态的LOD;将一个简单的hullshader单元以及一个移位贴图应用到domainshader单元的话,不仅可以减轻相关的工作负担,而且还可以提升画面的质量,促进性能提升。

GPU在未来的应用中将扮演更为重要的角色

如果开发者们采用Tessellation技术的话,我们可以看到非常逼真的物体效果,而且随着DX11的发布,NVIDIA以及AMD最终将会从Tessellation技术中获益。

那么究竟是NVIDIA获益更多还是ATI获益更多,我们接下来看看NVIDIA以及ATI两家产品在Tessellation架构设计方面的差异就会明了。

第5页:

[第二章]从架构谈起,A/N设计对比

虽然微软在DX11当中已经明确了Tessellation的执行流程,但是对于核心架构设计方面,还是需要ATI与NVIDIA方面的自行设计。

ATI与NVIDIA在历代产品当中的核心架构设计上都存在不同的设计方向,此次DX11产品同样如此。

◆ATI——架构简单,推出迅速

早在2009年9月份就已经亮相的RadeonHD5870当中,就包含了ATI的首款DX11显示核心——Cypress(RV870,官方正式代号为Cypress)。

Cypress核心可以看到两组SIMD阵列呈对称型排列,其中每组阵列当中均有800个流处理单元设计。

在单一SIMD引擎当中,ATI采用的排列方式依然是RV770的设计方式。

也就是说,每个SIMD阵列当中包含10组SIMD阵列,而每个SIMD阵列当中又包含16个流处理器,每个流处理器包含5个流处理单元,因此总计1600个流处理单元。

两者通过相同的高速数据总线与L2Cache相连,同时也连通到GlobalDataShare上进行数据共享。

RV870核心逻辑架构图

从上面的架构图可以看出,Cypress更像是两个RV770核心的合体,而对于DX11技术的升级,主要集中在GraphicsEngine当中。

这样的设计方式,无疑更加简单,对于ATI的研发周期来说也会大幅缩短,这也是为何ATI的DX11产品会如此之早就能发布的一个重要原因。

◆NVIDIA——架构复杂,研发较慢

接下来再来看看NVIDIA方面。

NVIDIA为了让Tessellation能够实现更好的效果,在GPU架构方面进行了大幅度的改进。

从下面的架构图可以看出,GF100核心主要划分为HostInterface(主接口,负责PCI-E通讯传输,包括读取CPU指令等)、GigaThreadEngine(主线程调度引擎)、4组GraphicsProcessingClusters(后文简称GPC,图形处理集群,GPU的核心部分)、6组MemoryController(显存控制器,每组显存控制器位宽为64bit,总位宽384bit)、L2Cache(二级缓存,容量为768KB)、6组ROP单元(每组包含8个ROP,共48个)。

GF100核心架构图(非GTX480/470)

在GF100核心架构当中,我们并不会看到ATI的Cypress核心当中独立设计的GraphicsEngine,那么GF100的Tessellation单元又在哪里?

实际上,每组GPC当中的SM当中,NVIDIA都加入了一组PolyMorphEngine(多形体引擎)。

而PolyMorphEngine则正是Tessellation的核心部分,并且,NVIDIA为了保证光栅单元的效能,在每个GPC中均设有一个光栅引擎(也就是四组PolyMorph引擎共用)。

那么,实际上NVIDIA的GF100相当于拥有了一共多达16个PolyMorphEngine,虽然无法直接与ATI的GraphicsEngine划等号,但是性能方面绝对要更具优势。

带来的负面问题就是NVIDIA首款DX11显卡的延期。

对于Tessellation方面来说,ATI以及NVIDIA可以说拥有了两种截然相反的态度:

前者更追求产品的研发速度,而后者更追求产品的性能表现。

那么不同的态度带来了怎样的产品?

在我们之前的两篇重量级评测当中已经为大家详细介绍过了,本文当中将会着重二者的Tessellation方面的设计进行详细介绍。

第6页:

Tessellation技术详解——ATI篇

◆酷似双核心CPU设计

从Cypress的架构图来看,ATI在设计Cypress之初,并没有把Tessellator单元看得过于重要。

因此在整个Cypress架构上,ATI遵循的宗旨更像是将两个RV770整合在一颗芯片当中,进一步提升显卡在超高分辨率当中的性能表现。

而DX11仅是作为一个功能被加入到Cypress核心当中而已。

Cypress的流处理器单元从前一代产品的800个激增到1600个,而核心面积却没有大幅度增加,这不得不说是ATI在Cypress芯片上设计得当的地方。

RV870核心逻辑架构图

如果仅仅从架构图上来分析,我们似乎看到了一款双核处理器的影子,就好象两个RV770核心相对放置一样,这的确是增加性能一个最为快速的方式。

但是,这样的设计也注定了Cypress不会在DX11方面有非常明显的改进。

我们从下面的GraphicsEngine介绍中就能了解到。

◆GraphicsEngine图形引擎

在ATI的GraphicsEngine当中,包含了众多图形处理单元,而Tessellator只是其中的以部分。

在Tessellator当中,内置了可编程的HullShader以及DomainShader,这就是ATI提供DX11当中Tessellation技术的重要组成部分。

同时,为了保证在高分辨率下得到更好的性能表现,ATI特地设计了两组Rasterizer以及HierarchicalZ单元。

在Tessellator单元当中,ATI严格按照微软的执行程序进行架构设计,并且整个核心当中,进配备一组这样的单元进行Tessellation计算。

因此,如果游戏当中遇到众多需要Tessellation计算的场景,那么这个单元就很有可能成为整个GPU系统的瓶颈。

为了证实这一点,我们将会在稍后的性能测试当中为大家实验。

第7页:

Tessellation技术详解——NVIDIA篇

与ATI的设计思路不同,NVIDIA在GF100上花费了大量的精力以及时间进行研发。

为了加强Tessellation的性能表现,NVIDIA甚至将第一版的GF100设计产品推翻重来,为的就是设计出一款DX11性能强劲的产品,而并非在DX10产品上进行小改动就发布。

◆GF100架构总览

从NVIDIA的首款统一架构的G80开始,到今天的GF100产品,这已经是NVIDIA第三代统一架构产品。

与第一代、第二代产品的小幅改进不同的是,第三代GF100统一架构产品为了迎合DX11的特性,在整体设计方面进行了较大幅度的调整,我们可以通过下面的架构图来看出:

GF100核心架构的主要改进

在GF100核心当中,共包括4组GPC部分,每组GPC又包括四个StreamingMultiprocessors(流式多处理器阵列,简称SM阵列),而每个SM阵列当中又包含了32个Core(NVIDIA称之为CUDACore,CUDA核心)。

在每个GPC当中,NVIDIA都增加了一组全新的ResterEngine(光栅引擎)。

而在每组SM当中,NVIDIA还增加了同样全新设计的PolyMorphEngine(多形体引擎,执行曲面细分的主要单元)。

Rester引擎以及PolyMorph引擎实际上是NVIDIA对GF100核心架构做出的最大变化,这两个部分也是让Tessellation性能得到大幅提升的最主要原因。

◆PolyMorph引擎

PolyMorphEngine(多形体引擎)当中包括了五个主要部分,分别为:

VertexFetch(顶点获取)、Tessellator、ViewportTransform(视口转换)、AttributeSetup(属性设定)以及StreamOutput(流输出)。

PolyMorph引擎执行步骤:

从一个全局顶点缓冲区中获取顶点,随后发送至SM,以进行顶点着色以及外壳着色。

将每个顶点从物体空间转变成了世界空间(本页第一幅图片最左边的形态),而且还算出了Tessellation所需的参数(例如Tessellation系数,简单理解就是:

将一个三角形重新划分为多少个三角形)。

Tessellation系数(或LOD)被发送至Tessellator。

PolyMorph引擎重新在SM当中读取Tessellation系数。

Tessellator将修补面(控制点网格所定义的光滑表面)分成三角形并输出许多顶点。

修补(u、v)值定义了网格以及形成网格的连接方式。

全新的顶点再次发送至SM,域着色器(DomainShader,简称DS)与几何着色器(GeometryShader,简称GS)均在这里执行。

DS能够根据外壳着色器(HullShader,简称HS)与Tessellator的输入来运算每个顶点的最终位置(本页第一幅图片中间的形态)。

在本阶段中,通常会附上一个DisplacementMapping(贴图置换)以提升修补面的细节表现。

几何着色器能够执行任何后期处理、按需增加或删除顶点以及基元。

PolyMorph引擎会执行视口转换以及视角校正。

接下来就是属性设置,把后期观察口顶点属性转变成了平面方程,以进行高效的着色器评估。

将顶点“流出”至存储器,使其能够用于更多处理。

PolyMorph引擎的执行大致分为这五个阶段,并且每一个步骤完成之后,都会交由SM进行处理,处理完毕,结果将自动进PolyMorph引擎的入下一个流程处理,当五个步骤全部执行完毕,就会交给下面的Raster引擎。

由于PolyMorph引擎的大幅增加,更好的避免了Core的空载现象,从而大幅提升显卡的执行效率。

第8页:

[第三章]实践Tessellation性能测试

◆测试平台

测试平台配置表

硬件平台

处理器CPU

英特尔Corei7965@3.2GHz

主板Motherboard

技嘉X58

内存Memory

金士顿DDR3-13333GB(1GB×3)

硬盘HDD

SeagateBarracuda(希捷酷鱼)7200.11320GB

显卡VGACard

GeForceGTX480

RadeonHD5870

声卡Audio

主板集成声卡

散热器Cooler

超频三南海2HP-1204X

电源Power

CoolerMaster酷冷500W

操作系统

操作系统OS

Windows732bit

驱动程序

主板驱动MBDrivers

Intel(R)X58/ICH10R芯片组驱动程式V9.1.0.1007

显卡驱动VGADrivers

NVIDIAForceWare197.55WHQL版

ATI催化剂10.4版

◆平台介绍

测试平台方面我们选择了一款技嘉X58主板,测试的CPU则选择了Intel的i7处理器,主频为3.2GHz。

而测试内存方面,我们依旧搭配了三条DDR3内存(单条1GB),实际性能测试频率、时序为DDR3-10667-7-7-20。

搭建这样的平台能够更好的体现显卡之间的性能差距,降低其它设备成为显卡性能发挥的瓶颈。

显卡方面我们选择了NVIDIA以及ATI的单核心顶级产品GeForceGTX480以及RadeonHD5870进行对比。

◆测试项目

为了能够更好的体现Tessellation方面的差距,我们此次测试全部选择了能够支持DX11的游戏以及测试DEMO,包括天堂2.0、巨石人、尘埃2、地铁2033、NVIDIA水面DEMO、NVIDIA头发DEMO以及微软DX11DEMO。

第9页:

————基准测试:

天堂2.0(DX11)

/天堂2.0特点/:

1

2游戏3DAPI:

DX11

Unigine引擎发布了基于其Unigine引擎的首款DirectX11显卡测试软件——Heaven。

在GTX480发布前再次将其升级,加入了全新的测试场景,并且更加广泛的利用到了DX11当中的特效,对DX11显卡的性能需求更加苛刻。

/天堂2.0设置/:

测试设置为最高画质。

/天堂2.0方法/:

游戏自带BenchMark测试程序,运行多次取平均值。

天堂2.0是一款专为DX11显卡推出的测试程序,演示程序当中大量的应用了Tessellation效果。

我们通过软件设置调节Tessellation效果为高和极限两种模式,可以看出,NVIDIA显卡在Tessellation效果提升之后的性能下降幅度大约为18%,而ATI的HD5870在同样的对比下,性能下降幅度则达到了35%。

在天堂2.0这个Tessellation应用较多的场景测试当中,GTX480的架构优势明显体现了出来。

第10页:

————DX11游戏测试:

巨石人

/巨石人特点/:

3

4游戏3DAPI:

DX11

游戏引擎开发商BitSquid和游戏开发商Fatshark,为PC游戏爱好者准备了一款用于检验GPUDX11性能的技术演示程序,名为“StoneGiant”(石巨人)。

该DEMO内建对DX11及曲面细分等特性的支持,而用于商业版本的BitSquidTech游戏引擎将支持PC、PS3和Xbox360平台。

/巨石人设置/:

测试设置为最高画质。

/巨石人方法/:

游戏自带BenchMark测试程序,运行多次取平均值。

在巨石人的DEMO当中,通过“F2”热键玩家可以手动调节Tessellation至关闭、中等以及高三种选项,我们通过两种不同分辨率来考验两款产品的Tessellation的效能表现。

通过测试可以看到,HD5870在关闭和开启至最高Tessellation效果时性能

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1