diff options
Diffstat (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/Resources/aline_outline.shader')
-rw-r--r-- | Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/Resources/aline_outline.shader | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/Resources/aline_outline.shader b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/Resources/aline_outline.shader new file mode 100644 index 0000000..b95a6f8 --- /dev/null +++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/Resources/aline_outline.shader @@ -0,0 +1,165 @@ +Shader "Hidden/ALINE/Outline" { + Properties { + _Color ("Main Color", Color) = (1,1,1,0.5) + _FadeColor ("Fade Color", Color) = (1,1,1,0.3) + _PixelWidth ("Width (px)", Float) = 4 + _LengthPadding ("Length Padding (px)", Float) = 0 + } + + HLSLINCLUDE + float4 _Color; + float4 _FadeColor; + float _PixelWidth; + float _LengthPadding; + + // Number of screen pixels that the _Falloff texture corresponds to + static const float FalloffTextureScreenPixels = 2; + + #pragma vertex vert + #pragma fragment frag + ENDHLSL + + // First subshader is for the HighDefinitionRenderPipeline. + // The shader contents are identical except that it defines UNTIY_HDRP. + SubShader { + PackageRequirements { + "com.unity.render-pipelines.high-definition": "0.1" + } + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + Offset -3, -50 + Tags { "IgnoreProjector"="True" "RenderType"="Overlay" "RenderPipeline"="HighDefinitionRenderPipeline" } + // With line joins some triangles can actually end up backwards, so disable culling + Cull Off + + // Render behind objects + Pass { + ZTest Greater + + HLSLPROGRAM + #define UNITY_HDRP + #include "aline_common_line.cginc" + + line_v2f vert (appdata_color v, out float4 outpos : SV_POSITION) { + return line_vert_raw(v, _Color * _FadeColor, _PixelWidth, _LengthPadding, outpos); + } + + half4 frag (line_v2f i, float4 screenPos : VPOS) : COLOR { + return i.col * float4(1,1,1, calculateLineAlpha(i, i.lineWidth, FalloffTextureScreenPixels)); + } + ENDHLSL + } + + // First pass writes to the Z buffer where the lines have a pretty high opacity + Pass { + ZTest LEqual + ZWrite On + ColorMask 0 + + HLSLPROGRAM + #define UNITY_HDRP + #include "aline_common_line.cginc" + + line_v2f vert (appdata_color v, out float4 outpos : SV_POSITION) { + line_v2f o = line_vert_raw(v, float4(1,1,1,1), _PixelWidth, _LengthPadding, outpos); + o.col = float4(1,1,1,1); + return o; + } + + half4 frag (line_v2f i, float4 screenPos : VPOS) : SV_Target { + float a = calculateLineAlpha(i, i.lineWidth, FalloffTextureScreenPixels); + if (a < 0.7) discard; + return float4(1,1,1,a); + } + ENDHLSL + } + + // Render in front of objects + Pass { + ZTest LEqual + + HLSLPROGRAM + #define UNITY_HDRP + #include "aline_common_line.cginc" + + line_v2f vert (appdata_color v, out float4 outpos : SV_POSITION) { + return line_vert_raw(v, _Color, _PixelWidth, _LengthPadding, outpos); + } + + half4 frag (line_v2f i, float4 screenPos : VPOS) : SV_Target { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + return i.col * float4(1,1,1, calculateLineAlpha(i, i.lineWidth, FalloffTextureScreenPixels)); + } + ENDHLSL + } + } + + + SubShader { + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + Offset -3, -50 + Tags { "IgnoreProjector"="True" "RenderType"="Overlay" } + // With line joins some triangles can actually end up backwards, so disable culling + Cull Off + + // Render behind objects + Pass { + ZTest Greater + + HLSLPROGRAM + #include "aline_common_line.cginc" + + line_v2f vert (appdata_color v, out float4 outpos : SV_POSITION) { + return line_vert_raw(v, _Color * _FadeColor, _PixelWidth, _LengthPadding, outpos); + } + + half4 frag (line_v2f i, float4 screenPos : VPOS) : SV_Target { + return i.col * float4(1,1,1, calculateLineAlpha(i, i.lineWidth, FalloffTextureScreenPixels)); + } + ENDHLSL + } + + // First pass writes to the Z buffer where the lines have a pretty high opacity + Pass { + ZTest LEqual + ZWrite On + ColorMask 0 + + HLSLPROGRAM + #include "aline_common_line.cginc" + + line_v2f vert (appdata_color v, out float4 outpos : SV_POSITION) { + line_v2f o = line_vert_raw(v, float4(1,1,1,1), _PixelWidth, _LengthPadding, outpos); + o.col = float4(1,1,1,1); + return o; + } + + half4 frag (line_v2f i, float4 screenPos : VPOS) : SV_Target { + float a = calculateLineAlpha(i, i.lineWidth, FalloffTextureScreenPixels); + if (a < 0.7) discard; + return float4(1,1,1,a); + } + ENDHLSL + } + + // Render in front of objects + Pass { + ZTest LEqual + + HLSLPROGRAM + #include "aline_common_line.cginc" + + line_v2f vert (appdata_color v, out float4 outpos : SV_POSITION) { + return line_vert_raw(v, _Color, _PixelWidth, _LengthPadding, outpos); + } + + half4 frag (line_v2f i, float4 screenPos : VPOS) : SV_Target { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + return i.col * float4(1,1,1, calculateLineAlpha(i, i.lineWidth, FalloffTextureScreenPixels)); + } + ENDHLSL + } + } + Fallback Off +} |