Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Shader "Neen/SSFX-Release" {
- Properties {
- [Header(Screen Shift)]
- _intensity ("Vertical Shift", Range(-50, 50)) = 0
- _intensity2 ("Horizontal Shift", Range(-50, 50)) = 0
- _yper ("Y-period", Range(-200, 200)) = 1
- _xper ("X-period", Range(-200, 200)) = 1
- [Space(20)]
- [Header(Magnification)]
- [Space(5)]
- [Toggle(MAGNIFIED_ON)]_MG("Magnified Toggle", Float) = 0.0 //Toggle magnification on or off
- [Toggle(MAGNIFY_SMOOTH1)]_MGS1("Magnification Smoothing", Float) = 0.0 //Toggle magnification smoothing within vert
- [Toggle(MAGNIFY_SMOOTH)]_MGS2("Magnification Smoothing Alternative", Float) = 0.0 //Toggle magnification smoothing within frag
- [Space(5)]
- _mag("Magnification", Range (1.0, 50.0)) = 8
- [Space(20)]
- [Header(Blur)]
- [Space(5)]
- [Toggle(BLUR_ENABLED)]_BLUR("Blur Toggle", Float) = 0.0 //Toggle blur on or off
- [Toggle(BLUR_FALLOFF)]_BLURFO("Blur Falloff Toggle", Float) = 0.0 //Toggle blur falloff on or off
- [Space(5)]
- _blurfactor ("Blur Factor", Range(0, 5)) = 1.0
- [Space(20)]
- [Header(Falloff)]
- [Space(5)]
- _max ("Max Range", Range (0.0, 20.0)) = 3.0
- _min ("Minimum Range", Range (0.0, 20.0)) = 0.0
- [Space(20)]
- [Header(Color Tint)]
- [Space(5)]
- _redvalue ("Red Tint", Range (0.0, 25.0)) = 0.3
- _greenvalue ("Green Tint", Range (0.0, 25.0)) = 0.0
- _bluevalue ("Blue Tint", Range (0.0, 25.0)) = 0.0
- [Toggle(COLOR_BLACK_OUT)]_blackout ("Color Fade", Float) = 0.0 //Toggle color to fade with black tint
- _blackvalue ("Black Tint", Range (0.0, 1.0)) = 0.0
- [Space (15)]
- [Toggle(COLOR_INVERT)]_CINV ("Invert Colors", Float) = 0.0 //Toggles Color Inversion
- [Toggle(COLIN_FO)]_CIFO ("Inversin Falloff Toggle", Float) = 0.0 //Toggles Color Inversion falloff
- _redinv("Red Invert Value", Range (0.0, 25.0)) = 1.0
- _greeninv("Green Invert Value", Range (0.0, 25.0)) = 1.0
- _blueinv("Blue Invert Value", Range (0.0, 25.0)) = 1.0
- [Header(Ignore me OwO)]
- _slider ("Slider ", Range (0.0, 100.0)) = 0.0
- }
- SubShader {
- Tags { "Queue"="Overlay+4001" "RenderType"="Transparent" }
- //Blend SrcAlpha OneMinusSrcAlpha
- Cull Off
- ZTest Off
- ZWrite On
- GrabPass {
- Tags { "Queue"="Overlay+1" }
- "_GP2"
- }
- Pass {
- Tags { "Queue"="Overlay+1" }
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #pragma shader_feature COLOR_BLACK_OUT
- #pragma shader_feature MAGNIFIED_ON
- #pragma shader_feature MAGNIFY_SMOOTH1
- #pragma shader_feature MAGNIFY_SMOOTH2
- #pragma shader_feature INVERT_VIEW
- #pragma shader_feature BLUR_ENABLED
- #pragma shader_feature BLUR_FALLOFF
- #pragma shader_feature COLOR_INVERT
- #pragma shader_feature COLIN_FO
- #include "UnityCG.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- half4 grabPos : TEXCOORD0;
- float4 worldPos : TEXCOORD1;
- float4 dist: TEXCOORD2;
- float4 uv : TEXCOORD3;
- float3 viewDir : TEXCOORD4;
- float ang : TEXCOORD5;
- };
- sampler2D _GP2;
- float4 _GP2_TexelSize;
- half _intensity;
- half _intensity2;
- half _yper;
- half _xper;
- half _max;
- half _min;
- half _blurfactor;
- half _mag;
- half _redvalue;
- half _greenvalue;
- half _bluevalue;
- half _blackvalue;
- half _redinv;
- half _greeninv;
- half _blueinv;
- //half _slider;
- v2f vert(float4 pos : POSITION, appdata_base v) {
- v2f o;
- //cameraPos = mul(unity_WorldToObject, cameraPos);
- float4 abspos = pos;
- float4 worldPos2 = mul(unity_CameraToWorld, abspos); // Transform View to World
- float4 objectPos2 = mul(unity_WorldToObject, worldPos2); //Transform Object to screen dimensions
- o.dist = distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, float4(0,0,0,1)));
- o.pos = UnityObjectToClipPos(objectPos2);
- o.pos = o.pos - o.pos*step(_max, o.dist);
- //o.pos = UnityObjectToClipPos(v.vertex);
- o.grabPos = ComputeGrabScreenPos(o.pos);
- o.worldPos = worldPos2;
- o.viewDir = mul(_WorldSpaceCameraPos, float4(0,0,1,1));
- half falloff2 = pow(min(1, 1 - (1/(_max - _min))*(o.dist - _min)), 2);
- //float4 uv_center = ComputeGrabScreenPos(UnityObjectToClipPos(float4(0, 0, 0, 1)));
- half4 uv_center = ComputeGrabScreenPos(UnityObjectToClipPos(v.vertex));
- half4 UVDif = ComputeGrabScreenPos(o.pos) - uv_center;
- //float3 forward = normalize(o.viewDir.xyz);
- //float4 forward = mul(unity_CameraToWorld, float4(0,0,1,0));
- //float4 verttocam = mul(unity_ObjectToWorld, float4(0,0,1,0)) - forward;
- //float DotDiff = abs(dot(forward,verttocam));
- #if UNITY_SINGLE_PASS_STEREO
- float4 cameraPos = float4((unity_StereoWorldSpaceCameraPos[0] + unity_StereoWorldSpaceCameraPos[1])*0.5, 1);
- #else
- float4 cameraPos = float4(_WorldSpaceCameraPos,1);
- #endif
- #if UNITY_SINGLE_PASS_STEREO
- float3 p1 = mul(unity_StereoCameraToWorld[0], float4(0,0,1,1));
- float3 p2 = mul(unity_StereoCameraToWorld[0], float4(0,0,0,1));
- #else
- float3 p1 = mul(unity_CameraToWorld, float4(0,0,1,1));
- float3 p2 = mul(unity_CameraToWorld, float4(0,0,0,1));
- #endif
- float4 wpos = mul(unity_ObjectToWorld, float4(0,0,0,1));
- float3 forward = normalize(p2-p1);
- float3 cameraDir = normalize(cameraPos.xyz - wpos.xyz);
- o.ang = saturate(dot(forward, cameraDir));
- float dotang1 = saturate(1.5*cos(clamp(acos(o.ang)*10*max(1,o.dist*0.25), 0, 1.58)));
- //UVDif /= lerp(_mag,(1-DotDiff),.5);
- UVDif /= _mag;
- #ifdef MAGNIFY_SMOOTH1
- o.uv = (uv_center + UVDif)*falloff2*dotang1;
- #else
- o.uv = (uv_center + UVDif)*falloff2;
- #endif
- //o.uv = lerp(uv_center,(uv_center + UVDif),1);
- //o.uv = (uv_center + UVDif);
- return o;
- }
- half4 frag(v2f i) : COLOR {
- #if UNITY_SINGLE_PASS_STEREO
- int factor = 250;
- #else
- int factor = 125;
- #endif
- float dotang2 = saturate(1.5*cos(clamp(acos(i.ang)*10*max(1,i.dist*0.25), 0, 1.58)));
- #if MAGNIFY_SMOOTH2
- i.uv = lerp(i.grabPos,i.uv,dotang2);
- #endif
- half falloff = pow(min(1, 1 - (1/(_max - _min))*(i.dist - _min)), 2);
- i.grabPos.y = i.grabPos.y + sin(_Time[1]*_yper)*(_intensity/factor)*falloff;
- i.grabPos.x = i.grabPos.x + sin(_Time[1]*_xper)*(_intensity2/factor)*falloff*(_ScreenParams[1]/_ScreenParams[0]);
- //i.grabPos.y = i.grabPos.y / (_intensity);
- //i.grabPos.x = i.grabPos.x / (_intensity2)*(_ScreenParams[1]/_ScreenParams[0]);
- //float3 CamDir = normalize(i.viewDir.xyz);
- //float3 ObjCen = normalize(i.dist.xyz-i.viewDir.xyz);
- //float4 DotDif = dot(CamDir,ObjCen);
- #ifdef MAGNIFIED_ON
- float4 shakeZoom = lerp(i.uv,i.grabPos,.05);
- #else
- float4 shakeZoom = i.grabPos;
- #endif
- //float4 shakeZoom = lerp(i.uv,i.grabPos,.05);
- //float4 shakeZoomG = shakeZoom + float4(texdisp2.xy,0,0);
- float4 color1 = tex2Dproj(_GP2, UNITY_PROJ_COORD(shakeZoom));
- float4 color = lerp(float4(0,0,0,0),color1,(1-_blackvalue));
- //float4 color = lerp(color2,color1,.2);
- //float color2 = tex2Dproj(_GP2, UNITY_PROJ_COORD(shakeZoom)) * float4(0,0,0,0);
- //float4 color = lerp(color1,color2,float4(.52,0,0,0));
- //float4 color = lerp(float4 (SE.r, colorw.g,color11.r,0),nK.rgb,.5);
- //float4 color = lerp(color1,tex2Dproj(_GP2, UNITY_PROJ_COORD(shakeZoomG)),0.4);
- //float4 color = tex2Dproj(_GP2, UNITY_PROJ_COORD(shakeZoom));
- half4 invertcol = float4(_redinv,_greeninv,_blueinv,1);
- //Add in color
- #ifdef COLOR_BLACK_OUT
- color.rgb += lerp (float3(0,0,0),float3(_redvalue*falloff,_greenvalue*falloff,_bluevalue*falloff),((1-_blackvalue)));
- #else
- color.rgb += float3(_redvalue*falloff,_greenvalue*falloff,_bluevalue*falloff);
- #endif
- //float4 color = tex2Dproj(_GP2, UNITY_PROJ_COORD(i.uv)) + float4 (.10,0,0,0);
- //float4 color = (N,e,e,n)
- //return tex2Dproj(_GP2, UNITY_PROJ_COORD(i.grabPos));
- #ifdef BLUR_ENABLED
- #ifdef BLUR_FALLOFF
- #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
- #else
- #define ADDPIXEL(weight,kernelX) tex2Dproj(_GP2, UNITY_PROJ_COORD(float4(shakeZoom.x + _GP2_TexelSize.x * kernelX * _blurfactor, shakeZoom.y, shakeZoom.z, shakeZoom.w))) * weight
- #endif
- color += ADDPIXEL(0.05, 4.0);
- color += ADDPIXEL(0.09, 3.0);
- color += ADDPIXEL(0.12, 2.0);
- color += ADDPIXEL(0.15, 1.0);
- color += ADDPIXEL(0.18, 0.0);
- color += ADDPIXEL(0.15, -1.0);
- color += ADDPIXEL(0.12, -2.0);
- color += ADDPIXEL(0.09, -3.0);
- color += ADDPIXEL(0.05, -4.0);
- #ifdef COLOR_INVERT
- #ifdef COLIN_FO
- return ((invertcol-color)*falloff)+(color*(1-falloff));
- #else
- return (invertcol-color);
- #endif
- #else
- return color;
- #endif
- #else
- #ifdef COLOR_INVERT
- #ifdef COLIN_FO
- return ((invertcol-color)*falloff)+(color*(1-falloff));
- #else
- return (invertcol-color);
- #endif
- #else
- return color;
- #endif
- #endif
- }
- ENDCG
- }
- }
- FallBack "Diffuse"
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement