[Unity ShaderLab] Shader知识要点(持续更新)

Shader知识要点

  • SV_POSITION与POSITION

    SV 是 System Value的意思

    POSITION 顶点的坐标

    SV_POSITION 是默认固定的系统值,不得改变

  • SV_Target与Color

    COLOR 顶点颜色

    SV_TARGET 是系统值,表示该函数返回的是用于下一个阶段OutPut Merger的颜色值,这里只简单的做了颜色值得传递。

  • Billboard

    顶点矩阵转换
    mul(UNITY_MATRIX_P,mul(UNITY_MATRIX_MV,float4(0,0,0,1)) + float4(IN.vertex.x,IN.vertex.y,0,0));

  • ZWRITE && ZTEST

    ZWRITE表示是否将深度写入GBuffer中

    • ZWRITE ON 表示写入
    • ZWRITE OFF 表示不写入

    ZTEST表示是否将颜色写入GBUFFER中

    ZTEST将要渲染物体的深度与ZWRITE中写入的深度进行比较,符合要求则渲染,不符合则不渲染

    • Less
    • Greater
    • LEqual
    • GEqual
    • Equal
    • NotEqual
    • Alway
  • Alpha Blend

    混合公式:

    float4 result = SrcFactor * fragment_output + DstFactor * pixel_color;

    fragment_output 是指片段着色器输出的颜色值

    pixel_color 是指颜色缓存中已经存在的颜色值

    Blend One Zero One代表SrcFactor等于一,DstFactor等于零
    相当于 Blend float4(1.0) * fragment_color + float4(0.0) * pixel_color,
    因此只会输出当前片段着色器的颜色值

    等多代号

    选项代号 与之等价的代码
    One float4(1.0)
    Zero float4(0.0)
    SrcColor fragment_output
    SrcAlpha float4(fragment_output.a)
    DstColor pixel_color
    DstAlpha float4(pixel_color.a)
    OneMinusSrcColor float4(1.0) - fragment_output
    OneMinusSrcAlpha float4(1.0 - fragment_output.a)
    OneMinusDstColor float4(1.0) - pixel_color
    OneMinusDstAlpha float4(1.0 - pixel_color.a)
  • Time && _SinTime && _CosTime

    _Time && _SinTime && _CosTime float4类型,xyzw分别代表不同的值

    字段 类型 描述与分量取值
    _Time float4 Time (t/20, t, t2, t3), use to animate things inside the shaders.
    _SinTime float4 Sine of time: (t/8, t/4, t/2, t).
    _CosTime float4 Cosine of time: (t/8, t/4, t/2, t).

你可能感兴趣的:(shader,unity3d)