Unity Shader

ShderLib

ShaderObject

Shader "Examples/ShaderSyntax"
{
    CustomEditor = "ExampleCustomEditor"
    // 在Unity属性窗口显示的对象(Texture2D等)
    // 也可用于后续的渲染流程使用
    Properties
    {
        // Material property declarations go here
    }
    // 为不同的硬件定义不同的GPU设置和渲染程序
    SubShader
    {
        LOD 100 //定义渲染级别, 越小优先级越高
        Tags {}   
        Pass
        {
            // 写渲染脚本, 支持HLSL/CG等
           // The code that defines the Pass goes here
        }
    }

    Fallback "ExampleFallbackShader"
}

在Pass中使用脚本

  1. 通过 CGPROGRAM ..ENDCG定义CG代码块.
  2. 通过 HLSLPROGRAM..ENDHLSL定义HLSL代码块.
  3. 更多参考: Shaderlab Code Block
Pass
{
    // #pragma为预处理命令
    #pragma target 3.0
    #pragma exclude_renderers vulkan

    // 定义定点着色器函数vert
    #pragma vertex vert

    //定义fragment着色器函数为frag
    #pragma fragment frag
    // 参考: Shaderlab HLSl 预处理命令

    // 一个入口函数示例
    v2f vert (
    float4 vertex : POSITION, // vertex position input
    float2 uv : TEXCOORD0 // first texture coordinate input
    )
    {
        v2f o;
        o.pos = UnityObjectToClipPos(vertex);
        o.uv = uv;
        return o;
    }

    fixed4 frag (v2f i) : SV_Target
    {
        return fixed4(i.uv, 0, 0);
    }
}