HLSL特效.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HLSL特效

目录: 1: HLSL概述 1 1.什么是HLSL 1 2.VS和PS 2 3.Technique和Pass 3 4.GLSL和HLSL的比较 3 5. Cg和HLSL的比较 3 2:HLSL的变量 3 1.标量型 3 2.向量型 3 3.矩阵型 4 4.对象型 5 5.结构体型 6 6.用户自定义型 6 7.变量类型的转换 6 8.修饰变量的关键字 7 9.变量重组 7 3:HLSL的函数 8 4:HLSL基本语法 9 1.数学表达式 9 2.HLSL的关键字和保留字 9 5:Direct3D中使用HLSL 10 1.简单的示例 10 2.shader版本的查询 10 1:通过外部工具 11 2:通过编写代码(D3DCAPS9 Caps) 11 6:在Direct3D中使用HLSL 12 1.ID3DXEffect对象 12 2. ID3DXEffect对象的创建 12 1.D3DXCreateEffect 12 2. D3DXCreateEffectFromResource 13 3.调用HLSL代码 13 1: HLSL概述 1.什么是HLSL High Level Shading Language,高级着色语言(后面全部使用简称HLSL)是微软公司随DirectX 8推出的一门着色器专用的可编程渲染语言。 着色器(Shader)就是一组在渲染过程中执行的指令代码。 可编程着色器这个概念是相对于固定管线而言的,或者换个角度可以称固定管线为不可编程着色器。 HLSL语言是实现可编程管线着色程序的编程语言。HLSL语言具备高级语言所应有的特性,如变量、函数、结构化等。同时,HLSL语言的工作原理也和C++这样的高级语言一样,是将代码编译为“机器代码”之后再运行的。只不过这里的“机器代码”指的不是80x86汇编代码,而是显卡专用的一种机器代码。 在目前的大部分显卡中,固定管线在硬件级别已经不存在。 1)固定管线基本上已经被可编程管线所取代。 2)固定管线能够做的渲染工作,可编程管线肯定能做,但是可编程管线能做的,固定管线就不一定能做了。 3)HLSL语言是实现可编程管线着色程序的编程语言。 HLSL是一门高级语言,对比汇编语言有很多优点: 1)高级语言语法简单,易学易用,学习门槛较低; 2)高级语言代码维护简单,容易模块化和结构化; 3)高级语言可以在语言级别进行功能性的升级而不会影响已经写成的代码; 4)利用高级语言的API接口来操作代码更简单。 2.VS和PS VertexShader被翻译为“顶点着色器”或“顶点渲染”简写为VS。顶点着色器的功能就是对进入管线的每一个顶点进行着色处理。 PixelShader则被翻译为“像素着色器”或“像素渲染”简写为PS。像素着色器的功能就是对进入管线的每一个像素顶点进行着色处理。 HLSL就是将VertexShader与PixelShader进行组合编程与使用的一个代码的合集。并且在同一时间内只能有一个VertexShader和PixelShader是活动的。 VertexShader与PixelShader成对出现,每一组VertexShader与PixelShader组成一个Pass。 一个Technique可以由任意多个Pass组成。 在一个HLSL中可以有多个technique。 VertexShader和PixelShader都有版本问题,版本的不同导致在指令、功能、效率、寄存器数量等方面,都有一定的差别。 版本 输入寄存器 常量寄存器 临时寄存器 指令数目 vs_1_1 16 96 12 128 vs_2_0 16 256 12 256 vs_2_x 16 256 12 256 vs_3_0 16 256 12 512 vs_4_0 16 16×4096 4096 ≥64K ps_1_4 2color / 6 8 6 6tex + 8 arithmetic ps_2_0 2color / 8 32float / 16int 12-32 32tex + 64 arithmetic ps_2_x 2color / 8 32float / 16int 12-32 96 ps_3_0 10 224float/16int 32 512 ps_4_0 32 16×4096 4096 ≥64K 3.Technique和Pass 使用可渲染流水线渲染一个球体按照下面的步骤: (1)找到用于渲染该球体的VertexShader和PixelShader; (2)将参数设置给VertexShader和PixelShader; (3)绘制该球体。 pass的工作是完成一次图元绘制,有些效果需要对同一个物体进行多次绘制才能完成,这就需要用多个pass来完成,而这些

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档