|
|
//======= Copyright (c) Valve Corporation, All rights reserved. ===============//// Purpose: Used for the teleport markers////=============================================================================// UNITY_SHADER_NO_UPGRADEShader "Valve/VR/Highlight"{ Properties { _TintColor( "Tint Color", Color ) = ( 1, 1, 1, 1 ) _SeeThru( "SeeThru", Range( 0.0, 1.0 ) ) = 0.25 _Darken( "Darken", Range( 0.0, 1.0 ) ) = 0.0 _MainTex( "MainTex", 2D ) = "white" {} }
//------------------------------------------------------------------------------------------------------------------------------------------------------------- CGINCLUDE
// Pragmas -------------------------------------------------------------------------------------------------------------------------------------------------- #pragma target 5.0#if UNITY_VERSION >= 560 #pragma only_renderers d3d11 vulkan glcore#else #pragma only_renderers d3d11 glcore#endif #pragma exclude_renderers gles #pragma multi_compile_instancing
// Includes ------------------------------------------------------------------------------------------------------------------------------------------------- #include "UnityCG.cginc"
// Structs --------------------------------------------------------------------------------------------------------------------------------------------------struct VertexInput { float4 vertex : POSITION; float2 uv : TEXCOORD0; fixed4 color : COLOR;
#if UNITY_VERSION >= 560 UNITY_VERTEX_INPUT_INSTANCE_ID #endif };
struct VertexOutput { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; fixed4 color : COLOR;
#if UNITY_VERSION >= 560 UNITY_VERTEX_OUTPUT_STEREO #endif };
#if UNITY_VERSION >= 201810 // Globals -------------------------------------------------------------------------------------------------------------------------------------------------- UNITY_INSTANCING_BUFFER_START( Props ) UNITY_DEFINE_INSTANCED_PROP( float4, _TintColor ) UNITY_DEFINE_INSTANCED_PROP( sampler2D, _MainTex ) UNITY_DEFINE_INSTANCED_PROP( float4, _MainTex_ST ) UNITY_DEFINE_INSTANCED_PROP( float, _SeeThru ) UNITY_DEFINE_INSTANCED_PROP( float, _Darken ) 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 );
#if UNITY_VERSION >= 540 o.vertex = UnityObjectToClipPos( i.vertex ); #else o.vertex = mul( UNITY_MATRIX_MVP, i.vertex ); #endif
o.uv = i.uv; o.color = i.color;
return o; }
// MainPs --------------------------------------------------------------------------------------------------------------------------------------------------- float4 MainPS( VertexOutput i ) : SV_Target { UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( i ); float4 vTexel = tex2D( UNITY_ACCESS_INSTANCED_PROP( Props, _MainTex ), i.uv ).rgba; float4 vColor = vTexel.rgba * UNITY_ACCESS_INSTANCED_PROP( Props, _TintColor.rgba ) * i.color.rgba; vColor.rgba = saturate( 2.0 * vColor.rgba ); float flAlpha = vColor.a;
vColor.rgb *= vColor.a; vColor.a = lerp( 0.0, UNITY_ACCESS_INSTANCED_PROP( Props, _Darken ), flAlpha );
return vColor.rgba; }
// MainPs --------------------------------------------------------------------------------------------------------------------------------------------------- float4 SeeThruPS( VertexOutput i ) : SV_Target { UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( i );
float4 vTexel = tex2D( UNITY_ACCESS_INSTANCED_PROP( Props, _MainTex ), i.uv ).rgba; float4 vColor = vTexel.rgba * UNITY_ACCESS_INSTANCED_PROP( Props, _TintColor.rgba ) * i.color.rgba * UNITY_ACCESS_INSTANCED_PROP( Props, _SeeThru ); vColor.rgba = saturate( 2.0 * vColor.rgba ); float flAlpha = vColor.a;
vColor.rgb *= vColor.a; vColor.a = lerp( 0.0, UNITY_ACCESS_INSTANCED_PROP( Props, _Darken ), flAlpha * UNITY_ACCESS_INSTANCED_PROP( Props, _SeeThru ) );
return vColor.rgba; } #else // Globals -------------------------------------------------------------------------------------------------------------------------------------------------- sampler2D _MainTex; float4 _MainTex_ST; float4 _TintColor; float _SeeThru; float _Darken; // 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 ); o.color = i.color; return o; }
// MainPs --------------------------------------------------------------------------------------------------------------------------------------------------- float4 MainPS( VertexOutput i ) : SV_Target { float4 vTexel = tex2D( _MainTex, i.uv ).rgba; float4 vColor = vTexel.rgba * _TintColor.rgba * i.color.rgba; vColor.rgba = saturate( 2.0 * vColor.rgba ); float flAlpha = vColor.a;
vColor.rgb *= vColor.a; vColor.a = lerp( 0.0, _Darken, flAlpha );
return vColor.rgba; }
// MainPs --------------------------------------------------------------------------------------------------------------------------------------------------- float4 SeeThruPS( VertexOutput i ) : SV_Target { float4 vTexel = tex2D( _MainTex, i.uv ).rgba; float4 vColor = vTexel.rgba * _TintColor.rgba * i.color.rgba * _SeeThru; vColor.rgba = saturate( 2.0 * vColor.rgba ); float flAlpha = vColor.a;
vColor.rgb *= vColor.a; vColor.a = lerp( 0.0, _Darken, flAlpha * _SeeThru );
return vColor.rgba; } #endif
ENDCG
SubShader { Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } LOD 100
// Behind Geometry --------------------------------------------------------------------------------------------------------------------------------------------------- Pass { // Render State --------------------------------------------------------------------------------------------------------------------------------------------- Blend One OneMinusSrcAlpha Cull Off ZWrite Off ZTest Greater
CGPROGRAM #pragma vertex MainVS #pragma fragment SeeThruPS
ENDCG }
Pass { // Render State --------------------------------------------------------------------------------------------------------------------------------------------- Blend One OneMinusSrcAlpha Cull Off ZWrite Off ZTest LEqual
CGPROGRAM #pragma vertex MainVS #pragma fragment MainPS ENDCG } }}
|