固定渲染管线与可编程渲染管线

转载 2013年12月03日 17:40:33
1.固定渲染管线与可编程渲染管线的区别:
  1)、固定渲染管线 ——这是标准的几何&光照(T&L)管线,功能是固定的,它控制着世界、视、投影变换及固定光照控制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。
  2)、顶点着色器——图形开发人员可以对渲染管线中的顶点运算和像素运算分别进行编程处理了,而无须象以前那样套用一些固定函数,取代设置参数来控制管线,最早出现与DX8,包括PS和VS两部分。

2.为了解决D3D或者OpenGL对不同硬件厂商的支持,解决移植性的问题,可以通过将加速卡功能抽象出来,统一定义接口的形式来实现。于是,人们采用了典型的分层模式(参阅:设计模式),将一套应用程序分为3个层次:
  应用程序层 -> 硬件抽象层 -> 硬件层其中
      应用层就是游戏和应用软件开发人员的开发主体,他们调用统一的加速卡API来进行上层开发,而不用考虑移植性问题;
      硬件抽象层则抽象出硬件的加速功能,进行有利于应用层开发的封装,并向应用层开放API;
      硬件层将硬件驱动提供给抽象层,以实现抽象层加速功能的有效性。
  这个结构有效的将游戏和应用程序 与硬件加速卡隔离开,这就很好的提升了程序的移植能力。并且,还有一个好处就是,开发
  人员的知识复用率得到提高,从而降低了这类软件的开发门槛。

3.3D加速卡的主要功能就是协助CPU,负责将内存中的矢量图像数据(顶点集合)进行变换、光照计算、裁剪等操作,最后经过光栅化将图像呈现给人眼。这个过程就叫做渲染
  D3D把整个渲染分为9个步骤,9个步骤的组合,就叫做流水线,或者叫 管线 (参阅 设计模式 之流水线模式)。
  D3D的渲染管线(Rendering Pipeline):局部坐标变换 -> 世界坐标变换 ->观察坐标变换->背面消除->光照->裁剪->投影->视口计算->光栅化。
  无论是固定渲染管线还是可编程管线,都需要经过这九个步骤:
  可编程管线,顾名思义,就是说管线中的某些环节是可以被控制的。人们可以通过对GPU中的着色器进行编程的方式,来控制、管理加速卡的渲染效果。
  着色器分为顶点着色器和像素着色器。
      顶点着色器是在进行坐标变换和光照计算时工作
      像素着色器是在光栅化环节工作。
  人们对着色器进行自定义编程时,这个流水线就叫做可编程管线。同时,D3D还提供默认的着色器程序,当游戏或应用程序完全使用默认着色器程序时,这个流水线就叫做固定管线。

