AllIn1SpriteShaderUnscaledTime.shader 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988
  1. Shader "AllIn1SpriteShader/AllIn1SpriteShaderUnscaledTime"
  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. float globalUnscaledTime;
  272. sampler2D _MainTex;
  273. half4 _MainTex_ST, _MainTex_TexelSize, _Color;
  274. half _Alpha, _RandomSeed;
  275. #if ATLAS_ON
  276. half _MinXUV, _MaxXUV, _MinYUV, _MaxYUV;
  277. #endif
  278. #if RECTSIZE_ON
  279. half _RectSize;
  280. #endif
  281. #if OFFSETUV_ON
  282. half _OffsetUvX, _OffsetUvY;
  283. #endif
  284. #if CLIPPING_ON
  285. half _ClipUvLeft, _ClipUvRight, _ClipUvUp, _ClipUvDown;
  286. #endif
  287. #if TWISTUV_ON
  288. half _TwistUvAmount, _TwistUvPosX, _TwistUvPosY, _TwistUvRadius;
  289. #endif
  290. #if ROTATEUV_ON
  291. half _RotateUvAmount;
  292. #endif
  293. #if FISHEYE_ON
  294. half _FishEyeUvAmount;
  295. #endif
  296. #if PINCH_ON
  297. half _PinchUvAmount;
  298. #endif
  299. #if DOODLE_ON
  300. half _HandDrawnAmount, _HandDrawnSpeed;
  301. #endif
  302. #if SHAKEUV_ON
  303. half _ShakeUvSpeed, _ShakeUvX, _ShakeUvY;
  304. #endif
  305. #if WAVEUV_ON
  306. half _WaveAmount, _WaveSpeed, _WaveStrength, _WaveX, _WaveY;
  307. #endif
  308. #if ROUNDWAVEUV_ON
  309. half _RoundWaveStrength, _RoundWaveSpeed;
  310. #endif
  311. #if ZOOMUV_ON
  312. half _ZoomUvAmount;
  313. #endif
  314. #if FADE_ON
  315. sampler2D _FadeTex, _FadeBurnTex;
  316. half4 _FadeBurnColor, _FadeTex_ST, _FadeBurnTex_ST;
  317. half _FadeAmount, _FadeBurnWidth, _FadeBurnTransition,_FadeBurnGlow;
  318. #endif
  319. #if TEXTURESCROLL_ON
  320. half _TextureScrollXSpeed, _TextureScrollYSpeed;
  321. #endif
  322. #if GLOW_ON
  323. sampler2D _GlowTex;
  324. half4 _GlowColor;
  325. half _Glow;
  326. #endif
  327. #if OUTBASE_ON
  328. half4 _OutlineColor;
  329. half _OutlineAlpha, _OutlineGlow, _OutlineWidth;
  330. int _OutlinePixelWidth;
  331. #endif
  332. #if OUTTEX_ON
  333. sampler2D _OutlineTex;
  334. half4 _OutlineTex_ST;
  335. half _OutlineTexXSpeed, _OutlineTexYSpeed;
  336. #endif
  337. #if OUTDIST_ON
  338. sampler2D _OutlineDistortTex;
  339. half4 _OutlineDistortTex_ST;
  340. half _OutlineDistortTexXSpeed, _OutlineDistortTexYSpeed, _OutlineDistortAmount;
  341. #endif
  342. #if DISTORT_ON
  343. sampler2D _DistortTex;
  344. half4 _DistortTex_ST;
  345. half _DistortTexXSpeed, _DistortTexYSpeed, _DistortAmount;
  346. #endif
  347. #if WIND_ON
  348. half _GrassSpeed, _GrassWind, _GrassManualAnim;
  349. #endif
  350. #if GRADIENT_ON
  351. half _GradBlend;
  352. half4 _GradTopRightCol, _GradTopLeftCol, _GradBotRightCol, _GradBotLeftCol;
  353. #endif
  354. #if COLORSWAP_ON
  355. sampler2D _ColorSwapTex;
  356. half4 _ColorSwapRed, _ColorSwapGreen, _ColorSwapBlue;
  357. half _ColorSwapRedLuminosity, _ColorSwapGreenLuminosity, _ColorSwapBlueLuminosity;
  358. #endif
  359. #if HSV_ON
  360. half _HsvShift, _HsvSaturation, _HsvBright;
  361. #endif
  362. #if HITEFFECT_ON
  363. half4 _HitEffectColor;
  364. half _HitEffectGlow, _HitEffectBlend;
  365. #endif
  366. #if PIXELATE_ON
  367. half _PixelateSize;
  368. #endif
  369. #if NEGATIVE_ON
  370. half _NegativeAmount;
  371. #endif
  372. #if COLORRAMP_ON
  373. sampler2D _ColorRampTex;
  374. half _ColorRampLuminosity;
  375. #endif
  376. #if GREYSCALE_ON
  377. half _GreyscaleLuminosity;
  378. half4 _GreyscaleTintColor;
  379. #endif
  380. #if POSTERIZE_ON
  381. half _PosterizeNumColors, _PosterizeGamma;
  382. #endif
  383. #if BLUR_ON
  384. half _BlurIntensity;
  385. #endif
  386. #if MOTIONBLUR_ON
  387. half _MotionBlurAngle, _MotionBlurDist;
  388. #endif
  389. #if GHOST_ON
  390. half _GhostColorBoost, _GhostTransparency;
  391. #endif
  392. #if INNEROUTLINE_ON
  393. half _InnerOutlineThickness, _InnerOutlineAlpha, _InnerOutlineGlow;
  394. half4 _InnerOutlineColor;
  395. #endif
  396. #if HOLOGRAM_ON
  397. half _HologramStripesAmount, _HologramMinAlpha, _HologramUnmodAmount, _HologramStripesSpeed, _HologramMaxAlpha;
  398. #endif
  399. #if CHROMABERR_ON
  400. half _ChromAberrAmount, _ChromAberrAlpha;
  401. #endif
  402. #if GLITCH_ON
  403. half _GlitchAmount, _GlitchSize;
  404. #endif
  405. #if FLICKER_ON
  406. half _FlickerFreq, _FlickerPercent, _FlickerAlpha;
  407. #endif
  408. #if SHADOW_ON
  409. half _ShadowX, _ShadowY, _ShadowAlpha;
  410. half4 _ShadowColor;
  411. #endif
  412. #if SHINE_ON
  413. sampler2D _ShineMask;
  414. half4 _ShineColor;
  415. half _ShineLocation, _ShineWidth, _ShineGlow;
  416. #endif
  417. #if ALPHACUTOFF_ON
  418. half _AlphaCutoffValue;
  419. #endif
  420. #if CHANGECOLOR_ON
  421. half4 _ColorChangeNewCol, _ColorChangeTarget;
  422. half _ColorChangeTolerance, _ColorChangeLuminosity;
  423. #endif
  424. v2f vert (appdata v)
  425. {
  426. #if RECTSIZE_ON
  427. v.vertex.xyz += (v.vertex.xyz * (_RectSize - 1.0));
  428. #endif
  429. v2f o;
  430. #if BILBOARD_ON
  431. half3 camRight = mul((half3x3)unity_CameraToWorld, half3(1,0,0));
  432. half3 camUp = half3(0,1,0);
  433. #if BILBOARDY_ON
  434. camUp = mul((half3x3)unity_CameraToWorld, half3(0,1,0));
  435. #endif
  436. half3 localPos = v.vertex.x * camRight + v.vertex.y * camUp;
  437. o.vertex = UnityObjectToClipPos(half4(localPos, 1));
  438. #else
  439. o.vertex = UnityObjectToClipPos(v.vertex);
  440. #endif
  441. o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  442. o.color = v.color;
  443. #if POLARUV_ON
  444. o.uv = v.uv - 0.5f;
  445. #endif
  446. #if ROTATEUV_ON
  447. half2 uvC = v.uv;
  448. half cosAngle = cos(_RotateUvAmount);
  449. half sinAngle = sin(_RotateUvAmount);
  450. float2x2 rot = float2x2(cosAngle, -sinAngle, sinAngle, cosAngle);
  451. uvC -= half2(0.5, 0.5);
  452. o.uv = mul(rot, uvC);
  453. o.uv += half2(0.5, 0.5);
  454. #endif
  455. #if OUTTEX_ON
  456. o.uvOutTex = TRANSFORM_TEX(v.uv, _OutlineTex);
  457. #endif
  458. #if OUTDIST_ON
  459. o.uvOutDistTex = TRANSFORM_TEX(v.uv, _OutlineDistortTex);
  460. #endif
  461. #if DISTORT_ON
  462. o.uvDistTex = TRANSFORM_TEX(v.uv, _DistortTex);
  463. #endif
  464. #if FADE_ON
  465. o.uvFadeTex1 = TRANSFORM_TEX(v.uv, _FadeTex);
  466. o.uvFadeTex2 = TRANSFORM_TEX(v.uv, _FadeBurnTex);
  467. #endif
  468. return o;
  469. }
  470. half3 GetPixel(in int offsetX, in int offsetY, half2 uv, sampler2D tex)
  471. {
  472. return tex2D(tex, (uv + half2(offsetX * _MainTex_TexelSize.x, offsetY * _MainTex_TexelSize.y))).rgb;
  473. }
  474. half4 frag (v2f i) : SV_Target
  475. {
  476. half2 uvRect = i.uv;
  477. #if ATLAS_ON
  478. uvRect = half2((i.uv.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uv.y - _MinYUV) / (_MaxYUV - _MinYUV));
  479. #endif
  480. #if CLIPPING_ON
  481. half2 tiledUv = half2(i.uv.x / _MainTex_ST.x, i.uv.y / _MainTex_ST.y);
  482. #if ATLAS_ON
  483. tiledUv = half2((tiledUv.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUv.y - _MinYUV) / (_MaxYUV - _MinYUV));
  484. #endif
  485. clip((1 - _ClipUvUp) - tiledUv.y);
  486. clip(tiledUv.y - _ClipUvDown);
  487. clip((1 - _ClipUvRight) - tiledUv.x);
  488. clip(tiledUv.x - _ClipUvLeft);
  489. #endif
  490. #if OFFSETUV_ON
  491. i.uv += half2(_OffsetUvX, _OffsetUvY);
  492. #endif
  493. #if POLARUV_ON
  494. i.uv = half2(atan2(i.uv.y, i.uv.x) / (2.0f * 3.141592653589f), length(i.uv));
  495. i.uv *= _MainTex_ST.xy;
  496. #endif
  497. #if TWISTUV_ON
  498. half2 tempUv = i.uv - half2(_TwistUvPosX * _MainTex_ST.x, _TwistUvPosY * _MainTex_ST.y);
  499. _TwistUvRadius *= (_MainTex_ST.x + _MainTex_ST.y) / 2;
  500. half percent = (_TwistUvRadius - length(tempUv)) / _TwistUvRadius;
  501. half theta = percent * percent * (2.0 * sin(_TwistUvAmount)) * 8.0;
  502. half s = sin(theta);
  503. half c = cos(theta);
  504. half beta = max(sign(_TwistUvRadius - length(tempUv)), 0.0);
  505. tempUv = half2(dot(tempUv, half2(c, -s)), dot(tempUv, half2(s, c))) * beta + tempUv * (1 - beta);
  506. tempUv += half2(_TwistUvPosX * _MainTex_ST.x, _TwistUvPosY * _MainTex_ST.y);
  507. i.uv = tempUv;
  508. #endif
  509. #if FISHEYE_ON
  510. half2 midF = 0.5 * _MainTex_ST.xy;
  511. half bind = length(midF);
  512. half2 dF = i.uv - midF;
  513. half dFlen = length(dF);
  514. half fishInt = (3.14159265359 / bind) * (_FishEyeUvAmount + 0.001);
  515. i.uv = midF + (dF / (max(0.0001, dFlen))) * tan(dFlen * fishInt) * bind / tan(bind * fishInt);
  516. #endif
  517. #if PINCH_ON
  518. half2 midP = 0.5 * _MainTex_ST.xy;
  519. float2 dP = i.uv - midP;
  520. float pinchInt = (3.141592 / length(midP)) * (-_PinchUvAmount + 0.001);
  521. i.uv = midP + normalize(dP) * atan(length(dP) * -pinchInt * 10.0) * 0.5 / atan(-pinchInt * 5);
  522. #endif
  523. #if DOODLE_ON
  524. half2 uvCopy = uvRect;
  525. _HandDrawnSpeed = (floor(globalUnscaledTime * 20 * _HandDrawnSpeed) / _HandDrawnSpeed) * _HandDrawnSpeed;
  526. uvCopy.x = sin((uvCopy.x * _HandDrawnAmount + _HandDrawnSpeed) * 4);
  527. uvCopy.y = cos((uvCopy.y * _HandDrawnAmount + _HandDrawnSpeed) * 4);
  528. i.uv = lerp(i.uv, i.uv + uvCopy, 0.0005 * _HandDrawnAmount);
  529. #endif
  530. #if SHAKEUV_ON
  531. half xShake = sin((globalUnscaledTime + _RandomSeed) * _ShakeUvSpeed * 500 * _ShakeUvX);
  532. half yShake = sin((globalUnscaledTime + _RandomSeed) * _ShakeUvSpeed * 500 * _ShakeUvY);
  533. i.uv += half2(xShake * 0.01, yShake * 0.01);
  534. #endif
  535. #if ZOOMUV_ON
  536. half2 center = half2(0.5 * _MainTex_ST.x, 0.5 * _MainTex_ST.y);
  537. i.uv -= center;
  538. i.uv = i.uv * _ZoomUvAmount;
  539. i.uv += center;
  540. #endif
  541. #if TEXTURESCROLL_ON
  542. i.uv.x += ((globalUnscaledTime * 20) * _TextureScrollXSpeed) % 1;
  543. i.uv.y += ((globalUnscaledTime * 20) * _TextureScrollYSpeed) % 1;
  544. #endif
  545. #if RECTSIZE_ON
  546. i.uv = i.uv.xy * (_RectSize).xx + (((-_RectSize * 0.5) + 0.5)).xx;
  547. #endif
  548. #if PIXELATE_ON
  549. i.uv = floor(i.uv * _PixelateSize) / _PixelateSize;
  550. #endif
  551. #if DISTORT_ON
  552. i.uvDistTex.x += ((globalUnscaledTime + _RandomSeed) * _DistortTexXSpeed) % 1;
  553. i.uvDistTex.y += ((globalUnscaledTime + _RandomSeed) * _DistortTexYSpeed) % 1;
  554. #if ATLAS_ON
  555. i.uvDistTex = half2((i.uvDistTex.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uvDistTex.y - _MinYUV) / (_MaxYUV - _MinYUV));
  556. #endif
  557. half distortAmnt = (tex2D(_DistortTex, i.uvDistTex).r - 0.5) * 0.2 * _DistortAmount;
  558. i.uv.x += distortAmnt;
  559. i.uv.y += distortAmnt;
  560. #endif
  561. #if WAVEUV_ON
  562. half2 uvWave = half2(_WaveX * _MainTex_ST.x, _WaveY * _MainTex_ST.y) - i.uv;
  563. #if ATLAS_ON
  564. uvWave = half2(_WaveX, _WaveY) - uvRect;
  565. #endif
  566. uvWave.x *= _ScreenParams.x / _ScreenParams.y;
  567. half angWave = (sqrt(dot(uvWave, uvWave)) * _WaveAmount) - (((globalUnscaledTime * 20) * _WaveSpeed) % 360);
  568. i.uv = i.uv + normalize(uvWave) * sin(angWave) * (_WaveStrength / 1000);
  569. #endif
  570. #if ROUNDWAVEUV_ON
  571. float xWave = ((0.5 * _MainTex_ST.x) - uvRect.x);
  572. float yWave = ((0.5 * _MainTex_ST.y) - uvRect.y) * (_ScreenParams.x / _ScreenParams.y);
  573. float ripple = -sqrt(xWave*xWave + yWave* yWave);
  574. i.uv += sin((ripple + (globalUnscaledTime * 20) * (_RoundWaveSpeed/10.0)) / 0.015) * (_RoundWaveStrength/10.0);
  575. #endif
  576. #if WIND_ON
  577. #if !MANUALWIND_ON
  578. i.uv.x = fmod(abs(lerp(i.uv.x, i.uv.x + (_GrassWind * 0.01 * sin(globalUnscaledTime * _GrassSpeed * 10)), uvRect.y)), 1);
  579. #else
  580. i.uv.x = fmod(abs(lerp(i.uv.x, i.uv.x + (_GrassWind * 0.01 * _GrassManualAnim), uvRect.y)), 1);
  581. #endif
  582. #endif
  583. half4 col = tex2D(_MainTex, i.uv) * i.color;
  584. half originalAlpha = col.a;
  585. col.rgb *= col.a;
  586. #if GLITCH_ON
  587. half2 uvGlitch = uvRect;
  588. uvGlitch.y -= 0.5;
  589. half lineNoise = pow(rand2(floor(uvGlitch * half2(24., 19.) * _GlitchSize) * 4.0, _RandomSeed), 3.0) * _GlitchAmount
  590. * pow(rand2(floor(uvGlitch * half2(38., 14.) * _GlitchSize) * 4.0, _RandomSeed), 3.0);
  591. col = tex2D(_MainTex, i.uv + half2(lineNoise * 0.02 * rand2(half2(2.0, 1), _RandomSeed), 0)) * i.color;
  592. #endif
  593. #if CHROMABERR_ON
  594. half4 r = tex2D(_MainTex, i.uv + half2(_ChromAberrAmount/10, 0)) * i.color;
  595. half4 b = tex2D(_MainTex, i.uv + half2(-_ChromAberrAmount/10, 0)) * i.color;
  596. col = half4(r.r * r.a, col.g, b.b * b.a, max(max(r.a, b.a) * _ChromAberrAlpha, col.a));
  597. #endif
  598. #if FADE_ON
  599. half2 tiledUvFade1= i.uvFadeTex1;
  600. half2 tiledUvFade2 = i.uvFadeTex2;
  601. #if ATLAS_ON
  602. tiledUvFade1 = half2((tiledUvFade1.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUvFade1.y - _MinYUV) / (_MaxYUV - _MinYUV));
  603. tiledUvFade2 = half2((tiledUvFade2.x - _MinXUV) / (_MaxXUV - _MinXUV), (tiledUvFade2.y - _MinYUV) / (_MaxYUV - _MinYUV));
  604. #endif
  605. half fadeTemp = tex2D(_FadeTex, tiledUvFade1).r;
  606. half fade = smoothstep(_FadeAmount + 0.01, _FadeAmount + _FadeBurnTransition, fadeTemp);
  607. half fadeBurn = smoothstep(_FadeAmount - _FadeBurnWidth, _FadeAmount - _FadeBurnWidth + 0.1, fadeTemp);
  608. col.a *= fade;
  609. _FadeBurnColor.rgb *= _FadeBurnGlow;
  610. col += fadeBurn * tex2D(_FadeBurnTex, tiledUvFade2) * _FadeBurnColor * originalAlpha * (1 - col.a);
  611. #endif
  612. #if BLUR_ON
  613. #if !BLURISHD_ON
  614. col = BlurHD(i.uv, _MainTex, _BlurIntensity) * i.color;
  615. #else
  616. col = Blur(i.uv, _MainTex, _BlurIntensity) * i.color;
  617. #endif
  618. #endif
  619. #if MOTIONBLUR_ON
  620. _MotionBlurAngle = _MotionBlurAngle * 3.1415926;
  621. #define rot(n) mul(n, float2x2(cos(_MotionBlurAngle), -sin(_MotionBlurAngle), sin(_MotionBlurAngle), cos(_MotionBlurAngle)))
  622. _MotionBlurDist = _MotionBlurDist * 0.005;
  623. col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist, -_MotionBlurDist)));
  624. col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist * 2, -_MotionBlurDist * 2)));
  625. col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist * 3, -_MotionBlurDist * 3)));
  626. col.rgb += tex2D(_MainTex, i.uv + rot(half2(-_MotionBlurDist * 4, -_MotionBlurDist * 4)));
  627. col.rgb += tex2D(_MainTex, i.uv);
  628. col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist, _MotionBlurDist)));
  629. col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist * 2, _MotionBlurDist * 2)));
  630. col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist * 3, _MotionBlurDist * 3)));
  631. col.rgb += tex2D(_MainTex, i.uv + rot(half2(_MotionBlurDist * 4, _MotionBlurDist * 4)));
  632. col.rgb = col.rgb / 9;
  633. #endif
  634. half luminance = 0;
  635. #if COLORSWAP_ON
  636. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  637. half4 swapMask = tex2D(_ColorSwapTex, i.uv);
  638. swapMask.rgb *= swapMask.a;
  639. half3 redSwap = _ColorSwapRed * swapMask.r * col.a * saturate(luminance + _ColorSwapRedLuminosity);
  640. half3 greenSwap = _ColorSwapGreen * swapMask.g * col.a * saturate(luminance + _ColorSwapGreenLuminosity);
  641. half3 blueSwap = _ColorSwapBlue * swapMask.b * col.a * saturate(luminance + _ColorSwapBlueLuminosity);
  642. col.rgb = col.rgb * saturate(1 - swapMask.r - swapMask.g - swapMask.b);
  643. col.rgb = col.rgb + redSwap + greenSwap + blueSwap;
  644. #endif
  645. #if NEGATIVE_ON
  646. col.rgb = lerp(col.rgb, 1 - col.rgb, _NegativeAmount);
  647. #endif
  648. #if COLORRAMP_ON && !COLORRAMPOUTLINE_ON
  649. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  650. luminance = saturate(luminance + _ColorRampLuminosity);
  651. col.rgb = tex2D(_ColorRampTex, half2(luminance, 0)).rgb;
  652. #endif
  653. #if CHANGECOLOR_ON
  654. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  655. luminance = saturate(luminance + _ColorChangeLuminosity);
  656. half3 dif = abs(col.rgb - _ColorChangeTarget.rgb);
  657. col.rgb = lerp(col.rgb, half3(luminance, luminance, luminance) * _ColorChangeNewCol.rgb,
  658. max(sign(1 - saturate(dif.x + dif.y + dif.z) - _ColorChangeTolerance), 0.0));
  659. #endif
  660. #if GREYSCALE_ON && !GREYSCALEOUTLINE_ON
  661. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  662. luminance = saturate(luminance + _GreyscaleLuminosity);
  663. col.rgb = half3(luminance, luminance, luminance) * _GreyscaleTintColor;
  664. #endif
  665. #if POSTERIZE_ON && !POSTERIZEOUTLINE_ON
  666. col.rgb = pow(col.rgb, _PosterizeGamma) * _PosterizeNumColors;
  667. col.rgb = floor(col.rgb) / _PosterizeNumColors;
  668. col.rgb = pow(col.rgb, 1.0 / _PosterizeGamma);
  669. #endif
  670. #if GHOST_ON
  671. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  672. col.a = saturate(luminance - _GhostTransparency) * col.a;
  673. col.rgb *= luminance + _GhostColorBoost;
  674. #endif
  675. #if INNEROUTLINE_ON
  676. half3 innerT = abs(GetPixel(0, _InnerOutlineThickness, i.uv, _MainTex) - GetPixel(0, -_InnerOutlineThickness, i.uv, _MainTex));
  677. innerT += abs(GetPixel(_InnerOutlineThickness, 0, i.uv, _MainTex) - GetPixel(-_InnerOutlineThickness, 0, i.uv, _MainTex));
  678. #if !ONLYINNEROUTLINE_ON
  679. innerT = (innerT / 2.0) * col.a * _InnerOutlineAlpha;
  680. col.rgb += length(innerT) * _InnerOutlineColor.rgb * _InnerOutlineGlow;
  681. #else
  682. innerT *= col.a * _InnerOutlineAlpha;
  683. col.rgb = length(innerT) * _InnerOutlineColor.rgb * _InnerOutlineGlow;
  684. col.a = step(0.3, col.r+col.g+col.b);
  685. #endif
  686. #endif
  687. #if HITEFFECT_ON
  688. col.rgb = lerp(col.rgb, _HitEffectColor.rgb * _HitEffectGlow, _HitEffectBlend);
  689. #endif
  690. #if GRADIENT_ON
  691. half2 tiledUvGrad = half2(uvRect.x / _MainTex_ST.x, uvRect.y / _MainTex_ST.y);
  692. half _GradBoost = 1.2;
  693. half4 vertical = lerp(lerp(_GradBotLeftCol, _GradBotRightCol, tiledUvGrad.x * _GradBoost),
  694. lerp(_GradTopLeftCol, _GradTopRightCol, tiledUvGrad.x * _GradBoost), tiledUvGrad.y * _GradBoost);
  695. col.rgb = lerp(col.rgb, vertical.rgb, _GradBlend) * col.a;
  696. #endif
  697. //OUTLINE-------------------------------------------------------------
  698. #if OUTBASE_ON
  699. #ifdef OUTBASEPIXELPERF_ON
  700. half2 destUv = half2(_OutlinePixelWidth * _MainTex_TexelSize.x, _OutlinePixelWidth * _MainTex_TexelSize.y);
  701. #else
  702. half2 destUv = half2(_OutlineWidth * _MainTex_TexelSize.x * 200, _OutlineWidth * _MainTex_TexelSize.y * 200);
  703. #endif
  704. #if OUTDIST_ON
  705. i.uvOutDistTex.x += ((globalUnscaledTime + _RandomSeed) * _OutlineDistortTexXSpeed) % 1;
  706. i.uvOutDistTex.y += ((globalUnscaledTime + _RandomSeed) * _OutlineDistortTexYSpeed) % 1;
  707. #if ATLAS_ON
  708. i.uvOutDistTex = half2((i.uvOutDistTex.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uvOutDistTex.y - _MinYUV) / (_MaxYUV - _MinYUV));
  709. #endif
  710. half outDistortAmnt = (tex2D(_OutlineDistortTex, i.uvOutDistTex).r - 0.5) * 0.2 * _OutlineDistortAmount;
  711. destUv.x += outDistortAmnt;
  712. destUv.y += outDistortAmnt;
  713. #endif
  714. half spriteLeft = tex2D(_MainTex, i.uv + half2(destUv.x, 0)).a;
  715. half spriteRight = tex2D(_MainTex, i.uv - half2(destUv.x, 0)).a;
  716. half spriteBottom = tex2D(_MainTex, i.uv + half2(0, destUv.y)).a;
  717. half spriteTop = tex2D(_MainTex, i.uv - half2(0, destUv.y)).a;
  718. half result = spriteLeft + spriteRight + spriteBottom + spriteTop;
  719. #if OUTBASE8DIR_ON
  720. half spriteTopLeft = tex2D(_MainTex, i.uv + half2(destUv.x, destUv.y)).a;
  721. half spriteTopRight = tex2D(_MainTex, i.uv + half2(-destUv.x, destUv.y)).a;
  722. half spriteBotLeft = tex2D(_MainTex, i.uv + half2(destUv.x, -destUv.y)).a;
  723. half spriteBotRight = tex2D(_MainTex, i.uv + half2(-destUv.x, -destUv.y)).a;
  724. result = result + spriteTopLeft + spriteTopRight + spriteBotLeft + spriteBotRight;
  725. #endif
  726. result = step(0.05, saturate(result));
  727. #if OUTTEX_ON
  728. i.uvOutTex.x += (globalUnscaledTime * _OutlineTexXSpeed) % 1;
  729. i.uvOutTex.y += (globalUnscaledTime * _OutlineTexYSpeed) % 1;
  730. #if ATLAS_ON
  731. i.uvOutTex = half2((i.uvOutTex.x - _MinXUV) / (_MaxXUV - _MinXUV), (i.uvOutTex.y - _MinYUV) / (_MaxYUV - _MinYUV));
  732. #endif
  733. half4 tempOutColor = tex2D(_OutlineTex, i.uvOutTex);
  734. #if OUTGREYTEXTURE_ON
  735. luminance = 0.3 * tempOutColor.r + 0.59 * tempOutColor.g + 0.11 * tempOutColor.b;
  736. tempOutColor = half4(luminance, luminance, luminance, 1);
  737. #endif
  738. tempOutColor *= _OutlineColor;
  739. _OutlineColor = tempOutColor;
  740. #endif
  741. result *= (1 - originalAlpha) *_OutlineAlpha;
  742. half4 outline = result * _OutlineColor;
  743. outline.rgb *= _OutlineGlow * 2;
  744. #if ONLYOUTLINE_ON
  745. col = outline;
  746. #else
  747. col += outline;
  748. #endif
  749. #endif
  750. //-----------------------------------------------------------------------------
  751. #if SHADOW_ON
  752. half shadowA = tex2D(_MainTex, i.uv + half2(_ShadowX, _ShadowY)).a;
  753. col.rgb += (_ShadowColor * shadowA) * (1 - col.a);
  754. col.a = max(shadowA * _ShadowAlpha * i.color.a, col.a);
  755. #endif
  756. #if GLOW_ON
  757. half4 emission;
  758. #if GLOWTEX_ON
  759. emission = tex2D(_GlowTex, i.uv);
  760. #else
  761. emission = col;
  762. #endif
  763. emission.rgb *= emission.a * col.a * _Glow * _GlowColor;
  764. col.rgb += emission.rgb;
  765. #endif
  766. #if COLORRAMP_ON && COLORRAMPOUTLINE_ON
  767. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  768. luminance = saturate(luminance + _ColorRampLuminosity);
  769. col.rgb = tex2D(_ColorRampTex, half2(luminance, 0)).rgb;
  770. #endif
  771. #if GREYSCALE_ON && GREYSCALEOUTLINE_ON
  772. luminance = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;
  773. luminance = saturate(luminance + _GreyscaleLuminosity);
  774. col.rgb = half3(luminance, luminance, luminance) * _GreyscaleTintColor;
  775. #endif
  776. #if POSTERIZE_ON && POSTERIZEOUTLINE_ON
  777. col.rgb = pow(col.rgb, _PosterizeGamma) * _PosterizeNumColors;
  778. col.rgb = floor(col.rgb) / _PosterizeNumColors;
  779. col.rgb = pow(col.rgb, 1.0 / _PosterizeGamma);
  780. #endif
  781. #if HSV_ON
  782. half3 resultHsv = half3(col.rgb);
  783. half cosHsv = _HsvBright * _HsvSaturation * cos(_HsvShift * 3.14159265 / 180);
  784. half sinHsv = _HsvBright * _HsvSaturation * sin(_HsvShift * 3.14159265 / 180);
  785. resultHsv.x = (.299 * _HsvBright + .701 * cosHsv + .168 * sinHsv) * col.x
  786. + (.587 * _HsvBright - .587 * cosHsv + .330 * sinHsv) * col.y
  787. + (.114 * _HsvBright - .114 * cosHsv - .497 * sinHsv) * col.z;
  788. resultHsv.y = (.299 * _HsvBright - .299 * cosHsv - .328 * sinHsv) *col.x
  789. + (.587 * _HsvBright + .413 * cosHsv + .035 * sinHsv) * col.y
  790. + (.114 * _HsvBright - .114 * cosHsv + .292 * sinHsv) * col.z;
  791. resultHsv.z = (.299 * _HsvBright - .3 * cosHsv + 1.25 * sinHsv) * col.x
  792. + (.587 * _HsvBright - .588 * cosHsv - 1.05 * sinHsv) * col.y
  793. + (.114 * _HsvBright + .886 * cosHsv - .203 * sinHsv) * col.z;
  794. col.rgb = resultHsv;
  795. #endif
  796. #if SHINE_ON
  797. half shineMask = tex2D(_ShineMask, i.uv).a;
  798. half lowLevel = _ShineLocation - _ShineWidth;
  799. half highLevel = _ShineLocation + _ShineWidth;
  800. half currentDistanceProjection = (i.uv.x + i.uv.y) / 2;
  801. half whitePower = 1 - (abs(currentDistanceProjection - _ShineLocation) / _ShineWidth);
  802. col.rgb += col.a * whitePower * _ShineGlow * max(sign(currentDistanceProjection - lowLevel), 0.0) * max(sign(highLevel - currentDistanceProjection), 0.0) * _ShineColor * shineMask;
  803. #endif
  804. col.a *= _Alpha;
  805. #if ALPHACUTOFF_ON
  806. clip((1 - _AlphaCutoffValue) - (1 - col.a) - 0.01);
  807. #endif
  808. #if HOLOGRAM_ON
  809. half totalHologram = _HologramStripesAmount + _HologramUnmodAmount;
  810. half hologramYCoord = ((uvRect.y + (((globalUnscaledTime + _RandomSeed) % 1) * _HologramStripesSpeed)) % totalHologram) / totalHologram;
  811. half alpha = RemapFloat(saturate(hologramYCoord - (_HologramUnmodAmount/totalHologram)), 0.0, 1.0, _HologramMinAlpha, saturate(_HologramMaxAlpha));
  812. col.a *= lerp(alpha, 1, max(sign((_HologramUnmodAmount/totalHologram) - hologramYCoord), 0.0));
  813. col.rgb *= max(1, _HologramMaxAlpha * max(sign(hologramYCoord - (_HologramUnmodAmount/totalHologram)), 0.0));
  814. #endif
  815. #if FLICKER_ON
  816. col.a *= saturate(col.a * step(frac(0.05 + ((globalUnscaledTime * 60) + _RandomSeed) * _FlickerFreq), 1 - _FlickerPercent) + _FlickerAlpha);
  817. #endif
  818. col *= _Color;
  819. return col;
  820. }
  821. ENDCG
  822. }
  823. }
  824. CustomEditor "AllIn1SpriteShader"
  825. Fallback "Sprites/Default"
  826. }