Unity Shader 入门

1.Shader 格式
Shder “custom/Name” //shader 的路径和名字
{
Properties//属性
{
_Color{"Mian Color",Color }= (1,0.5,0.5,1)//参数
}
subshader{
//渲染通道
}
}

//顶点片段着色器
Shader "Custom/Vert frag" {//shader 路径名字,
Properties{
/*
Properties { Property[Property …] }
定义属性块,其中可包含多个属性,其定义如下:

name(“display name”, Range(min, max)) = number
定义浮点数属性,在检视器中可通过一个标注最大最小值的滑条来修改。

name(“display name”, Color) = (number,number,number,number)
定义颜色属性

name(“display name”, 2D) = “name” {options }
定义2D纹理属性

name(“display name”, Rect) = “name”{ options }
定义长方形(非2次方)纹理属性

name(“display name”, Cube) = “name”{ options }
定义立方贴图纹理属性

name(“display name”, Float) = number
定义浮点数属性

name(“display name”, Vector) = (number,number,number,number)
定义一个四元素的容器(相当于Vector4)属性
*/
_MainTex("Texture", 2D) = "white" { } //属性名称
}
SubShader
{
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"

        sampler2D _MainTex;
        float4 _MainTex_ST;

        //v2f为vers的输出也是frag的输入
        struct v2f {
            float4  pos : SV_POSITION;//贴图位置
            float2  uv : TEXCOORD0;//贴图坐标
        };


        v2f vert(appdata_base v)
        {
            v2f o;
            o.pos = UnityObjectToClipPos(v.vertex); //MVP矩阵变换,将裁剪空间坐标转换为相对屏幕位置的UV坐标
            o.uv = TRANSFORM_TEX(v.texcoord,_MainTex); //TRANSFORM_TEX的作用是用顶点的UV v.texcoord和材质球的采样图片_MainTex做运算,确保顶点材质球里的缩放和偏移是正确的。
            return o;
        }
        float4 frag(v2f i) : COLOR
        {
            float4 texCol = tex2D(_MainTex,i.uv);
            float4 outp = texCol;
            return outp;
        }
        ENDCG
    }
}

}

你可能感兴趣的:(Unity Shader 入门)