4.变换步骤:
  在固定管线中,变换分成2个步骤:
      局部坐标系到世界坐标系 和世界坐标系到观察坐标系。
          局部坐标系:就是建模坐标系,它是在建模时由3DMAX之类的工具定义的
          世界坐标系:用来统一场景中各个object的位置、尺寸等规格
          观察坐标系:也就是摄像机的坐标系。
      局部坐标系到世界坐标系变换:
          这个变换是为了把在不同建模工具或者有用不同规格的建模尺寸下设计的模型,都统一到一个通用的坐标系下面。这个动作的作用,就像秦始皇统一度量衡一样。从局部坐标系到世界坐标系这个变换的动作,通常是在游戏设计时,由游戏工具(如:场景编辑器)来预先计算,并且为每个模型都计算出一个变换矩阵(即记录模型在游戏场景中的大小、朝向、位置),叫做世界坐标变换矩阵。在渲染时,实时的应用这些矩阵来参与运算写法:
          D3DXMATRIX worldMatrix; //这个矩阵就从文件中读进来
          Device->SetTransform(D3DTS_WORLD, &worldMatrix); 注意,使用宏 D3DTS_WORLD
      从世界坐标系到观察坐标系变换:
          这个变换动作,实际上是为了简化运算而做的。这样变换之后,所有的顶点也就可以直接转换为向量,非常的便于某些计算。这个动作通常是,将摄像机平移到世界坐标系原点,再旋转摄像师,使它的光轴与世界坐标系z轴方向一致。与此同时,空间中的所有几何体都要随摄像机一同变换,以确保摄像机的视场不变。这个变换叫取景变换,变换后得到观察坐标系。写法如下:
          D3DXMATRIX ViewMatrix; D3DXVECTOR3 position, targetPoint, worldUp;
          D3DXMatrixLookAtLH(&ViewMatrix, //[OUT], 计算出的变换矩阵 &position, //摄像机位置 &targetPoint, //摄像机的观察朝向 &worldUp);//摄像机的y朝向,也就是头的朝向
          Device->SetTransform(D3DTS_VIEW, &ViewMatrix); 注意宏,D3DTS_VIEW
      其实,D3DXMatrixLookAtLH()函数只是类似功能函数中的一个,注意后缀 LH 这表示左手坐标系,对应的还有一个右手坐标系,它们的区别在于:左手系 其z轴向里为正;右手系向外为正。
 
上文来自:http://blog.sina.com.cn/s/blog_6b4aa9ed0100mayg.html
相关参考:
OPENGL固定图形渲染管线操作细节
http://blog.csdn.net/lovivid/article/details/1613897
       

可编程图形渲染管线

着色程序分为两类:vertex shader program(顶点着色程序)和fragment shader program(片断着色程序)。为了清楚的解释顶点着色和片断着色的含义,我们首先从阐述GP...
  • zh13544539220
  • zh13544539220
  • 2015年07月20日 16:59
  • 2252

传统渲染管线与可编程Shader着色器

传统渲染管线与可编程Shader着色器   1.GUP的问世      上世纪的绝大多数显示加速芯片都不能称之为完整意义上的GPU,因为它们仅仅只有像素填充和纹理贴图的基本功能。而NVIDIA公司在1...
  • u011473031
  • u011473031
  • 2015年06月17日 15:27
  • 1142

可编程渲染管线与着色器语言

转自:http://www.cppblog.com/Leaf/archive/2013/02/22/198015.aspx 可编程渲染管线与着色器语言 Programmin...
  • azhou_hui
  • azhou_hui
  • 2015年09月29日 16:46
  • 891

opengl从固定渲染管线到可编程渲染管线

这是一些列来自lighthouse3d的GLSL教程,非常适合入门。我将边学习边翻译该教程的内容,同时记录在这里,方便以后查询。 流水线概述 下图描述了一个简化的图形处理流水线,虽然简...
  • H1051760124
  • H1051760124
  • 2014年12月05日 10:28
  • 2687

固定渲染管线

浅谈 GPU图形固定渲染管线 阅读目录 1.  应用程序阶段(CPU) 1.1 视锥裁剪 1.2 场景图 1.3 四叉树与八叉树 2. 几何阶段(GPU)  2.1  坐标系统局部坐...
  • jks456
  • jks456
  • 2017年04月11日 14:36
  • 343

Unity固定管线shader总结

Unity的固定管线shader可以通过Inspectot中的Show generated code来查看对应的cg shader,这是很好的研究方法。 以下所诉的固定管线命令都不会在Vertex F...
  • sunny__chen
  • sunny__chen
  • 2016年05月25日 10:53
  • 1857

OpenGL: 渲染管线理论

学习着色器,并理解着色器的工作机制,就要对OpenGL的固定功能管线有深入的了解。首先要知道几个OpenGL的术语渲染(rendering):计算机根据模型(model)创建图像的过程。 模型(mod...
  • Augusdi
  • Augusdi
  • 2014年02月25日 21:39
  • 12684

opengl渲染管线 不能再详细了

http://www.cnblogs.com/liangliangh/p/4116164.html 转载自上面的网址,总有可以令人膜拜的文章 还有一个综合的网址 http://www.progr...
  • cjneo
  • cjneo
  • 2016年01月18日 17:26
  • 10917

OpenGL: 渲染管线理论详解

学习着色器,并理解着色器的工作机制,就要对OpenGL的固定功能管线有深入的了解。首先要知道几个OpenGL的术语: 渲染(rendering):计算机根据模型(model)创建图像的过程。 模型(m...
  • heyuchang666
  • heyuchang666
  • 2015年11月24日 18:59
  • 1564

OPENGL固定图形渲染管线操作细节

OPENGL固定图形渲染管线操作细节 张桀宁 zjnmailbox@163.com 本文结合OPENGL技术文档和程序实验探求在OPENGL中综合使用了 顶点颜色,光照(材质),纹理,片元混合 后的应...
  • lovivid
  • lovivid
  • 2007年05月17日 19:50
  • 3516
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:固定渲染管线与可编程渲染管线
举报原因:
原因补充:

(最多只允许输入30个字)