来源:http://www.ultimategameprogramming.com
翻译:杨冰(源代码之光)
译者的话:此文简练的介绍了顶点着色器和像素着色器,包括概念,为什么要用着色器,如何使用着色器,以及Dx9和Opengl1.4的代码例子。是非常好的入门教材。刚刚写了一章小说,很无聊,就翻译了这么一个感觉不错的短篇教程。文档内容:第一部分 顶点着色器什么是顶点着色器?1 顶点着色器是一组指令代码,这组指令代码在顶点被渲染时执行。2 同一时间内,只能激活一个顶点着色器。3 每个源顶点着色器最多拥有128条指令(DirextX8.1),而在DirectX9,则可以达到256条。为什么大家要使用顶点着色器?1 顶点着色器可以提高渲染场景速度。2 用顶点着色器你可以做布类仿真,高级别动画,实时修改透视效果(比如水底效果),高级光亮(需要像素着色器支持)顶点着色器如何运作?简单说来,运作方式如下:当渲染一个顶点时,API会执行你在顶点着色器中所写的指令。依靠这种方法,你可以自己控制每个顶点,包括渲染,确定位置,是否显示在屏幕上。如何创建一个顶点着色器?用一个文本编辑器就可以了!我建议你们使用notepad或者vs开发环境来创建和修改着色器。另外,必须拥有一个支持可编程着色器的显卡。写完着色器后,保存他。API就可以调用他了(Direct3D或OpenGL)。API通过一些函数来调用这些代码指令到硬件中。第二部分 像素着色器什么是像素着色器?1 像素着色器也是一组指令,这组指令在顶点中像素被渲染时执行。在每个执行时间,都会有很多像素被渲染。(像素的数目依靠屏幕的分辨率决定)2像素着色器的指令和顶点着色器的指令非常接近。像素着色器不能像顶点着色器那样,单独存在。他们在运行的时候,必须有一个顶点着色器被激活。为什么大家要使用像素着色器?1 像素着色器过去是一种高级图形技术,专门用来提高渲染速度。2 和顶点着色器一样,使用像素着色器,程序员能自定义渲染每个像素。像素着色器如何运作?一个像素着色器操作顶点上单独的像素。和顶点着色器一样,像素着色器源代码也是通过一些API加载到硬件的。如何创建一个像素着色器?也和顶点着色器一样,你只需要一个文本编辑器和支持着色器编程的显卡即可。同样,API(Direct3D OpenGL)加载像素着色器代码指令到硬件中。第三部分 寄存器我们需要什么样的硬件支持?1 需要DirectX SDK 9.0(DX用户)。注意:我们的顶点着色器的版本是vs2.0。(Dx9支持)2 需要OpenGL 1。4(OpenGL用户)。3 可编程着色器显卡。什么是寄存器?寄存器是显卡GPU的内存位置,直观的说,可以把寄存器想象成变量存放的地方。现在,有相当数量的寄存器你可以使用!顶点着色器拥有比像素着色器更多的寄存器。<顶点着色器寄存器>我们先看看可供使用的顶点着色器有哪些?1 输入寄存器16个2 输出寄存器9个。