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.y
Unity提供的时间