HLSL(High level shading language)

来源:互联网 发布:郭德纲于谦 知乎 编辑:程序博客网 时间:2024/06/05 22:47

HLSL(High level shading language)语法类似C语言,,下面简单介绍一些基本语法
一、变量
1、标量型
共有五种:bool,half,float,double,int;(由宏定义完成)
2、向量型
及标量扩展,有下列两种方式:
bool1  bVec;
int1 iVec;
half2 hVec;
float3 fVec;
double4 dVec;
另一种方式是使用vector关键字,见如下:
vector<bool, 1> bVec;
vector<int, 1>  iVec;
vector<half, 2> hVec;
vector<float, 3>  fVec;
vector<double, 4>  dVec;
初始化方式同C++;
3、矩阵型
一样有两种方式:
int1*1 iMat;
half2*1 hMat;
float1*1 fMat;
double4*4 dMat;
另一种方式使用matrix关键字,见如下:
matrix<int, 2, 2> iMat;
matrix<float, 3, 3> fMat;
matrix<double, 3, 2> dMat;
其访问方式有三种,
(1)使用”_m“前缀,附带00为起点的2位数字成员
(2)使用”_“前缀,附带11为起点的2位数字成员,同C++
(3)使用数组方式访问。
这里没有写完,注意访问下标就可以了,HLSL中的矩阵是row——major
4、对象型
在HLSL中体现为以下三种:
(1)纹理对象
关键字texture,及shader中用到的贴图资源。
buffer,Texture1D,Texture2D,TextureCube,Texture3D,Texture2DMS
数组类型,Texture1DArray,Texture2DArray,Texture2DMSArray
所用到的操作:
GetDimensions得到高,宽和Mipmap级数
Load读取纹理数据,不过滤和采样
Sample对纹理采样
SampleCmp对纹理采样,比较丢掉一些采样
SampleCmpLevelZero在mipmap级数为0时采样,通过比较丢掉一些采样
SampleGrad使用一个梯度影响采样位置
SampleLevel使用一个mipmap级别进行采样
*注:纹理对象及其操作是DX10.0版本提供的。
(2)采样对象
关键字sample,及采样器,一个采样对象包含一个纹理对象和对该纹理对象进行采样所需的一些状态。如:
sample s = sampler_state
{
  texture  =NULL;
mipfilter =LINEAR //线性采样
}
(3)字符串
关键字string,主要用于annonation如:
string str = "hello , xietaizi";
5、结构体
HLSL中的结构体同C++
6、用户自定义型
大体同C++,如:
typedef  int DWORD;
...................
typedef matrix<float, 3, 3> MATRIX3*3;
typedef matrix<int, #, #> MATRIX#*#;//维数并不规定,使用时取具体值(1.2.3.4);

0 0
原创粉丝点击