RO_Effect_Vertex_03.shader 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. Shader "RO/RO_Effect_Vertex_03"
  2. {
  3. Properties
  4. {
  5. _MainTex("MainTex", 2D) = "white" {}
  6. _KuanDu("KuanDu", Float) = 0.1
  7. _GaoDU("GaoDU", Float) = 0
  8. _XuanZhuanFuDu("XuanZhuanFuDu", Float) = 0
  9. _ZhengDongPingLv("ZhengDongPingLv", Float) = 0
  10. _ZhengDongFuDu("ZhengDongFuDu", Float) = 0
  11. _kz("kz", Range( 0 , 1)) = 0
  12. [HideInInspector] _texcoord( "", 2D ) = "white" {}
  13. [HideInInspector] __dirty( "", Int ) = 1
  14. }
  15. SubShader
  16. {
  17. Tags{ "RenderType" = "Opaque" "Queue" = "Geometry+0" }
  18. Cull Back
  19. CGPROGRAM
  20. #include "UnityShaderVariables.cginc"
  21. #pragma target 4.6
  22. #pragma surface surf Standard keepalpha addshadow fullforwardshadows noshadow vertex:vertexDataFunc
  23. struct Input
  24. {
  25. float2 uv_texcoord;
  26. };
  27. uniform float _kz;
  28. uniform float _KuanDu;
  29. uniform float _GaoDU;
  30. uniform float _ZhengDongPingLv;
  31. uniform float _ZhengDongFuDu;
  32. uniform float _XuanZhuanFuDu;
  33. uniform sampler2D _MainTex;
  34. uniform float4 _MainTex_ST;
  35. float3 RotateAroundAxis( float3 center, float3 original, float3 u, float angle )
  36. {
  37. original -= center;
  38. float C = cos( angle );
  39. float S = sin( angle );
  40. float t = 1 - C;
  41. float m00 = t * u.x * u.x + C;
  42. float m01 = t * u.x * u.y - S * u.z;
  43. float m02 = t * u.x * u.z + S * u.y;
  44. float m10 = t * u.x * u.y + S * u.z;
  45. float m11 = t * u.y * u.y + C;
  46. float m12 = t * u.y * u.z - S * u.x;
  47. float m20 = t * u.x * u.z - S * u.y;
  48. float m21 = t * u.y * u.z + S * u.x;
  49. float m22 = t * u.z * u.z + C;
  50. float3x3 finalMatrix = float3x3( m00, m01, m02, m10, m11, m12, m20, m21, m22 );
  51. return mul( finalMatrix, original ) + center;
  52. }
  53. void vertexDataFunc( inout appdata_full v, out Input o )
  54. {
  55. UNITY_INITIALIZE_OUTPUT( Input, o );
  56. float3 appendResult37 = (float3(( ( 1.0 - v.color.r ) - 0.5 ) , ( v.color.g - 0.5 ) , ( v.color.b - 0.5 )));
  57. float temp_output_73_0 = distance( appendResult37 , float3( 0,0,0 ) );
  58. float temp_output_244_0 = ( step( temp_output_73_0 , _kz ) * step( ( 1.0 - temp_output_73_0 ) , ( 1.0 - saturate( ( _kz - _KuanDu ) ) ) ) );
  59. float temp_output_238_0 = sin( ( _kz * 10.0 ) );
  60. float mulTime232 = _Time.y * _ZhengDongPingLv;
  61. float3 appendResult142 = (float3(0.0 , 0.0 , ( temp_output_244_0 * ( ( temp_output_244_0 * abs( temp_output_238_0 ) * _GaoDU ) + ( sin( mulTime232 ) * _ZhengDongFuDu ) ) )));
  62. float3 ase_vertex3Pos = v.vertex.xyz;
  63. float3 rotatedValue150 = RotateAroundAxis( appendResult37, ase_vertex3Pos, normalize( appendResult37 ), ( ( _XuanZhuanFuDu * temp_output_73_0 ) * UNITY_PI ) );
  64. v.vertex.xyz += ( appendResult142 + ( rotatedValue150 - ase_vertex3Pos ) );
  65. }
  66. void surf( Input i , inout SurfaceOutputStandard o )
  67. {
  68. float4 color3 = IsGammaSpace() ? float4(1,1,1,1) : float4(1,1,1,1);
  69. float2 uv_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw;
  70. o.Albedo = ( color3 * tex2D( _MainTex, uv_MainTex ) ).rgb;
  71. o.Alpha = 1;
  72. }
  73. ENDCG
  74. }
  75. //FallBack "Diffuse"
  76. }