unity实现单张纹理贴图的3种方法

来源:互联网 发布:mac口红畅销的颜色 编辑:程序博客网 时间:2024/05/16 15:26

 

无光照纹理贴图的3种写法,顶点着色器函数内方法与片段着色器内方法标号相对应

Shader "LT/UnlitTexture"
{
 Properties
 {
  _MainColor ("MainColor", COLOR) = (0.5,0.5,0.5,1.0)
  _MainTex("Main Texture",2D) = "while" {}
 }
 SubShader
 {
  Pass
  {
   CGPROGRAM
   #pragma vertex vert
   #pragma fragment frag
   #include "UnityCG.cginc"

   fixed4 _MainColor;
   sampler2D _MainTex;
   float4 _MainTex_ST;

   struct appdata
   {
    float4 vertex : POSITION;
    float2 uv : TEXCOORD0;
   };

   struct v2f
   {
    float2 uv : TEXCOORD0;
    float4 vertex : SV_POSITION;
   };
   
   v2f vert (appdata v)
   {
    v2f o;
    o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
    o.uv = v.uv;                                                                                   //方法1===============
//    o.uv = v.uv * _MainTex_ST.xy + _MainTex_ST.zw;                        //方法2 ==============
//    o.uv = TRANSFORM_TEX(v.uv,_MainTex);                                  //方法3================
    return o;
   }
   
   fixed4 frag (v2f i) : SV_Target
   {
    // sample the texture
//    fixed4 col =tex2D(_MainTex,i.uv)* _MainColor;                           //方法2 , 3===========================
    fixed4 col =tex2D(_MainTex,_MainTex_ST.xy * i.uv.xy + _MainTex_ST.zw) * _MainColor;  //方法1
    return col;
   }
   ENDCG
  }
 }
}

 

 

 

 

0 0
原创粉丝点击