AllIn1SpriteShader.shader 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986
  1. Shader "AllIn1SpriteShader/AllIn1SpriteShader"
  2. {
  3. Properties
  4. {
  5. [Header(_General Properties_)]
  6. _MainTex ("Main Texture", 2D) = "white" {} //0
  7. _Color("Main Color", Color) = (1,1,1,1) //1
  8. _Alpha("General Alpha", Range(0,1)) = 1 //2
  9. _GlowColor("Glow Color", Color) = (1,1,1,1) //3
  10. _Glow("Glow Intensity", Range(0,100)) = 10 //4
  11. [Space]
  12. [Space]
  13. [Toggle()] _GlowTexUsed("Glow Texture used?", float) = 0 //5
  14. [Header(Texture does not support Tiling)]
  15. _GlowTex("Glow Texture", 2D) = "white" {} //6
  16. _FadeTex("Fade Texture", 2D) = "white" {} //7
  17. _FadeAmount("Fade Amount", Range(-0.1,1)) = -0.1 //8
  18. _FadeBurnWidth("Fade Burn Width", Range(0,1)) = 0.025 //9
  19. _FadeBurnTransition("Fade Burn Smooth Transition", Range(0.01,0.5)) = 0.075 //10
  20. _FadeBurnColor("Fade Burn Color", Color) = (1,1,0,1) //11
  21. _FadeBurnTex("Fade Burn Texture", 2D) = "white" {} //12
  22. _FadeBurnGlow("Fade Burn Glow", Range(1,50)) = 2//13
  23. [Header(_Outline Basic Properties_)]
  24. _OutlineColor("Outline Base Color", Color) = (1,1,1,1) //14
  25. _OutlineAlpha("Outline Base Alpha", Range(0,1)) = 1 //15
  26. _OutlineGlow("Outline Base Glow", Range(1,100)) = 1.5 //16
  27. [Toggle()] _Outline8Directions("Outline Base High Resolution?", float) = 0 //17
  28. _OutlineWidth("Outline Base Width", Range(0,0.2)) = 0.004 //18
  29. [Header(_Outline Width_)]
  30. [Toggle()] _OutlineIsPixel("Outline Base is Pixel Perfect?", float) = 0 //19
  31. _OutlinePixelWidth("Outline Base Pixel Width", Int) = 1 //20
  32. [Space]
  33. [Header(_Outline Texture_)]
  34. [Toggle()] _OutlineTexToggle("Outline uses texture?", float) = 0 //21
  35. _OutlineTex("Outline Texture", 2D) = "white" {} //22
  36. _OutlineTexXSpeed("Outline Texture scroll speed X axis", Range(-50,50)) = 10 //23
  37. _OutlineTexYSpeed("Outline Texture scroll speed Y axis", Range(-50,50)) = 0 //24
  38. [Toggle()] _OutlineTexGrey("Outline Texture is Greyscaled?", float) = 0 //25
  39. [Space]
  40. [Header(_Outline Distortion_)]
  41. [Toggle()] _OutlineDistortToggle("Outline uses distortion?", float) = 0 //26
  42. _OutlineDistortTex("Outline Distortion Texture", 2D) = "white" {} //27
  43. _OutlineDistortAmount("Outline Distortion Amount", Range(0,2)) = 0.5 //28
  44. _OutlineDistortTexXSpeed("Outline Distortion scroll speed X axis", Range(-50,50)) = 5 //29
  45. _OutlineDistortTexYSpeed("Outline Distortion scroll speed Y axis", Range(-50,50)) = 5 //30
  46. _GradBlend("Gradient Blend", Range(0,1)) = 1 //31
  47. _GradTopLeftCol("Gradient Top Left Color", Color) = (1,0,0,1) //32
  48. _GradTopRightCol("Gradient Top Right Color", Color) = (1,0,0,1) //33
  49. _GradBotLeftCol("Gradient Bot Left Color", Color) = (0,0,1,1) //34
  50. _GradBotRightCol("Gradient Bot Right Color", Color) = (0,0,1,1) //35
  51. _ColorSwapTex("Color Swap Texture", 2D) = "black" {} //36
  52. [Header(You will need a mask texture (see Documentation))]
  53. _ColorSwapRed("Color Swap Red Channel", Color) = (1,1,1,1) //37
  54. _ColorSwapRedLuminosity("Color Swap Red luminosity", Range(-1,1)) = 0.5 //38
  55. _ColorSwapGreen("Color Swap Green Channel", Color) = (1,1,1,1) //39
  56. _ColorSwapGreenLuminosity("Color Swap Green luminosity", Range(-1,1)) = 0.5 //40
  57. _ColorSwapBlue("Color Swap Blue Channel", Color) = (1,1,1,1) //41
  58. _ColorSwapBlueLuminosity("Color Swap Blue luminosity", Range(-1,1)) = 0.5 //42
  59. _HsvShift("Hue Shift", Range(0, 360)) = 180 //43
  60. _HsvSaturation("Hue Shift Saturation", Range(0, 2)) = 1 //44
  61. _HsvBright("Hue Shift Bright", Range(0, 2)) = 1 //45
  62. _HitEffectColor("Hit Effect Color", Color) = (1,1,1,1) //46
  63. _HitEffectGlow("Hit Effect Glow Intensity", Range(1,100)) = 5 //47
  64. [Space]
  65. [Header(_Tip_ Animate the following property)]
  66. _HitEffectBlend("Hit Effect Blend", Range(0,1)) = 1 //48
  67. _NegativeAmount("Negative Amount", Range(0, 1)) = 1 //49
  68. [Header(Looks bad with distorition effects)]
  69. _PixelateSize("Pixelate size", Range(4,512)) = 32 //50
  70. [Header(Texture does not support Tiling)]
  71. _ColorRampTex("Color ramp Texture", 2D) = "white" {} //51
  72. _ColorRampLuminosity("Color ramp luminosity", Range(-1,1)) = 0 //52
  73. [Toggle()] _ColorRampOutline("Color ramp affects outline?", float) = 0 //53
  74. _GreyscaleLuminosity("Greyscale luminosity", Range(-1,1)) = 0 //54
  75. [Toggle()] _GreyscaleOutline("Greyscale affects outline?", float) = 0 //55
  76. _GreyscaleTintColor("Greyscale Tint Color", Color) = (1,1,1,1) //56
  77. _PosterizeNumColors("Posterize Number of Colors", Range(0,100)) = 8 //57
  78. _PosterizeGamma("Posterize Amount", Range(0.1,10)) = 0.75 //58
  79. [Toggle()] _PosterizeOutline("Posterize affects outline and glow?", float) = 0 //59
  80. [Header(This effect will not affect the outline)]
  81. _BlurIntensity("Blur Intensity", Range(0,100)) = 10 //60
  82. [Toggle()] _BlurHD("Blur is Low Res?", float) = 0 //61
  83. _MotionBlurAngle("Motion Blur Angle", Range(-1, 1)) = 0.1 //62
  84. _MotionBlurDist("Motion Blur Distance", Range(-3, 3)) = 1.25 //63
  85. [Header(This effect will not affect the outline)]
  86. _GhostColorBoost("Ghost Color Boost", Range(0,5)) = 1 //64
  87. [Header(Choose the ghost color with the Main Color Property)]
  88. _GhostTransparency("Ghost Transparency", Range(0,1)) = 0 //65
  89. [Header(This effect will place the inner outlines over the original sprite)]
  90. _InnerOutlineColor("Inner Outline Color", Color) = (1,0,0,1) //66
  91. _InnerOutlineThickness("Inner Outline Thickness", Range(0,3)) = 1 //67
  92. _InnerOutlineAlpha("Inner Outline Alpha", Range(0,1)) = 1 //68
  93. _InnerOutlineGlow("Inner Outline Glow", Range(1,250)) = 1 //69
  94. _AlphaCutoffValue("Alpha cutoff value", Range(0, 1)) = 0.25 //70
  95. [Toggle()] _OnlyOutline("Only render outline?", float) = 0 //71
  96. [Toggle()] _OnlyInnerOutline("Only render innerr outline?", float) = 0 //72
  97. _HologramStripesAmount("Hologram Stripes Amount", Range(0, 1)) = 0.2 //73
  98. _HologramUnmodAmount("Hologram Unchanged Amount", Range(0, 1)) = 0.4 //74
  99. _HologramStripesSpeed("Hologram Stripes Speed", Range(0, 20)) = 5 //75
  100. _HologramMinAlpha("Hologram Min Alpha", Range(0, 1)) = 0.0 //76
  101. _HologramMaxAlpha("Hologram Max Alpha", Range(0, 10)) = 1.0 //77
  102. _ChromAberrAmount("ChromAberr Amount", Range(0, 1)) = 1 //78
  103. _ChromAberrAlpha("ChromAberr Alpha", Range(0, 1)) = 0.4 //79
  104. _GlitchAmount("Glitch Amount", Range(0, 20)) = 3 //80
  105. _FlickerPercent("Flicker Percent", Range(0, 1)) = 0.05 //81
  106. _FlickerFreq("Flicker Frequency", Range(0, 5)) = 0.2 //82
  107. _FlickerAlpha("Flicker Alpha", Range(0, 1)) = 0 //83
  108. _ShadowX("Shadow X Axis", Range(-0.5, 0.5)) = 0.1 //84
  109. _ShadowY("Shadow Y Axis", Range(-0.5, 0.5)) = -0.05 //85
  110. _ShadowAlpha("Shadow Alpha", Range(0, 1)) = 0.5 //86
  111. _ShadowColor("Shadow Color", Color) = (0, 0, 0, 1) //87
  112. _HandDrawnAmount("Hand Drawn Amount", Range(2, 20)) = 10 //88
  113. _HandDrawnSpeed("Hand Drawn Speed", Range(1, 15)) = 5 //89
  114. _GrassSpeed("Grass Speed", Range(0,50)) = 2 //90
  115. _GrassWind("Grass Wind (bend amount)", Range(0,50)) = 20 //91
  116. [Space]
  117. [Toggle()] _GrassManualToggle("Grass is manually animated?", float) = 0 //92
  118. _GrassManualAnim("Grass Manual Anim", Range(-1,1)) = 1 //93
  119. _WaveAmount("Wave Amount", Range(0, 25)) = 7 //94
  120. _WaveSpeed("Wave Speed", Range(0, 25)) = 10 //95
  121. _WaveStrength("Wave Strength", Range(0, 25)) = 7.5 //96
  122. _WaveX("Wave X Axis", Range(0, 1)) = 0 //97
  123. _WaveY("Wave Y Axis", Range(0, 1)) = 0.5 //98
  124. [Header(Only on single sprites, spritesheets NOT supported)]
  125. _RectSize("Rect Size", Range(1, 4)) = 1 //99
  126. _OffsetUvX("Offset X axis", Range(-1, 1)) = 0 //100
  127. _OffsetUvY("Offset Y axis", Range(-1, 1)) = 0 //101
  128. _ClipUvLeft("Clipping Left", Range(0, 1)) = 0 //102
  129. _ClipUvRight("Clipping Right", Range(0, 1)) = 0 //103
  130. _ClipUvUp("Clipping Up", Range(0, 1)) = 0 //104
  131. _ClipUvDown("Clipping Down", Range(0, 1)) = 0 //105
  132. [Header(Set Texture Wrap Mode to Repeat)]
  133. _TextureScrollXSpeed("Texture Scroll Speed X Axis", Range(-5, 5)) = 1 //106
  134. _TextureScrollYSpeed("Texture Scroll Speed Y Axis", Range(-5, 5)) = 0 //107
  135. _ZoomUvAmount("Zoom Amount", Range(0.1, 5)) = 0.5 //108
  136. _DistortTex("Distortion Texture", 2D) = "white" {} //109
  137. _DistortAmount("Distortion Amount", Range(0,2)) = 0.5 //110
  138. _DistortTexXSpeed("Distortion scroll speed X axis", Range(-50,50)) = 5 //111
  139. _DistortTexYSpeed("Distortion scroll speed Y axis", Range(-50,50)) = 5 //112
  140. _TwistUvAmount("Twist Amount", Range(0, 3.1416)) = 1 //113
  141. _TwistUvPosX("Twist Pos X Axis", Range(0, 1)) = 0.5 //114
  142. _TwistUvPosY("Twist Pos Y Axis", Range(0, 1)) = 0.5 //115
  143. _TwistUvRadius("Twist Radius", Range(0, 3)) = 0.75 //116
  144. [Header(_Tip_ Use Clipping effect to avoid possible undesired parts)]
  145. _RotateUvAmount("Rotate Angle (in radians)", Range(0, 6.2831)) = 0 //117
  146. _FishEyeUvAmount("Fish Eye Amount", Range(0, 0.5)) = 0.35 //118
  147. _PinchUvAmount("Pinch Amount", Range(0, 0.5)) = 0.35 //119
  148. _ShakeUvSpeed("Shake Speed", Range(0, 20)) = 2.5 //120
  149. _ShakeUvX("Shake X Multiplier", Range(0, 5)) = 1.5 //121
  150. _ShakeUvY("Shake Y Multiplier", Range(0, 5)) = 1 //122
  151. _ColorChangeTolerance("Tolerance", Range(0, 1)) = 0.25 //123
  152. _ColorChangeTarget("Color to change", Color) = (1, 0, 0, 1) //124
  153. _ColorChangeNewCol("New Color", Color) = (1, 1, 0, 1) //125
  154. _ColorChangeLuminosity("New Color Luminosity", Range(0, 1)) = 0.0 //126
  155. _RoundWaveStrength("Round Wave Strength", Range(0, 1)) = 0.7 //127
  156. _RoundWaveSpeed("Round Wave Speed", Range(0, 5)) = 2 //128
  157. [Toggle()] _BillboardY("Billboard on both axis?", float) = 0 //129
  158. _ZWrite ("Depth Write", Float) = 0.0 // 130
  159. _MySrcMode ("SrcMode", Float) = 5 // 131
  160. _MyDstMode ("DstMode", Float) = 10 // 132
  161. _ShineColor("Shine Color", Color) = (1,1,1,1) // 133
  162. _ShineLocation("Shine Location", Range(0,1)) = 0.5 // 134
  163. _ShineWidth("Shine Width", Range(0.05,1)) = 0.1 // 135
  164. _ShineGlow("Shine Glow", Range(0,100)) = 1 // 136
  165. _ShineMask("Shine Mask", 2D) = "white" {} // 137
  166. _GlitchSize("Glitch Size", Range(0.25, 5)) = 1 //138
  167. _ZTestMode ("Z Test Mode", Float) = 4 // 139
  168. [HideInInspector] _MinXUV("_MinXUV", Range(0, 1)) = 0.0
  169. [HideInInspector] _MaxXUV("_MaxXUV", Range(0, 1)) = 1.0
  170. [HideInInspector] _MinYUV("_MinYUV", Range(0, 1)) = 0.0
  171. [HideInInspector] _MaxYUV("_MaxYUV", Range(0, 1)) = 1.0
  172. [HideInInspector] _RandomSeed("_MaxYUV", Range(0, 10000)) = 0.0
  173. }
  174. SubShader
  175. {
  176. Tags { "Queue" = "Transparent" "CanUseSpriteAtlas" = "True" "IgnoreProjector" = "True" "RenderType" = "Transparent" "PreviewType" = "Plane" }
  177. Blend [_MySrcMode] [_MyDstMode]
  178. Cull Off
  179. ZWrite [_ZWrite]
  180. ZTest [_ZTestMode]
  181. Pass
  182. {
  183. CGPROGRAM
  184. #pragma vertex vert
  185. #pragma fragment frag
  186. #pragma shader_feature GLOW_ON
  187. #pragma shader_feature FADE_ON
  188. #pragma shader_feature OUTBASE_ON
  189. #pragma shader_feature ONLYOUTLINE_ON
  190. #pragma shader_feature GRADIENT_ON
  191. #pragma shader_feature COLORSWAP_ON
  192. #pragma shader_feature HSV_ON
  193. #pragma shader_feature CHANGECOLOR_ON
  194. #pragma shader_feature COLORRAMP_ON
  195. #pragma shader_feature HITEFFECT_ON
  196. #pragma shader_feature NEGATIVE_ON
  197. #pragma shader_feature PIXELATE_ON
  198. #pragma shader_feature GREYSCALE_ON
  199. #pragma shader_feature POSTERIZE_ON
  200. #pragma shader_feature BLUR_ON
  201. #pragma shader_feature MOTIONBLUR_ON
  202. #pragma shader_feature GHOST_ON
  203. #pragma shader_feature INNEROUTLINE_ON
  204. #pragma shader_feature ONLYINNEROUTLINE_ON
  205. #pragma shader_feature HOLOGRAM_ON
  206. #pragma shader_feature CHROMABERR_ON
  207. #pragma shader_feature GLITCH_ON
  208. #pragma shader_feature FLICKER_ON
  209. #pragma shader_feature SHADOW_ON
  210. #pragma shader_feature SHINE_ON
  211. #pragma shader_feature ALPHACUTOFF_ON
  212. #pragma shader_feature DOODLE_ON
  213. #pragma shader_feature WIND_ON
  214. #pragma shader_feature WAVEUV_ON
  215. #pragma shader_feature ROUNDWAVEUV_ON
  216. #pragma shader_feature RECTSIZE_ON
  217. #pragma shader_feature OFFSETUV_ON
  218. #pragma shader_feature CLIPPING_ON
  219. #pragma shader_feature TEXTURESCROLL_ON
  220. #pragma shader_feature ZOOMUV_ON
  221. #pragma shader_feature DISTORT_ON
  222. #pragma shader_feature TWISTUV_ON
  223. #pragma shader_feature ROTATEUV_ON
  224. #pragma shader_feature POLARUV_ON
  225. #pragma shader_feature FISHEYE_ON
  226. #pragma shader_feature PINCH_ON
  227. #pragma shader_feature SHAKEUV_ON
  228. #pragma shader_feature GLOWTEX_ON
  229. #pragma shader_feature OUTTEX_ON
  230. #pragma shader_feature OUTDIST_ON
  231. #pragma shader_feature OUTBASE8DIR_ON
  232. #pragma shader_feature OUTBASEPIXELPERF_ON
  233. #pragma shader_feature OUTGREYTEXTURE_ON
  234. #pragma shader_feature COLORRAMPOUTLINE_ON
  235. #pragma shader_feature GREYSCALEOUTLINE_ON
  236. #pragma shader_feature POSTERIZEOUTLINE_ON
  237. #pragma shader_feature BLURISHD_ON
  238. #pragma shader_feature MANUALWIND_ON
  239. #pragma shader_feature ATLAS_ON
  240. #pragma shader_feature BILBOARD_ON
  241. #pragma shader_feature BILBOARDY_ON
  242. #pragma shader_feature CUSTOMBLENDING_ON
  243. #pragma shader_feature CUSTOMZTEST_ON
  244. #include "UnityCG.cginc"
  245. #include "AllIn1OneShaderFunctions.cginc"
  246. struct appdata
  247. {
  248. half4 vertex : POSITION;
  249. half2 uv : TEXCOORD0;
  250. half4 color : COLOR;
  251. };
  252. struct v2f
  253. {
  254. float2 uv : TEXCOORD0;
  255. half4 vertex : SV_POSITION;
  256. half4 color : COLOR;
  257. #if OUTTEX_ON
  258. half2 uvOutTex : TEXCOORD1;
  259. #endif
  260. #if OUTDIST_ON
  261. half2 uvOutDistTex : TEXCOORD2;
  262. #endif
  263. #if DISTORT_ON
  264. half2 uvDistTex : TEXCOORD3;
  265. #endif
  266. #if FADE_ON
  267. half2 uvFadeTex1 : TEXCOORD4;
  268. half2 uvFadeTex2 : TEXCOORD5;
  269. #endif
  270. };
  271. sampler2D _MainTex;
  272. half4 _MainTex_ST, _MainTex_TexelSize, _Color;
  273. half _Alpha, _RandomSeed;
  274. #if ATLAS_ON
  275. half _MinXUV, _MaxXUV, _MinYUV, _MaxYUV;
  276. #endif
  277. #if RECTSIZE_ON
  278. half _RectSize;
  279. #endif
  280. #if OFFSETUV_ON
  281. half _OffsetUvX, _OffsetUvY;
  282. #endif
  283. #if CLIPPING_ON
  284. half _ClipUvLeft, _ClipUvRight, _ClipUvUp, _ClipUvDown;
  285. #endif
  286. #if TWISTUV_ON
  287. half _TwistUvAmount, _TwistUvPosX, _TwistUvPosY, _TwistUvRadius;
  288. #endif
  289. #if ROTATEUV_ON
  290. half _RotateUvAmount;
  291. #endif
  292. #if FISHEYE_ON
  293. half _FishEyeUvAmount;
  294. #endif
  295. #if PINCH_ON
  296. half _PinchUvAmount;
  297. #endif
  298. #if DOODLE_ON
  299. half _HandDrawnAmount, _HandDrawnSpeed;
  300. #endif
  301. #if SHAKEUV_ON
  302. half _ShakeUvSpeed, _ShakeUvX, _ShakeUvY;
  303. #endif
  304. #if WAVEUV_ON
  305. half _WaveAmount, _WaveSpeed, _WaveStrength, _WaveX, _WaveY;
  306. #endif
  307. #if ROUNDWAVEUV_ON
  308. half _RoundWaveStrength, _RoundWaveSpeed;
  309. #endif
  310. #if ZOOMUV_ON
  311. half _ZoomUvAmount;
  312. #endif
  313. #if FADE_ON
  314. sampler2D _FadeTex, _FadeBurnTex;
  315. half4 _FadeBurnColor, _FadeTex_ST, _FadeBurnTex_ST;
  316. half _FadeAmount, _FadeBurnWidth, _FadeBurnTransition,_FadeBurnGlow;
  317. #endif
  318. #if TEXTURESCROLL_ON
  319. half _TextureScrollXSpeed, _TextureScrollYSpeed;
  320. #endif
  321. #if GLOW_ON
  322. sampler2D _GlowTex;
  323. half4 _GlowColor;
  324. half _Glow;
  325. #endif
  326. #if OUTBASE_ON
  327. half4 _OutlineColor;
  328. half _OutlineAlpha, _OutlineGlow, _OutlineWidth;
  329. int _OutlinePixelWidth;
  330. #endif
  331. #if OUTTEX_ON
  332. sampler2D _OutlineTex;
  333. half4 _OutlineTex_ST;
  334. half _OutlineTexXSpeed, _OutlineTexYSpeed;
  335. #endif
  336. #if OUTDIST_ON
  337. sampler2D _OutlineDistortTex;
  338. half4 _OutlineDistortTex_ST;
  339. half _OutlineDistortTexXSpeed, _OutlineDistortTexYSpeed, _OutlineDistortAmount;
  340. #endif
  341. #if DISTORT_ON
  342. sampler2D _DistortTex;
  343. half4 _DistortTex_ST;
  344. half _DistortTexXSpeed, _DistortTexYSpeed, _DistortAmount;
  345. #endif
  346. #if WIND_ON
  347. half _GrassSpeed, _GrassWind, _GrassManualAnim;
  348. #endif
  349. #if GRADIENT_ON
  350. half _GradBlend;
  351. half4 _GradTopRightCol, _GradTopLeftCol, _GradBotRightCol, _GradBotLeftCol;
  352. #endif
  353. #if COLORSWAP_ON
  354. sampler2D _ColorSwapTex;
  355. half4 _ColorSwapRed, _ColorSwapGreen, _ColorSwapBlue;
  356. half _ColorSwapRedLuminosity, _ColorSwapGreenLuminosity, _ColorSwapBlueLuminosity;
  357. #endif
  358. #if HSV_ON
  359. half _HsvShift, _HsvSaturation, _HsvBright;
  360. #endif
  361. #if HITEFFECT_ON
  362. half4 _HitEffectColor;
  363. half _HitEffectGlow, _HitEffectBlend;
  364. #endif
  365. #if PIXELATE_ON
  366. half _PixelateSize;
  367. #endif
  368. #if NEGATIVE_ON
  369. half _NegativeAmount;
  370. #endif
  371. #if COLORRAMP_ON
  372. sampler2D _ColorRampTex;
  373. half _ColorRampLuminosity;
  374. #endif
  375. #if GREYSCALE_ON
  376. half _GreyscaleLuminosity;
  377. half4 _GreyscaleTintColor;
  378. #endif
  379. #if POSTERIZE_ON
  380. half _PosterizeNumColors, _PosterizeGamma;
  381. #endif
  382. #if BLUR_ON
  383. half _BlurIntensity;
  384. #endif
  385. #if MOTIONBLUR_ON
  386. half _MotionBlurAngle, _MotionBlurDist;
  387. #endif
  388. #if GHOST_ON
  389. half _GhostColorBoost, _GhostTransparency;
  390. #endif
  391. #if INNEROUTLINE_ON
  392. half _InnerOutlineThickness, _InnerOutlineAlpha, _InnerOutlineGlow;
  393. half4 _InnerOutlineColor;
  394. #endif
  395. #if HOLOGRAM_ON
  396. half _HologramStripesAmount, _HologramMinAlpha, _HologramUnmodAmount, _HologramStripesSpeed, _HologramMaxAlpha;
  397. #endif
  398. #if CHROMABERR_ON
  399. half _ChromAberrAmount, _ChromAberrAlpha;
  400. #endif
  401. #if GLITCH_ON
  402. half _GlitchAmount, _GlitchSize;
  403. #endif
  404. #if FLICKER_ON
  405. half _FlickerFreq, _FlickerPercent, _FlickerAlpha;
  406. #endif
  407. #if SHADOW_ON
  408. half _ShadowX, _ShadowY, _ShadowAlpha;
  409. half4 _ShadowColor;
  410. #endif
  411. #if SHINE_ON
  412. sampler2D _ShineMask;
  413. half4 _ShineColor;
  414. half _ShineLocation, _ShineWidth, _ShineGlow;
  415. #endif
  416. #if ALPHACUTOFF_ON
  417. half _AlphaCutoffValue;
  418. #endif
  419. #if CHANGECOLOR_ON
  420. half4 _ColorChangeNewCol, _ColorChangeTarget;
  421. half _ColorChangeTolerance, _ColorChangeLuminosity;
  422. #endif
  423. v2f vert (appdata v)
  424. {
  425. #if RECTSIZE_ON
  426. v.vertex.xyz += (v.vertex.xyz * (_RectSize - 1.0));
  427. #endif
  428. v2f o;
  429. #if BILBOARD_ON
  430. half3 camRight = mul((half3x3)unity_CameraToWorld, half3(1,0,0));
  431. half3 camUp = half3(0,1,0);
  432. #if BILBOARDY_ON
  433. camUp = mul((half3x3)unity_CameraToWorld, half3(0,1,0));
  434. #endif
  435. half3 localPos = v.vertex.x * camRight + v.vertex.y * camUp;
  436. o.vertex = UnityObjectToClipPos(half4(localPos, 1));
  437. #else
  438. o.vertex = UnityObjectToClipPos(v.vertex);
  439. #endif
  440. o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  441. o.color = v.color;
  442. #if POLARUV_ON
  443. o.uv = v.uv - 0.5f;
  444. #endif
  445. #if ROTATEUV_ON
  446. half2 uvC = v.uv;
  447. half cosAngle = cos(_RotateUvAmount);
  448. half sinAngle = sin(_RotateUvAmount);
  449. float2x2 rot = float2x2(cosAngle, -sinAngle, sinAngle, cosAngle);
  450. uvC -= half2(0.5, 0.5);
  451. o.uv = mul(rot, uvC);
  452. o.uv += half2(0.5, 0.5);
  453. #endif
  454. #if OUTTEX_ON
  455. o.uvOutTex = TRANSFORM_TEX(v.uv, _OutlineTex);
  456. #endif
  457. #if OUTDIST_ON
  458. o.uvOutDistTex = TRANSFORM_TEX(v.uv, _OutlineDistortTex);
  459. #endif
  460. #if DISTORT_ON
  461. o.uvDistTex = TRANSFORM_TEX(v.uv, _DistortTex);
  462. #endif
  463. #if FADE_ON
  464. o.uvFadeTex1 = TRANSFORM_TEX(v.uv, _FadeTex);
  465. o.uvFadeTex2 = TRANSFORM_TEX(v.uv, _FadeBurnTex);
  466. #endif
  467. return o;
  468. }
  469. half3 GetPixel(in int offsetX, in int offsetY, half2 uv, sampler2D tex)
  470. {
  471. return tex2D(tex, (uv + half2(offsetX * _MainTex_TexelSize.x, offsetY * _MainTex_TexelSize.y))).rgb;
  472. }
  473. half4 frag (v2f i) : SV_Target
  474. {
  475. half2 uvRect = i.uv;
  476. #if ATLAS_ON
  477. uvRect = half2((i.uv.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uv.y - _MinYUV) / (_MaxYUV - _MinYUV));
  478. #endif
  479. #if CLIPPING_ON
  480. half2 tiledUv = half2(i.uv.x / _MainTex_ST.x, i.uv.y / _MainTex_ST.y);
  481. #if ATLAS_ON
  482. tiledUv = half2((tiledUv.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUv.y - _MinYUV) / (_MaxYUV - _MinYUV));
  483. #endif
  484. clip((1 - _ClipUvUp) - tiledUv.y);
  485. clip(tiledUv.y - _ClipUvDown);
  486. clip((1 - _ClipUvRight) - tiledUv.x);
  487. clip(tiledUv.x - _ClipUvLeft);
  488. #endif
  489. #if OFFSETUV_ON
  490. i.uv += half2(_OffsetUvX, _OffsetUvY);
  491. #endif
  492. #if POLARUV_ON
  493. i.uv = half2(atan2(i.uv.y, i.uv.x) / (2.0f * 3.141592653589f), length(i.uv));
  494. i.uv *= _MainTex_ST.xy;
  495. #endif
  496. #if TWISTUV_ON
  497. half2 tempUv = i.uv - half2(_TwistUvPosX * _MainTex_ST.x, _TwistUvPosY * _MainTex_ST.y);
  498. _TwistUvRadius *= (_MainTex_ST.x + _MainTex_ST.y) / 2;
  499. half percent = (_TwistUvRadius - length(tempUv)) / _TwistUvRadius;
  500. half theta = percent * percent * (2.0 * sin(_TwistUvAmount)) * 8.0;
  501. half s = sin(theta);
  502. half c = cos(theta);
  503. half beta = max(sign(_TwistUvRadius - length(tempUv)), 0.0);
  504. tempUv = half2(dot(tempUv, half2(c, -s)), dot(tempUv, half2(s, c))) * beta + tempUv * (1 - beta);
  505. tempUv += half2(_TwistUvPosX * _MainTex_ST.x, _TwistUvPosY * _MainTex_ST.y);
  506. i.uv = tempUv;
  507. #endif
  508. #if FISHEYE_ON
  509. half2 midF = 0.5 * _MainTex_ST.xy;
  510. half bind = length(midF);
  511. half2 dF = i.uv - midF;
  512. half dFlen = length(dF);
  513. half fishInt = (3.14159265359 / bind) * (_FishEyeUvAmount + 0.001);
  514. i.uv = midF + (dF / (max(0.0001, dFlen))) * tan(dFlen * fishInt) * bind / tan(bind * fishInt);
  515. #endif
  516. #if PINCH_ON
  517. half2 midP = 0.5 * _MainTex_ST.xy;
  518. float2 dP = i.uv - midP;
  519. float pinchInt = (3.141592 / length(midP)) * (-_PinchUvAmount + 0.001);
  520. i.uv = midP + normalize(dP) * atan(length(dP) * -pinchInt * 10.0) * 0.5 / atan(-pinchInt * 5);
  521. #endif
  522. #if DOODLE_ON
  523. half2 uvCopy = uvRect;
  524. _HandDrawnSpeed = (floor(_Time * 20 * _HandDrawnSpeed) / _HandDrawnSpeed) * _HandDrawnSpeed;
  525. uvCopy.x = sin((uvCopy.x * _HandDrawnAmount + _HandDrawnSpeed) * 4);
  526. uvCopy.y = cos((uvCopy.y * _HandDrawnAmount + _HandDrawnSpeed) * 4);
  527. i.uv = lerp(i.uv, i.uv + uvCopy, 0.0005 * _HandDrawnAmount);
  528. #endif
  529. #if SHAKEUV_ON
  530. half xShake = sin((_Time + _RandomSeed) * _ShakeUvSpeed * 500 * _ShakeUvX);
  531. half yShake = sin((_Time + _RandomSeed) * _ShakeUvSpeed * 500 * _ShakeUvY);
  532. i.uv += half2(xShake * 0.01, yShake * 0.01);
  533. #endif
  534. #if ZOOMUV_ON
  535. half2 center = half2(0.5 * _MainTex_ST.x, 0.5 * _MainTex_ST.y);
  536. i.uv -= center;
  537. i.uv = i.uv * _ZoomUvAmount;
  538. i.uv += center;
  539. #endif
  540. #if TEXTURESCROLL_ON
  541. i.uv.x += (_Time.y * _TextureScrollXSpeed) % 1;
  542. i.uv.y += (_Time.y * _TextureScrollYSpeed) % 1;
  543. #endif
  544. #if RECTSIZE_ON
  545. i.uv = i.uv.xy * (_RectSize).xx + (((-_RectSize * 0.5) + 0.5)).xx;
  546. #endif
  547. #if PIXELATE_ON
  548. i.uv = floor(i.uv * _PixelateSize) / _PixelateSize;
  549. #endif
  550. #if DISTORT_ON
  551. i.uvDistTex.x += ((_Time + _RandomSeed) * _DistortTexXSpeed) % 1;
  552. i.uvDistTex.y += ((_Time + _RandomSeed) * _DistortTexYSpeed) % 1;
  553. #if ATLAS_ON
  554. i.uvDistTex = half2((i.uvDistTex.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uvDistTex.y - _MinYUV) / (_MaxYUV - _MinYUV));
  555. #endif
  556. half distortAmnt = (tex2D(_DistortTex, i.uvDistTex).r - 0.5) * 0.2 * _DistortAmount;
  557. i.uv.x += distortAmnt;
  558. i.uv.y += distortAmnt;
  559. #endif
  560. #if WAVEUV_ON
  561. half2 uvWave = half2(_WaveX * _MainTex_ST.x, _WaveY * _MainTex_ST.y) - i.uv;
  562. #if ATLAS_ON
  563. uvWave = half2(_WaveX, _WaveY) - uvRect;
  564. #endif
  565. uvWave.x *= _ScreenParams.x / _ScreenParams.y;
  566. half angWave = (sqrt(dot(uvWave, uvWave)) * _WaveAmount) - ((_Time.y * _WaveSpeed) % 360);
  567. i.uv = i.uv + normalize(uvWave) * sin(angWave) * (_WaveStrength / 1000);
  568. #endif
  569. #if ROUNDWAVEUV_ON
  570. float xWave = ((0.5 * _MainTex_ST.x) - uvRect.x);
  571. float yWave = ((0.5 * _MainTex_ST.y) - uvRect.y) * (_ScreenParams.x / _ScreenParams.y);
  572. float ripple = -sqrt(xWave*xWave + yWave* yWave);
  573. i.uv += sin((ripple + _Time.y * (_RoundWaveSpeed/10.0)) / 0.015) * (_RoundWaveStrength/10.0);
  574. #endif
  575. #if WIND_ON
  576. #if !MANUALWIND_ON
  577. i.uv.x = fmod(abs(lerp(i.uv.x, i.uv.x + (_GrassWind * 0.01 * sin(_Time * _GrassSpeed * 10)), uvRect.y)), 1);
  578. #else
  579. i.uv.x = fmod(abs(lerp(i.uv.x, i.uv.x + (_GrassWind * 0.01 * _GrassManualAnim), uvRect.y)), 1);
  580. #endif
  581. #endif
  582. half4 col = tex2D(_MainTex, i.uv) * i.color;
  583. half originalAlpha = col.a;
  584. col.rgb *= col.a;
  585. #if GLITCH_ON
  586. half2 uvGlitch = uvRect;
  587. uvGlitch.y -= 0.5;
  588. half lineNoise = pow(rand2(floor(uvGlitch * half2(24., 19.) * _GlitchSize) * 4.0, _RandomSeed), 3.0) * _GlitchAmount
  589. * pow(rand2(floor(uvGlitch * half2(38., 14.) * _GlitchSize) * 4.0, _RandomSeed), 3.0);
  590. col = tex2D(_MainTex, i.uv + half2(lineNoise * 0.02 * rand2(half2(2.0, 1), _RandomSeed), 0)) * i.color;
  591. #endif
  592. #if CHROMABERR_ON
  593. half4 r = tex2D(_MainTex, i.uv + half2(_ChromAberrAmount/10, 0)) * i.color;
  594. half4 b = tex2D(_MainTex, i.uv + half2(-_ChromAberrAmount/10, 0)) * i.color;
  595. col = half4(r.r * r.a, col.g, b.b * b.a, max(max(r.a, b.a) * _ChromAberrAlpha, col.a));
  596. #endif
  597. #if FADE_ON
  598. half2 tiledUvFade1= i.uvFadeTex1;
  599. half2 tiledUvFade2 = i.uvFadeTex2;
  600. #if ATLAS_ON
  601. tiledUvFade1 = half2((tiledUvFade1.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUvFade1.y - _MinYUV) / (_MaxYUV - _MinYUV));
  602. tiledUvFade2 = half2((tiledUvFade2.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUvFade2.y - _MinYUV) / (_MaxYUV - _MinYUV));
  603. #endif
  604. half fadeTemp = tex2D(_FadeTex, tiledUvFade1).r;
  605. half fade = smoothstep(_FadeAmount + 0.01, _FadeAmount + _FadeBurnTransition, fadeTemp);
  606. half fadeBurn = smoothstep(_FadeAmount - _FadeBurnWidth, _FadeAmount - _FadeBurnWidth + 0.1, fadeTemp);
  607. col.a *= fade;
  608. _FadeBurnColor.rgb *= _FadeBurnGlow;
  609. col += fadeBurn * tex2D(_FadeBurnTex, tiledUvFade2) * _FadeBurnColor * originalAlpha * (1 - col.a);
  610. #endif
  611. #if BLUR_ON
  612. #if !BLURISHD_ON
  613. col = BlurHD(i.uv, _MainTex, _BlurIntensity) * i.color;
  614. #else
  615. col = Blur(i.uv, _MainTex, _BlurIntensity) * i.color;
  616. #endif
  617. #endif
  618. #if MOTIONBLUR_ON
  619. _MotionBlurAngle = _MotionBlurAngle * 3.1415926;
  620. #define rot(n) mul(n, float2x2(cos(_MotionBlurAngle), -sin(_MotionBlurAngle), sin(_MotionBlurAngle), cos(_MotionBlurAngle)))
  621. _MotionBlurDist = _MotionBlurDist * 0.005;
  622. col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist, -_MotionBlurDist)));
  623. col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist * 2, -_MotionBlurDist * 2)));
  624. col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist * 3, -_MotionBlurDist * 3)));
  625. col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist * 4, -_MotionBlurDist * 4)));
  626. col.rgb += tex2D(_MainTex, i.uv);
  627. col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist, _MotionBlurDist)));
  628. col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist * 2, _MotionBlurDist * 2)));
  629. col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist * 3, _MotionBlurDist * 3)));
  630. col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist * 4, _MotionBlurDist * 4)));
  631. col.rgb = col.rgb / 9;
  632. #endif
  633. half luminance = 0;
  634. #if COLORSWAP_ON
  635. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  636. half4 swapMask = tex2D(_ColorSwapTex, i.uv);
  637. swapMask.rgb *= swapMask.a;
  638. half3 redSwap = _ColorSwapRed * swapMask.r * col.a * saturate(luminance + _ColorSwapRedLuminosity);
  639. half3 greenSwap = _ColorSwapGreen * swapMask.g * col.a * saturate(luminance + _ColorSwapGreenLuminosity);
  640. half3 blueSwap = _ColorSwapBlue * swapMask.b * col.a * saturate(luminance + _ColorSwapBlueLuminosity);
  641. col.rgb = col.rgb * saturate(1 - swapMask.r - swapMask.g - swapMask.b);
  642. col.rgb = col.rgb + redSwap + greenSwap + blueSwap;
  643. #endif
  644. #if NEGATIVE_ON
  645. col.rgb = lerp(col.rgb, 1 - col.rgb, _NegativeAmount);
  646. #endif
  647. #if COLORRAMP_ON && !COLORRAMPOUTLINE_ON
  648. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  649. luminance = saturate(luminance + _ColorRampLuminosity);
  650. col.rgb = tex2D(_ColorRampTex, half2(luminance, 0)).rgb;
  651. #endif
  652. #if CHANGECOLOR_ON
  653. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  654. luminance = saturate(luminance + _ColorChangeLuminosity);
  655. half3 dif = abs(col.rgb - _ColorChangeTarget.rgb);
  656. col.rgb = lerp(col.rgb, half3(luminance, luminance, luminance) * _ColorChangeNewCol.rgb,
  657. max(sign(1 - saturate(dif.x + dif.y + dif.z) - _ColorChangeTolerance), 0.0));
  658. #endif
  659. #if GREYSCALE_ON && !GREYSCALEOUTLINE_ON
  660. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  661. luminance = saturate(luminance + _GreyscaleLuminosity);
  662. col.rgb = half3(luminance, luminance, luminance) * _GreyscaleTintColor;
  663. #endif
  664. #if POSTERIZE_ON && !POSTERIZEOUTLINE_ON
  665. col.rgb = pow(col.rgb, _PosterizeGamma) * _PosterizeNumColors;
  666. col.rgb = floor(col.rgb) / _PosterizeNumColors;
  667. col.rgb = pow(col.rgb, 1.0 / _PosterizeGamma);
  668. #endif
  669. #if GHOST_ON
  670. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  671. col.a = saturate(luminance - _GhostTransparency) * col.a;
  672. col.rgb *= luminance + _GhostColorBoost;
  673. #endif
  674. #if INNEROUTLINE_ON
  675. half3 innerT = abs(GetPixel(0, _InnerOutlineThickness, i.uv, _MainTex) - GetPixel(0, -_InnerOutlineThickness, i.uv, _MainTex));
  676. innerT += abs(GetPixel(_InnerOutlineThickness, 0, i.uv, _MainTex) - GetPixel(-_InnerOutlineThickness, 0, i.uv, _MainTex));
  677. #if !ONLYINNEROUTLINE_ON
  678. innerT = (innerT / 2.0) * col.a * _InnerOutlineAlpha;
  679. col.rgb += length(innerT) * _InnerOutlineColor.rgb * _InnerOutlineGlow;
  680. #else
  681. innerT *= col.a * _InnerOutlineAlpha;
  682. col.rgb = length(innerT) * _InnerOutlineColor.rgb * _InnerOutlineGlow;
  683. col.a = step(0.3, col.r+col.g+col.b);
  684. #endif
  685. #endif
  686. #if HITEFFECT_ON
  687. col.rgb = lerp(col.rgb, _HitEffectColor.rgb * _HitEffectGlow, _HitEffectBlend);
  688. #endif
  689. #if GRADIENT_ON
  690. half2 tiledUvGrad = half2(uvRect.x / _MainTex_ST.x, uvRect.y / _MainTex_ST.y);
  691. half _GradBoost = 1.2;
  692. half4 vertical = lerp(lerp(_GradBotLeftCol, _GradBotRightCol, tiledUvGrad.x * _GradBoost),
  693. lerp(_GradTopLeftCol, _GradTopRightCol, tiledUvGrad.x * _GradBoost), tiledUvGrad.y * _GradBoost);
  694. col.rgb = lerp(col.rgb, vertical.rgb, _GradBlend) * col.a;
  695. #endif
  696. //OUTLINE-------------------------------------------------------------
  697. #if OUTBASE_ON
  698. #ifdef OUTBASEPIXELPERF_ON
  699. half2 destUv = half2(_OutlinePixelWidth * _MainTex_TexelSize.x, _OutlinePixelWidth * _MainTex_TexelSize.y);
  700. #else
  701. half2 destUv = half2(_OutlineWidth * _MainTex_TexelSize.x * 200, _OutlineWidth * _MainTex_TexelSize.y * 200);
  702. #endif
  703. #if OUTDIST_ON
  704. i.uvOutDistTex.x += ((_Time + _RandomSeed) * _OutlineDistortTexXSpeed) % 1;
  705. i.uvOutDistTex.y += ((_Time + _RandomSeed) * _OutlineDistortTexYSpeed) % 1;
  706. #if ATLAS_ON
  707. i.uvOutDistTex = half2((i.uvOutDistTex.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uvOutDistTex.y - _MinYUV) / (_MaxYUV - _MinYUV));
  708. #endif
  709. half outDistortAmnt = (tex2D(_OutlineDistortTex, i.uvOutDistTex).r - 0.5) * 0.2 * _OutlineDistortAmount;
  710. destUv.x += outDistortAmnt;
  711. destUv.y += outDistortAmnt;
  712. #endif
  713. half spriteLeft = tex2D(_MainTex, i.uv + half2(destUv.x, 0)).a;
  714. half spriteRight = tex2D(_MainTex, i.uv - half2(destUv.x, 0)).a;
  715. half spriteBottom = tex2D(_MainTex, i.uv + half2(0, destUv.y)).a;
  716. half spriteTop = tex2D(_MainTex, i.uv - half2(0, destUv.y)).a;
  717. half result = spriteLeft + spriteRight + spriteBottom + spriteTop;
  718. #if OUTBASE8DIR_ON
  719. half spriteTopLeft = tex2D(_MainTex, i.uv + half2(destUv.x, destUv.y)).a;
  720. half spriteTopRight = tex2D(_MainTex, i.uv + half2(-destUv.x, destUv.y)).a;
  721. half spriteBotLeft = tex2D(_MainTex, i.uv + half2(destUv.x, -destUv.y)).a;
  722. half spriteBotRight = tex2D(_MainTex, i.uv + half2(-destUv.x, -destUv.y)).a;
  723. result = result + spriteTopLeft + spriteTopRight + spriteBotLeft + spriteBotRight;
  724. #endif
  725. result = step(0.05, saturate(result));
  726. #if OUTTEX_ON
  727. i.uvOutTex.x += (_Time * _OutlineTexXSpeed) % 1;
  728. i.uvOutTex.y += (_Time * _OutlineTexYSpeed) % 1;
  729. #if ATLAS_ON
  730. i.uvOutTex = half2((i.uvOutTex.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uvOutTex.y - _MinYUV) / (_MaxYUV - _MinYUV));
  731. #endif
  732. half4 tempOutColor = tex2D(_OutlineTex, i.uvOutTex);
  733. #if OUTGREYTEXTURE_ON
  734. luminance = 0.3 * tempOutColor.r + 0.59 * tempOutColor.g + 0.11 * tempOutColor.b;
  735. tempOutColor = half4(luminance, luminance, luminance, 1);
  736. #endif
  737. tempOutColor *= _OutlineColor;
  738. _OutlineColor = tempOutColor;
  739. #endif
  740. result *= (1 - originalAlpha) *_OutlineAlpha;
  741. half4 outline = result * _OutlineColor;
  742. outline.rgb *= _OutlineGlow * 2;
  743. #if ONLYOUTLINE_ON
  744. col = outline;
  745. #else
  746. col += outline;
  747. #endif
  748. #endif
  749. //-----------------------------------------------------------------------------
  750. #if SHADOW_ON
  751. half shadowA = tex2D(_MainTex, i.uv + half2(_ShadowX, _ShadowY)).a;
  752. col.rgb += (_ShadowColor * shadowA) * (1 - col.a);
  753. col.a = max(shadowA * _ShadowAlpha * i.color.a, col.a);
  754. #endif
  755. #if GLOW_ON
  756. half4 emission;
  757. #if GLOWTEX_ON
  758. emission = tex2D(_GlowTex, i.uv);
  759. #else
  760. emission = col;
  761. #endif
  762. emission.rgb *= emission.a * col.a * _Glow * _GlowColor;
  763. col.rgb += emission.rgb;
  764. #endif
  765. #if COLORRAMP_ON && COLORRAMPOUTLINE_ON
  766. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  767. luminance = saturate(luminance + _ColorRampLuminosity);
  768. col.rgb = tex2D(_ColorRampTex, half2(luminance, 0)).rgb;
  769. #endif
  770. #if GREYSCALE_ON && GREYSCALEOUTLINE_ON
  771. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  772. luminance = saturate(luminance + _GreyscaleLuminosity);
  773. col.rgb = half3(luminance, luminance, luminance) * _GreyscaleTintColor;
  774. #endif
  775. #if POSTERIZE_ON && POSTERIZEOUTLINE_ON
  776. col.rgb = pow(col.rgb, _PosterizeGamma) * _PosterizeNumColors;
  777. col.rgb = floor(col.rgb) / _PosterizeNumColors;
  778. col.rgb = pow(col.rgb, 1.0 / _PosterizeGamma);
  779. #endif
  780. #if HSV_ON
  781. half3 resultHsv = half3(col.rgb);
  782. half cosHsv = _HsvBright * _HsvSaturation * cos(_HsvShift * 3.14159265 / 180);
  783. half sinHsv = _HsvBright * _HsvSaturation * sin(_HsvShift * 3.14159265 / 180);
  784. resultHsv.x = (.299 * _HsvBright + .701 * cosHsv + .168 * sinHsv) * col.x
  785. + (.587 * _HsvBright - .587 * cosHsv + .330 * sinHsv) * col.y
  786. + (.114 * _HsvBright - .114 * cosHsv - .497 * sinHsv) * col.z;
  787. resultHsv.y = (.299 * _HsvBright - .299 * cosHsv - .328 * sinHsv) *col.x
  788. + (.587 * _HsvBright + .413 * cosHsv + .035 * sinHsv) * col.y
  789. + (.114 * _HsvBright - .114 * cosHsv + .292 * sinHsv) * col.z;
  790. resultHsv.z = (.299 * _HsvBright - .3 * cosHsv + 1.25 * sinHsv) * col.x
  791. + (.587 * _HsvBright - .588 * cosHsv - 1.05 * sinHsv) * col.y
  792. + (.114 * _HsvBright + .886 * cosHsv - .203 * sinHsv) * col.z;
  793. col.rgb = resultHsv;
  794. #endif
  795. #if SHINE_ON
  796. half shineMask = tex2D(_ShineMask, i.uv).a;
  797. half lowLevel = _ShineLocation - _ShineWidth;
  798. half highLevel = _ShineLocation + _ShineWidth;
  799. half currentDistanceProjection = (i.uv.x + i.uv.y) / 2;
  800. half whitePower = 1 - (abs(currentDistanceProjection - _ShineLocation) / _ShineWidth);
  801. col.rgb += col.a * whitePower * _ShineGlow * max(sign(currentDistanceProjection - lowLevel), 0.0) * max(sign(highLevel - currentDistanceProjection), 0.0) * _ShineColor * shineMask;
  802. #endif
  803. col.a *= _Alpha;
  804. #if ALPHACUTOFF_ON
  805. clip((1 - _AlphaCutoffValue) - (1 - col.a) - 0.01);
  806. #endif
  807. #if HOLOGRAM_ON
  808. half totalHologram = _HologramStripesAmount + _HologramUnmodAmount;
  809. half hologramYCoord = ((uvRect.y + (((_Time.x + _RandomSeed) % 1) * _HologramStripesSpeed)) % totalHologram) / totalHologram;
  810. half alpha = RemapFloat(saturate(hologramYCoord - (_HologramUnmodAmount/totalHologram)), 0.0, 1.0, _HologramMinAlpha, saturate(_HologramMaxAlpha));
  811. col.a *= lerp(alpha, 1, max(sign((_HologramUnmodAmount/totalHologram) - hologramYCoord), 0.0));
  812. col.rgb *= max(1, _HologramMaxAlpha * max(sign(hologramYCoord - (_HologramUnmodAmount/totalHologram)), 0.0));
  813. #endif
  814. #if FLICKER_ON
  815. col.a *= saturate(col.a * step(frac(0.05 + (_Time.w + _RandomSeed) * _FlickerFreq), 1 - _FlickerPercent) + _FlickerAlpha);
  816. #endif
  817. col *= _Color;
  818. return col;
  819. }
  820. ENDCG
  821. }
  822. }
  823. CustomEditor "AllIn1SpriteShader"
  824. Fallback "Sprites/Default"
  825. }