Shader "File/SubFile/ShaderName" //指定Shader引索目录与Shader引索名
{
Properties{ //面板暴露属性块
}
SubShader{ //显卡A支持的子着色器块
}
SubShader{ //显卡B支持的子着色器块
}
Fallback "VertexLit" //保险Shader【当所有SubShader无法执行时执行】
}
Shader目录与名称
Shader与所在的项目目录无关,放在项目的任何地方都一样 Shader与文件名无关,名称随便写都不会影响引用位置
材质球引用的Shader是通过标签管理的
面板属性 Properties
材质球需要从外包接收一些参数,需要在Properties中配置
//语法
Properties
{
_属性名 ("面板显示名", 数据类型) = 默认值
}
⚠️注意:C#可以通过【_属性名】控制Shader
//示例
Shader "File/SubFile/HibariShader"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_HibariData("Hibari", int) = 10
}
}
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” {} |
//示例
Shader "File/SubFile/HibariShader"
{
Properties
{
_Int ("A", int) = 10
_Float ("B", float) = 1.0
_Range ("C", range(1.0, 2.0)) = 33
_Vector ("D", vector) = (1,2,3,4)
_Color ("E", Color) = (1,1,1,1)
_2D ("2D", 2D) = "black" {}
_Cube ("Cube", Cube) = "gray" {}
_3D ("3d", 3D) = "While" {}
}
}