1. 程式人生 > >復雜紋理復制及紋理疊加效果

復雜紋理復制及紋理疊加效果

{} int unit blend 修飾 技術 cal 分享 data

三張貼圖通過改變主材質及修飾材質的UV重復次數,實現不同的效果。如下:

技術分享圖片

圖中的房子和圍墻只用了三張貼圖就實現了完全不同的建築,厲害吧~~~

shader如下:

Properties
    {
        _Color("Base Color", Color) = (1,1,1,1)
        _MainTex("Base(RGB)", 2D) = "white" {}
        _ColorU("ColorU", float) = 1.0 //主紋理X軸重復次數
        _ColorV("ColorV", float) = 1.0 //主紋理Y軸重復次數
        _DetailTex("
DetailTex", 2D) = "white" {} _DetailU("DetailU", float) = 1.0 //修飾紋理X軸重復次數 _DetailV("DetailV", float) = 1.0 //修飾紋理Y軸重復次數 } SubShader { tags{"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"} Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM
#pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float4 _Color; sampler2D _MainTex; float _ColorU; float _ColorV; sampler2D _DetailTex; float _DetailU; float _DetailV;
struct v2f { float4 pos:POSITION; float2 uv:TEXCOORD0; }; float4 _DetailTex_ST; v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord.xy; //o.uv = TRANSFORM_TEX(v.texcoord, _DetailTex);//簡單的UV重復,通過界面的Tiling屬性改變UV的重復次數,Offset改變UV位置。 return o; } half4 frag(v2f i):COLOR { half4 c = tex2D(_MainTex , i.uv * float2(_ColorU, _ColorV)) * _Color; half4 d = tex2D(_DetailTex, i.uv * float2(_DetailU, _DetailV)); return c * d; } ENDCG } }

復雜紋理復制及紋理疊加效果