effect其实整合了shader和render state的控制两大部分内容
9.1 effect文件基本框架
part1 :shader state包括全局变量 shader数据结构定义,shader的实现
part2 :texture and sampler state,这个通常是全局变量,用于shader中,通常要定义在shader的实现之前
part3 其他的render state设置,写在technique的pass里,这才是effect文件的主入口
effet中任何一个变量后面都可以接一个语意:XXX
1.可以使用的变量类型
Data : Buffer Scalar Vector Matrix Sample Shader Texture Struct UserDefined
9.1.1参数类型
hlsl中使用的参数有两种:Uniform和 varying
Uniform存储在常量缓存中的,是对shader的每一次调用值都是一样的,可以在D3D中访问的 前面可以加uniform(可不加),通常是全局的
varying:只对一次调用起作用的,是来自vertext stream中的,通常要有语意的修饰,通产是写在shader的输入输出参数里的
9.1.2 sampler纹理采样器
要包含三个信息
- A texture :纹理物体(tex0 tex1 tex2...NULL)
- A sampler (with sampler state)如
- A sampling instruction
例如定义这样一个sampler
sampler s = sampler_state
{
texture = NULL;
mipfilter = LINEAR;
};
就可以在shader中使用