237 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			237 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
 | 
						|
//
 | 
						|
// Purpose: 
 | 
						|
//
 | 
						|
//=============================================================================
 | 
						|
// UNITY_SHADER_NO_UPGRADE
 | 
						|
Shader "Valve/VR/ControllerButtonHints"
 | 
						|
{
 | 
						|
	Properties
 | 
						|
	{
 | 
						|
		_MainTex ( "Texture", 2D ) = "white" {}
 | 
						|
		_Color( "Color", Color ) = ( 1, 1, 1, 1 )
 | 
						|
		_SceneTint( "SceneTint", Color ) = ( 1, 1, 1, 1 )
 | 
						|
	}
 | 
						|
		
 | 
						|
	SubShader
 | 
						|
	{
 | 
						|
		Tags{ "Queue" = "Transparent+1" "RenderType" = "Transparent" }
 | 
						|
		LOD 100
 | 
						|
		Pass
 | 
						|
		{
 | 
						|
			// Render State ---------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			Blend Zero SrcColor // Alpha blending
 | 
						|
			Cull Off
 | 
						|
			ZWrite Off
 | 
						|
			ZTest Off
 | 
						|
			Stencil
 | 
						|
			{
 | 
						|
				Ref 2
 | 
						|
				Comp notequal
 | 
						|
				Pass replace
 | 
						|
				Fail keep
 | 
						|
			}
 | 
						|
 | 
						|
			CGPROGRAM
 | 
						|
			#pragma vertex MainVS
 | 
						|
			#pragma fragment MainPS
 | 
						|
 | 
						|
			// Includes -------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			#include "UnityCG.cginc"
 | 
						|
 | 
						|
#if UNITY_VERSION >= 201810	
 | 
						|
 | 
						|
			// Structs --------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			struct VertexInput
 | 
						|
			{
 | 
						|
				float4 vertex : POSITION;
 | 
						|
 | 
						|
				UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
						|
			};
 | 
						|
 | 
						|
			struct VertexOutput
 | 
						|
			{
 | 
						|
				float4 vertex : SV_POSITION;
 | 
						|
 | 
						|
				UNITY_VERTEX_OUTPUT_STEREO
 | 
						|
			};
 | 
						|
 | 
						|
			// Globals --------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			UNITY_INSTANCING_BUFFER_START( Props )
 | 
						|
				UNITY_DEFINE_INSTANCED_PROP( float4, _SceneTint )
 | 
						|
			UNITY_INSTANCING_BUFFER_END( Props )
 | 
						|
 | 
						|
			
 | 
						|
			// MainVs ---------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			VertexOutput MainVS( VertexInput i )
 | 
						|
			{
 | 
						|
				VertexOutput o;
 | 
						|
				UNITY_SETUP_INSTANCE_ID( i );
 | 
						|
				UNITY_INITIALIZE_OUTPUT( VertexOutput, o );
 | 
						|
				UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( o ); 
 | 
						|
 | 
						|
				o.vertex = UnityObjectToClipPos(i.vertex);
 | 
						|
 | 
						|
				return o;
 | 
						|
			}
 | 
						|
			
 | 
						|
			// MainPs ---------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			float4 MainPS( VertexOutput i ) : SV_Target
 | 
						|
			{
 | 
						|
				UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( i );
 | 
						|
 | 
						|
				return UNITY_ACCESS_INSTANCED_PROP( Props, _SceneTint.rgba );
 | 
						|
			}
 | 
						|
#else
 | 
						|
 | 
						|
			// Structs --------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			struct VertexInput
 | 
						|
			{
 | 
						|
				float4 vertex : POSITION;
 | 
						|
			};
 | 
						|
 | 
						|
			struct VertexOutput
 | 
						|
			{
 | 
						|
				float4 vertex : SV_POSITION;
 | 
						|
			};
 | 
						|
 | 
						|
			// Globals --------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			float4 _SceneTint;
 | 
						|
			
 | 
						|
			// MainVs ---------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			VertexOutput MainVS( VertexInput i )
 | 
						|
			{
 | 
						|
				VertexOutput o;
 | 
						|
#if UNITY_VERSION >= 540
 | 
						|
				o.vertex = UnityObjectToClipPos(i.vertex);
 | 
						|
#else
 | 
						|
				o.vertex = mul(UNITY_MATRIX_MVP, i.vertex);
 | 
						|
#endif				
 | 
						|
				return o;
 | 
						|
			}
 | 
						|
			
 | 
						|
			// MainPs ---------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			float4 MainPS( VertexOutput i ) : SV_Target
 | 
						|
			{
 | 
						|
				return _SceneTint.rgba;
 | 
						|
			}
 | 
						|
#endif
 | 
						|
			ENDCG
 | 
						|
		}
 | 
						|
		Pass
 | 
						|
		{
 | 
						|
			// Render State ---------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			Blend SrcAlpha OneMinusSrcAlpha // Alpha blending
 | 
						|
			Cull Off
 | 
						|
			ZWrite Off
 | 
						|
			ZTest Always
 | 
						|
 | 
						|
			CGPROGRAM
 | 
						|
 | 
						|
			#pragma vertex MainVS
 | 
						|
			#pragma fragment MainPS
 | 
						|
 | 
						|
			// Includes -------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			#include "UnityCG.cginc"
 | 
						|
 | 
						|
#if UNITY_VERSION >= 201810	
 | 
						|
 | 
						|
			// Structs --------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			struct VertexInput
 | 
						|
			{
 | 
						|
				float4 vertex : POSITION;
 | 
						|
				float2 uv : TEXCOORD0;
 | 
						|
 | 
						|
				UNITY_VERTEX_INPUT_INSTANCE_ID 
 | 
						|
			};
 | 
						|
 | 
						|
			struct VertexOutput
 | 
						|
			{
 | 
						|
				float2 uv : TEXCOORD0;
 | 
						|
				float4 vertex : SV_POSITION;
 | 
						|
 | 
						|
				UNITY_VERTEX_OUTPUT_STEREO
 | 
						|
			};
 | 
						|
 | 
						|
			// Globals --------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			UNITY_INSTANCING_BUFFER_START( Props )
 | 
						|
				UNITY_DEFINE_INSTANCED_PROP( sampler2D, _MainTex )
 | 
						|
				UNITY_DEFINE_INSTANCED_PROP( float4, _MainTex_ST )
 | 
						|
				UNITY_DEFINE_INSTANCED_PROP( float4, _Color )
 | 
						|
			UNITY_INSTANCING_BUFFER_END( Props )
 | 
						|
			
 | 
						|
			// MainVs ---------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			VertexOutput MainVS( VertexInput i )
 | 
						|
			{
 | 
						|
				VertexOutput o;
 | 
						|
				UNITY_SETUP_INSTANCE_ID( i );
 | 
						|
				UNITY_INITIALIZE_OUTPUT( VertexOutput, o );
 | 
						|
				UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( o ); 
 | 
						|
				
 | 
						|
				o.vertex = UnityObjectToClipPos(i.vertex);
 | 
						|
 | 
						|
				o.uv = TRANSFORM_TEX( i.uv, UNITY_ACCESS_INSTANCED_PROP( Props, _MainTex ) );
 | 
						|
				
 | 
						|
				return o;
 | 
						|
			}
 | 
						|
			
 | 
						|
			// MainPs ---------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			float4 MainPS( VertexOutput i ) : SV_Target
 | 
						|
			{
 | 
						|
				UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( i );
 | 
						|
 | 
						|
				float4 vColor;
 | 
						|
				vColor.rgb = lerp( tex2D( UNITY_ACCESS_INSTANCED_PROP( Props, _MainTex ), i.uv).rgb, UNITY_ACCESS_INSTANCED_PROP( Props, _Color.rgb ), UNITY_ACCESS_INSTANCED_PROP( Props, _Color.a ) );
 | 
						|
				vColor.a = UNITY_ACCESS_INSTANCED_PROP( Props, _Color.a );
 | 
						|
 | 
						|
				return vColor.rgba;
 | 
						|
			}
 | 
						|
#else
 | 
						|
			// Structs --------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			struct VertexInput
 | 
						|
			{
 | 
						|
				float4 vertex : POSITION;
 | 
						|
				float2 uv : TEXCOORD0;
 | 
						|
			};
 | 
						|
 | 
						|
			struct VertexOutput
 | 
						|
			{
 | 
						|
				float2 uv : TEXCOORD0;
 | 
						|
				float4 vertex : SV_POSITION;
 | 
						|
			};
 | 
						|
 | 
						|
			// Globals --------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			sampler2D _MainTex;
 | 
						|
			float4 _MainTex_ST;
 | 
						|
			float4 _Color;
 | 
						|
			
 | 
						|
			// MainVs ---------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			VertexOutput MainVS( VertexInput i )
 | 
						|
			{
 | 
						|
				VertexOutput o;
 | 
						|
#if UNITY_VERSION >= 540
 | 
						|
				o.vertex = UnityObjectToClipPos(i.vertex);
 | 
						|
#else
 | 
						|
				o.vertex = mul(UNITY_MATRIX_MVP, i.vertex);
 | 
						|
#endif
 | 
						|
				o.uv = TRANSFORM_TEX( i.uv, _MainTex );
 | 
						|
				
 | 
						|
				return o;
 | 
						|
			}
 | 
						|
			
 | 
						|
			// MainPs ---------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
			float4 MainPS( VertexOutput i ) : SV_Target
 | 
						|
			{
 | 
						|
				float4 vColor;
 | 
						|
				vColor.rgb = lerp( tex2D(_MainTex, i.uv).rgb, _Color.rgb, _Color.a );
 | 
						|
				vColor.a = _Color.a;
 | 
						|
 | 
						|
				return vColor.rgba;
 | 
						|
			}
 | 
						|
#endif
 | 
						|
 | 
						|
			ENDCG
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |