DirectX11之3D渲染管线

来源:互联网 发布:淘宝直通车计算机出价 编辑:程序博客网 时间:2024/05/21 15:48
1. 输入集成阶段(Input Assembler Stage)
     这个阶段的主要目的是根据用户提供的顶点及索引信息,构建多边形,主要有点、线段、三角形。


2. 顶点着色阶段(Vertex Shader Stage)重点阶段

     这是一个完全可编程的阶段,即完全由程序员自己来实现。
     主要工作:模型空间->世界空间->视角空间->投影空间。



3. 曲面细分阶段(Tessellation Stage)可选阶段

      包括外壳着色器阶段(Hull Shader Stage)、镶嵌阶段(Tessellation Stage)、域着色器阶段(Domain Shader Stage)。D3D11中刚加入的一个高级特性,该阶段主要的好处即在运行期可利用显卡动态的增加模型多边形的细节。


4. 几何着色阶段(Geometry Shader Stage)可选阶段
      这个也是D3D11中加入的新特性,为可选阶段。在这个阶段中,输入为一个完整的多边形,点、线段或三角形。这个阶段直接对输入的多边形进行操作,可以把其消灭,不再往下一个阶段传输;也可以衍生出新的多边形出来。总之,该阶段操作的对象是完整的多边形,相比于顶点着色阶段,其操作的对象是单个的顶点。


5. 光栅化阶段(Rasterizer Stage)
      这个阶段属于不可编程阶段,即完全由硬件实现,主要包括:
    5.1. 视口变换
           即把投影变换后得到的顶点的x,y坐标,根据用户设定的视口参数,变换到屏幕上对应的坐标。
    5.2. 隐藏面消除(Backface Culling)
           即使经过了裁剪操作,对于每一个物体,照相机只能看到其正对着相机的一面,对背对着相机的一面是看不到的。这一步的任务即是把看不到的这一面消除掉,以免继续对其进行处理影响效率。默认情况下,D3D规定按顺时针顺序指定的三角形属于正面,逆时针为背面。如果V0,V1,V2按顺时针排序,则该三角形为正面,将通过这一步的检测,如果为逆时针,则被抛弃。
    5.3. 顶点属性的插值计算
         在经过顶点着色阶段、视口变换后,这三个顶点在屏幕上都有对应的坐标。但为了显示该三角形,仅仅三个顶点显然是不够的,为了计算该三角形所覆盖的屏幕上每个像素处的属性,要进行正确的插值计算。


6. 像素着色器(Pixel Shader Stage)重点阶段
      这个阶段也是完全可编程的一个阶段,也是跟顶点着色器阶段一样十分重要的阶段。因为在D3D11中,顶点着色器和像素着色器是程序员实现的两个最基本的阶段。对于三维空间中投影到屏幕上的每一个多边形,针对其在屏幕上所覆盖的每一个像素,逐个进行像素着色计算。这一阶段接受的数据是经过插值计算后的顶点属性。输出的是颜色值,以提供给下一阶段处理。


7. 输出合并阶段(Output Merger Stage)

     这个阶段即输出片段的混合阶段。该阶段不可编程,但是高度可调节。程序员可以灵活地调整管线的状态来实现不同的特效。比如针对深度缓冲区、模板缓冲区,混合等可以有各种不同的状态。利用它们来实现各种特效后面也有特别详细的介绍。


以上内容是概要,详细见原博客,http://blog.csdn.net/bonchoix/article/details/8298116

原创粉丝点击