1. Shader "File/SubFile/ShaderName" //指定Shader引索目录与Shader引索名
  2. {
  3. Properties{ //面板暴露属性块
  4. }
  5. SubShader{ //显卡A支持的子着色器块
  6. }
  7. SubShader{ //显卡B支持的子着色器块
  8. }
  9. Fallback "VertexLit" //保险Shader【当所有SubShader无法执行时执行】
  10. }

Shader目录与名称

Shader与所在的项目目录无关,放在项目的任何地方都一样 Shader与文件名无关,名称随便写都不会影响引用位置

材质球引用的Shader是通过标签管理的 image.png

面板属性 Properties

材质球需要从外包接收一些参数,需要在Properties中配置 image.png

  1. //语法
  2. Properties
  3. {
  4. _属性名 ("面板显示名", 数据类型) = 默认值
  5. }

⚠️注意:C#可以通过【_属性名】控制Shader

  1. //示例
  2. Shader "File/SubFile/HibariShader"
  3. {
  4. Properties
  5. {
  6. _MainTex ("Texture", 2D) = "white" {}
  7. _HibariData("Hibari", int) = 10
  8. }
  9. }

Properties支持的数据类型

数据类型 语法 说明
整形 int number
浮点 float number
随机浮点 Range(min,max) number 赋值表示的是随机种
向量 Vector (A, B, C, D)
颜色 Color (A, B, C, D)
2d贴图 2D “texture” {} 内置默认值
“white” {}
“black” {}
“gray” {}
“bump” {}
立方体贴图 Cube “texture” {}
环境贴图 3D “texture” {}
  1. //示例
  2. Shader "File/SubFile/HibariShader"
  3. {
  4. Properties
  5. {
  6. _Int ("A", int) = 10
  7. _Float ("B", float) = 1.0
  8. _Range ("C", range(1.0, 2.0)) = 33
  9. _Vector ("D", vector) = (1,2,3,4)
  10. _Color ("E", Color) = (1,1,1,1)
  11. _2D ("2D", 2D) = "black" {}
  12. _Cube ("Cube", Cube) = "gray" {}
  13. _3D ("3d", 3D) = "While" {}
  14. }
  15. }