Unity-Shader简介
Shader 简述
shader是cpu与gpu通信的桥梁,一般用于material的塑造中
material由贴图与shader组成,shader会控制该material对光的反射,折射等性质,从而影响渲染效果
Stand Surface Shader基本格式
Shader "Custom/S"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
}
SubShader
{
pass
{
CGPROGRAM
ENDCG
}
}
FallBack "Diffuse"
}
1、指定shader的名字
这里的名字包含路径,方便在material中选择我们所写的shader
名字可以与shader的文件名不一致
Shader "Custom/S"
2、Properties类
定义需要用到的属性格式为:脚本中的变量名(“在unity面板中显示的变量名”,变量类型)=初值
Properties
{
_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
}
3、SubShader与FallBack
SubShader可看作是shader的子类。一个shader文件中可以有多个SubShader,运行时会从第一个SubShader开始,若能够执行,则Shader体现为第一个SubShader的效果,若不可执行则会顺延至第二个SubShader重复此过程,,直至找到第一个可以执行的SubShader。
若均不可执行,此Shader会与FallBack中所选Shader效果保持一致
逻辑类似于switch case与default类似
1)SubShader
可插入不同的编写shader的语言,这里以CG语言为例
SubShader
{
pass
{
CGPROGRAM
//CG语言编写的内容
ENDCG
}
}
2)FallBack
直接在后面写备用shader的名字
FallBack "Diffuse"
备用shader为一个名为Diffuse的shader