1:HLSL概述 32:HLSL的变量 73:HLSL的函数 84:HLSL基本语法 95:Direct3D中使用HLSL 101:通过外部工具 112:通过编写代码(D3DCAPS9Caps) 116:在Direct3D中使用HLSL 131:,高级着色语言(后面全部使用简称HLSL)是微软公司随DirectX8推出的一门着色器专用的可编程渲染语言。着色器(Shader)就是一组在渲染过程中执行的指令代码。可编程着色器这个概念是相对于固定管线而言的,或者换个角度可以称固定管线为不可编程着色器。HLSL语言是实现可编程管线着色程序的编程语言。HLSL语言具备高级语言所应有的特性,如变量、函数、结构化等。同时,HLSL语言的工作原理也和C++这样的高级语言一样,是将代码编译为“机器代码”之后再运行的。只不过这里的“机器代码”指的不是80x86汇编代码,而是显卡专用的一种机器代码。在目前的大部分显卡中,固定管线在硬件级别已经不存在。1)固定管线基本上已经被可编程管线所取代。2)固定管线能够做的渲染工作,可编程管线肯定能做,但是可编程管线能做的,固定管线就不一定能做了。3)HLSL语言是实现可编程管线着色程序的编程语言。HLSL是一门高级语言,对比汇编语言有很多优点:1)高级语言语法简单,易学易用,学习门槛较低;2)高级语言代码维护简单,容易模块化和结构化;3)高级语言可以在语言级别进行功能性的升级而不会影响已经写成的代码;4)利用高级语言的API接口来操作代码更简单。“顶点着色器”或“顶点渲染”简写为VS。顶点着色器的功能就是对进入管线的每一个顶点进行着色处理。PixelShader则被翻译为“像素着色器”或“像素渲染”简写为PS。像素着色器的功能就是对进入管线的每一个像素顶点进行着色处理。HLSL就是将VertexShader与PixelShader进行组合编程与使用的一个代码的合集。并且在同一时间内只能有一个VertexShader和PixelShader是活动的。VertexShader与PixelShader成对出现,每一组VertexShader与PixelShader组成一个Pass。一个Technique可以由任意多个Pass组成。在一个HLSL中可以有多个technique。VertexShader和PixelShader都有版本问题,版本的不同导致在指令、功能、效率、寄存器数量等方面,都有一定的差别。版本输入寄存器常量寄存器临时寄存器指令数目vs_1_116>9612128vs_2_016>25612256vs_2_x16>25612256vs_3_016>25612>512vs_4_01616×40964096≥64Kps_1_42color/6866tex+8arithmeticps_2_02color/832float/16int12-3232tex+64arithmeticps_2_x2color/832float/16int12-32>96ps_3_010224float/16int32>512ps_4_03216×40964096≥:(1)找到用于渲染该球体的VertexShader和PixelShader;(2)将参数设置给VertexShader和PixelShader;(3)绘制该球体。pass的工作是完成一次图元绘制,有些效果需要对同一个物体进行多次绘制才能完成,这就需要用多个pass来完成,而这些pass共同构成了一个Technique。Technique的工作是对一个物体实现一个效果,如果需要多个物体共同实现一个效果,或是要一个物体表现出多个效果,就需要有多个Technique。(OpenGLShadingLanguage
HLSL特效 来自淘豆网m.daumloan.com转载请标明出处.