|
|
- // Made with Amplify Shader Editor
- // Available at the Unity Asset Store - http://u3d.as/y3X
- // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
-
- Shader "Hidden/PostProcess/Pixelize/CombineLayers"
- {
- Properties
- {
- _MainTex ( "Screen", 2D ) = "black" {}
- [Toggle(_INTERPOLATE_LAYERS_ON)] _INTERPOLATE_LAYERS("INTERPOLATE_LAYERS", Float) = 0
- [Toggle(_DEBUG_MASK_ON)] _DEBUG_MASK("DEBUG_MASK", Float) = 0
- }
-
- SubShader
- {
-
-
- ZTest Always
- Cull Off
- ZWrite Off
-
-
- Pass
- {
- CGPROGRAM
-
- #pragma vertex vert_img_custom
- #pragma fragment frag
- #pragma target 3.0
- #include "UnityCG.cginc"
- #pragma shader_feature _DEBUG_MASK_ON
- #pragma shader_feature _INTERPOLATE_LAYERS_ON
-
-
- struct appdata_img_custom
- {
- float4 vertex : POSITION;
- half2 texcoord : TEXCOORD0;
-
- };
-
- struct v2f_img_custom
- {
- float4 pos : SV_POSITION;
- half2 uv : TEXCOORD0;
- half2 stereoUV : TEXCOORD2;
- #if UNITY_UV_STARTS_AT_TOP
- half4 uv2 : TEXCOORD1;
- half4 stereoUV2 : TEXCOORD3;
- #endif
-
- };
-
- uniform sampler2D _MainTex;
- uniform half4 _MainTex_TexelSize;
- uniform half4 _MainTex_ST;
-
- uniform int _MaxPixelizationLevel;
- float4 CombineLayers148( sampler2D ScreenAndMaskTexture , float2 UV , int MaxLayers , out float SphereMask )
- {
- float4 color = tex2D(ScreenAndMaskTexture, UV);
- SphereMask = color.w;
- const float layerWidth = rcp(MaxLayers);
- float previousThreshold = 0.0f;
- for (int i = 1; i <= MaxLayers; ++i)
- {
- float4 layerColor = tex2Dlod(ScreenAndMaskTexture, float4(UV, 0, i));
- float newThreshold = i * layerWidth;
- float mask;
- #if defined(_INTERPOLATE_LAYERS_ON)
- mask = saturate((layerColor.w - previousThreshold) / (newThreshold - previousThreshold)); // clamped inverse lerp
- previousThreshold = newThreshold;
- #else
- mask = step(newThreshold, layerColor.w);
- #endif
- color = lerp(color, layerColor, mask);
- }
- return color;
- }
-
-
- v2f_img_custom vert_img_custom ( appdata_img_custom v )
- {
- v2f_img_custom o;
-
- o.pos = UnityObjectToClipPos ( v.vertex );
- o.uv = float4( v.texcoord.xy, 1, 1 );
-
- #if UNITY_UV_STARTS_AT_TOP
- o.uv2 = float4( v.texcoord.xy, 1, 1 );
- o.stereoUV2 = UnityStereoScreenSpaceUVAdjust ( o.uv2, _MainTex_ST );
-
- if ( _MainTex_TexelSize.y < 0.0 )
- o.uv.y = 1.0 - o.uv.y;
- #endif
- o.stereoUV = UnityStereoScreenSpaceUVAdjust ( o.uv, _MainTex_ST );
- return o;
- }
-
- half4 frag ( v2f_img_custom i ) : SV_Target
- {
- #ifdef UNITY_UV_STARTS_AT_TOP
- half2 uv = i.uv2;
- half2 stereoUV = i.stereoUV2;
- #else
- half2 uv = i.uv;
- half2 stereoUV = i.stereoUV;
- #endif
-
- half4 finalColor;
-
- // ase common template code
- sampler2D ScreenAndMaskTexture148 = _MainTex;
- float2 UV148 = i.uv.xy;
- int MaxLayers148 = _MaxPixelizationLevel;
- float SphereMask148 = 0.0;
- float4 localCombineLayers148 = CombineLayers148( ScreenAndMaskTexture148 , UV148 , MaxLayers148 , SphereMask148 );
- #ifdef _INTERPOLATE_LAYERS_ON
- float4 staticSwitch153 = localCombineLayers148;
- #else
- float4 staticSwitch153 = localCombineLayers148;
- #endif
- float3 temp_cast_0 = (SphereMask148).xxx;
- float3 temp_cast_1 = (SphereMask148).xxx;
- float3 gammaToLinear154 = GammaToLinearSpace( temp_cast_1 );
- #ifdef _DEBUG_MASK_ON
- float4 staticSwitch145 = float4( gammaToLinear154 , 0.0 );
- #else
- float4 staticSwitch145 = staticSwitch153;
- #endif
-
-
- finalColor = staticSwitch145;
-
- return finalColor;
- }
- ENDCG
- }
- }
- CustomEditor "ASEMaterialInspector"
-
-
- }
- /*ASEBEGIN
- Version=16304
- 2027;92;856;740;-1823.932;1188.114;1.696211;False;False
- Node;AmplifyShaderEditor.TexCoordVertexDataNode;2;2008.631,-476.6076;Float;False;0;2;0;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
- Node;AmplifyShaderEditor.TemplateShaderPropertyNode;1;2040.631,-572.6075;Float;False;0;0;_MainTex;Shader;0;5;SAMPLER2D;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
- Node;AmplifyShaderEditor.IntNode;151;1960.632,-332.6076;Float;False;Global;_MaxPixelizationLevel;_MaxPixelizationLevel;1;0;Create;True;0;0;False;0;5;5;0;1;INT;0
- Node;AmplifyShaderEditor.CustomExpressionNode;148;2280.631,-508.6076;Float;False;float4 color = tex2D(ScreenAndMaskTexture, UV)@$SphereMask = color.w@$const float layerWidth = rcp(MaxLayers)@$float previousThreshold = 0.0f@$$for (int i = 1@ i <= MaxLayers@ ++i)${$ float4 layerColor = tex2Dlod(ScreenAndMaskTexture, float4(UV, 0, i))@$ float newThreshold = i * layerWidth@$ float mask@$ #if defined(_INTERPOLATE_LAYERS_ON)$ mask = saturate((layerColor.w - previousThreshold) / (newThreshold - previousThreshold))@ // clamped inverse lerp $ previousThreshold = newThreshold@$ #else$ mask = step(newThreshold, layerColor.w)@$ #endif$ color = lerp(color, layerColor, mask)@$}$$return color@;4;False;4;True;ScreenAndMaskTexture;SAMPLER2D;;In;;Float;True;UV;FLOAT2;0,0;In;;Float;True;MaxLayers;INT;5;In;;Float;True;SphereMask;FLOAT;0;Out;;Float;Combine Layers;True;False;0;4;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;INT;5;False;3;FLOAT;0;False;2;FLOAT4;0;FLOAT;4
- Node;AmplifyShaderEditor.GammaToLinearNode;154;2819.606,-438.3885;Float;False;0;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0
- Node;AmplifyShaderEditor.StaticSwitch;153;2762.428,-549.3163;Float;False;Property;_INTERPOLATE_LAYERS;INTERPOLATE_LAYERS;0;0;Create;True;0;0;False;0;0;0;0;True;;Toggle;2;Key0;Key1;9;1;FLOAT4;0,0,0,0;False;0;FLOAT4;0,0,0,0;False;2;FLOAT4;0,0,0,0;False;3;FLOAT4;0,0,0,0;False;4;FLOAT4;0,0,0,0;False;5;FLOAT4;0,0,0,0;False;6;FLOAT4;0,0,0,0;False;7;FLOAT4;0,0,0,0;False;8;FLOAT4;0,0,0,0;False;1;FLOAT4;0
- Node;AmplifyShaderEditor.StaticSwitch;145;3264.128,-518.7849;Float;False;Property;_DEBUG_MASK;DEBUG_MASK;1;0;Create;True;0;0;False;0;0;0;0;True;;Toggle;2;Key0;Key1;9;1;FLOAT4;0,0,0,0;False;0;FLOAT4;0,0,0,0;False;2;FLOAT4;0,0,0,0;False;3;FLOAT4;0,0,0,0;False;4;FLOAT4;0,0,0,0;False;5;FLOAT4;0,0,0,0;False;6;FLOAT4;0,0,0,0;False;7;FLOAT4;0,0,0,0;False;8;FLOAT4;0,0,0,0;False;1;FLOAT4;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;0;3632,-512;Float;False;True;2;Float;ASEMaterialInspector;0;2;Hidden/PostProcess/Pixelize/CombineLayers;c71b220b631b6344493ea3cf87110c93;True;SubShader 0 Pass 0;0;0;SubShader 0 Pass 0;1;False;False;False;True;2;False;-1;False;False;True;2;False;-1;True;7;False;-1;False;True;0;False;0;False;False;False;False;False;False;False;False;False;False;True;2;0;;0;0;Standard;0;0;1;True;False;1;0;FLOAT4;0,0,0,0;False;0
- WireConnection;148;0;1;0
- WireConnection;148;1;2;0
- WireConnection;148;2;151;0
- WireConnection;154;0;148;4
- WireConnection;153;1;148;0
- WireConnection;153;0;148;0
- WireConnection;145;1;153;0
- WireConnection;145;0;154;0
- WireConnection;0;0;145;0
- ASEEND*/
- //CHKSM=E249BAD91DA4F83695DA86709273EBF5F3CED785
|