TA的每日心情 | 开心 2019-11-11 10:36 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
本文是译作,大家也可能多次看过本文。在看本文之前我先大概讲一下文中的主旨:根据顶点变换和顶点之间的关联以及顶点的属性插值得到片元,片元包含纹理信息和着色信息,片元是经过插值形成的,插值形成片元阶段是无法操作帧缓存区的,后面的光栅化阶段利用一系列的测试手段最终得到顶点的颜色值。
shader就是操作上面的大字粗体的部分。
如果理解了上面的话就需要看此文了,但是事实上很多老手也没有完全理解。
GLSL 教程
译:FreeSouth
渲染管线概述
下图是一个说明渲染管线各阶段以及各阶段数据流程的简图,虽然只是简图,但是shader程序的许多思想与原理包含其中。本节将描述渲染管线的基本流程。注意:并不是所有的图像渲染都严格的遵照该模式。
顶点变换(Vertex Transformation)
这个阶段的输入信息是顶点的诸多属性。顶点包含很多的属性,僻如在空间中的位置、颜色、法线、纹理坐标等等,顶点变换阶段针对单个顶点进行一些固定的操作序列来表现顶点的这些属性:
 --顶点的位置变换
 --顶点光照计算
 --产生和变换生成纹理坐标
图元的组装和栅格化(Primitive Assembly and Rasterization)
这个阶段的输入信息是顶点的变换信息和他们之间的关联方式。在图元的组装和栅格化阶段根据顶点的关联方式计算片元,旨在告诉渲染管线顶点是如何组装形成图元的。
视口裁切(表意为不渲染视口之外的部分)和背面剔除操作也在此阶段完成。
栅格化决定了图元中的片元和顶点。所谓片元是指在帧缓存中更新象素属性的数据,片元不仅仅包含颜色,还包含类似法线与纹理坐标等信息,总之言之,片元决定象素在哪里显示以及显示成什么样子。
该阶段输出如下内容:
 --在帧缓存中片元的位置信息
 --对顶点变换阶段得出的属性进行插值处理
顶点的位织和他的组织方式得出对应片元的属性值,举个例子来说如果三角形的三个点有三种颜色,那么你需要根据三点的距离差值形成三角形内部的象素颜色。总之来说,此阶段结合顶点在顶点变换阶段所得到的顶点位置和最终得到图元的组织方式来计算片元的信息。
片元的纹理计算和着色(Fragment Texturing and Coloring)
这个阶段的输入为经过插值计算后的最终片元信息,得到的信息为片元的深度和颜色值。在上一阶段已经对纹理坐标也进行了插值,对颜色等属性也已经进行了插值。
光栅化操作(Raster Operation)
此阶段的输入为:
 --象素位置
 --片元的深度和颜色值。
接下来的操作为对片元的一系列测试信息,名为:
 --剪切测试(Scissor test)
 --Alpha测试(Alpha test)
 --模版测试(Stencil test)
 --深度测试(Depth test)
测试完成后,依据当前混合模式(指这些测试全部完成之后)得到象素的颜色值。注意混合(指这些测试)仅仅可能发生在光栅化阶段,而不是片元的纹理计算和着色阶段,因为片元的纹理计算和着色阶段不能使用帧缓存,帧缓存只有在这一阶段才被得以使用。
对以上所述固定流程进行总结
下图形象的说明了以上所讲的固定流程:
现在来替掉上面的固定流程:
现阶段的显示卡的可编程能力可以让大家方便的来定义(控制)上面所说固定流程中的两个阶段:
 --顶点着色器(Vertex shaders)用来控制顶点变换阶段
 --片元着色器用来控制片元的纹理计算和着色阶段
在下一讲,我们将描述顶点处理和片元的处理这两个可编程控制阶段。
原文地址:http://www.lighthouse3d.com/opengl/glsl/index.php?pipeline
附件:
渲染管线.pdf
(155.28 KB, 下载次数: 1091)
|
|