着色器和效果——3.2 像素着色器输入和输出

王朝other·作者佚名  2006-01-30
窄屏简体版  字體: |||超大  

3.2 像素着色器输入和输出 两样东西要输入到像素着色器:颜色和纹理坐标。两样都是以每像素为单位的。

注意:回想一下,顶点颜色是在图元的面(face of primitive)间进行插值的。

每个像素的纹理坐标就是简单的 (u , v) 坐标,它指定了像素正准备被映射到的纹理的纹理单元。Direct3D按每个像素来计算颜色和纹理坐标,从顶点颜色和顶点纹理坐标,在进入像素着色器之前。输入到像素着色器的颜色和纹理坐标的数量依赖于顶点着色器输出的颜色和纹理坐标的数量。例如,如果一个顶点着色器输出了两个颜色和三个纹理坐标,那么Direct3D将会按每个像素计算两个颜色和三个纹理坐标并且把它们把它们输入到像素着色器。我们使用带语意的语法(semantic syntax,译者注:参见译文第一章)映射这些输入颜色和纹理坐标进我们的着色器程序的变量里。使用前面的例子,我们可以这样写:

struct PS_INPUT

{

vector c0 : COLOR0;

vector c1 : COLOR1;

float2 t0 : TEXCOORD0;

float2 t1 : TEXCOORD1;

float2 t2 : TEXCOORD2;

};

对于输出,像素着色器输出一个单一的计算过的该像素的颜色值:

struct PS_OUTPUT

{

vector finalPixelColor : COLOR0;

};

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航