В последнее время я пытался испытать удачу на VFX. Я натолкнулся на эффект, который мне очень нравится, - шейдер прокрутки.
Я основывался на этом посте и смог связаться с его создателем, так что передайте ему привет, и он направил меня в правильном направлении для достижения желаемого эффекта.
Позже я понял, что у меня было несколько ошибок, и если кто-то может мне помочь, я буду очень признателен.
Эффект представляет собой простую прокрутку текстуры через определенный me sh, замаскированный с помощью альфа-текстуры.
Первая проблема: эффект не имеет цвета ... Он вращается, и альфа-маска фиксируется, но цвет остается не показывать.
Вторая проблема: я использую этот шейдер для завершения определенной c части эффекта, используя систему частиц. Я использовал опцию Color Over Lifetime, но она все равно активируется, как только начинается весь эффект. С опцией Start Delay это работает.
В некотором смысле проблема решена таким образом, хотя я хотел бы знать, как я мог это медленно проявляться как Color Over Lifetime.
Final вопрос, как скорее бонус.
Есть ли способ медленно заставить меня sh появляться вместе с эффектом шейдера снизу вверх?
Текущий код шейдера
Shader "Custom/ScrollingShader"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_AlphaMaskTex ("AlphaMask", 2D) = "white" {}
_ScrollSpd ("Scroll Speeds", vector) = (-5, -20, 0, 0)
[HDR] _Color ("Color", Color) = (1, 1, 1, 1)
}
SubShader
{
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
// No culling or depth
Cull back ZWrite Off ZTest Always Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float2 alphauv : TEXCOORD1;
float4 vertex : SV_POSITION;
};
float4 _MainTex_ST;
float4 _AlphaMaskTex_ST;
float4 _ScrollSpd;
v2f vert (appdata v)
{
/* v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex).xy + frac(_Time.y * float2(_ScrollSpd.x, _ScrollSpd.y));
return o; */
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex).xy + frac(_Time.y * float2(_ScrollSpd.x, _ScrollSpd.y));
o.alphauv = TRANSFORM_TEX(v.uv, _AlphaMaskTex).xy;
return o;
}
sampler2D _MainTex;
sampler2D _AlphaMaskTex;
float4 _Color;
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv);
fixed4 colA = tex2D(_AlphaMaskTex, i.alphauv);
col = tex2D(_MainTex, i.uv) * _Color;
col.a = tex2D(_AlphaMaskTex, i.uv).r;
col = tex2D(_MainTex, i.uv) * tex2D(_AlphaMaskTex, i.alphauv).r;
return col;
}
ENDCG
}
}
}
Me sh используется с нанесенным материалом:

Заранее спасибо, и если вы что-то не понимаете, пожалуйста, принесите его мне, чтобы я мог попытаться объяснить лучше.
Большое спасибо !!