网站大量收购闲置独家精品文档,联系QQ:2885784924

shader入门教程.pptVIP

  1. 1、本文档共19页,可阅读全部内容。
  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文档。上传文档
查看更多
shader入门教程

HELLO SHADER 主讲人:虚拟橙子 什么是SHADER 程序化着色器,最初的概念是采用一系列类似汇编语言的指令直接对GPU进行操作,改变3D显示中的顶点、像素,做到一些特殊的效果 经过多年的发展,语言体系逐渐成熟,多家公司及机构开发了自己的语言标准,目前我们常见的有以下几种: 语言 应用平台 开发商 HLSL directX mircosoft CG directX Nvidia GL OpenGL SGI GLES 手机等嵌入式设备 Khronos UNITY3D SHADER分类 语言 适用平台 阴影 参考 Fixed Function Shader PC、Mac、移动设备 无 U3d Reference VertexFragment Shader PC、Mac 无 CG、HLSL Surface Shader PC、Mac 有 CG、HLSL 那些有可能是让你停下来的原因 学习shader是否需要知道复杂的GPU指令? 完全不需要,最初的shader确实是采用类似汇编的GPU语言来编写,但经过多年的进化,现在已经十分规范了。 学习shader是否要有非常专业的图形学和数学知识? 这个可以有,当然越专业越好!但意思并不是说不懂图形学就不能写shader了,即使做不到那么专业,你也可以学shader,就比方说你可能会C++,但是你不一定要用它来写一套windows系统,但你完全可以用它做个计算器,仍然很管用。 HELLO SHADER 这段程序做了最简单的事情:把一个物体的表面颜色赋值成了红色。 当我们剔除shader当中的大部分,以最简单的结构去看它的时候,你会发现,其实shader就是一个函数,而这个函数所做的事情,不过就是指定输出的颜色而已 HELLO SHADER 稍微做下更改,这次我们把输出的自发光通道赋以绿色,结果中我们看到,自发光是不受环境光影响的 至此,我们得出结论,shader其实只不过是让一个物体表面以什么颜色显示而已,就这么简单 从哪里开始?到哪里结束?(SURFACE SHADER) CG语言段起点 CG语言段终点 文件头: #pragma surface surf SimpleLambert #pragma surface: 声明是surface shader surf:surface shader的入口函数名称定义 SimpleLambert:自定义的光照模式函数名称(实际的函数都要在此名称基础上加Lighting前缀) 执行顺序(SURFACE SHADER) 1 2 Shader程序的执行顺序: 1.执行surface shader 的入口函数,计算表面颜色,返回给SurfaceOutput 结构体 2.执行光照模式函数,用surf函数返回的SurfaceOutput参数计算高光颜色,最终输出到屏幕中的3D物体表面 注意:可能你看过很多没有光照模式函数的代码段,但那并不意味着没有光照模式函数,打开Unity\Editor\Data\CGIncludes文件夹中的Lighting.cginc文件,你就会找到默认的Lambert和BlinnPhong两种光照模式函数了,当然,你也可以找到surf函数中形参中的SurfaceOutput结构体的定义,他是固定的,不可以自己定义 形参(SURFACE SHADER) Surface shader的形参结构体Input可以由以下参数构成: uv_TextureName – 贴图坐标1(TextureName例如MainTex) uv2_TextureName – 贴图坐标2 float3 viewDir – 视点方向 float4 with COLOR semantic – 颜色 float4 screenPos – 屏幕坐标系中的点坐标 float3 worldPos – 世界坐标系中的点坐标 float3 worldRefl - 世界坐标系下的反射向量 float3 worldNormal - 世界坐标系下的法线 float3 worldRefl; INTERNAL_DATA float3 worldNormal; INTERNAL_DATA 通过简单的例子认识SHADER 我们知道,在u3d的shader中,一般情况下,习惯把高光贴图放到_MainTex的Alpha通道内,如左图 这样的确省了一张贴图,但并不是我们所习惯的,因此我们想把它提取出来,为这个shader增加一个高光通道的设置 通过简单的例子认识SHADER 1.为shader在u3d的属性面板中增加一个贴图通道 2.增加一个变量与属性面板对应,以便能够在程序中使用 3.在Input结构体中增加这个贴图通道的uv,但

文档评论(0)

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

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

1亿VIP精品文档

相关文档