2017-04-22 69 views
0

我正在學習如何在Unity中製作着色器,並且有關於在着色器上應用着色器的問題。如何使用Unity的着色器繪製外部精靈界限?

我做了哪些修改精靈創建變形效果的着色器:

cat with distortion effect

但是,正如你可以在上面鏈接的圖片中看到,我的精靈上切割精靈的邊界。

有什麼辦法可以避免這種切割並畫出缺失的部分?

我的着色器:

Shader "Shader101/testShader" 
{ 
    Properties 
    { 
     _MainTex("Texture", 2D) = "white" {} 
     _DisplaceTex("Displacement Texture", 2D) = "white" {} 
     _Power("Power", Range(-0.4, 0.4)) = 0 
    } 

    SubShader 
    { 
     Tags 
     { 
      "Queue" = "Transparent" 
     } 

     Pass 
     { 
      Blend SrcAlpha OneMinusSrcAlpha 

      CGPROGRAM 
      #pragma vertex vert 
      #pragma fragment frag 

      #include "UnityCG.cginc" 

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

      struct v2f 
      { 
       float4 vertex : SV_POSITION; 
       float2 uv : TEXCOORD0; 
      }; 

      v2f vert (appdata v) 
      { 
       v2f o; 
       o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); 
       o.uv = v.uv; 
       return o; 
      } 

      sampler2D _MainTex; 
      sampler2D _DisplaceTex; 
      float _Power; 

      fixed4 frag (v2f i) : SV_Target 
      { 
       float2 distuv = float2(0, i.uv.y + _Time.x * 2); 

       float2 wave = tex2D(_DisplaceTex, distuv * 5 ).xy; 
       wave = ((wave * 2) - 1) * _Power - 0.25; 

       float4 color = tex2D(_MainTex, i.uv + float2(wave.y, 0)); 
       return color; 
      } 
      ENDCG 
     } 
    } 
} 

對不起,我的英文不好:|

謝謝

回答

0

看看你的場景視圖上有陰影線框模式。

在這裏您應該看到您的着色器不會更改頂點位置,但只會更改片段着色器中呈現的像素顏色。因此它不能在網格外面繪製。

解決這個問題的最簡單方法是修改你的貓周圍更透明區域的精靈紋理。 (在Photoshop>圖像>畫布尺寸...)

+0

感謝您的回答。 但是有沒有辦法在着色器周圍添加我的精靈的偏移量? – Mulokun