Advertisement
Guest User

Untitled

a guest
Sep 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.53 KB | None | 0 0
  1. Shader "Neen/SSFX-Release" {
  2.  
  3. Properties {
  4. [Header(Screen Shift)]
  5. _intensity ("Vertical Shift", Range(-50, 50)) = 0
  6. _intensity2 ("Horizontal Shift", Range(-50, 50)) = 0
  7.  
  8. _yper ("Y-period", Range(-200, 200)) = 1
  9. _xper ("X-period", Range(-200, 200)) = 1
  10.  
  11. [Space(20)]
  12. [Header(Magnification)]
  13. [Space(5)]
  14. [Toggle(MAGNIFIED_ON)]_MG("Magnified Toggle", Float) = 0.0 //Toggle magnification on or off
  15. [Toggle(MAGNIFY_SMOOTH1)]_MGS1("Magnification Smoothing", Float) = 0.0 //Toggle magnification smoothing within vert
  16. [Toggle(MAGNIFY_SMOOTH)]_MGS2("Magnification Smoothing Alternative", Float) = 0.0 //Toggle magnification smoothing within frag
  17. [Space(5)]
  18. _mag("Magnification", Range (1.0, 50.0)) = 8
  19.  
  20. [Space(20)]
  21. [Header(Blur)]
  22. [Space(5)]
  23. [Toggle(BLUR_ENABLED)]_BLUR("Blur Toggle", Float) = 0.0 //Toggle blur on or off
  24. [Toggle(BLUR_FALLOFF)]_BLURFO("Blur Falloff Toggle", Float) = 0.0 //Toggle blur falloff on or off
  25. [Space(5)]
  26. _blurfactor ("Blur Factor", Range(0, 5)) = 1.0
  27.  
  28. [Space(20)]
  29. [Header(Falloff)]
  30. [Space(5)]
  31. _max ("Max Range", Range (0.0, 20.0)) = 3.0
  32. _min ("Minimum Range", Range (0.0, 20.0)) = 0.0
  33.  
  34.  
  35. [Space(20)]
  36. [Header(Color Tint)]
  37. [Space(5)]
  38. _redvalue ("Red Tint", Range (0.0, 25.0)) = 0.3
  39. _greenvalue ("Green Tint", Range (0.0, 25.0)) = 0.0
  40. _bluevalue ("Blue Tint", Range (0.0, 25.0)) = 0.0
  41. [Toggle(COLOR_BLACK_OUT)]_blackout ("Color Fade", Float) = 0.0 //Toggle color to fade with black tint
  42. _blackvalue ("Black Tint", Range (0.0, 1.0)) = 0.0
  43.  
  44. [Space (15)]
  45. [Toggle(COLOR_INVERT)]_CINV ("Invert Colors", Float) = 0.0 //Toggles Color Inversion
  46. [Toggle(COLIN_FO)]_CIFO ("Inversin Falloff Toggle", Float) = 0.0 //Toggles Color Inversion falloff
  47. _redinv("Red Invert Value", Range (0.0, 25.0)) = 1.0
  48. _greeninv("Green Invert Value", Range (0.0, 25.0)) = 1.0
  49. _blueinv("Blue Invert Value", Range (0.0, 25.0)) = 1.0
  50.  
  51. [Header(Ignore me OwO)]
  52. _slider ("Slider ", Range (0.0, 100.0)) = 0.0
  53.  
  54. }
  55.  
  56. SubShader {
  57.  
  58. Tags { "Queue"="Overlay+4001" "RenderType"="Transparent" }
  59. //Blend SrcAlpha OneMinusSrcAlpha
  60. Cull Off
  61. ZTest Off
  62. ZWrite On
  63.  
  64. GrabPass {
  65. Tags { "Queue"="Overlay+1" }
  66. "_GP2"
  67. }
  68.  
  69. Pass {
  70. Tags { "Queue"="Overlay+1" }
  71.  
  72.  
  73. CGPROGRAM
  74. #pragma vertex vert
  75. #pragma fragment frag
  76. #pragma shader_feature COLOR_BLACK_OUT
  77. #pragma shader_feature MAGNIFIED_ON
  78. #pragma shader_feature MAGNIFY_SMOOTH1
  79. #pragma shader_feature MAGNIFY_SMOOTH2
  80. #pragma shader_feature INVERT_VIEW
  81. #pragma shader_feature BLUR_ENABLED
  82. #pragma shader_feature BLUR_FALLOFF
  83. #pragma shader_feature COLOR_INVERT
  84. #pragma shader_feature COLIN_FO
  85. #include "UnityCG.cginc"
  86.  
  87. struct v2f {
  88. float4 pos : SV_POSITION;
  89. half4 grabPos : TEXCOORD0;
  90. float4 worldPos : TEXCOORD1;
  91. float4 dist: TEXCOORD2;
  92. float4 uv : TEXCOORD3;
  93. float3 viewDir : TEXCOORD4;
  94. float ang : TEXCOORD5;
  95. };
  96.  
  97. sampler2D _GP2;
  98. float4 _GP2_TexelSize;
  99.  
  100. half _intensity;
  101. half _intensity2;
  102.  
  103. half _yper;
  104. half _xper;
  105.  
  106. half _max;
  107. half _min;
  108.  
  109. half _blurfactor;
  110.  
  111. half _mag;
  112.  
  113. half _redvalue;
  114. half _greenvalue;
  115. half _bluevalue;
  116. half _blackvalue;
  117.  
  118. half _redinv;
  119. half _greeninv;
  120. half _blueinv;
  121.  
  122.  
  123. //half _slider;
  124.  
  125. v2f vert(float4 pos : POSITION, appdata_base v) {
  126. v2f o;
  127. //cameraPos = mul(unity_WorldToObject, cameraPos);
  128.  
  129.  
  130. float4 abspos = pos;
  131. float4 worldPos2 = mul(unity_CameraToWorld, abspos); // Transform View to World
  132. float4 objectPos2 = mul(unity_WorldToObject, worldPos2); //Transform Object to screen dimensions
  133.  
  134.  
  135. o.dist = distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, float4(0,0,0,1)));
  136. o.pos = UnityObjectToClipPos(objectPos2);
  137. o.pos = o.pos - o.pos*step(_max, o.dist);
  138. //o.pos = UnityObjectToClipPos(v.vertex);
  139. o.grabPos = ComputeGrabScreenPos(o.pos);
  140. o.worldPos = worldPos2;
  141. o.viewDir = mul(_WorldSpaceCameraPos, float4(0,0,1,1));
  142.  
  143. half falloff2 = pow(min(1, 1 - (1/(_max - _min))*(o.dist - _min)), 2);
  144.  
  145. //float4 uv_center = ComputeGrabScreenPos(UnityObjectToClipPos(float4(0, 0, 0, 1)));
  146. half4 uv_center = ComputeGrabScreenPos(UnityObjectToClipPos(v.vertex));
  147. half4 UVDif = ComputeGrabScreenPos(o.pos) - uv_center;
  148.  
  149. //float3 forward = normalize(o.viewDir.xyz);
  150. //float4 forward = mul(unity_CameraToWorld, float4(0,0,1,0));
  151. //float4 verttocam = mul(unity_ObjectToWorld, float4(0,0,1,0)) - forward;
  152.  
  153. //float DotDiff = abs(dot(forward,verttocam));
  154.  
  155. #if UNITY_SINGLE_PASS_STEREO
  156. float4 cameraPos = float4((unity_StereoWorldSpaceCameraPos[0] + unity_StereoWorldSpaceCameraPos[1])*0.5, 1);
  157. #else
  158. float4 cameraPos = float4(_WorldSpaceCameraPos,1);
  159. #endif
  160.  
  161. #if UNITY_SINGLE_PASS_STEREO
  162. float3 p1 = mul(unity_StereoCameraToWorld[0], float4(0,0,1,1));
  163. float3 p2 = mul(unity_StereoCameraToWorld[0], float4(0,0,0,1));
  164. #else
  165. float3 p1 = mul(unity_CameraToWorld, float4(0,0,1,1));
  166. float3 p2 = mul(unity_CameraToWorld, float4(0,0,0,1));
  167. #endif
  168.  
  169. float4 wpos = mul(unity_ObjectToWorld, float4(0,0,0,1));
  170. float3 forward = normalize(p2-p1);
  171. float3 cameraDir = normalize(cameraPos.xyz - wpos.xyz);
  172.  
  173. o.ang = saturate(dot(forward, cameraDir));
  174. float dotang1 = saturate(1.5*cos(clamp(acos(o.ang)*10*max(1,o.dist*0.25), 0, 1.58)));
  175.  
  176. //UVDif /= lerp(_mag,(1-DotDiff),.5);
  177. UVDif /= _mag;
  178. #ifdef MAGNIFY_SMOOTH1
  179. o.uv = (uv_center + UVDif)*falloff2*dotang1;
  180. #else
  181. o.uv = (uv_center + UVDif)*falloff2;
  182. #endif
  183. //o.uv = lerp(uv_center,(uv_center + UVDif),1);
  184. //o.uv = (uv_center + UVDif);
  185.  
  186.  
  187.  
  188.  
  189.  
  190. return o;
  191. }
  192.  
  193.  
  194.  
  195. half4 frag(v2f i) : COLOR {
  196. #if UNITY_SINGLE_PASS_STEREO
  197. int factor = 250;
  198. #else
  199. int factor = 125;
  200. #endif
  201.  
  202. float dotang2 = saturate(1.5*cos(clamp(acos(i.ang)*10*max(1,i.dist*0.25), 0, 1.58)));
  203. #if MAGNIFY_SMOOTH2
  204. i.uv = lerp(i.grabPos,i.uv,dotang2);
  205. #endif
  206.  
  207. half falloff = pow(min(1, 1 - (1/(_max - _min))*(i.dist - _min)), 2);
  208. i.grabPos.y = i.grabPos.y + sin(_Time[1]*_yper)*(_intensity/factor)*falloff;
  209. i.grabPos.x = i.grabPos.x + sin(_Time[1]*_xper)*(_intensity2/factor)*falloff*(_ScreenParams[1]/_ScreenParams[0]);
  210. //i.grabPos.y = i.grabPos.y / (_intensity);
  211. //i.grabPos.x = i.grabPos.x / (_intensity2)*(_ScreenParams[1]/_ScreenParams[0]);
  212.  
  213. //float3 CamDir = normalize(i.viewDir.xyz);
  214. //float3 ObjCen = normalize(i.dist.xyz-i.viewDir.xyz);
  215. //float4 DotDif = dot(CamDir,ObjCen);
  216.  
  217.  
  218. #ifdef MAGNIFIED_ON
  219. float4 shakeZoom = lerp(i.uv,i.grabPos,.05);
  220. #else
  221. float4 shakeZoom = i.grabPos;
  222. #endif
  223.  
  224. //float4 shakeZoom = lerp(i.uv,i.grabPos,.05);
  225. //float4 shakeZoomG = shakeZoom + float4(texdisp2.xy,0,0);
  226.  
  227.  
  228. float4 color1 = tex2Dproj(_GP2, UNITY_PROJ_COORD(shakeZoom));
  229. float4 color = lerp(float4(0,0,0,0),color1,(1-_blackvalue));
  230. //float4 color = lerp(color2,color1,.2);
  231. //float color2 = tex2Dproj(_GP2, UNITY_PROJ_COORD(shakeZoom)) * float4(0,0,0,0);
  232. //float4 color = lerp(color1,color2,float4(.52,0,0,0));
  233. //float4 color = lerp(float4 (SE.r, colorw.g,color11.r,0),nK.rgb,.5);
  234. //float4 color = lerp(color1,tex2Dproj(_GP2, UNITY_PROJ_COORD(shakeZoomG)),0.4);
  235.  
  236.  
  237. //float4 color = tex2Dproj(_GP2, UNITY_PROJ_COORD(shakeZoom));
  238. half4 invertcol = float4(_redinv,_greeninv,_blueinv,1);
  239.  
  240. //Add in color
  241. #ifdef COLOR_BLACK_OUT
  242. color.rgb += lerp (float3(0,0,0),float3(_redvalue*falloff,_greenvalue*falloff,_bluevalue*falloff),((1-_blackvalue)));
  243. #else
  244. color.rgb += float3(_redvalue*falloff,_greenvalue*falloff,_bluevalue*falloff);
  245. #endif
  246.  
  247. //float4 color = tex2Dproj(_GP2, UNITY_PROJ_COORD(i.uv)) + float4 (.10,0,0,0);
  248. //float4 color = (N,e,e,n)
  249. //return tex2Dproj(_GP2, UNITY_PROJ_COORD(i.grabPos));
  250.  
  251. #ifdef BLUR_ENABLED
  252. #ifdef BLUR_FALLOFF
  253. #define ADDPIXEL(weight,kernelX) tex2Dproj(_GP2, UNITY_PROJ_COORD(float4(shakeZoom.x + _GP2_TexelSize.x * kernelX * _blurfactor, shakeZoom.y, shakeZoom.z, shakeZoom.w))) * weight * falloff * _blackvalue
  254. #else
  255. #define ADDPIXEL(weight,kernelX) tex2Dproj(_GP2, UNITY_PROJ_COORD(float4(shakeZoom.x + _GP2_TexelSize.x * kernelX * _blurfactor, shakeZoom.y, shakeZoom.z, shakeZoom.w))) * weight
  256. #endif
  257. color += ADDPIXEL(0.05, 4.0);
  258. color += ADDPIXEL(0.09, 3.0);
  259. color += ADDPIXEL(0.12, 2.0);
  260. color += ADDPIXEL(0.15, 1.0);
  261. color += ADDPIXEL(0.18, 0.0);
  262. color += ADDPIXEL(0.15, -1.0);
  263. color += ADDPIXEL(0.12, -2.0);
  264. color += ADDPIXEL(0.09, -3.0);
  265. color += ADDPIXEL(0.05, -4.0);
  266. #ifdef COLOR_INVERT
  267. #ifdef COLIN_FO
  268. return ((invertcol-color)*falloff)+(color*(1-falloff));
  269. #else
  270. return (invertcol-color);
  271. #endif
  272. #else
  273. return color;
  274. #endif
  275. #else
  276. #ifdef COLOR_INVERT
  277. #ifdef COLIN_FO
  278. return ((invertcol-color)*falloff)+(color*(1-falloff));
  279. #else
  280. return (invertcol-color);
  281. #endif
  282. #else
  283. return color;
  284. #endif
  285. #endif
  286.  
  287. }
  288. ENDCG
  289. }
  290. }
  291. FallBack "Diffuse"
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement