#include "UnityPBSLighting.cginc"
#include "AutoLight.cginc"
#include "UnityCG.cginc"

struct appdata
{
    float4 vertex : POSITION;
    float2 uv : TEXCOORD0;
    float3 normal : NORMAL;
    float4 tangent : TANGENT;
    UNITY_VERTEX_INPUT_INSTANCE_ID
};

struct v2f
{
    float4 pos : SV_POSITION;
    float2 uv : TEXCOORD0;
    float3 wNorm : TEXCOORD1;
    float3 wTan : TEXCOORD2;
    float3 wBiTan : TEXCOORD3;
    float3 wPos : TEXCOORD4;
    float3 vDir : TEXCOORD5;
    #if !defined(UNITY_PASS_SHADOWCASTER)
        SHADOW_COORDS(6)
        UNITY_FOG_COORDS(7)
    #endif
    UNITY_VERTEX_INPUT_INSTANCE_ID
    UNITY_VERTEX_OUTPUT_STEREO
};

struct VertexLightInformation
{
    float3 Direction[4];
    float3 ColorFalloff[4];
    float Attenuation[4];
};

UNITY_DECLARE_TEX2D(_MainTex); uniform float4 _MainTex_ST;
uniform float4 _Color;

UNITY_DECLARE_TEX2D_NOSAMPLER(_EmissionMap); uniform float4 _EmissionMap_ST;
uniform float4 _EmissionColor;

UNITY_DECLARE_TEX2D_NOSAMPLER(_BumpMap); uniform float4 _BumpMap_ST;
uniform float _BumpScale;

uniform float _Specular;

UNITY_DECLARE_TEX2D_NOSAMPLER(_MetallicTexture); uniform float4 _MetallicTexture_ST;
UNITY_DECLARE_TEX2D_NOSAMPLER(_MetallicMask); uniform float4 _MetallicMask_ST;
uniform float _MetMul, _MetAdd, _MetEmission;
uniform float4 _mColor1;
uniform float4 _mColor2;
uniform float4 _mColor3;
uniform float _RadialDistortion;
uniform float _ShineSpeed;
uniform float _Contrast;