顶点颜色交融效果

Shader "Unlit/factoryhot"

{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
// _PointTex ("Texture", 2D) = "white" {}
_FromColor ("FromColor", Color) = (0, 1, 0, 1)
_ToColor ("ToColor", Color) = (1, 0, 0, 1)
_Distance ("Distance", Float) = 1.0//颜色距离
_Sensitive ("Sensitive", Float) = 1.0//距离调整
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100

Pass
{
CGPROGRAM
// Upgrade NOTE: excluded shader from DX11, Xbox360, OpenGL ES 2.0 because it uses unsized arrays

#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog

#include "UnityCG.cginc"

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

struct v2f
{
float2 uv : TEXCOORD0;
float3 worldpos : TEXCOORD1;
// UNITY_FOG_COORDS(2)
float4 vertex : SV_POSITION;

};

sampler2D _MainTex;
float4 _MainTex_ST;
fixed4 _FromColor;
fixed4 _ToColor;
fixed3 Value1;//顶点1
fixed3 Value2;//顶点2
fixed3 Value3;//顶点3

float _Distance;
float _Sensitive;
//sampler2D _PointTex;
v2f vert (appdata v)
{
v2f o;
o.worldpos= mul(_Object2World, v.vertex);
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
//UNITY_TRANSFER_FOG(o,o.vertex);

return o;
}

fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
//col*=_FromColor;
float s1=distance(i.worldpos,Value1);//abs(dot((i.worldpos-Value1),(i.worldpos-Value1)));//dis的平方
float s2=distance(i.worldpos,Value2);//,(i.worldpos-Value2)));
float s3=distance(i.worldpos,Value3);//abs(dot((i.worldpos-Value3),(i.worldpos-Value3)));

// fixed4 c1=saturate(lerp(_ToColor,_FromColor,_Sensitive*s1));
// fixed4 c2=saturate(lerp(_ToColor,_FromColor,_Sensitive*s2));

fixed4 c=float4(0,1,0,0);
float t=0;
t+=pow(saturate(1-_Sensitive*s1/_Distance),2);//saturate(lerp(c1,c2,_Sensitive*s1));;
t+=pow(saturate(1-_Sensitive*s2/_Distance),2);//saturate(lerp(c2,c1,_Sensitive*s2));//c2;
t+=pow(saturate(1-_Sensitive*s3/_Distance),2);//pow是进行对强度进行曲线化 防止颜色线性曲折


return lerp(_FromColor*col,_ToColor*col,saturate(t));
}
ENDCG
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值