Direct3D 11 特性(一)

编程指南包含如何使用Direct3D 11可编程管道科学地为游戏和桌面应用程序创建实时3D图形的信息。

  • 计算着色器
  • 动态渲染链接
  • 多线程
  • 曲面细分
  • 功能的完整列表

计算着色器

计算着色器允许在GPU上面并行处理,计算着色器是为通用数据并行处理操作而设计的可编程着色器。它在处理输入输出的方式上和其他可编程着色器(顶点、像素、几何体)相似。计算着色器集成到Direct3D中,可以通过Direct3D设备访问。计算着色器可以通过Direct3D设备直接与图形着色器共享内存资源,然而,它并不直接连接到其他着色器阶段。

计算着色器是为大众市场应用程序设计的,当API(及其相关软件堆栈)和CPU之间的转换成本将消耗太多开销时,这些应用程序将以交互速率执行计算。

一个计算着色器有它自己的状态集。计算着色器不一定强制1-1映射到输入记录(如顶点着色器)或输出记录(如像素着色器)。图形着色器的一些特性得到了支持,但是为了添加新的特定于计算的特性,已经删除了其他特性。

为了支持特定于计算的特性,有几种新的资源类型可用,比如读/写缓冲区、纹理和结构化缓冲区。

有关更多信息,请参见计算着色器概述。

动态渲染链接

渲染系统在管理着色器时需要处理各种各样的复杂性,同时提供优化着色器代码的最大可能机会。当您考虑到需要跨广泛的可用硬件配置支持呈现场景中的各种不同材料时,这将成为一个更大的挑战。为了解决这些挑战,着色器开发人员通常采用两种通用方法中的一种。要么创建功能齐全的“超级着色器”,以牺牲一些性能的灵活性,或专门为每个几何流创建单独的着色器,材料类型或轻型组合所需。

超级着色器通过使用不同的预处理器定义重新编译相同的着色器来处理这个组合问题,而后一种方法使用了蛮力开发人员的能力来达到相同的目的。对于现在必须在游戏和资产管道中管理数千种不同着色器排列的开发人员来说,着色器排列激增常常是一个问题。

Direct3D 11和着色器模型5引入了面向对象的语言构造,并提供了着色器链接的运行时支持,以帮助开发人员处理这些开发问题。

有关更多信息,请参见动态链接。

多线程

由于场景图遍历、对象排序和物理模拟等代价高昂的活动,许多图形应用程序都是cpu绑定的。与此同时,多核系统正变得越来越普遍。因此,Direct3D 11改进了它的多线程支持,以支持多个CPU线程和D3D11图形api之间的有效交互。

Direct3D 11支持以下功能来支持多线程:

  • 在单独的线程中创建并发对象——使对象创建入口点成为自由线程,使得许多线程能够同时执行对象创建。例如,应用程序现在可以在一个线程上编译着色器或加载纹理,而在另一个线程上执行渲染。
  • 在多个线程上创建命令列表——命令列表是一个记录的图形命令序列。使用Direct3D 11,可以在多个CPU线程上创建命令列表,从而支持在多个线程上并行遍历场景数据库或物理处理,从而释放主呈现线程,将命令缓冲区分配给硬件。

有关更多信息,请参见多线程。

曲面细分

曲面细分可以用来渲染单个模型的不同层次的细节,生成更精确的几何模型,这取决于场景所需的细节级别。在细节级别允许较低的几何模型的场景中,这一点非常重要,因为这会减少在呈现过程中消耗的内存带宽。

在Direct3D中,GPU上实现了曲面细分,从粗糙的(不太详细的)输入块计算更平滑的曲面。每个(四面或三角形)贴片面被细分为更小的三角形面,以便更好地逼近所需的表面。

有关在图形管道中实现曲面细分的信息,请参阅曲面细分概述。

功能的完整列表

这是Direct3D 11中功能的完整列表。

  • Direct3D 11可以通过在创建设备时指定一个特性级别在底层硬件上运行。
  • 曲面细分
    • 壳着色器
    • 域着色器
  • 多线程
    • 多线程 资源/着色器/对象创建
    • 多线程显示队列创建
  • 着色器特性
    • 可寻址资源——纹理、常量缓冲区和采样器
    • 其他资源类型,如读/写缓冲区和纹理
    •  子程序
    • 计算着色器-----一种着色器,设计用于加速计算,通过在几个软件线程或线程组之间划分问题空间,并在着色器寄存器之间共享数据,以显著减少输入着色器所需的数据量,可以显著加快计算速度。计算着色器可以显著改进的算法包括后处理、动画、物理和人工智能
    • 几何着色器
      • 实例化----允许几何体着色器输出最多1024个顶点,或者实例和最多1024个顶点的任意组合(每个顶点最多32个实例)。
    • 像素着色器
      • 覆盖范围作为PS输入
      • 可编程插值输入-能够评估像素内的属性,在任何地方的多采样网格
      • 质心的定义
    • 纹理
    • 大内存支持
    • 流输出的改进
    • 只读深度或模板视图

    • 着色器模型5(Shader Model 5)

你可能感兴趣的:(D3D11,Direct3D11,基础学习,D3D11)