Files
Main/Assets/GameAssets/RawResources/shader/Ares/Gonbest/Legacy/BodyHelper.shader
2025-01-25 04:38:09 +08:00

558 lines
16 KiB
Plaintext

//这个Shader是用来为了为其他Shader提供一些特殊的Pass
Shader "Gonbest/Legacy/BodyHelper"
{
Properties
{
_Color ("Main Color", Color) = (1, 1, 1, 1)
_ColorMultiplier("Color Multipler",Range(0,2)) = 1
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
_MainTex ("Base (RGB)", 2D) = "white" {}
_MaskTex ("Mask (R = flow mask)", 2D) = "white" {}
_FlowTex ("Flow (RGB)", 2D) = "black" {}
_FlowNoiseTex ("Flow Distort Noise Tex (RG)", 2D) = "white" {}
_FlowType ("Flow Type:(T<1,T<2,T<3,T>3)", Float) = 0
_FlowStrength("FlowStrength",Range(0,2)) = 1
_FlowSpeed ("Flow Speed", Float) = 1.0
_FlowTileCount("Flow Tile Count",Float) = 1
_FlowColor ("Flow Color1", Color) = (1, 1, 1, 1)
_FlowColor2("Flow Color2", Color) = (1, 1, 1, 1)
_FlowForceX ("Flow Strength X", range (0,1)) = 0.1
_FlowForceY ("Flow Strength Y", range (0,1)) = 0.1
_FlowUseUV2 ("FlowUseUV2", Float) = 0
_FlashTex("_FlashTex",2D) = "black"{}
_FlashSpeed("FlashSpeed",Float) = 1
_FlashColor("FlashColor", Color) = (1, 1, 1, 1)
_MipmapLevel ("Mipmap Level", float) = 0.5
_EnvCube("_EnvCube", Cube) = "black"{}
_EnvCubeMixer("_EnvCubeMixer",float) = 1
_GrayFactor("GrayFactor",Range(0,1)) = 0
}
CGINCLUDE
#include "../Include/Base/CommonCG.cginc"
#include "../Include/Base/MathCG.cginc"
#include "../Include/Utility/WidgetUtilsCG.cginc"
#include "../Include/Utility/FlowUtilsCG.cginc"
#include "../Include/Utility/FogUtilsCG.cginc"
uniform sampler2D _MainTex;
uniform half4 _MainTex_ST;
uniform sampler2D _MaskTex;
struct v2f_base
{
float4 pos : SV_POSITION;
half4 uv : TEXCOORD0;
GONBEST_FOG_COORDS(1)
GONBEST_MATCAP_COORDS(2)
GONBEST_CUBE_COORDS(3)
};
v2f_base vert_base(appdata_full v)
{
v2f_base o =(v2f_base)0;
float4 wpos = mul(unity_ObjectToWorld,v.vertex);
float3 wnormal = mul(v.normal.xyz,(float3x3)unity_WorldToObject);
o.pos = mul(UNITY_MATRIX_VP,wpos);
o.uv.xy = TRANSFORM_TEX( v.texcoord, _MainTex );
o.uv.zw = GONBEST_CALC_FLOW_UV(v, GONBEST_USE_FLOW_UV(v.texcoord,v.texcoord1));
GONBEST_TRANSFER_MATCAP(v,o);
//获取雾的采样点
GONBEST_TRANSFER_FOG(o, o.pos, wpos);
GONBEST_TRANSFER_CUBE(o, wnormal, wpos)
return o;
}
fixed4 frag_base(v2f_base i) :COLOR
{
fixed4 color = GONBEST_TEX_SAMPLE(_MainTex,i.uv.xy);
fixed4 maskColor = tex2D(_MaskTex,i.uv.xy);
//颜色闪烁
GONBEST_APPLY_FLASH(color, maskColor.g, i.uv.xy);
GONBEST_APPLY_FLOW(i.uv.zw,color,maskColor.r);
GONBEST_APPLY_COLOR_MULTIPLIER(color);
//应用AlphaTest
GONBEST_APPLY_ALPHATEST(color)
GONBEST_APPLY_MATCAP(i,color)
GONBEST_CUBE_APPLY(i, color)
GONBEST_APPLY_FOG(i, color);
GONBEST_APPLY_GRAY(color)
#if defined(_GONBEST_SPEC_ALPHA_ON)
color.a = 0;
#endif
return color;
}
ENDCG
SubShader
{
ZTest LEqual
Lighting Off
ZWrite On
Pass
{//一个最基本的通用型Pass,非透明
Name "COMMON"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明使用镂空
Name "COMMON&ALPHATEST"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEST_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明使用镂空
Name "COMMON&ALPHATEST&ALPHATEX"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_ALPHA_TEST_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass
Name "COMMON&BLEND"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
//#pragma multi_compile_fog
ENDCG
}
Pass
{//一个最基本的通用型Pass
Name "COMMON&BLEND&ALPHATEX"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
//#pragma multi_compile_fog
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明
Name "COMMON&FLOW"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明
Name "COMMON&FLOW&ALPHATEX"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明使用镂空
Name "COMMON&ALPHATEST&FLOW"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEST_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,透明
Name "COMMON&BLEND&FLOW"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
//#pragma multi_compile_fog
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明
Name "COMMON&FLUX"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_FLUX_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明
Name "COMMON&FLUX&ALPHATEX"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_FLUX_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明使用镂空
Name "COMMON&ALPHATEST&FLUX"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEST_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_FLUX_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明使用镂空
Name "COMMON&ALPHATEST&FLUX&ALPHATEX"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_ALPHA_TEST_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_FLUX_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,透明
Name "COMMON&BLEND&FLUX"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_FLUX_ON
//#pragma multi_compile_fog
ENDCG
}
Pass
{//一个最基本的通用型Pass,透明
Name "COMMON&BLEND&FLUX&ALPHATEX"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_FLUX_ON
//#pragma multi_compile_fog
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明
Name "COMMON&BLINK"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_BLINK_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明使用镂空
Name "COMMON&ALPHATEST&BLINK"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
#pragma multi_compile _GONBEST_ALPHA_TEST_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_BLINK_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,透明
Name "COMMON&BLEND&BLINK"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_BLINK_ON
//#pragma multi_compile_fog
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明
Name "COMMON&DISTORT"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_DISTORT
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明
Name "COMMON&DISTORT&ALPHATEX"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEX_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_DISTORT
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明使用镂空
Name "COMMON&ALPHATEST&DISTORT"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ALPHA_TEST_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_DISTORT
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,透明
Name "COMMON&BLEND&DISTORT"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ENV_MIP_LEVEL_METALIC
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
#pragma multi_compile _GONBEST_FLOW_DISTORT
//#pragma multi_compile_fog
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明-使用Matcap图片
Name "COMMON&MATCAP"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_MATCAP_ON
#pragma multi_compile _GONBEST_MATCAP_MIX_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明-使用Matcap图片
Name "COMMON&CUBE"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ENV_CUBE_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明-使用Matcap图片
Name "COMMON&ALPHATEST&CUBE"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ENV_CUBE_ON
#pragma multi_compile _GONBEST_ALPHA_TEST_ON
//#pragma multi_compile_fog
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明-使用Matcap图片
Name "COMMON&BLEND&CUBE"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_ENV_CUBE_ON
//#pragma multi_compile_fog
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明-使用Matcap图片
Name "COMMON&BLEND&GRAY"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Back
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_GRAY_ON
ENDCG
}
Pass
{//一个最基本的通用型Pass,非透明
Name "COMMON&FLASH"
Cull Back
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
#pragma multi_compile _GONBEST_FLASH_ON
#pragma multi_compile _GONBEST_FLASH_TEX_ON
#pragma multi_compile _GONBEST_SPEC_ALPHA_ON
ENDCG
}
/****************** DoubleFace ********************/
Pass
{//一个最基本的通用型Pass,透明
Name "COMMON&BLEND&FLOW&BACK"
Blend SrcAlpha OneMinusSrcAlpha,Zero OneMinusSrcAlpha
Cull Front
ZWrite Off
CGPROGRAM
#pragma vertex vert_base
#pragma fragment frag_base
//#pragma multi_compile _GONBEST_COLOR_MULTIPLIER_ON
#pragma multi_compile _GONBEST_FLOW_ON _GONBEST_FLOW_OFF
//#pragma multi_compile_fog
ENDCG
}
}
}