泡泡网显卡频道 PCPOP首页      /      显卡     /      评测    /    正文

完美DX10!ATI新王者HD2900XT权威评测


● 第三章 第六节 高级渲染语言(HLSL 10)

 

    DirectX 10  为以前的DirectX 9中的“高级着色语言”(High Level Shading Language )带来了诸多功能强大的新元素。其中包括可以提升常量更新速度的“常量缓冲器”(Constant Buffers),提升渲染流程中操作数据的灵活性的“观念”(view),为更广泛的算法所准备的“整形与位指令”(Integer and Bitwise Instructions),添加了switch语句。

 

1 常量寄存器(Constant Buffers)

 

    着色程序同普通的程序一样需要使用常量来定义各种参数,例如光源的位置和颜色,摄像机的位置和投影矩阵以及一些材质的参数(例如反光度)。在整个渲染的过程中,这些常量往往需要频繁的更新,而数以百计的常量的使用以及更新无疑会给CPU带来极大的负载。DirectX 10中新加入的常量缓冲器可以根据他们的使用频率将这些常量分配到指定的缓冲器中并协调的对其进行更新。

 

    在一个着色程序中DirectX 10支持最多16个常量缓冲器,每一个缓冲器可以存放4096个常量。与其相比DirectX 9实在是少得可怜,因为它在每个着色程序中同时最多只能支持256个常量。

 

{imageTitle}


    相比DirectX 9,DirectX 10不仅提供了更多的常量,最主要的是它大幅的提升了常量更新的速度。对那些被分配到同一个缓冲器中的常量,我们只需进行一次操作就可以将它们全部更新完毕,而非单个单个的去更新。

 

    由于不同的常量更新的时间间隔各异,所以跟据使用的频率来对他们进行组织就可以获得更高的效率。举例来说:摄像机的视矩阵只在每一祯之间发生改变,而像贴图信息这样的材质参数却会在图元切换时发生改变。于是这些常量缓冲器被分成了两个部分——那些每祯更新的常量缓冲器专门存放那些需要在两祯间更新的常数并在两祯间一次把他们全部更新,另外的图元切换更新的常量缓冲器也同理。这样就会将更新常量过程中的一些不必要的工作消除,以便让整个着色器脚本比在DirectX 9中运行的更加顺畅。

 

2 Views

 

    在DirectX 9中,着色器(shader)中的数据的类型是被严格划分开的。例如,顶点着色器用到的顶点缓冲器中的数据不能当作贴图的数据来让像素着色器使用。这样就将特定的资源类型同其相对应的渲染流程中的特定步骤紧密地结合了起来,同时限制了资源资源在整个渲染流程中可以使用的范围。

 

    DirectX 10舍弃了“严格区分的数据类型”这一概念。当一段数据被创建,那么DirectX 10所做的仅仅是将其简单的当作内存中的一段比特域(bit field)来对待。如果要想使用这一段没有定义类型的比特域数据就必须通过使用一个“view”。 使用“view”,相同的一段数据就可以有各种各样的方法来读取。DirectX 10支持对同一段资源在同时使用两个“view”。

 

    通过这种多重“view”的手段,就可以在整个渲染流程的不同部分以不同目的使用同一段数据。例如:我们可以通过像素着色器将一段几何数据渲染到一张纹理上,之后顶点着色器通过一个“view”将这张纹理视为一个顶点缓冲器并将其中的数据作为几何数据渲染。“view”通过在整个渲染流程中的不同步骤重复使用同一段数据为“数据处理”带来了更大的灵活性,帮助开发者实现更多更有创意更精彩的特效。

 

3 整形与位运算指令 (Integer and Bitwise Instructions)


 

    在新的高级着色器语言中添加了“整形与位指令”。这样把“整形与位运算指令”的操作加入其基础运算函数的好处在于帮助一些算法在GPU上的实现。开发者终于可以直接使用整形而非从浮点中强转来计算出准确的答案。数组的索引号现在可以轻松的计算出来。GPU无整形运算的时代终于被终结了。这将为shader程序的开发带来很大的便利。


