欢迎来到天天文库
浏览记录
ID:43090087
大小:130.00 KB
页数:52页
时间:2019-09-29
《HLSL初级教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、HLSL(HighLevelShadingLanguage)HLSL初级教程HLSL入门顶点着色器像素着色器HLSLEffect(效果框架)HLSL入门什么是着色器什么是HLSL怎么写HLSL着色器怎么用HLSL着色器什么是着色器DirectX使用管道技术(pipeline)进行图形渲染,其构架如下:图1Direct3DGraphicsPipeline使用管道的步骤如下:设定顶点、图元、纹理等数据信息;设定管道状态信息渲染状态:通过SetRenderState方法设定渲染状态;另外,使用以下方法设置变换、材质和光照:SetTransform、S
2、etMaterial、SetLight、LightEnable取样器状态:通过SetSamplerState方法设定取样器状态;纹理层状态:通过SetTextureStageState设定纹理层状态;渲染:这部分交由D3D管道按照之前的设定自行完成,这部分操作是D3D预先固定的,所以这种管道技术被称为固定功能管道(fixedfunctionpipeline);固定功能管道缺点例如:1.在渲染过程中,我们要求y坐标值大于10的顶点要被绘制到坐标值(0,0,0)的地方,在之前的固定功能管道中,顶点被绘制的位置是在第1步即被设定好的,不可能在渲染过程中
3、进行改变,所以是不可行的;2.某顶点在纹理贴图1上映射为点A,在纹理贴图2上映射为点B,我们要求该顶点颜色由A、B共同决定,即:顶点颜色=A点色彩值*0.7+B点色彩值*0.3。这在固定管道编程中也是不可行的。以上两个问题都可以由可编程管道(pragrammablepipeline)来解决。可编程管线允许用户自定义一段可以在GPU上执行的程序,代替固定管道技术中的VertexProcessing和PixelProcessing阶段(参照图1),从而在使我们在编程中达到更大的灵活性。其中替换VertexProcessing的部分叫做VertexSh
4、ader(顶点着色器),替换PixelProccessing的部分叫做PixelShader(像素着色器),这就是我们所说的着色器Shader。什么是HLSLDirect8.x中,着色器是通过低级着色汇编语言来编写的,这样的程序更像是汇编式的指令集合,由于其效率低、可读性差、版本限制等缺点,迫切要求出现一门更高级的着色语言。到了Direct3D9,HLSL(HighLevelShadingLanguage,高级渲染语言)应运而生了。HLSL的语法非常类似于C和C++,学习起来是很方便的。怎么写HLSL着色器我们可以直接把HLSL着色器代码作为一长
5、串字符串编写进我们的应用程序源文件中,但是,更加方便和模块化的方法是把着色器的代码从应用程序代码中分离出来。因此,我们将着色器代码单独保存为文本格式,然后在应用程序中使用特定函数将其加载进来。怎么用HLSL着色器应用程序中对HLSL着色器的使用分为以下步骤:1.加载(称为编译更为妥当)着色器代码;2.创建(顶点/像素)着色器;3.对着色器中的变量进行赋值,完成应用程序和着色器之间的通信。4.把着色器设定到渲染管道中;顶点着色器顶点着色器(vertexshader)是一个在显卡的GPU上执行的程序,它替换了固定功能管道(fixedfunctionp
6、ipeline)中的变换(transformation)和光照(lighting)阶段(这不是百分之百的正确,因为顶点着色器可以被Direct3D运行时(Direct3Druntime)以软件模拟,如果硬件不支持顶点着色器的话)。图2说明了管线中顶点着色器替换的部件。顶点着色器由于顶点着色器是我们(在HLSL中)写的一个自定义程序,因此我们在图形效果方面获得了极大的自由性。我们不再受限于Direct3D的固定光照算法。应用程序操纵顶点位置的能力也有了多样性,例如:布料仿真,粒子系统的点大小操纵,还有顶点混合/变形。我们的顶点数据结构更自由了,并且
7、可以在可编程管线中包含比在固定功能管线中多的多的数据。3.像素着色器像素着色器是在对每个像素进行光栅化处理期间在图形卡的GPU上执行的程序。(不像顶点着色器,Direct3D不会以软件模拟像素着色器的功能。)它实际上替换了固定功能管线的多纹理化阶段(themultitexturingstage),并赋予我们直接操纵单独的像素和访问每个像素的纹理坐标的能力。这种对像素和纹理坐标的直接访问使我们可以达成各种特效,例如:多纹理化(multitexturing)、每像素光照(perpixellighting)、景深(depthoffield)、云状物模拟
8、(cloudsimulation)、焰火模拟(firesimulation)、混杂阴影化技巧(sophisticatedshadowin
此文档下载收益归作者所有