GPU和Shader技术基础知识.docx
- 文档编号:9229748
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:38
- 大小:2.04MB
GPU和Shader技术基础知识.docx
《GPU和Shader技术基础知识.docx》由会员分享,可在线阅读,更多相关《GPU和Shader技术基础知识.docx(38页珍藏版)》请在冰豆网上搜索。
GPU和Shader技术基础知识
本连载的主要目的,是介绍最新的PC和GAME所使用的最新3D图形技术的发展趋势。
暂时的方针是,首先是考虑介绍比较新的PCGame和PS3,XBOX360等新时代游戏机的游戏所采用的技术。
那么首先,想回顾一下近年来的3D图形技术的进化历史。
实时3D图形技术的进化历史
目前,不仅索尼的PS3,微软的Xbox360,任天堂的Wii这些最新的游戏机,以及最新的微软WindowsVista的用户界面变成了3D图形,就连NDS和PSP等掌机,以及一部分最新的移动电话也支持了3D图形技术。
说来,实时3D图形是怎么进化着,并向未来发展的呢?
今后,要长期和实时3D图形打交道的人,先试着整理基础知识吧。
1980年代后半到90年代前半,FlatShading到TextureMapping的时代。
在这之前3D游戏还没有应用, 基本上[3D图形]是用在技术训练的模拟,解释自然现象或光学现象的学术研究,比如说对影像表现的应用等,在专业用途和学术用途的领域里进化着。
从1980年代后期开始到1990年代,大型游戏制造厂商在街机用途的游戏系统里采用了实时的3D图形系统。
从这开始3D图形才真正在游戏里被有效的利用。
要说这个时代具有代表性的作品就是NAMCO(南梦宫)的「winningrun」(1988年)、SEGA(世嘉)的[VirtualFighter(VR战士)」(1992年)。
那时候虽然也使用多边形模型来实时表现,但多边形数很少,采用的lighting也是以多边形为单位的FlatShading为主流。
但是,游戏和3D图形的相遇,确立了[实时3D图形]这个领域,并一直支援着它的进化。
在NAMCO的[RIDGERACER(山脊赛车)](1993年)里,应用TextureMapping的3D模型(在多边形上贴上贴图)可以自由运动,就好像是从积木集合体那样的3D图形开始,一下提高了真实性。
[VirtualFighter(VR战士)」(1993年)。
只是以多边形单位lighting为基本的[FlatShading],也没有TextureMapping这个概念,因此,脸和服装都使用”某种形状的多边形”来绘制(C)SEGA。
1990年代中期~家用游戏机开辟了面向消费者的实时3D图形。
当时,除了特殊的图形工作站,如果限定在[游戏平台],那么当时3D图形技术最先进的是街机游戏系统。
然而,1994年发生历史性的逆转,那就是SONYPlayStation(PS1)和SEGASaturn的登场。
尽管分辨率不是太高,但提供给消费者对应Texturemapping的实时3D图形的意义很大。
在这些主机上,实时3D图形和3D游戏图形以并行的关系性,开始急速的进化。
另一方面,很遗憾,这时适合普通消费者的PC的3D图形技术,要比游戏机大幅度落后。
适合普通消费者的PC3D图形技术真正的普及,是在1995年登场的新操作系统,Windows95的时代之后。
微软发表了把Windows环境下的Sound,Graphic,network,Gamecontroller等多媒体API组件整合到一起的「DirectX」,Windows95也采用了它。
DirectX后面增加版本号的称呼也成为惯例、Windows环境下真正的3D显卡开始普及。
实时3D图形可以使用是在1997年发表的[DirectX5]之后。
也正是这个时候,大型的CPU/Chipset制造厂商Intel的新图形端口AGP(AcceleratedGraphicsPort)总线技术也投入实用化。
强大的图形芯片制造厂商NVIDIA推出了RIVA128系列,ATI(2006年和AMD合并)推出了RAGE3D系列。
都深受欢迎。
比PS1登场晚了3年,PC平台终于有了可以和PS1同程度的实时3D图形。
NVIDIA的「RIVA128」
DirectX5時代、「用PC玩3D游戏」并广为传播的「QuakeII」(1997年、idsoftware)msun;(C)1997idSoftware,Inc.AllRightsReserved。
DirectX6時代,以显卡的经典游戏而闻名的「Incoming」(1998年、Rage社)(C)RageGamesLtd1998。
1990年代后期~DirectX的急速进化历史
1990年代后期,由于PC业界团结一致的致力于强化PC,使图形实现了急剧的进化
1998年,发表了整合了当时已经发表的各种实时3D图形功能的DirectX6,次年1999年,决定了今后PC图形进化方向性的DirectX7也被发表了。
直到DirectX6以前,3D图形处理硬件,只担当多边形和相应的像素的计算(光栅化rasterise处理),和处理贴上材质纹理等像素单位的处理。
DirectX7中,实现了把之前CPU担当的顶点单位(多边形单位)的坐标变换处理和光照处理,改由3D图形硬件来担当的结构。
特别是在那时,把用图形“硬件”进行“顶点单位的坐标变换(Transform)和光照处理(Lighting)”的结构,称作[HardwareT&L](T:
TransformL:
Lighting)
还有,因为这个契机,PC业界理解到[担当全部图形处理的处理器]的含义,开始把这样的硬件(处理器)称为GPU(GraphicsProcessingUnit),以后也就这么定下来了。
另外不得不说句闲话,GPU的这个称呼,发音和文字上都和CPU(CentralProcessingUnit)对应着。
作为对应DirectX7的GPU,NVIDIA的GeForce256和ATI的第一代RADEON登场了。
搭载了「NVIDIAGeForce256」的显卡
实时3D图形技术上,虽然这之前感觉游戏机一方走在更前面一些,但是从进入DirectX7时代开始,形势完全被PC逆转了。
这是因为,家用游戏机都被普及性优先的战略所制约,只能以5年为一个周期变更硬件配置,相对的,PC每年都可以吸收最新技术完成进化。
还有,当时游戏机的份额之争是在3个制作商之间争斗,相对,PC图形因为是在近10个制造商之间争夺,所以也对激烈竞争的根源起了不小的影响吧,但是,直到进入了DirectX8時代,大淘汰的浪潮终于涌了过来,GPU制造厂商也缩小到数家。
「GIANTS:
CITIZENKABUTO」(2000年、PLANETMOONSTUDIOS)。
在DirectX7时代,PC的实时3D图形的表现力完全凌驾于家用游戏机之上。
(C)2000PlanetMoonStudios.AllRightsReserved.PlanetMoonandthePlanetMoonlogoaretrademarksofPlanetMoonStudios.Giants,Giants:
CitizenKabuto,Interplay,theInterplaylogo,and"ByGamers.ForGamers."aretrademarksofInterplayEntertainmentCorp.AllRightsReserved.ExclusivelylicensedanddistributedbyInterplayEntertainmentCorp.Allothercopyrightsandtrademarksarethepropertyoftheirrespectiveowners.
2000年ProgrammableShaderArchitecture(可编程着色器架构)展开帷幕。
进入GPU制造商淘汰的DirectX8时代。
虽然在1998年世嘉•Dreamcast,2000年受到期待的索尼•PlayStation2开始发售,但是在3D图形的处理能力上,它们和当时的PC图形保持在同等程度。
确实,虽然PCDirextX一方有着先进性,但硬件(GPU)的急剧进化并不能牵引软件业界,
PC一方变得难以技术同步。
虽然那么说,但作为PC业界,不管怎样都维持了每年一定会积极采用全世界研究者们创新出来的最新3D图形技术的基本方针。
说到原因,对最新技术牵引的PC业界来说,导入像家用游戏机那样的缓慢的进化循环是很难的。
PC一方每次在新GPU上搭载新机能,DirectX就要为了可以利用这个机能新添加的API,这使DirectX不断的增长。
此外,实现的新功能在实际应用里使用是没有限制的,这样的功能作为DirectX内的化石功能持续残留着。
GPU则也要为了这些化石功能消费晶体管,不合理的成本和电力消耗是没有意义的。
就在这时,设法把图形处理用软件方式实现,并导入到GPU里的想法被提出了,从而有了加入[shader可以编程实现]这个含义的,[可编程着色器](ProgrammableShader)的概念(待续)
世界第一个面向消费者的采用可编程Shader架构的GPU「GeForce3」
GeForce3的人脸动画DEMO,利用可编程着色器实现的基于法线贴图的凹凸贴图表现,对衣服的外形和人肌肤的褶皱也一样适用。
那么,在上次最后介绍的是可编程着色器架构(ProgrammableShaderArchitecture),最早支持它的DirectX是2000年末发表的DirectX8。
作为对应DirectX8的GPU,NVIDIAGeForce3,ATIRadeon8500等被投入市场。
还有,2001年微软推出的WindowsXP,也集成了DirectX8。
可编程Shader有担当顶点处理/多边形处理的[可编程顶点着色器](ProgrammableVertexShader),和处理像素单位的阴影和处理相关纹理的[可编程像素着色器](ProgrammablePixelShader)两种类型,在各自的着色器单元(ShaderUnit)上,有着把各种各样的Shader程序来实现为3D图形的处理的结构。
而且,作为用语,如果直接说[ProgrammableShader],有指双方(VS和PS)的情况,或者是指这个整体的概念。
并且,由于这个Shader程序是软件,开发者可以自己制作独创的Shader程序,就可以在GPU上实现新的图形功能。
这样,即使不等待每年发表的最新3D图形技术和下一代GPU登场,如果开发了实现这个技术的Shader程序(除了性能上有差别),那么也会产生从实验或实践中获益。
这个技术传播后,也产生了硬件和软件业界就为再次互相靠近的契机。
但是,可编程Shader架构的实现,要求GPU制造厂商有很高的技术能力,在接下来DirectX9登场的时候,支撑了初期实时3D图形的GPU厂商的撤退变得很显眼,淘汰的结果,2001年以后,GPU制造厂商的两大巨头NVIDIA和ATI激烈的GPU战争变得突出。
现在,除了两个公司以外还在开发对应PC消费者的量产GPU的还有英特尔(但集成到芯片组里)和S3公司。
支撑PC图形黎明期的3dfx公司,2000年被NVIDIA收购,类似的NumberNine公司也在1999年倒闭了。
Windows9x时代,在日本有着极大人气的MATROX公司,虽然也最后投入了DirectX8代GPU「Parhelia」系列,但并不成功,此后就远离了对应最新技术的GPU开发。
面向专业工作站用GPU的3Dlabs公司在Windows9x时代虽然也投入了对应消费者的GPU,但也是徒劳,2002年被Creative公司收购,2006年宣布退出专业用GPU业务。
从芯片组制造厂商SiS派生出的GPU专门制作厂,新成立了XGI公司,2006年,在对应最新技术的新GPU开发方面,事实上也是退出了。
【XGI上海研发部先是被ATI收购,不久后ATI又被AMD收购。
】
对了,在DirectX8发表约1年后的2001年末。
微软发售了以DirectX8为基础的游戏机,第一代「Xbox」。
这里就不做过多讨论了,不过,Xbox是世界上首个采用可编程Shader架构的家用游戏机。
第一代「Xbox」。
搭载了以GeForce3为基础的GPU,API使用DirectX。
Xbox和PC两方发售的「分裂细胞(SplinterCell)」(育碧UBISOFT),让世界了解了基于可编程Shader的3D图形的可能性。
2002年/2003年~ShaderModle2.0和第一期DirectX9时代
DirectX8时代的programmableshader(可编程着色器),因为每个GPU制造厂商有若干个分支版本混合在一起的关系,所以被规定为SM1.x。
然后到了2002年,新的可编程shader,支持2.0规格的DirectX9发表了。
可编程shader的规格,用ShaderModel(简称SM)的关键词后面加版本号来指出架构的方式,近年来变得常态化。
总之,例如DirectX9时代应该就是指「SM2.0」对应GPU兴起的时代。
SM2.0可以执行比SM1.x更长的Shader程序,命令种类的增加,能使用的命令组合的限制也被降低了。
还有,以前只有VertexShader可以使用的浮点运算精度,现在PixelShader上也可以使用了,PixelShader的阴影处理的计算精度和能够表现的动态范围也扩展了。
这个扩展决定了未来被称为[高动态范围渲染](HighDynamicRangeRendering:
HDRRendering)的产生,成为实时3D图形新趋势的契机。
DirectX7/硬件的T&L(T:
Transform,Lighting)的第一代GPU,并且对应DirectX最初的可编程Shader的GPU都是从NVIDIA发布的显卡。
相对的,DirectX9/SM2.0对应的GPU的最初显卡是ATI发布的Radeon9700,都是让人感慨很深的事情。
虽然NVIDIA也投入了与之对抗的GeForceFX,但制造上有问题,性能上也不利,SM2.0时代在ATI的优势中过去了。
首款对应SM2.0的GPU,ATI发布的Radeon9700系列,后面的9800,低端的9600/9500系列也受到了欢迎。
SM2.0时代ATI的优势被确定,这时最被盼望登场的VALVE公司的大型游戏[半条命2(Halflife2)],也是以ATI的Radeon9500/9600/9700/9800系列作为最合适的GPU,展开了销售战略。
[HalfLife2](VALVE)最初是预定在2003年发售,几次延期后,在2004年末被推出了,虽说有好有坏,HL2为SM2.0时代GPU的构筑做出了贡献。
(C)2004ValveCorporation.Allrightsreserved.Valve,theValvelogo,Half-Life,theHalf-Lifelogo,theLambdalogo,Counter-Strike,theCounter-Strikelogo,Source,andtheSourcelogoaretrademarksorregisteredtrademarksofValveCorporationintheUnitedStatesand/orothercountries.Allothertrademarksarepropertyoftheirrespectiveowners.
2004/2005/2006年~ShaderModle3.0和第二期DirectX9时代
SM2.0虽然说是"2.0",但和1.x时一样,产生了几个小型的分支。
NVIDIA在GeForceFX
里组装了起名为可编程VertexShader2.0a(VS2.0a)和可编程PixelShader2.0a(PS2.0a)。
DirectX9登场约2年之后的2004年,微软并没有发表DirectX10,而是发布了新的DirectX9的小幅升级版(minorversionup),完成了ShaderModel3.0,即SM3.0的对应。
SM版本提高了1.0,但DirectX版本没有提高的原因有[为了配合即将推出的WindowsVista一起推出],[考虑到之后出现的ATI制造的GPU没对应SM3.0」等多种说法,但具体不明。
【ATI和NVIDIA有着不同的公司风格:
ATI从来不搞自己的一套,专心跟着Microsoft的标准走,老大说一决不说二;而NVIDIA一直都喜欢推出自己的标准,不论是SM中VS和PS的版本、OpenGL的EXT、以及Cg和CUDA等,应该说是一个很有活力和野心的公司,在推进技术的同时,也给行业带来了某种程度上的混乱。
】
实际上,SM3.0里Shader程序的程序长度限制被取消,VertexShader、PixelShader双方的指令集也被扩充。
SM2.0里动态条件分支和循环虽然只限在VS里,但在SM3.0中,PS里也可以支持了。
实际上,可编程Shader的VS和PS的差距没有了。
还有,从VertexShader还支持了可以访问Texture(纹理)的新技术「VertexTextureFetching:
VTF」(别名Texturelink),在那时深受欢迎。
首款对应SM3.0的GPU,是NVIDIA发布的GeForce6800系列,意外的是,ATI在2004年新登场的GPU、RadeonX800系列,还是选择停留在只对应SM2.0。
NVIDIA的GeForce6800系列。
首款对应SM3.0的GPU,再次从NVIDIA那边登场了。
RadeonX800系列,是对应VertexShader2.0a和像PiexlShader2.0b扩展改良的SM2.0的GPU。
2004年是两大巨头步调不一致,用户混乱的一年。
在把SM2.0称为“2.0”的同时,因为ATI和NVIDIA都独自扩张,也出现了细节版本号的不一致。
2004年也是新的总线端口,「PCI-Express」被开始使用的一年。
显卡的总线迎来从AGP到PCI-Expressx16总线的转移期。
2004年~2005年,当用户要购买新图形卡或替换,在选择「是SM2.0(ATI),还是SM3.0(NVIDIA)」的同时,还要做[是AGP还是PCI-Express]这个纠结的抉择。
那么,NVIDIA在第2年的2005年投入了第二代的SM3.0对应GPU「GeForce7800」系列。
作为一贯主张「2004年应该贯穿在SM2.0的成熟」的ATI,在2005年,比NVIDIA晚了1年半的时候,投入了自己首款对应SM3.0的GPU「RadeonX1800」系列。
但是RadeonX1800虽然支持SM3.0的基本特性,但却没有对应VTF。
接着,2006年NVIDIA发表第三代的对应SM3.0的GPU「GeForce7900」系列,与之对抗的是ATI的RadeonX1900系列的投入。
两个公司,虽然都是在前一代型号上"+100"来定位下一个性能提高的产品,除了性能方面以外也可以吸引眼球。
再者,ATIRadeonX1900系列也结束了没有VTF的状况。
虽然两大巨头GPU厂商ATI、NVIDA都已经推出对应SM3.0的GPU是一件好事,不过关于VTF的支持,两个公司的步调不一致。
使得SM3.0的VTF成为了次要的功能,是否支持这样的主要功能,对用户和实时3D图形技术的进化给予了不小的影响,这成为迎接即将到来的DirectX10时代的一个大问题。
(待续)
SM3.0中,作为特殊功能而大受欢迎的[VTF]。
但是,因为ATI没有支持VTF,VTF的效果只能在这个NVIDIA的SampleDemo里看到。
在家用游戏机的世界,2005年末微软推出作为该公司的第二代游戏机「Xbox360」。
图形技术方面对应DirectX9/SM3.0,接下来将详细描述其具体性能,值得注意的是Xbox360GPU(Xenos)有着世界首个采用统一着色器(UnifiedShader)架构的特征。
Xbox360GPU是由ATI制造的,意外的是,和同时期ATI对应PC发表的RadeonX1800系列设计完全不同,这一点很有趣。
之前推出的RadeonX1x00系列全部都没有对应VTF,不过,Xbox360GPU对应了。
微软「Xbox360」。
Xbox360的游戏软件「GearsofWar」(2006年,Microsoft)。
实时3D游戏图形就此到来了。
GearsofWarandtheCrimsonOmenareeitherregisteredtrademarksortrademarksofEpicGames,Inc.intheUnitedStatesand/orothercountries.Allrightsreserved.(C)2007MicrosoftCorporation.AllRightsreserved.Microsoft,theMicrosoftGameStudioslogo,Xbox,Xbox360,theXboxlogos,XboxLiveandtheXboxLiveLogoareeitherregisteredtrademarksortrademarksofMicrosoftCorporationintheUnitedStatesand/orothercountries.
【关于UnifiedShader,下图可以作为一个很好的说明。
如果把UnifiedShader翻译成“统一架构”的话,那么早期的就应该叫做“分离架构”。
新架构的好处就是不会出现之前的vs很忙ps很闲,或者ps很忙vs很闲,能够最大限度的发挥所有着色器的能力,以相同着色器数量规模实现更高的性能。
】
2006年末,索尼那边的新游戏机「PlayStation3」(PS3)被推出了。
PS3的GPU由NVIDIA担任设计(索尼负责制造),虽然给予了「RSX」的专用名称,但基本设计是与GeForce7800系列大体上相同,在图形技术上是和竞争的Xbox360一样对应同世代的DirectX9/SM3.0。
索尼「PlayStation3」。
「摩托风暴(MotorStorm)」(SCEEurope)。
不单是图形的表现,加上高度真实的物理模拟的特性,使其成为被大受期待的PS3游戏。
MotorStormTM(C)2006SonyComputerEntertainmentEurope.PublishedbySonyComputerEntertainmentInc.DevelopedbyEvolutionStudios.MotorStormisatrademarkofSonyComputerEntertainmentEurope.Allrightsreserved.
新世代的游戏机战争应该称为「Xbox360对PS3」之间的竞争,实际上,虽然表面若无其事,但这里「ATI对NVIDIA」也展开了战斗。
无论如何,二大最新游戏机的图形一同成为可编程Shader3.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GPU Shader 技术 基础知识
![提示](https://static.bdocx.com/images/bang_tan.gif)