4 Switch 语句(Switch Statement)

 

    终于,HLSL 10可以支持switch语句了!!!这将大幅简化那些有着大量判断(分支)的着色器脚本的编码。一种用法就是建立一个“航母级的着色器(shader)程序”——包含了大量的小型着色器程序并且自身体形巨大的着色器程序。在这个“航母级的着色器程序”,我们可以通过设定一个材质ID在switch语句中判断来轻松的在渲染同一个图元时切换不同的特效。也就是说,现在一个军队中的每个士兵身上都可以拥有各自不同的特效了。

{imageTitle}

 

0人已赞
第1页:完美DX10!ATI新王者HD2900XT权威评测第2页:完美DX10!ATI HD2000系列评测提纲第3页:2007显卡年!AMD/NVIDIA决战图形市场第4页:奋起直追!全新Radeon HD 2000产品线解析第5页:功能化发展!Radeon HD2000系列亮点逐个看第6页:第二章:统一渲染架构解析第7页:第二章/第二节:革命!R600的统一渲染架构第8页:4第9页:第三章:DirectX发展回顾以及DirectX10详细介绍第10页:第二节 DX10的架构特性 以及带来的好处第11页:第三章/第三节:ATI 3Dc功能回顾第12页:3第13页:3第14页:3第15页:3第16页:集众家之长,R600架构总览第17页:R600架构分块介绍第18页:Setup Engine(装配引擎)第19页:Ultra-Threaded Dispatch Processor(超线程分配处理器)第20页:Stream Processing Units(流处理器)第21页:R600的超标量SIMD架构第22页:4第23页:5第24页:ATI片内缓存相关技术第25页:Memory Control(显存控制器)第26页:第六章 R600的神工鬼斧——Tessellation技术第27页:第六章\\第二节 传统的虚拟3D技术回顾第28页:第二小节 凹凸贴图 Bump mapping第29页:第六章\\第二节\\第三小节 法线贴图(normal mapping)第30页:视差贴图技术parallax occlusion mapping第31页:位移贴图(displacement mapping)第32页:Ati的独门秘籍 Trumform 第33页:Tessellation技术第34页:神奇的小数点——细分网格算法中小数位的意义第35页:Tessellation效率的源泉——控制“笼子”第36页:Tessellation技术的流程第37页:Tessellation技术的应用和前景第38页:1第39页:AA发展第40页:CFAA第41页:123第42页:ATI显卡产品形象代言人——Ruby四度出击第43页:X800 & X850 Ruby第44页:DX9C的最高境界 X1800 Ruby第45页:R600 DX10 Ruby高清晰截图赏析第46页:R600 DX10 Ruby引擎和技术解析第47页:23第48页:R600 DX10 Ruby所用图形引擎揭秘第49页:1第50页:2第51页:第九章\\第二节第52页:庞大的运算资源,R600单卡就能物理加速第53页:3第54页:第四章:AMD高清视频功能解析第55页:22第56页:第三节 硬件视频加速第57页:第四节 UVD 引擎解码流程第58页:第五节 UVD测试第59页:第一节 电脑音频的数码之路第60页:第二节 HDMI数字音频技术背景第61页:第三节 各种显卡HDMI接口方案第62页:第四节 R600系列方案第63页:第五节:实战R600音频播放第64页:第六节 HD 2900XT怎么用?第65页:显卡介绍第66页:123123第67页:显卡介绍第68页:123第69页:显卡介绍第70页:3第71页:123123第72页:测试系统配置和设置第73页:阿苏大发送颠覆第74页:113123第75页:4第76页:05第77页:06第78页:游戏第79页:游戏第80页:123第81页:6第82页:6第83页:交火第84页:功耗测试第85页:1第86页:第二节 客观,公正,专业,全面,泡泡网为您带来最权威的DX10测试第87页:第三节 Call of Juarez游戏DX10测试 第88页:第四节 DirectX SDK测试(微软官方2007年四月版)第89页:第四小节:Draw Predicated第90页:第七小节:MotionBlur10第91页:第十小节:Skining 10第92页:第十四章 总结 另觅蓝海!AMD让ATI看得更远第93页:123

关注我们

泡泡网

手机扫码关注