3.shader的基本结构

编译器以及环境选择

https://zhuanlan.zhihu.com/p/147176392

这里我选择vs + hlsl tools for vs

平时用vs写c# 感觉这套方案有高亮和代码补全和vscode那边差不多

在vs里下了插件发现没效果虽然作者说可以使用

https://stackoverflow.com/questions/62139190/are-there-any-visual-studio-2019-extensions-for-unity-shader-files

https://marketplace.visualstudio.com/items?itemName=TimGJones.HLSLToolsforVisualStudio&ssr=false#qna

之前创建了一个unlitShader 删掉多余的部分保留初始的结构代码。

如下(多加了12,13行)

 

从整体来看的话,大致是这样的一个框架结构:

Shader "name" { [Properties] SubShaders [FallBack] [CustomEditor] }

可以拆分成以下几个大部分:

  1. Shader "name"
  2. Properties
  3. SubShaders
  4. FallBack
  5. CustomEditor

其中[]方括号表示的是可选,意思就是说在Shader中可以没有它,只要不需要的话不加也是没有问题的。

 

1. Shader "name" 路径名称

  • 如果我们把路径名称放在Hidden下面的话,比如:
  • Shader "Hidden/TA/MyFirstShader"
  • 则表示在材质面板中隐藏此Shader,你将无法通过材质下拉列表中找到它。这在做一些不需暴露的Shader时很有用处,可以使Shader下拉列表更精简整洁。

 

  • 而Shader文件的名称,也就是我们在Project面板中的资源文件的名称,是可以与Shader内部的路径名称不一样的,这点与C#是不同的。
  • 在定义内部路径名称时,建议统一规划下,不要Shader过多后导致很混乱,不便于美术去使用。

 

2. Properties

属性,材质球面板中显示的贴图和一些参数什么的都是在此Properties中进行定义设置的,内容必须写在Properties后的{}内。当然,如果你确定不需要属性的话也可以将整个Properties以及它的{}全部删除,因为它是可选项。

 

3. SubShaders

如果你够细心的话你会发现为什么SubShaders带个S呢,因为它可以有不止一个呀,实际上每个Shader中都可以包含多个SubShader,不可以没有,必须至少有一个,因为当前Shader的核心算法实现就是在SubShader中来实现的。在加载Shader时,Unity将遍历所有SubShader列表,并最终选择用户机器支持的第一个。

这个功能到底有什么用呢?

我们都知道不同的硬件性能是不一样的,游戏内通常把机器配置分为高中低三种,假如我们做了一个效果很好的Shader,但是呢却只能在高配机上有较好的性能表现,中低端就显的太费性能,这时怎么办呢,SubShader在这时就可以派上用场了,我们可以在这个Shader内做三个SubShader,分别对应于高中低不同的配置。

 

4. FallBack

备胎,就是备胎的意思,有的时候我们写的Shader难免在一些机器上会出现不支持的问题(最终呈现的就是显示成粉红色),而这个时候我们只要添加了FallBack,并且在后面的双引号内写上了其它Shader的有效路径名称,那么在碰到不支持的硬件时这个Shader就会自动切换成FallBack内的Shader,如果FallBack内的Shader也不支持呢,那就继续从FallBack内的Shader中再找FallBack。。。。

 

5. CustomEditor

自定义界面,也就是说我们可以通过这个功能来自由定义材质面板的显示结果,它可以改写Properties中定义的显示方式。

举个你一定见过的例子:

Standard Shader对应的材质面板显示与众不同,很高级,这就是因为它利用了CustomEditor的功能来实现的,要做到这一点,必须要用到C#来写代码实现,这对于刚入门学Shader的同学来说不是易事,同时也由于这个功能在大多数情况下是不需要的,所以我们先抛开它,知道有它的存在就好了。后续如果有机会我们再专门解讲这个。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值