效果演示:
当前效果需要自己手动写一个shader,效果与unity版本无关,模型没有特别要求文章来源:https://www.toymoban.com/news/detail-506400.html
在unity创建一个SurfaceShader类型的shader,命名为CotrolGradient_3Color,双击进入vs进行编辑,shader内容如下:文章来源地址https://www.toymoban.com/news/detail-506400.html
Shader "Custom/CotrolGradient_3Color"
{
Properties
{
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
_ColorTop("Top Color", Color) = (1, 1, 1, 1)
_ColorMid("Mid Color", Color) = (1, 1, 1, 1)
_ColorBot("Bot Color", Color) = (1, 1, 1, 1)
_Middle("Middle", Range(0.001, 0.999)) = 1
_test("Test", Range(0.001, 0.999)) = 1
}
SubShader
{
Tags {"Queue" = "Background" "IgnoreProjector" = "True"}
LOD 100
ZWrite On
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
fixed4 _ColorTop;
fixed4 _ColorMid;
fixed4 _ColorBot;
float _Middle;
float _test;
struct v2f
{
float4 pos : SV_POSITION;
float4 texcoord : TEXCOORD0;
};
v2f vert(appdata_full v)
{
v2f o;
if (v.vertex.y > _test)
{
v.vertex.y = _test;
}
o.pos = UnityObjectToClipPos(v.vertex);
o.texcoord = v.texcoord;
return o;
}
fixed4 frag(v2f i) : COLOR
{
fixed4 c = lerp(_ColorBot, _ColorMid, i.texcoord.y / _Middle) * step(i.texcoord.y, _Middle);
c += lerp(_ColorMid, _ColorTop, (i.texcoord.y - _Middle) / (1 - _Middle)) * step(_Middle, i.texcoord.y);
c.a = 1;
return c;
}
ENDCG
}
}
}
到了这里,关于Unity使用着色器实现颜色渐变的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!