基础结构:
Shader "路径名/shader名"
{
Properties //属性,相当于类中的字段或变量,声明变量当做shader的参数,不加分号
{...
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
//_MainTex ("显示名称", 类型) = 默认值
}
SubShader //子着色器,一个shader可以包含多个subshader
{...
Pass //渲染通道,可以添加多个渲染通道,每渲染一次产生一个drawcall
{...}
}
}
显示类型:
-
Color - 一种颜色,由RGBA(红绿蓝和透明度)四个量来定义;
-
2D - 一张2的阶数大小(256,512之类)的贴图。这张贴图将在采样后被转为对应基于模型UV的每个像素的颜色,最终被显示出来;
-
Rect - 一个非2阶数大小的贴图;
-
Cube - 即Cube map texture(立方体纹理),简单说就是6张有联系的2D贴图的组合,主要用来做反射效果(比如天空盒和动态反射),也会被转换为对应点的采样;
-
Range(min, max) - 一个介于最小值和最大值之间的浮点数,一般用来当作调整Shader某些特性的参数(比如透明度渲染的截止值可以是从0至1的值等);
-
Float - 任意一个浮点数;
-
Vector - 一个四维数;