FX_Additive2.shader 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
  2. // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
  3. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  4. Shader "RO_X/FX_2/Additive" {
  5. Properties {
  6. _MainTex ("Base", 2D) = "white" {}
  7. _NoiseTex ("Noise", 2D) = "white" {}
  8. _TintColor ("TintColor", Color) = (1.0, 1.0, 1.0, 1.0)
  9. _UOffsetSpeed ("XOffsetSpeed", Float) = 0
  10. _VOffsetSpeed ("YOffsetSpeed", Float) = 0
  11. _UVRotateSpeed ("UVRotateSpeed", Float) = 0
  12. _NUOffsetSpeed ("NXOffsetSpeed", Float) = 0
  13. _NVOffsetSpeed ("NYOffsetSpeed", Float) = 0
  14. _NUVRotateSpeed ("NUVRotateSpeed", Float) = 0
  15. _MainIntensity("MainIntensity", Float) = 1
  16. _RootPos("RootPos",Vector) = (0,0,0,1)
  17. [MaterialToggle] _isMirror("isMirror", Float) = 0
  18. _Normal("Normal",Vector) = (0,0,0,1)
  19. [Enum(UnityEngine.Rendering.CullMode)] _CullMode("Cull Mode", float) = 0
  20. }
  21. CGINCLUDE
  22. #include "UnityCG.cginc"
  23. sampler2D _MainTex;
  24. sampler2D _NoiseTex;
  25. float4 _NoiseTex_ST;
  26. fixed4 _TintColor;
  27. float _UOffsetSpeed;
  28. float _VOffsetSpeed;
  29. float _UVRotateSpeed;
  30. float _NUOffsetSpeed;
  31. float _NVOffsetSpeed;
  32. float _NUVRotateSpeed;
  33. float _MainIntensity;
  34. half4 _MainTex_ST;
  35. float4 _RootPos;
  36. float4 _Normal;
  37. float _isMirror;
  38. struct v2f {
  39. half4 pos : SV_POSITION;
  40. half2 uv : TEXCOORD0;
  41. half2 nuv : TEXCOORD1;
  42. float4 color : COLOR;
  43. };
  44. v2f vert(appdata_full v) {
  45. v2f o;
  46. if (_isMirror > 0)
  47. {
  48. float4 worldPos = mul(unity_ObjectToWorld, v.vertex);
  49. float f = dot(_Normal.xyz, (_RootPos - worldPos).xyz);
  50. if (f < 0)
  51. {
  52. _Normal = -_Normal;
  53. }
  54. _Normal.xyz = _Normal.xyz * dot(_Normal.xyz, (_RootPos - worldPos).xyz);
  55. worldPos.xyz = worldPos.xyz + 2 * _Normal.xyz;
  56. v.vertex = mul(unity_WorldToObject, worldPos);
  57. }
  58. o.pos = UnityObjectToClipPos (v.vertex);
  59. o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
  60. o.nuv.xy = TRANSFORM_TEX(v.texcoord, _NoiseTex);
  61. float2 finaluv = o.uv.xy - float2(0.5, 0.5);
  62. float rotation = 3.14159 * 2 * frac(_Time.z * _UVRotateSpeed);
  63. finaluv = float2(finaluv.x * cos(rotation) - finaluv.y * sin(rotation), finaluv.x * sin(rotation) + finaluv.y * cos(rotation) );
  64. finaluv += float2(0.5, 0.5);
  65. finaluv.x += frac(_Time.z * _UOffsetSpeed);
  66. finaluv.y += frac(_Time.z * _VOffsetSpeed);
  67. o.uv.xy = finaluv;
  68. finaluv = o.nuv.xy - float2(0.5, 0.5);
  69. rotation = 3.14159 * 2 * frac(_Time.z * _NUVRotateSpeed);
  70. finaluv = float2(finaluv.x * cos(rotation) - finaluv.y * sin(rotation), finaluv.x * sin(rotation) + finaluv.y * cos(rotation) );
  71. finaluv += float2(0.5, 0.5);
  72. finaluv.x += frac(_Time.z * _NUOffsetSpeed);
  73. finaluv.y += frac(_Time.z * _NVOffsetSpeed);
  74. o.nuv.xy = finaluv;
  75. o.color = v.color;
  76. return o;
  77. }
  78. fixed4 frag( v2f i ) : COLOR {
  79. fixed4 ocolor = tex2D (_MainTex, i.uv.xy )* _TintColor;
  80. fixed4 ncolor = tex2D (_NoiseTex, i.nuv.xy );
  81. ocolor.rgb = ocolor.rgb * ncolor.rgb * _MainIntensity;
  82. ocolor.a *= ncolor.a;
  83. //ocolor = (ocolor) * _TintColor;
  84. ocolor *= i.color;
  85. return ocolor;
  86. }
  87. ENDCG
  88. SubShader {
  89. Tags { "RenderType" = "Transparent" "Reflection" = "RenderReflectionTransparentAdd" "Queue" = "Transparent"}
  90. Cull[_CullMode]
  91. Lighting Off
  92. ZWrite Off
  93. Fog { Mode Off }
  94. Blend SrcAlpha One
  95. Pass {
  96. CGPROGRAM
  97. #pragma vertex vert
  98. #pragma fragment frag
  99. #pragma fragmentoption ARB_precision_hint_fastest
  100. ENDCG
  101. }
  102. }
  103. FallBack Off
  104. }