﻿Shader "Nostalgia/Tiles/Standard Specular"
{
	Properties
	{
		_Color("Color", Color) = (1,1,1,1)
		_MainTex("Tiles Texture", 2D) = "white" {}

		_Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5

		_Glossiness("Smoothness", Range(0.0, 1.0)) = 0.5
		_SpecColor("Specular", Color) = (0.2,0.2,0.2)
		_SpecGlossMap("Specular", 2D) = "white" {}
		[ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0
		[ToggleOff] _GlossyReflections("Glossy Reflections", Float) = 1.0

		_BumpScale("Scale", Float) = 1.0
		_BumpMap("Normal Map",2D) = "bump" {}

		_OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0
		_OcclusionMap("Occlusion", 2D) = "white" {}

		_EmissionColor("Color", Color) = (0,0,0)
		_EmissionMap("Emission", 2D) = "white" {}

		_StencilComp("Comparison", Float) = 0
		_Stencil("Ref", Range(0.0, 255.0)) = 0
		_StencilWriteMask("Write Mask",Range(0.0, 255.0)) = 255
		_StencilReadMask("Read Mask",Range(0.0, 255.0)) = 255
		_StencilPass("Pass",Float) = 0
		_StencilFail("Fail",Float) = 0
		_StencilZFail("ZFail",Float) = 0
		_ColorMask("Color Mask",Float) = 15
		
		[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0

		// Blending state
		[HideInInspector] _Mode("__mode", Float) = 2.0
		[HideInInspector] _SrcBlend("__src", Float) = 5.0
		[HideInInspector] _DstBlend("__dst", Float) = 10.0
		[HideInInspector] _ZWrite("__zw", Float) = 0.0

		// UI-only data
		[HideInInspector] _EmissionScaleUI("Scale", Float) = 0.0
		[HideInInspector] _EmissionColorUI("Color", Color) = (1,1,1)
	}

	CGINCLUDE
		#define UNITY_SETUP_BRDF_INPUT SpecularSetup
	ENDCG

	SubShader
	{
		Tags
		{
			"Queue" = "Transparent"
			"IgnoreProjector" = "True"
			"RenderType" = "Transparent"
			"PreviewType" = "Plane"
			"CanUseSpriteAtlas" = "True"
		}

		Cull Off
		ColorMask[_ColorMask]

		Stencil
		{
			Ref[_Stencil]
			ReadMask[_StencilReadMask]
			WriteMask[_StencilWriteMask]
			Comp[_StencilComp]
			Pass[_StencilPass]
			Fail[_StencilFail]
			ZFail[_StencilZFail]
		}

		Pass
		{
			Name "FORWARD"
			Tags{ "LightMode" = "ForwardBase" }

			Blend[_SrcBlend][_DstBlend]
			ZWrite[_ZWrite]

			CGPROGRAM

			#pragma shader_feature _NORMALMAP
			#pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
			#pragma shader_feature _EMISSION
			#pragma shader_feature _SPECGLOSSMAP
			#pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
			#pragma shader_feature _ _GLOSSYREFLECTIONS_OFF

			#pragma multi_compile_local _ PIXELSNAP_ON

			#pragma multi_compile_fwdbase
			
			#pragma vertex vertTilesForwardBase
			#pragma fragment fragTilesForwardBase

			#include "./TilesStandardCore.cginc"

			ENDCG
		}
		Pass
		{
			Name "FORWARD_DELTA"
			Tags{ "LightMode" = "ForwardAdd" }

			Blend[_SrcBlend] One
			ZWrite Off
			ZTest LEqual

			CGPROGRAM

			#pragma shader_feature _NORMALMAP
			#pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
			#pragma shader_feature _SPECGLOSSMAP
			#pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF

			#pragma multi_compile_local _ PIXELSNAP_ON

			#pragma multi_compile_fwdadd

			#pragma vertex vertTilesForwardAdd
			#pragma fragment fragTilesForwardAdd

			#include "./TilesStandardCore.cginc"

			ENDCG
		}
	}

	Fallback "Nostalgia/Tiles/Diffuse"
	CustomEditor "NostalgiaEditor.TilesStandardShaderGUI"
}
