shader,英文意思是,著色器、着色程序。 Shader就是一段可以改变像素和顶点的小程序,这个Shader小程序可以为场景添加一些基本的几何学特效。例如湖水的涟漪,它会让特定的蓝色材质发生移动、扭曲和倒映,这样就会给人波光粼粼的感觉了。若是要将一个物体渲染成玻璃的风格,它就会让一些材质发生透明和扭曲。
DirectX9 着色器学习1 高级着色器语言(High-level shading Language, HLSL)。
1.编写着色器代码 写在txt文本中,主程序调用读取文本,在编译时使用相关代码。
2.编译HLSL着色器
3. 调用D3DCompileShaderFromFile hr = D3DXCompileShaderFromFile(......);
HLSL语言的基本属性: (1)函数使用类似C++语法 (2)参数总是按值传递 (3)递归不被支持 (4)函数总是inline的
DirectX9 中的着色器包括:Vertex shader 和 Pixel shader。
首先学习顶点着色器VS,它替换了固定功能管线中的变换(Transformation)和光照(Lighting)阶段。
使用顶点着色器的步骤:
1.编写并编译顶点着色器; (D3DXCompileShaderFromFile()返回已编译着色器代码的指针,作为step2的输入)
2.创建一个IDirect3DVertexShader9接口以引用已编译的着色器代码上的顶点着色器; (CreateVertexShader((DWORD*)shader->GetBufferPoint(),&ToonShader),返回一个接口指针,作为step3的输入)
3.用IDirect3Device9::SetVertexShader方法使用这个顶点着色器。 (Device->SetVertexShader(ToonShader);)
4.销毁顶点着色器 (d3d::Release<IDirect3DVertexShader9 *>(ToonShader);)
DirectX 10的Geometry Shader
除了专门处理像素的Pixel Shader和专门处理多边形顶点的Vertex Shader之外,DX10中还加入了一个Geometry shader,专门用来处理场景中的几何图形。Vertex Shader每一次运行只能处理一个顶点的数据,并且每次只能输出一个顶点的结果。
Geometry shader几何着色器工作在顶点与像素着色单元之间,当显卡中的顶点着色单元生成顶点信息之后,就会将这些结果交给几何着色器来构成更为复杂的几何图形,最后交由像素着色器来为这些几何图形添加各种材质。