原文:Directx11教程(17) D3D11管线(6)

      VS shader输出clip空间的顶点位置及参数信息(比如颜色)到一个FIFO中,之后PA(primitive assembly)会从该FIFO中取得顶点位置信息,并根据IA传来的primitive信息,把单独的顶点装配成点、线或者三角形。经过PA阶段后,我们不再是处理单个顶点,而是处理整个体元。

参考资料:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-5/

  

 

除了装配primitive外,PA阶段还会做一些其它的工作:

多边形裁剪:通过clip长方体的六个面来裁剪体元,把长方体(frustum)外的部分裁剪掉。

透视除法:(x/w,y/w,z/w,1),经过透视除法,把clip空间转化为归一化的clip空间,该空间依然是个长方体,但-1<=x<=1, –1<=y<=1, 0<=z<=1(注意:opengl的归一化裁剪空间-1<=z<=1)

视口转化:把归一化的x,y坐标从(-1,1)转化到像素的窗口坐标。比如窗口为800*600,就要在它们之间做个映射关系。

三角形背面剔除:主要是根据三角形的法向剔除背面渲染。

计算体元的梯度:计算得到的梯度会在光栅化阶段使用。

填充模式的处理。

     PA阶段后,会进入光栅化阶段,primitive会被光栅化成fragment(通常是quad, 2*2像素), 在光栅化的过程中,RS block会访问depth block,以便判定是否需要把该fragment传入到PS shader中去,同时也会更新depth block(此时更新depth block称为early z)。

    光栅化算法不在这儿讨论了,有兴趣可以随便找一本计算机图像学的书看看。

Directx11教程(17) D3D11管线(6)的更多相关文章

  1. Directx11教程(53) D3D11管线(8) GS的调度执行

    原文:Directx11教程(53) D3D11管线(8) GS的调度执行        在前面的教程中,我们分析了VS-PS的shader管线组合执行过程,本章我们分析一下VS-GS-PS的管线执行 ...

  2. Directx11教程(18) D3D11管线(7)

    原文:Directx11教程(18) D3D11管线(7) 光栅化阶段(RS)之后,将进入PS/OM阶段. 参考外文资料:http://fgiesen.wordpress.com/2011/07/01 ...

  3. Directx11教程(16) D3D11管线(5)

    原文:Directx11教程(16) D3D11管线(5) 本章我们学习VS中具体做些什么事情? 首先再看看我们的VS shader代码: Clolor.vs - PixelInputType Col ...

  4. Directx11教程(15) D3D11管线(4)

    原文:Directx11教程(15) D3D11管线(4) 本章我们首先了解一下D3D11中的逻辑管线,认识一下管线中每个stage的含义. 参考资料:http://fgiesen.wordpress ...

  5. Directx11教程(14) D3D11管线(3)

    原文:Directx11教程(14) D3D11管线(3)       现在我们开始学习一些CP(command processor)的知识.参考资料: http://fgiesen.wordpres ...

  6. Directx11教程(13) D3D11管线(1)

    原文:Directx11教程(13) D3D11管线(1)       从本篇教程开始,我们暂停代码的学习,先来了解一下D3D11的管线,这些管线不涉及具体的硬件,而是着重于理解能够支持D3D11的管 ...

  7. Directx11教程(14) D3D11管线(2)

    下面我们来了解一些GPU memory的知识,主要参考资料:http://fgiesen.wordpress.com/0211/07/02/a-trip-through-the-graphics-pi ...

  8. Directx11教程(66) D3D11屏幕文本输出(1)

    原文:Directx11教程(66) D3D11屏幕文本输出(1)      在D3D10中,通过ID3DX10Font接口对象,我们可以方便的在屏幕上输出文字信息,一个DrawText函数就能解决所 ...

  9. Directx11教程(59) tessellation学习(1)

    原文:Directx11教程(59) tessellation学习(1)       在D3D11管线中,新增加了3个stage, Hull shader, Tessellator, Domain s ...

随机推荐

  1. poj 2288

    传送门 解题思路 状压dp,记录路径条数,dp[S][i][j]表示状态为S,前一个点是i,再前一个点是j的最大值,然后在开个一样的数组记录方案数,时间复杂度O(2^n*n^2),注意要用long l ...

  2. PL/SQl连接数据库ORA-12154错误

    先说说我遇到的问题: 1.在sql/plus下可以正确连接到数据库(oracle10g): 2.检查我机器(64)位环境变量的配置,没问题.path环境变量没问题(C:\oraclexe\app\or ...

  3. 用windows命令解压chm文件

    Windows里有这样一个工具:hh.exe.hh.exe最重要的功能就是用来关联CHM文件,当你运行一个chm文件的时候,系统就是用这个工具来打开的. 其实它还有另外一个功能——解压CHM文件在CM ...

  4. Redis 核心

    一.Redis单机多实例原理 每个实例对应不同的配置文件,配置文件对应不同的端口.数据库文件位置.日志位置. 二.Redis单实例多数据库 每个Redis实例都有16个数据库,下标从0-15,当 se ...

  5. Luogu P1278 单词游戏(dfs)

    P1278 单词游戏 题意 题目描述 \(Io\)和\(Ao\)在玩一个单词游戏. 他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致. 游戏可以从任何 ...

  6. Stream的去重排序

    1.List<Integer>排序 List<Integer> list = new ArrayList<>();list.add(50);list.add(25) ...

  7. sulin LuceneNet 搜索二

    1.添加引用dll using Lucene.Net.Search;using Lucene.Net.Analysis.PanGu;using PanGu;using PanGu.HighLight; ...

  8. case expressions must be constant expressions

    As the error message states, the case expressions must be constant. The compiler builds this as a ve ...

  9. jnhs[未解决]无法使用选定的hibernate配置文件建立数据库连接.请验证hibernate.cfg.xml中的数据库连接详情信息

    工程可以正常的使用读写数据库,当然model和model.hbm.xml文件是自己写的. 解决中

  10. springmvc jsp向controller传参,一直为null

    怎么检查都无解 重启电脑好了