O3d 使用一个程序可控的图形管道模型而不是一个固定功能的管道。这个程序可控的管道使用shader语言,依据hlsl和Cg,使你可以通过vertex shaders和pixel shaders来直接对cpu编程。在程序可控CPUs出现以前,图形程序员被限制在固定功能的图形处理流水线中。计算transformations,lighting,texture coordinates和其他环境效果的算法是预编写在软件中来控制图形软件,如早期的OpenGL或Direcet 3D。 在依据固定功能的图形处理流水线的系统中,全局状态创建给lights,materials,和textures,然后shape 消息被传到这个管道中。相比之下,使用程序可控的图形管道, 开发人员可以完全控制在vertex shader 和 the pixel shade中使用的算法。并且,rasterizing 和 frame-buffer 操作可以使用o3d API进行配置。(译自Google Code Labs)
Some basic knowledge:
什么是管线?什么是流水线?什么是Shader?
什么是Shader?Shader可以翻译为着色器,分为Vertex Shader & Pixel Shader ,即:顶点着色器和像素着色器。Shader主要指的是可编程管线的算法片段。
什么是管线?因为图形渲染象流水线一样的顺序执行,所以形象说法,下文所涉及的处理流水线就是这种东西。
老显卡和新显卡的区别是什么?
以前老显卡是不能编程的,所以叫固定管线。
详细说明:以前固定管线时代,顶点的运算是固定不变的,就是坐标变换,比如投影到屏幕上的坐标换算,后来GPU出现了,顶点的运算就可以编程了,把这些操作顶点的算法叫shader。
通俗解释:什么是Vertex Shader?
什么是Vertex?称顶点,由于模型是由很多坐标点定义的,这些点就是Vertex。
什么是Vertex Shader?Vertex shader是改变物体模型外形的,由于模型是由点构成的,因此改变点就是改变外形,比如星际争霸2demo片中所展示的那个神族母舰黑洞的技能效果,扭曲了单位的外型。
通俗解释:什么是Pixel Shader?
什么是Pixel?象素,即一个象素点,象素点可以变化不同的颜色,由众多的象素点就可以组成我们现在所见的电脑显示内容。
什么是Pixel Shader?当模型顶点变换完之后,是需要填充颜色的,这些填充算法是针对屏幕上的每个像素的,所以叫Pixel Shader(像素着色器),以前这些内容是不能通过编程控制的,后来显示卡的GPU出来后就可以编程控制了,因此这些算法叫piexl shader。
常见的毛发效果渲染:游戏引擎里面,动物身上所渲染的一根根毛发,就是用了Pixel Shader,因为毛发这种是针对每个像素的,所以要用到Pixel shader。