1.1什么是着色器

1.HLSL入门

1.1什么是着色器

DirectX使用管道技术(pipeline)进行图形渲染,其构架如下:

1.1什么是着色器

1.1 Direct3D Graphics Pipeline

之前我们使用管道的步骤如下:

1. 设定顶点、图元、纹理等数据信息;

2. 设定管道状态信息;

² 渲染状态

通过SetRenderState方法设定渲染状态;

另外,使用以下方法设置变换、材质和光照:

SetTransform

SetMaterial

SetLight

LightEnable

² 取样器状态

通过SetSamplerState方法设定取样器状态;

² 纹理层状态

通过SetTextureStageState设定纹理层状态;

3. 渲染;

这部分交由D3D管道按照之前的设定自行完成,这部分操作是D3D预先固定的,所以这种管道技术被称为固定功能管道(fixed function pipeline)

固定功能管道给我们编程提供了一定的灵活性,但是仍有很多效果难以通过这种方式实现,比如:

1. 在渲染过程中,我们要求y坐标值大于10的顶点要被绘制到坐标值(000)的地方,在之前的固定功能管道中,顶点被绘制的位置是在第1步即被设定好的,不可能在渲染过程中进行改变,所以是不可行的;

2. 谋顶点在纹理贴图1上映射为点A,在纹理贴图2上映射为点B,我们要求该顶点颜色由AB共同决定,即:

定点颜色 = A点色彩值*0.7 + B点色彩值*0.3

这在固定管道编程中也是不可行的。

以上两个问题都可以由可编程管道(pragrammable pipeline)来解决。

可编程管线允许用户自定义一段可以在GPU上执行的程序,代替固定管道技术中的Vertex ProcessingPixel Processing阶段(参照图1.1),从而在使我们在编程中达到更大的灵活性。其中替换Vertex Processing的部分叫做Vertex Shader(顶点着色器),替换Pixel Proccessing的部分叫做Pixel Shader(像素着色器),这就是我们所说的着色器Shader

你可能感兴趣的:(编程)