shader学习笔记——基础知识篇
渲染队列
Tags{"Queue"="XXX"}
Queue的可选值
Background 对应值 1000
Geometry 对应值 2000
AlphaTest对应值  2450
Transparent对应值  3000
Overlay 对应值 4000
光照模型
1)三种光照模型函数
1. half Lighting<LightName> (surfaceOutput s , half3 LightDir , half atten) 
用于正向渲染,不需要考虑观察角度。
2. half Lighting<LightName> (surfaceOutput s , half3 lightDir , half3 viewDir ,half atten) 
用于正向渲染,并且需要考虑观察角度。
3. half Lighting<LightName>_PrePass  (surfaceOutput s , half4 light) 
被用于需要使用延迟渲染时
最终颜色 = 环境光反射颜色* 渲染设置环境设置 * (灯光颜色 * 漫反射颜色 + 灯光颜色 * 镜面反射颜色)+ 自发光
2)常用的光照模型 
L表示 入射光线 
N表示 法线 
C表示 光的强度和颜色 
V表示 视线的方向向量
lambert 漫反射模型 
函数:lum = C *max(0,cos< L,N >)
Phong 镜面高光 
函数:Spec = pow(max0,cos< R,V >)
BlinnPgong 半角向量
函数:
可自定义的四个函数
vertex顶点函数surface表面LightXXX光照模型finalColor最终颜色
常用shader函数
tex2D(texture img , float2 pos)
根据第二个参数取出第一个参数中对应的颜色值dot(向量 a,向量 b)
用于比较两个向量的方向, 返回-1 表示两向量平行但方向相反,返回 1表示两变量平行且方向相同。返回 0表示两变量垂直。fmod(float x,float y)
表示x除以y的余数ceil(float n)
返回不小于x的最小整数mul
乘法lerp(float a.float b,float c)
取 a、b 关于c的插值float3 UnpackNormal(float3 RGB)
将RGB值转化为xyz的法线贴图 8.saturate(float x)
如果 x > 1 则返回 1 ,x < 0 则返回0 ,否则返回x
常用内置变量
_Time.yUnity提供的时间