欢迎来到天天文库
浏览记录
ID:20436757
大小:185.50 KB
页数:6页
时间:2018-10-12
《hlsl学习笔记(一)基础》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、HLSL学习笔记(一):基础五一在家无事,于是学了一下HLSL,基于XAN4.0的。学>』完了也就总结一下,纯粹是新手学的经验之谈,纰漏之处还望见谅,不再勿喷。HLSL足一种使用GPU渲染出图像的技术,不仅吋以改变敁终呈现的颜色,还可以物体的人小、胖瘦和位®等。例如物体的碎裂效果就可以使用HLSL來渲染得到。〔据类型数裾类型有值类型、14量、矩阵、采样器、和结构体。1.值类型bool布尔变量half16为整形int32位整形float单精度浮点数doubleX乂精度浮点数声明方式:floatf;
2、赋值方式:f=1;2.向量声明方式:float4f;赋值方式:f={1,2,3,4};取值方式:float3ff=f.rgb;说明:向nJ以通过xyzw或者rgba访问昀量中的指定字段,x或者r就足代表0号字段。不仅吋以单独操作一个字段,还可以对多个字段同时操作,例如3*f.xyz,就足将f中的xyz都乘以个3,3.矩阵声明方式:float2x4f;先行后列。赋值方式:f={1,1,2,2,3,3,4,4};取值方式:floatff=f[0][0];说明:如果耍对矩阵做乘法运算,请使用mul函数
3、,另外,mul(ff,f)与的结果是不一样的。4.采样器‘明力‘式:textureTexture;//纹理变量samplerTextureSampler=sampler_state//纹理采怦器{Texture=;//纹理采样器使川的纹理对象MinFilter=Linear;//缩小图形使用线性滤波MagFilter=Linear;//放大图形使川线性滤波MipFilter=Linear;//Mipmap使HI线性滤波AddressU=Wrap;//U7/h'd上的纹理寻址模式
4、采用Wrap力‘式AddressV=Wrap;//V力句上的纹理寻址模式采川Wrap方式};赋值方式:在C#中对Texture赋值,effect.Parameters["TextureM].SetValue(Game.Content.Load("*"));収值方式:tex2D(TextureSampler,TEXCOORDO);说明:MinFilter、MagFilter、MipFilter、AddressU、AddressV是可选项,如果不写将会使用默汄值,也就是上衡赋予
5、的值。1.结构体声明方式:structVertexShaderInput{float4Position:POSITION;float2TextureCoordinates:TEXCOORDO;float3Normal:NORMAL;};VertexShaderInputinput;此处与C#语法有些区别,直接这么写,不需要W写个new什么的。赋值方式:与C#语法一致。取值方式:与C#语法一致。说明:K它的地方都好理解,关键是每个字段后面还有个“小尾巴”,这是什么玩意啊?这个我也不太清楚,自己想当
6、然感觉吧,应该就是显存里而有一些特殊的空间,它们有着自已名字,比如TEXCOORDO什么的,就像C#屮的Dictionary。所以TextureCoordinates这行的S思是创建一个float2类型的向g,它的名字是TextureCoordinates,值存储在TEXCOORDO这个内存空间。Position的,5•思对所有POSITION(POSITIONO-POSITION9,貌似是这样。)内存空间的引这也就说明了入口函数的参数为什么可以千变力'化,其劣只是换了个名字,数据该在哪永远都在
7、语法语法什么的,与C#相差不人,不过还是有点区別的,至丁•区别的地方,我所知道的上而都写出来了。函数列表本表來自网络,我对说明做了些修改。NameSyntaxDescriptionabsabs(x)返回x的绝对似。对x的毎个元素都会独立计算一次。Absolutevalue(percomponent).acosacos(x)返回X的反余弦位。对X的每个元索都会独立计算一次。Returnsthearccosineofeachcomponentofx.allall(x)检测x的所有元数的值是否为O.T
8、estifallcomponentsofxarenonzero.anyany(x)检测x记否Yf某个元数的值为0.Testifanycomponentofxisnonzero.asfloatasfloat(x)将x转换为float类型*Converttheinputtypetoafloat.asinasin(x)返回x的反正弦值。对x的毎个元素都会独立计算一次。asintasint(x)将x较换为int炎型。Converttheinputtypetoaninteger.asuintasuint(
此文档下载收益归作者所有