RO_Effect_RJ_01.shader 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. Shader "RO/RO_Effect_RJ_01"
  2. {
  3. Properties
  4. {
  5. _ColorStr("ColorStr", Float) = 1
  6. _AlphaSTR("AlphaSTR", Float) = 1
  7. _MainTex("MainTex", 2D) = "white" {}
  8. [KeywordEnum(R,G,B,A)] _Keyword2("主贴图使用通道", Float) = 3
  9. _OpacityTex("MaskTex", 2D) = "white" {}
  10. _MaskStr("MaskStr", Range( 0 , 1.01)) = 1.01
  11. _UVspeed("UVspeed", Vector) = (0,0,0,0)
  12. [KeywordEnum(R,G,B,A)] _Keyword3("遮罩贴图使用通道", Float) = 0
  13. [Toggle(_KEYWORD0_ON)] _Keyword0("粒子颜色透明度是否影响贴图透明度", Float) = 0
  14. [Toggle(_KEYWORD1_ON)] _Keyword1("是否使用原图颜色", Float) = 1
  15. _Color0("Color 0", Color) = (1,1,1,1)
  16. _Color2("Color2", Color) = (1,1,1,0)
  17. _ColorMask("渐变颜色控制", Vector) = (0,1,0,1)
  18. [Enum(UnityEngine.Rendering.BlendMode)]_Src("Src", Float) = 5
  19. [Enum(UnityEngine.Rendering.BlendMode)]_Dst("Dst", Float) = 10
  20. [Enum(UnityEngine.Rendering.CullMode)]_CullMode("CullMode", Float) = 0
  21. [Enum(Off,0,On,1)]_ZWrite("ZWrite", Float) = 1
  22. [Enum(UnityEngine.Rendering.CompareFunction)]_ZTest("ZTest", Float) = 4
  23. _Float1("消散边缘软硬度", Range( 0 , 1)) = 0
  24. [HideInInspector] _texcoord( "", 2D ) = "white" {}
  25. [HideInInspector] __dirty( "", Int ) = 1
  26. }
  27. SubShader
  28. {
  29. Tags{ "RenderType" = "Custom" "Queue" = "Transparent+0" "IsEmissive" = "true" "PreviewType"="Plane" }
  30. Cull [_CullMode]
  31. ZWrite [_ZWrite]
  32. ZTest [_ZTest]
  33. Blend [_Src] [_Dst]
  34. CGPROGRAM
  35. #include "UnityShaderVariables.cginc"
  36. #pragma target 3.0
  37. #pragma shader_feature _KEYWORD1_ON
  38. #pragma shader_feature _KEYWORD2_R _KEYWORD2_G _KEYWORD2_B _KEYWORD2_A
  39. #pragma shader_feature _KEYWORD3_R _KEYWORD3_G _KEYWORD3_B _KEYWORD3_A
  40. #pragma shader_feature _KEYWORD0_ON
  41. #pragma surface surf Unlit keepalpha noshadow noambient novertexlights nolightmap nodynlightmap nodirlightmap nofog nometa noforwardadd
  42. struct Input
  43. {
  44. float2 uv_texcoord;
  45. float4 vertexColor : COLOR;
  46. };
  47. uniform float _ZWrite;
  48. uniform float _ZTest;
  49. uniform float _CullMode;
  50. uniform float4 _Color2;
  51. uniform float4 _Color0;
  52. uniform sampler2D _MainTex;
  53. uniform float4 _UVspeed;
  54. uniform float4 _MainTex_ST;
  55. uniform sampler2D _OpacityTex;
  56. uniform float4 _OpacityTex_ST;
  57. uniform float _MaskStr;
  58. uniform float _Float1;
  59. uniform float4 _ColorMask;
  60. uniform float _Src;
  61. uniform float _Dst;
  62. uniform float _ColorStr;
  63. uniform float _AlphaSTR;
  64. inline half4 LightingUnlit( SurfaceOutput s, half3 lightDir, half atten )
  65. {
  66. return half4 ( 0, 0, 0, s.Alpha );
  67. }
  68. void surf( Input i , inout SurfaceOutput o )
  69. {
  70. float2 appendResult65 = (float2(_UVspeed.x , _UVspeed.y));
  71. float2 uv0_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw;
  72. float2 panner63 = ( 1.0 * _Time.y * appendResult65 + uv0_MainTex);
  73. float4 tex2DNode1 = tex2D( _MainTex, panner63 );
  74. #if defined(_KEYWORD2_R)
  75. float staticSwitch60 = tex2DNode1.r;
  76. #elif defined(_KEYWORD2_G)
  77. float staticSwitch60 = tex2DNode1.g;
  78. #elif defined(_KEYWORD2_B)
  79. float staticSwitch60 = tex2DNode1.b;
  80. #elif defined(_KEYWORD2_A)
  81. float staticSwitch60 = tex2DNode1.a;
  82. #else
  83. float staticSwitch60 = tex2DNode1.a;
  84. #endif
  85. float2 appendResult67 = (float2(_UVspeed.z , _UVspeed.w));
  86. float2 uv0_OpacityTex = i.uv_texcoord * _OpacityTex_ST.xy + _OpacityTex_ST.zw;
  87. float2 panner68 = ( 1.0 * _Time.y * appendResult67 + uv0_OpacityTex);
  88. float4 tex2DNode2 = tex2D( _OpacityTex, panner68 );
  89. #if defined(_KEYWORD3_R)
  90. float staticSwitch61 = tex2DNode2.r;
  91. #elif defined(_KEYWORD3_G)
  92. float staticSwitch61 = tex2DNode2.g;
  93. #elif defined(_KEYWORD3_B)
  94. float staticSwitch61 = tex2DNode2.b;
  95. #elif defined(_KEYWORD3_A)
  96. float staticSwitch61 = tex2DNode2.a;
  97. #else
  98. float staticSwitch61 = tex2DNode2.r;
  99. #endif
  100. float4 VertexColor69 = i.vertexColor;
  101. float temp_output_44_0 = ( 1.0 - ( _MaskStr * (VertexColor69).a ) );
  102. float clampResult117 = clamp( staticSwitch61 , temp_output_44_0 , 1.0 );
  103. float lerpResult114 = lerp( (0.0 + (clampResult117 - temp_output_44_0) * (1.0 - 0.0) / (1.0 - temp_output_44_0)) , step( temp_output_44_0 , staticSwitch61 ) , _Float1);
  104. float temp_output_3_0 = ( staticSwitch60 * lerpResult114 );
  105. float temp_output_82_0 = max( _ColorMask.x , _ColorMask.y );
  106. float clampResult79 = clamp( temp_output_3_0 , _ColorMask.x , temp_output_82_0 );
  107. float4 lerpResult40 = lerp( _Color2 , _Color0 , saturate( (_ColorMask.z + (clampResult79 - _ColorMask.x) * (_ColorMask.w - _ColorMask.z) / (temp_output_82_0 - _ColorMask.x)) ));
  108. #ifdef _KEYWORD1_ON
  109. float4 staticSwitch45 = float4( (tex2DNode1).rgb , 0.0 );
  110. #else
  111. float4 staticSwitch45 = lerpResult40;
  112. #endif
  113. float Src28 = _Src;
  114. float Dst29 = _Dst;
  115. #ifdef _KEYWORD0_ON
  116. float staticSwitch13 = (VertexColor69).a;
  117. #else
  118. float staticSwitch13 = 1.0;
  119. #endif
  120. o.Emission = ( staticSwitch45 * (( Src28 == Dst29 ) ? temp_output_3_0 : 1.0 ) * _ColorStr * float4( (VertexColor69).rgb , 0.0 ) * (( Src28 == Dst29 ) ? staticSwitch13 : 1.0 ) ).rgb;
  121. o.Alpha = saturate( ( temp_output_3_0 * _AlphaSTR * staticSwitch13 ) );
  122. }
  123. ENDCG
  124. }
  125. }