• Shader Model 4.0


    DirectX 10另一个引人瞩目的特性便是引入了Shader Model 4.0,那么,Shader Model 4.0能够带来怎样的新特性,特别是将它与DirectX 9.0c中Shader Model 3.0相比时?

      引入新Shader : Geometry shader

      DirectX 10新引入的Geometry Shader,可以简单地编程操纵几何图元,同时, vertex、geometry、pixel shader采用了统一的Sahder架构。

      Geometry shaders是可编程图形流水线的一大进步。它第一次允许由GPU来动态的生成和销毁几何图元数据。通过和新的数据流输出功能配合使用,许多以前无法实施的算法现在都可以在GPU中使用了。

      统一的Shader架构

      在DirectX 9中,Pixel shader总是在各个方面落后于vertex shaders,包括常量寄存器个数、可用的指令个数、shader长度等。程序员需要区分对待这两种shader。

      而在shader model 4中,无论 vertex、geometry和pixel shader,均有统一的指令集、同样的临时/常量寄存器个数,它们将平等的共享GPU中的所有可用资源。这样,在编程时便不必再考虑每种shader自身的限制了。

      百倍于DirectX 9的可用资源

      对于shader中可用的资源,在Shader model 4.0中比原来有了惊人的扩充。就像早期的程序员们绞尽脑汁的省着用可怜的640k内存一样,在使用以前的DirectX开发游戏的过程中,程序员需要小心翼翼的分配珍贵的shader寄存器资源。寄存器的数量,直接影响着shader程序的复杂度。这和在640k内存的 机器上,怎么也不可能写出Microsoft Office这样的大规模软件是同一个道理。

      而在DirectX 10中,将临时寄存器由原来的32个扩充到了4096个,将常量寄存器由原来的256个扩充到了65536个。

      更多的渲染目标(Render Target)

      所谓渲染目标,就是指GPU可以把画面绘制到的目标,我们可以把它理解为GPU的画布。一般来说,渲染目标被输出到屏幕上,这样我们就能看到画好的画面了。但是有时为了实现一些特效,某些渲染结果并不直接画到屏幕上,而是再返给GPU做进一步的特效处理,而且渲染目标中也不一定是画好的画面的颜色信息。

      根据图形特效的需要,渲染目标可能是每个物体距离屏幕的远近,或者物体表面上每个像素的方向,或者每个物体表面的温度等等,之为了实现特效,可以按需要在其中绘制任何信息。为了提高这种情况下的效率,很多新的显卡都支持在同一遍Shader执行结束后,同时把不同的信息绘制到不同的渲染目标中。在DirectX 9中就已经支持这种机制了,但是它约束最多同时向四个渲染目标绘制。而DirectX 10将这个数量提升了一倍。

  • 相关阅读:
    从解放劳动力来看未来的科技进程
    流程变换与抽象
    EntityFramework Any 生成的sql语句超长。
    值类型引用类型List Remove 方法Remove不掉哪一个项。
    CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
    SVN的安装配置(linux)
    【题解】洛谷 P1979 [NOIP2013 提高组] 华容道 | 20211119 模拟赛 Y【BFS 最短路】
    【题解】[Codechef CALLSCHE] Call Center Schedule | 20211127 模拟赛 或负(fortune)【网络流】
    【题解】[Codeforces 1086F] Forest Fires | 20211119 模拟赛 o【插值 扫描线】
    NOIP2021 SC 迷惑行为小赏
  • 原文地址:https://www.cnblogs.com/lancidie/p/2144714.html
Copyright © 2020-2023  润新知