GPU原理 GPU渲染流程.docx
《GPU原理 GPU渲染流程.docx》由会员分享,可在线阅读,更多相关《GPU原理 GPU渲染流程.docx(5页珍藏版)》请在第一文库网上搜索。
1、GPU原理GPU渲染流程GPU渲染流水线,是理件真正体现渲染概念的操作过程,也是最终将图元画到2D屏幕上的阶段。GPU管线涵盖了渲染流程的几何阶段和光栅化阶段,但对开发者而言,只有对顶点和片段着色器有可缄程控制权,其他一律不可编程。如下图:简单总结GPU管线,这阶段中主要是对图元进行操作。首先,将由应用阶段加载到显存中的顶点数据(由drawCa11指定后)作为输入传递给顶点着色器。接着,顶点着色器首先对图元的每个顶点设置模型视图变换及投影变换(即右乘MVP矩阵),然后将变换后的顶点按照摄像机视椎体定义(即透视投影,或正投影)进行裁剪,将不在视野内的顶点去掉并剔除某些三角面片。最后到几何阶段的屏
2、幕映射,负责把修改过的图元的坐标转换到屏幕坐标系中(即投影到屏幕上)。到光栅化阶段,这一阶段主要目的是将每个图元转换为多个片段,并生成多个片段的位置,由片段着色器负责计算每个片段的颜色值。同时,在这阶段片段着色器通常会要求输入纹理,从而对每个片段进行着色贴图。每个片段在被发送到帧缓冲区之前,还会经历一些操作,这些操作可能会修改片段的颜色值,其中包括深度测试,模板测试,像素所有权测试,与当前缓冲区相同位置颜色混合等等。最后,帧缓冲区内容被交换到屏幕进行显示。下面会对各个阶段每个知识点进行详细的分析理解。一、顶点着色器顶点着色器是一段类似维宣的程序(即OPenG1的G1S1,或只支持微软的H1S1
3、,或Unity的Cg),由程序员提供并在GPU上执行,对每个顶点都执行一次运算。顶点着色器可以使用顶点数据来计算改顶点的坐标,颜色,光照和纹理坐标等。在渲染管线中,每个顶点都独立的被执行。原因在于顶点着色器本身不能创建或删除顶点,也无法得到顶点与顶点之间的关系,如无法知道两个顶点是否属于同一个三角网格。正因这独立性,GPU可以并行化处理每一个顶点,提高处理速度。顶点着色器最重要的功能是执行顶点的坐标变换和逐顶点光照。坐标变换是改变顶点的位置,把顶点坐标从模型空间转换到齐次裁剪空间(即将本地坐标系转换为裁剪坐标系)。通过改变顶点位置可以实现很多酷炫的Shader效果,如模拟水面,布料等等,这里后
4、面添加实例学习例子再详细说明。顶点着色器的另一功能是向后续阶段的片段着色器提供一组易变(Varying)变量,用于插值计算。二、图元装配在顶点着色器程序输出顶点坐标之后,各个顶点按照绘制命令(DrawArrays或DrawE1ements)中的图元类型参数和顶点索引数组被组装成一个个图元,并对其进行如下图的图元操作:裁剪,处于视椎体以外的图元将被丢弃,若该图元与视椎体相交则会发生裁剪产生新图元,如下图:注意一点,透视裁剪是比较影响性能的过程,因为每个图元都需要和6个裁剪面进行相交计算并产生新图元。所以一般在X轴,y轴超出屏幕(由g1ViewPort定义)的部分,这些顶点在视口变换的时候被更高效
5、的直接丢弃,无须产生新图元。视椎体在OpenG1中可以通过gIuPerspecUve来定义对应的大小结构,在Cocos2dx引擎中,Director类的SetProjection方法就定义了cocos的渲染用到的视椎体,大家可以阅读对应的代码了解学习下。经过视椎体裁剪后的顶点坐标经过透视分离(指由硬件做透视除法),得到范围是0,1的归一化的设备坐标,最后映射到屏幕或者视口上。三、片段着色器【先补充一点,其实在光栅化之前,要判断图元的朝向,是面向还是背对观察者,以决定是否需要丢弃图元。在OPenG1可通过g1Fro1E些e指令来决定哪个方向为正,并通过g1Cu11Face决定需要保留哪一面(别忘
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GPU原理 GPU渲染流程 GPU 原理 渲染 流程