Unity3D游戏开发之着色器组织与实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
????? ? 今天阳光明媚 万里无云于是就把第二篇写了放给大家,谢谢上期朋友们的指正,《unity?3D?ShaderLab开发实战详解》确实不适合初学者学习在此道歉,在此推荐初学者上手Shader可以考虑下《unity3d从入门到精通》中的shader篇,写的通俗易懂十分适合初学者上手哟! ????? ?现在进入正题咱们今天说一说Unity3d中自定义的ShaderLab的组织与实现和一个最简单的Shader实例的分析 Shader Custom/myshader { Properties { _MainTex (Base (RGB), 2D) = white {} } SubShader {} SubShader {} SubShader {} .... FallBack Diffuse } 代码分析: ?????? 在Unity中一个Shader文件需要一个Shader关键字来开头然后后面接上Shader的路径与名称,这些都是自动生成的所以不必担心.接下来在Properties{}中定义Shader的一些属性写法是 :_属性名(“Unity材质球上显示的属性名”,属性类型) = 属性的默认值 {这里与贴图的选项有关需要时写入否则留空} ????? 属性类型 类型描述 默认值举例 Color 颜色 (1,1,1,1) 2D 一张2的N次幂规格的贴图 ”white”,“black”,“gray”,“bump”,空 Rect 一张非2的N次幂的贴图 ”white”,“black”,“gray”,“bump”,空 Vector 四维数 (x,y,z,w) Float 浮点数 0.1f Range 一个浮点数的区间 (0,1.0f) Cube 一个立方体盒子包含6张关联贴图 ”white”,“black”,“gray”,“bump”,空 ????? 大体的属性定义就是这样,接下来列出一些常用属性: SubShader{ ???? ?大家都知道我们所做的游戏不可能只给好机器玩也不可能只满足差机器的需求忽略好机器的体验感,那么怎么办呢?SubShader替我们解决了这个问题,在写自己的shader的时候,我们大可以针对我们面向的最好的机器写一个效果炫丽的SubShader?然后针对最低配置机型做一个既满足需求也不至于效果惨不忍睹的SubShader,当然你还可以在其中做一个折中的SubShader.? ????? ????? SubShader的执行顺序是从上至下直到找到一个你的显卡能执行的SubShader去跑,也许你会担心要是就连写好的最低的SubShader都无法通过显卡怎么办呢? ?????? 这就要使用到FallBack Diffuse了,这是Unity为了保证Shader的广泛适应性而定义的最低shader,确保了在所有显卡上都能运行,所以如果咱们自己的SubShader都无法通过显卡的话会自动回滚并调用Diffuse?这个Shader。 ? 一:最简单Shader实例 ? ????? 到这里 大家可以打开Unity和我一起来做一个简单的shader,记得上期说过学习Shader只有多动手多练不要觉得看上去简单就不去写,其实看上去再炫的的shader也 ? 是这些简单的代码堆砌出来的呢 (反正我是信了..)。 第一步创建物体 ? 第二步在Project中建立自己的一个文件夹 在文件夹中右键Create--Material 同理Create--Shader ? 第三步吧Material的Inspector页面吧材质球的shader选择你刚才shader的路径/名称 的shader ? 第四步吧赋好shader的材质球上的Base(RGB)赋上一张图片(我使用的是unity里自带的一种砖墙图片) ? 最后一步吧你的材质球赋给你创建好的Cube ? ????? OK 这样我们就完成一个一套 shader的制作与应用了。但是重点只有一个 就是我们自己创建的Shader到底是个什么东西,竟然能吧一张贴图渲染在一个Cube上呢?文章来自【狗刨学习网】 ????? ????? 我们可以找到材质球 点开Shader后面的一个叫Edit的按钮 打开我们新建的shader代码。 Shader Custom/MyShader { Properties { _MainTex (Base (RGB), 2D) = white {} } SubShader { Tags { RenderType=Opaque } LOD 200 CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; struct Input { float2 uv_Main

文档评论(0)

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

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

1亿VIP精品文档

相关文档