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 半角向量 函数:

可自定义的四个函数

  1. vertex 顶点函数
  2. surface 表面
  3. LightXXX 光照模型
  4. finalColor 最终颜色

常用shader函数

  1. tex2D(texture img , float2 pos)
    根据第二个参数取出第一个参数中对应的颜色值

  2. dot(向量 a,向量 b)
    用于比较两个向量的方向, 返回-1 表示两向量平行但方向相反,返回 1表示两变量平行且方向相同。返回 0表示两变量垂直。

  3. fmod(float x,float y)
    表示x除以y的余数

  4. ceil(float n)
    返回不小于x的最小整数

  5. mul
    乘法

  6. lerp(float a.float b,float c)
    取 a、b 关于c的插值

  7. float3 UnpackNormal(float3 RGB)
    将RGB值转化为xyz的法线贴图 8.saturate(float x)
    如果 x > 1 则返回 1 ,x < 0 则返回0 ,否则返回x

常用内置变量

  1. _Time.y Unity提供的时间

kisence

潮落江平未有风。