求真百科欢迎当事人提供第一手真实资料,洗刷冤屈,终结网路霸凌。

顶点着色引擎查看源代码讨论查看历史

事实揭露 揭密真相
跳转至: 导航搜索
顶点着色引擎

中文名: 顶点着色引擎

外文名: Vertex Shader

也称为: 顶点遮蔽器

作 用: 增加各式特效在3D场影

浮点数: 128

顶点着色引擎(Vertex Shader),也称为顶点遮蔽器,根据官方规格,顶点着色引擎是一种增加各式特效在3D场影中的处理单元,顶点着色引擎的可程式化特性允许开发者靠加载新的软件指令来调整各式的特效,每一个顶点将被各种的数据变素清楚地定义,至少包括每一顶点的x、y、z坐标,每一点顶点可能包函的数据有颜色、最初的径路、材质、光线特征等。

细节

在顶点着色引擎内部,数据都是以“项”为单位来作运算的。 我们刚刚知道,每一项都是4个128位的浮点数。当你正应用一条指令和影响一套4个变量时,这让顶点着色引擎单元实际上就是一个“单指令多数据”(single instruction multiple data, SIMD) 处理器。 这种安排很有道理,因为大部分的转换与光影操作都是4x4或3x3的矩阵运算。 每一个数据都当作浮点数,所以全部的运算都是浮点运算。 基本上,顶点着色引擎是个很强大的SIMD浮点处理器, Pentium 4 里面的SSE2单元勉强赶得上。 另一个重要的部分是12个SIMD寄存器,每一个也都可以存放4个128位浮点数。这12个寄存器就是顶点着色引擎变戏法的地方。除了这12个可以自由存取的寄存器,顶点着色引擎提供了96个4x128位的SIMD常数,可以作为程序员在程序开始执行之前设定的参数载入。这些常数可以用在程序里,甚至可以间接寻址,但每条指令只能调用一个常数,这有点不方便。如果某个指令需要一个以上的常数,必须先用载入指令把常数读入一个寄存器。典型的这种大量常数应用就是多边形转换的矩阵数据(一般4x4矩阵)、光影特性、特殊动画特效的程序数据、向量内插数据(例如变脸特效或者关键帧插入),时间(关键帧插入或粒子系统)等等。有一种特殊的称为“顶点状态程序”的程序可以向参数块写入数据。而普通的顶点程序只能读取。

背景

这些运算指令本身都很简单,因此也很容易理解。 顶点着色引擎不允许循环,跳跃或条件分支,就是每条指令按照次序线性执行程序。每个顶点着色引擎的最大程序长度是128条指令。 顶点按照设计师的意愿改变之后,就完成转换和照明。 若是还需要更多指令处理,顶点可以再次进入顶点着色引擎。

顶点经过运算后仍然是顶点,转换到为均一的裁剪空间(homogenous clip space),并且完成照明运算。 有一点很重要的是,顶点着色引擎不能生成或者消除顶点。一个进,一个出。[1]

参考来源