Это шейдер для водорослей, мне нужно получить так, чтобы один конец был почти неподвижен, а другой качался.
Проблема: в настоящее время все качается.
Как я могу изменить это так, чтобы качался только один конец?
Shader "Custom/SwayingGrassHalloween"
{
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
[HideInInspector] _RendererColor ("RendererColor", Color) = (1,1,1,1)
[HideInInspector] _Flip ("Flip", Vector) = (1,1,1,1)
[PerRendererData] _AlphaTex ("External Alpha", 2D) = "white" {}
[PerRendererData] _EnableExternalAlpha ("Enable External Alpha", Float) = 0
_Speed ("MoveSpeed", Range(1,50)) = 25 // speed of the swaying
_WaveStrength ("WaveStrength", Range(-5, 5)) = 1 // strength of the swaying
_SwayX("Sway X", Range(-5, 5)) = 0.5 // how far the swaying goes
_SwayY("Sway Y", Range(-5, 5)) = 0.5 // how far the swaying goes
}
SubShader
{
Tags
{
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="Transparent"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
Cull Off
Lighting Off
ZWrite Off
Blend One OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#pragma multi_compile_instancing
#pragma multi_compile_local _ PIXELSNAP_ON
#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
#include "UnitySprites.cginc"
float _Speed;
float _SwayX;
float _SwayY;
float _YOffset;
float _WaveStrength;
v2f vert(appdata_t IN)
{
v2f OUT;
UNITY_SETUP_INSTANCE_ID (IN);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
OUT.vertex = UnityFlipSprite(IN.vertex, _Flip);
OUT.vertex = UnityObjectToClipPos(OUT.vertex);
OUT.texcoord = IN.texcoord;
OUT.color = IN.color * _Color * _RendererColor;
#ifdef PIXELSNAP_ON
OUT.vertex = UnityPixelSnap (OUT.vertex);
#endif
float sinOff = (IN.vertex.x + IN.vertex.y + IN.vertex.z) * _WaveStrength;
float t =-_Time * _Speed;
float fx = IN.texcoord.x;
float fy = IN.texcoord.x * IN.texcoord.y;
OUT.vertex.x += sin(t * 1.45f + sinOff) * fx * _SwayX;
OUT.vertex.y += sin(t * 1.45 + sinOff) * fy * _SwayY;
return OUT;
}
fixed4 frag(v2f IN) : SV_Target
{
fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
c.rgb *= c.a;
return c;
}
ENDCG
}
}
}