Files
Main/Assets/GameAssets/RawResources/shader/Ares/Gonbest/Legacy/ParticleHelper.shader

592 lines
17 KiB
Plaintext
Raw Normal View History

2025-01-25 04:38:09 +08:00
Shader "Gonbest/Legacy/ParticleHelper"
{
Properties
{
_Color ("Main Color", Color) = (1, 1, 1, 1)
_ColorMultiplier("Color Multipler",range(0,2)) = 1
_MainTex("Base (RGB)", 2D) = "white" {}
_ScrollSpeed ("scroll(x,y),a(z) ", Vector) = (2,2,1,-1)
_MaskTex("MaskTex (RGB)", 2D) = "white" {}
_DissolveTex("DissolveTex",2D) = "black"{}
_DissolveSoft("DissolveSoft",Range(0,1)) = 0
_Alpha("Alpha",range(0,1)) = 1
_RimColor ("Rim Color", Color) = (0.5,0.5,0.5,0.5)
_RimPower ("Rim Power", Range(0.0,5.0)) = 2.5
_RimInnerColor ("RimInnerColor", Color) = (0.5,0.5,0.5,0.5)
_RimInnerPower("RimInnerPower", Range(0.0,5.0)) = 2.5
_AlphaPower("AlphaPower",Range(0.0,5.0)) = 1
_NoiseTex("Distort Texture ( R )",2D) = "white"{}
_TimeScale("Speed", range ( -1, 1 ) ) = 0
_DistortScaleX( "Strength X", range ( 0, 1 ) ) = 0.1
_DistortScaleY( "Strength Y", range ( 0, 1 ) ) = 0.1
_Cutoff("Cutoff",range(0,1)) = 1
_AlphaTestMaskTex("AlphaTestMaskTex (R)", 2D) = "white" {}
_AlphaTestColor ("AlphaTestColor", Color) = (1, 1, 1, 1)
_CtrlTexUseUV2("CtrlTexUseUV2",float) = 0
_UseCustomData("UseCustomData(custom1.w)",float) = 0
_UseClip("UseClip",float) = 0
_ClipRect("ClipRect",Vector)= (-50000,-50000,50000,50000)
}
CGINCLUDE
#include "../Include/Base/CommonCG.cginc"
#include "../Include/Base/MathCG.cginc"
#include "../Include/Utility/WidgetUtilsCG.cginc"
#include "../Include/Utility/FlowUtilsCG.cginc"
uniform sampler2D _MainTex;
uniform half4 _MainTex_ST;
uniform half _Alpha;
//控制图纹理使用第二套UV的属性
uniform half _CtrlTexUseUV2;
uniform half _UseCustomData;
struct v2f
{
float4 vertex : POSITION;
fixed4 color : COLOR;
half4 uv : TEXCOORD0;
float3 normal : TEXCOORD1;
float3 wpos : TEXCOORD2;
GONBEST_DISSOLVE_COORDS(3)
GONBEST_MASK_COORDS(4)
UNITY_VERTEX_INPUT_INSTANCE_ID
};
//顶点片段
v2f vert(appdata_full v)
{
UNITY_SETUP_INSTANCE_ID(v);
v2f o = (v2f) 0;
o.vertex = UnityObjectToClipPos(v.vertex);
o.color = v.color;
o.normal = mul(float4(v.normal.xyz,1),unity_WorldToObject).xyz;
o.wpos = mul(unity_ObjectToWorld,v.vertex).xyz;
o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
GONBEST_TRANSFER_DISSOLVE(v, o, _CtrlTexUseUV2, _UseCustomData);
GONBEST_TRANSFER_MASK(v,o);
GONBEST_TRANSFER_SCROLL_UV(v,o)
UNITY_TRANSFER_INSTANCE_ID(v, o);
return o;
}
//通用片段
fixed4 frag(v2f i) : COLOR
{
UNITY_SETUP_INSTANCE_ID(i);
fixed4 mainColor = GONBEST_TEX_SAMPLE(_MainTex, GONBEST_DISTORT_UV(i.uv.xy)) ;
GONBEST_APPLY_MASK(i,mainColor);
GONBEST_APPLY_COLOR_MULTIPLIER(mainColor)
mainColor.rgb *= i.color.rgb;
float a = i.color.a * _Alpha;
GONBEST_APPLY_DISSOLVE(a);
a *= GONBEST_APPLY_IN_CLID_RECT(i.wpos);
mainColor.a *= a;
mainColor.a = saturate(mainColor.a);
GONBEST_APPLY_ALPHATEST(mainColor);
return mainColor;
}
//技能的片段
fixed4 frag_skill(v2f i) : COLOR
{
UNITY_SETUP_INSTANCE_ID(i);
fixed4 mainColor = GONBEST_TEX_SAMPLE(_MainTex, GONBEST_DISTORT_UV(i.uv.xy)) ;
GONBEST_APPLY_SCROLL_UV(i,mainColor);
GONBEST_APPLY_MASK(i,mainColor);
GONBEST_APPLY_COLOR_MULTIPLIER(mainColor)
mainColor.rgb *= i.color.rgb;
float a = i.color.a * _Alpha;
GONBEST_APPLY_DISSOLVE(a);
a *= GONBEST_APPLY_IN_CLID_RECT(i.wpos);
mainColor.a *= a;
mainColor.rgb *= mainColor.a;
GONBEST_APPLY_ALPHATEST(mainColor);
return mainColor ;
}
//边缘颜色
uniform float4 _RimColor;
uniform float _RimPower;
//内部边缘颜色
uniform float4 _RimInnerColor;
uniform float _RimInnerPower;
//alpha的Power值
uniform float _AlphaPower;
fixed4 frag_rim(v2f i):COLOR
{
UNITY_SETUP_INSTANCE_ID(i);
fixed4 mainColor = GONBEST_TEX_SAMPLE(_MainTex, GONBEST_DISTORT_UV(i.uv.xy)) ;
float3 N = GBNormalizeSafe(i.normal);
float3 V = GBNormalizeSafe(_WorldSpaceCameraPos.xyz - i.wpos.xyz);
float NoV = dot(N,V);
//计算边缘颜色值
float rim = 1-NoV * NoV;
//处理内部颜色值
fixed4 color = i.color;//fixed4(1,1,1,1); //默认为白色
//处理内部颜色
GONBEST_APPLY_COLOR_MULTIPLIER(color);
//处理边缘颜色
color.rgb += pow(rim,_RimPower) * _RimColor.rgb * _Alpha ;
//处理alpha的值
color.a = pow(rim,_RimPower)*_Alpha;
color.a = saturate(color.a);
return color;
}
fixed4 frag_rim_multiply(v2f i):COLOR
{
UNITY_SETUP_INSTANCE_ID(i);
fixed4 mainColor = GONBEST_TEX_SAMPLE(_MainTex, GONBEST_DISTORT_UV(i.uv.xy)) ;
float3 N = GBNormalizeSafe(i.normal);
float3 V = GBNormalizeSafe(_WorldSpaceCameraPos.xyz - i.wpos.xyz);
float NoV = dot(N,V);
//计算边缘颜色值
float rim =1- NoV * NoV;
//处理内部颜色值
fixed4 color = mainColor * i.color;//fixed4(1,1,1,1); //默认为白色
//处理内部颜色
GONBEST_APPLY_COLOR_MULTIPLIER(color);
//处理边缘颜色
color.rgb = lerp(color.rgb, _RimInnerColor.rgb ,pow(rim,_RimInnerPower) );
//处理边缘颜色
color.rgb = lerp(color.rgb, _RimColor.rgb ,pow(rim,_RimPower));
//处理alpha的值
color.a = lerp(_AlphaPower, color.a, pow(rim,_RimPower));
float a = _Alpha;
GONBEST_APPLY_DISSOLVE(a);
color.a = lerp(a ,color.a, _Alpha);
color.a = saturate(color.a);
return color;
}
ENDCG
SubShader
{
ZWrite Off
Cull Off
Lighting Off
//ColorMask RGB
//-------------------Addtive---------------------------//
Pass
{ //用于作为覆盖物
Name "COMMON&ALPHATEX&ADD&OVERLAY"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
ZTest Always
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //用于作为覆盖物
Name "COMMON&ADD&OVERLAY"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
ZTest Always
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Addtive的Shader
Name "COMMON&ALPHATEX&ADD"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Addtive的Shader
Name "COMMON&ADD&MASK"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_MASK_ON
#pragma multi_compile _GONBEST_MASK_ST_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Addtive的Shader
Name "COMMON&ADD"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Addtive的Shader,溶解效果 ,这里是one+one
Name "COMMON&ADD&DISSOLVE"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
ZWrite Off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_DISSOLVE_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Addtive的Shader,扭曲效果
Name "COMMON&ADD&DISTORT"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_UV_DISTORT_ON
#pragma multi_compile _GONBEST_MASK_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Addtive的Shader,扭曲效果
Name "COMMON&ADD&ALPHATESTMASK"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEST_ON
#pragma multi_compile _GONBEST_ALPHA_TEST_MASK_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
//-------------------Blend---------------------------//
Pass
{ //用于作为覆盖物
Name "COMMON&ALPHATEX&BLEND&OVERLAY"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
ZTest Always
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //用于作为覆盖物
Name "COMMON&BLEND&OVERLAY"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
ZTest Always
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Blend的Shader
Name "COMMON&ALPHATEX&BLEND"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Addtive的Shader
Name "COMMON&ALPHATEX&BLEND&MASK"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_MASK_ON
#pragma multi_compile _GONBEST_MASK_ST_ON
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Addtive的Shader
Name "COMMON&BLEND&MASK"
Blend SrcAlpha One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_MASK_ON
#pragma multi_compile _GONBEST_MASK_ST_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Blend的Shader
Name "COMMON&BLEND"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Blend的Shader
Name "COMMON&BLEND&DISSOLVE"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_DISSOLVE_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Addtive的Shader,扭曲效果
Name "COMMON&BLEND&DISTORT"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_UV_DISTORT_ON
#pragma multi_compile _GONBEST_MASK_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
//-------------------Multiply---------------------------//
Pass
{ //Multiply的Shader
Name "COMMON&ALPHATEX&MULTIPLY"
Blend Zero SrcColor,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Multiply的Shader
Name "COMMON&MULTIPLY"
Blend Zero SrcColor,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //Multiply的Shader
Name "COMMON&MULTIPLY&DISSOLVE"
Blend Zero SrcColor,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_DISSOLVE_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
//-------------------Skill:在与场景混合时,颜色不会太爆(颜色互补)-------------//
Pass
{ //技能的特效Shader
Name "SKILL&MASK"
Blend OneMinusDstColor One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_skill
#pragma multi_compile _GONBEST_MASK_ON
#pragma multi_compile _GONBEST_MASK_ST_ON
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //技能的特效Shader
Name "SKILL&MASK&ALPHATEX"
Blend OneMinusDstColor One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_skill
#pragma multi_compile _GONBEST_MASK_ON
#pragma multi_compile _GONBEST_MASK_ST_ON
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //技能的特效Shader
Name "SKILL"
Blend OneMinusDstColor One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_skill
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //技能的特效Shader
Name "SKILL&ALPHATEX"
Blend OneMinusDstColor One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_skill
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //技能的特效Shader
Name "SKILL&DISSOLVE"
Blend OneMinusDstColor One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_skill
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_DISSOLVE_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //技能的特效Shader
Name "SKILL&DISTORT"
Blend OneMinusDstColor One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_skill
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_UV_DISTORT_ON
#pragma multi_compile _GONBEST_MASK_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{ //技能的特效Shader
Name "SKILL&DISTORT&SCROLLONE"
Blend OneMinusDstColor One,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_skill
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_UV_DISTORT_ON
#pragma multi_compile _GONBEST_MASK_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile _GONBEST_ONE_SCROLL_UV_ON
#pragma multi_compile_instancing
ENDCG
}
//-------------------Rim一个透明边缘光的特效---------------------//
Pass
{
Name "BLEND&RIM"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_rim
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_NORMAL_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile_instancing
ENDCG
}
Pass
{
Name "BLEND&RIM&MULTIPLY&DISSOLVE"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag_rim_multiply
#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_NORMAL_ON
#pragma multi_compile _GONBEST_2D_CLIP_RECT_ON
#pragma multi_compile _GONBEST_DISSOLVE_ON
#pragma multi_compile_instancing
ENDCG
}
}
}