﻿// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "OvrAvatar/AvatarSurfaceShaderPBS" {
	Properties{
		// Global parameters
		_Alpha("Alpha", Range(0.0, 1.0)) = 1.0
		_Albedo("Albedo (RGB)", 2D) = "" {}
		_Surface("Metallic (R) Occlusion (G) and Smoothness (A)", 2D) = "" {}
	}
	SubShader{
		Tags {
			"Queue" = "Transparent"
			"RenderType" = "Transparent"
		}

		Pass {
			ZWrite On
			Cull Off
			ColorMask 0

			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#pragma target 2.0
			#include "UnityCG.cginc"

			struct v2f {
				float4 position : SV_POSITION;
			};
			v2f vert(appdata_full v) {
				// Output
				v2f output;
				output.position = UnityObjectToClipPos(v.vertex);
				return output;
			}

			float4 frag(v2f input) : COLOR {
				return 0;
			}
				ENDCG
	}

		LOD 200

			CGPROGRAM

// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard vertex:vert nolightmap alpha noforwardadd

float _Alpha;
sampler2D _Albedo;
float4 _Albedo_ST;
sampler2D _Surface;
float4 _Surface_ST;

struct Input {
	float2 texcoord;
};

void vert(inout appdata_full v, out Input o) {
	UNITY_INITIALIZE_OUTPUT(Input, o);
	o.texcoord = v.texcoord.xy;
}

void surf (Input IN, inout SurfaceOutputStandard o) {
	o.Albedo = tex2D(_Albedo, TRANSFORM_TEX(IN.texcoord, _Albedo)).rgb;
	float4 surfaceParams = tex2D(_Surface, TRANSFORM_TEX(IN.texcoord, _Surface));
	o.Metallic = surfaceParams.r;
	o.Occlusion = surfaceParams.g;
	o.Smoothness = surfaceParams.a;
	o.Alpha = _Alpha;
}
ENDCG
	}
	FallBack "Diffuse"
}
