转自:http://tgerm.org/SRP/

在3D中有两种渲染管线,分别是图形渲染管线和GPU渲染管线。

图形渲染管线

《Render-Time Rendering Third Edition》一书中将计算机图形渲染的流程划分为3个阶段:应用阶段(Application Stage)几何阶段(Geometry Stage)光栅化阶段(Raterizer Stage)组成了图形渲染管线。

应用阶段(Application Stage)

准备好要渲染的场景数据,如相机,模型,灯光等信息,为提高性能对不可见的物体进行剔除(Culling),最后设置好每个即将渲染的模型所对应的渲染状态。渲染状态包括但不限于材质,纹理,Shader等。

几何阶段 Geometry Stage

该阶段运行在GPU上。

模型和视图变换 Model and View Transform

顶点着色 Vertex Shading

顶点着色阶段的目的即确认顶点处材质的光照效果。像顶点位置,法线等数据都会通过该阶段发送到光栅化阶段。

投影 Projectiong

该阶段就是将模型从三维空间投射到二维空间的过程。

常见的投影方式有两种:正交投影,透视投影

裁剪 Clipping

  • 当图元完全处于视体内部,直接进入下个阶段
  • 当图元完全处于视体外部,直接丢弃
  • 当图元部分处于视体内部,对图元进行裁剪并产生新的图元

裁剪阶段即对部分处于视体内部的图元进行裁剪操作。

屏幕映射 Screen Mapping

进入该阶段顶点坐标仍然是三维的,但x,y在经过上面的投影阶段已经是二维的状态。此时x,y与z坐标组成了窗口坐标系。

假设在一个窗口里对场景进行绘制,窗口最小坐标(x1, y1),最大坐标(x2, y2)。屏幕映射首先进行平移,随后进行缩放,在映射过程中z坐标不受影响。新的x和y坐标称为屏幕坐标系,并和z坐标进入光栅化阶段。

屏幕映射阶段即是将得到的坐标映射到对应的屏幕坐标系上。

光栅化阶段(Rasterizer Stage)

该阶段也运行在GPU上

三角形设置 Triangle Setup

计算三角形表面的差异和三角形表面的其他相关数据

三角形遍历 Triangle Traversal

扫描三角形覆盖的像素区域,并将重合的像素生产片段(fragment)。

像素着色 Pixel Shading

逐像素处理着色运算

合并 Merging

图形系统一般都是使用双缓冲机制,也就是最终生产的图像会输出到后台缓冲区(backbuffer),然后交换至屏幕。合并阶段就是将前面所有片段操作(如:颜色缓冲区,alpha通道,模板缓冲区,深度测试结果等)所产生的片段颜色合并至后台缓冲区(backbuffer)。

GPU渲染管线

  • 绿色阶段完全可以编程
  • 蓝色阶段可配置,不可编程
  • 灰色阶段完全固定,不可配置,不可编程

[转]3D渲染管线的更多相关文章

  1. Directx11学习笔记【九】 【转】 3D渲染管线

    原文地址:http://blog.csdn.net/bonchoix/article/details/8298116 3D图形学研究的基本内容,即给定场景的描述,包括各个物体的材质.纹理.坐标等,照相 ...

  2. Directx11学习笔记【九】 3D渲染管线

    原文:Directx11学习笔记[九] 3D渲染管线 原文地址:http://blog.csdn.net/bonchoix/article/details/8298116 3D图形学研究的基本内容,即 ...

  3. 图形学3D渲染管线学习

    图形学3D渲染管线 DX和OpenGL左右手坐标系不同,会有一些差距,得出的矩阵会不一样; OpenGL的投影平面不是视景体的近截面: 顶点(vertexs) 顶点坐标,颜色,法线,纹理坐标(UV), ...

  4. Direct3D11学习:(六)渲染管线

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 这篇文章主要讲解渲染管线(rendering pipeline)的理论知识. 渲染管线是指:在给定一个3D场景的 ...

  5. Qt OpenGL:学习现代3D图形编程之四,透视投影浅析

    一.非真实的世界 与之前几篇文章不同的是,这里要画12个三角形,这个12个三角形构造一个方形棱柱(这里为长方体).棱柱的每个四边形表面由两个三角形组成.这两个三角形其中的一条边重合,而且它们的六个顶点 ...

  6. Flash 3D学习计划

    1.理解并记住3D渲染的一般管线流程(一天). 2.理解世界,取景,投影变换,并理解投影坐标系(一天). 3.学习VB,IB相关,理解三角形顶点顺序:在屏幕上显示2D矩形,并实现缩放,平移,旋转(三天 ...

  7. C++小项目:directx11图形程序(四):d3dclass

    主菜终于来了.这个d3dclass主要做的工作是dx11图形程序的初始化工作,它将创建显示表面交换链,d3d设备,d3d设备上下文,渲染目标表面,深度模板缓存:设置视口,生成投影矩阵. D3D设备:可 ...

  8. iOS 8 Metal Swift教程(一) :开始学习

    在本篇教程中,你将应用到3D图形中的一系列矩阵变换,并会学习到如下内容: 如何使用模型(model),视图(view)以及投影变换(projection transformations). 如何使用矩 ...

  9. 游戏编程算法与技巧 Game Programming Algorithms and Techniques (Sanjay Madhav 著)

    http://gamealgorithms.net 第1章 游戏编程概述 (已看) 第2章 2D图形 (已看) 第3章 游戏中的线性代数 (已看) 第4章 3D图形 (已看) 第5章 游戏输入 (已看 ...

随机推荐

  1. linux网络编程之socket编程(二)

    今天继续对socket编程进行研究,这里会真正开如用socket写一个小例子,进入正题: TCP客户/服务器模型:   关于这个模型的流程这里就不多说了,比较容易理解,下面则利用这种模型来编写一个实际 ...

  2. A Beginner’s Guide to Webpack 4 and Module Bundling

    原文: https://www.sitepoint.com/beginners-guide-webpack-module-bundling/ ----------------------------- ...

  3. P3620 [APIO/CTSC 2007]数据备份[优先队列+贪心]

    题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏 ...

  4. tomcat绑定项目classes路径

    在Host中加入如下内容: <Context path="" docBase="D:\svn\MainSource\WebRoot" debug=&quo ...

  5. iptables常用命令二之如何删除nat规则

    删除iptables nat 规则 删除FORWARD 规则: iptables -nL FORWARD --line-number iptables -D FORWARD 1 删除一条nat 规则 ...

  6. python读取excel的内容

    import csvimport xlrdimport xlwt def handler_excel(filename=r'd:\\wu.xlsx'): # 打开文件 workbook = xlrd. ...

  7. Hive节点及原理

    1.什么是Hive:hive是一种基于hadoop的数据仓库,能够将结构化的数据映射成一张表,并提供HQL进行查询.其数据是存储在hdfs上,本质是将sql命令转化成MapReduce来执行. 2.H ...

  8. 软件测试技术之可用性测试之WhatsApp Web

    Tag:可行性测试.测试流程.结果分析.案例分析 WhatsApp是一款面向智能手机的网络通讯服务,它可以通过网络传送短信.图片.音频和视频.WhatsApp在全球范围内被广泛使用,是最受欢迎的即时聊 ...

  9. 怎么通过django模板输出双花括号{{}}

    https://segmentfault.com/q/1010000000685399

  10. C语言scanf函数返回值小记

    scanf scanf是C标准库stdio里面定义的用于获取用户输入的函数,具体的介绍可以在CppReference上看到.scanf的返回值是已经成功赋值的变量个数,也就是说在 scanf(&quo ...