Ich lerne, wie man Shader in Unity macht und ich habe eine Frage zu Shadern, die auf Sprites angewendet werden.Wie zeichne ich Außensprites-Grenzen mit Unity-Shadern?
Ich habe einen Shader, die einen Sprit eine Verzerrung Effekt zu erzeugen modifiziert:
Aber, wie man auf dem Bild oben verlinkten sehen kann, mein Sprit auf den Grenzen des Sprites geschnitten wird.
Gibt es eine Möglichkeit, diesen Schnitt zu vermeiden und das fehlende Teil zu zeichnen?
Mein Shader:
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
}
}
}
Sorry für mein schlechtes Englisch: |
Danke
Vielen Dank für Ihre Antwort. Aber gibt es eine Möglichkeit, einen Offset um mein Sprite mit Shader hinzuzufügen? – Mulokun