HLSL数据类型

2009年6月3日

微软新型的高级渲染语言(High_Level Shader language ) HLSL数据类型

1.标准数据类型

数据类型bool,int,float,double,half(16位的float数值).

const修饰符的变量、编译器会把它放在一个不需要些的内存空间、因为变量不可以被修改、声明时必须初始化.

row_major、colmajor, 作用用来指定当前定义的元素,是使用行主序还是列主序进行存放, row_major float4×4 WorldMatrix; 注:列主序运行效率高.

static 该修饰符具有全局作用域.防止渲染器变量暴露给应用程序.任何API函数不能获得static类型变量的值.

extern 含义和static相反,在shader以外声明的,没有用关键字声明的全局变量默认为extern.

uniform 只能使用API方法改变它,并且只在两次绘制间被改变.一旦该类型变量被赋值所有的顶点或像素都会看到同样的值.

shared 用来修饰Shader变量表明它在不同的效果(effect)中共享.

2.向量

向量float3  fvector; 等价于vector<float,3> fvector; ( 后者看起来像是模板…)

向量的寻址,一个向量最多包括4个元素,可以使用x,y,z,w或者r,g,b,a来进行寻址.

向量元素可以混合存取.(float4 pos; float2 temp=pos.xy;)

在一次操作中目标向量的同一个元素不能出现两次,寻址时候命名集合不能混合(matrix.xg).

向量运算” * “,点乘用dot(a,b).

float4 a,b;

float4 v=a*b;

v.x=a.x*b.x;

v.w=a.w*b.w;

float v=dot(a,b);

v=a.x*b.x+a.y*b.y+a.z*b.z+a.w*b.w;

3.矩阵

定义. float4×4 fMatrix;

存取,  0基准位置法中行列号前面有个字母m

0基准行列位置法,

_m00,_m01,_m02,_m03

_m10,_m11,_m12,_m13

_m20,_m01,_m22,_m23

_m30,_m31,_m32,_m33

1基准行列法,

_11,_12,_13,_14

_21,_22,_23,_24

_31,_32,_33,_34

_41,_42,_43,_44

矩阵混合存取与向量一样.

下标存取不能使用操作符” . “,不能混合存取.

矩阵式行主序还是列主序,可在编译时候指定,默认情况下是列主序,可以通过 #pragma pack_matrix(row_major)或者#pragma pack_matrix(col_major)指定

矩阵乘法用mul()来处理…

目前还没有任何评论.

Spam Protection by WP-SpamFree