97 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| //======= Copyright (c) Valve Corporation, All rights reserved. ===============
 | |
| //
 | |
| // Purpose: Used to show the outline of the object
 | |
| //
 | |
| // Used with permission (3/20/17)
 | |
| // Copyright (C) 2017 Unity Technologies ApS - Fix for hard edges
 | |
| //=============================================================================
 | |
| 
 | |
| Shader "XRContent/Outline"
 | |
| {
 | |
|     //-------------------------------------------------------------------------------------------------------------------------------------------------------------
 | |
|     Properties
 | |
|     {
 | |
|         _Color( "Color", Color ) = ( .5, .5, .5, 1 )
 | |
|         g_flOutlineWidth( "Outline width", Range ( .001, 0.03 ) ) = .005
 | |
|         g_flCornerAdjust( "Corner Adjustment", Range(0, 2)) = .5
 | |
|     }
 | |
| 
 | |
|     //-------------------------------------------------------------------------------------------------------------------------------------------------------------
 | |
|     CGINCLUDE
 | |
|         #include "Silhouette.cginc"
 | |
|     ENDCG
 | |
| 
 | |
|     SubShader
 | |
|     {
 | |
|         Tags { "RenderType"="Outline" "Queue" = "Overlay+5000" }
 | |
| 
 | |
|         //-------------------------------------------------------------------------------------------------------------------------------------------------------------
 | |
|         // Render the object with stencil=1 to mask out the part that isn't the silhouette
 | |
|         //-------------------------------------------------------------------------------------------------------------------------------------------------------------
 | |
|         Pass
 | |
|         {
 | |
|             Tags { "LightMode" = "Always" }
 | |
|             ColorMask 0
 | |
|             Cull Off
 | |
|             ZWrite Off
 | |
|             ZTest Off
 | |
|             Stencil
 | |
|             {
 | |
|                 Ref 1
 | |
|                 Comp always
 | |
|                 Pass replace
 | |
|             }
 | |
| 
 | |
|             CGPROGRAM
 | |
|                 #pragma vertex MainVs
 | |
|                 #pragma fragment NullPs
 | |
|             ENDCG
 | |
|         }
 | |
| 
 | |
|         //-------------------------------------------------------------------------------------------------------------------------------------------------------------
 | |
|         // Render the outline by extruding along vertex normals and using the stencil mask previously rendered. Only render depth, so that the final pass executes
 | |
|         // once per fragment (otherwise alpha blending will look bad).
 | |
|         //-------------------------------------------------------------------------------------------------------------------------------------------------------------
 | |
|         Pass
 | |
|         {
 | |
|             Tags { "LightMode" = "Always" }
 | |
|             Cull Off
 | |
|             ZWrite Off
 | |
|             ZTest Off
 | |
|             Stencil
 | |
|             {
 | |
|                 Ref 1
 | |
|                 Comp notequal
 | |
|                 Pass keep
 | |
|                 Fail keep
 | |
|             }
 | |
| 
 | |
|             CGPROGRAM
 | |
|                 #pragma vertex MainVs
 | |
|                 #pragma geometry ExtrudeGs
 | |
|                 #pragma fragment MainPs
 | |
|             ENDCG
 | |
|         }
 | |
| 
 | |
|         Pass
 | |
|         {
 | |
|             Tags{ "LightMode" = "Always" }
 | |
|             ColorMask 0
 | |
|             Cull Off
 | |
|             ZWrite Off
 | |
|             ZTest Off
 | |
|             Stencil
 | |
|             {
 | |
|                 Ref 0
 | |
|                 Comp always
 | |
|                 Pass replace
 | |
|             }
 | |
| 
 | |
|             CGPROGRAM
 | |
|                 #pragma vertex MainVs
 | |
|                 #pragma fragment NullPs
 | |
|             ENDCG
 | |
|         }
 | |
|     }
 | |
| }
 |