forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			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
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |