summaryrefslogtreecommitdiff
path: root/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/Resources/aline_outline.shader
diff options
context:
space:
mode:
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.shader165
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
+}