#ifndef ALLIN13DSHADER_BUFFERPROPERTIESDECLARATION
#define ALLIN13DSHADER_BUFFERPROPERTIESDECLARATION

DECLARE_PROPERTY_FLOAT4(_MainTex_ST)
DECLARE_PROPERTY_FLOAT4(_Color)
DECLARE_PROPERTY_FLOAT(_GeneralAlpha)
DECLARE_PROPERTY_FLOAT(_TimingSeed)

#if defined(REQUIRE_TANGENT_WS) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_NormalMap_ST)
	DECLARE_PROPERTY_FLOAT(_NormalStrength)
	#if defined(_TRIPLANAR_MAPPING_ON) || defined(ALWAYS_DECLARE_PROPERTY)
		DECLARE_PROPERTY_FLOAT(_TopNormalStrength)
	#endif
#endif

#if defined(_FLAT_NORMALS_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_FlatNormalsBlend)
#endif

#if defined(_SHADINGMODEL_PBR) || defined(_SPECULARMODEL_ANISOTROPIC) || defined(_SPECULARMODEL_ANISOTROPICTOON) || defined(ALWAYS_DECLARE_PROPERTY)
	#define HAS_PBR_PROPERTIES
	DECLARE_PROPERTY_FLOAT(_Metallic)
	DECLARE_PROPERTY_FLOAT(_Smoothness)
#endif

#if defined(_LIGHTMODEL_TOON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_ToonCutoff)
	DECLARE_PROPERTY_FLOAT(_ToonSmoothness)
#endif

#if defined(_LIGHTMODEL_HALFLAMBERT) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_HalfLambertWrap)
#endif

#if defined(_LIGHTMODEL_FAKEGI) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_HardnessFakeGI)
#endif

#if defined(SPECULAR_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_SpecularAtten)
	DECLARE_PROPERTY_FLOAT(_Shininess)
		
	DECLARE_PROPERTY_FLOAT(_Anisotropy)
	DECLARE_PROPERTY_FLOAT(_AnisoShininess)
#endif

#if (defined(_AFFECTED_BY_LIGHTMAPS_ON) && defined(_LIGHTMAP_COLOR_CORRECTION_ON)) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_HueShiftLM)
	DECLARE_PROPERTY_FLOAT(_HueSaturationLM)
	DECLARE_PROPERTY_FLOAT(_HueBrightnessLM)
	DECLARE_PROPERTY_FLOAT(_ContrastLM)
	DECLARE_PROPERTY_FLOAT(_BrightnessLM)
#endif

#if defined(_RECEIVE_SHADOWS_ON)
	DECLARE_PROPERTY_FLOAT(_ShadowCutoff)
#endif

#if defined(_CUSTOM_AMBIENT_LIGHT_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_CustomAmbientColor)
#endif

#if defined(_SPECULARMODEL_TOON) || defined(_SPECULARMODEL_ANISOTROPICTOON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_SpecularToonCutoff)
	DECLARE_PROPERTY_FLOAT(_SpecularToonSmoothness)
#endif

#if defined(_AOMAP_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_AOMap_ST)
	DECLARE_PROPERTY_FLOAT(_AOMapStrength)
	DECLARE_PROPERTY_FLOAT(_AOContrast)
	DECLARE_PROPERTY_FLOAT4(_AOColor)
#endif

#if defined(REFLECTIONS_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_ReflectionsAtten)
	#if defined(_REFLECTIONS_TOON) || defined(ALWAYS_DECLARE_PROPERTY)
		DECLARE_PROPERTY_FLOAT(_ToonFactor)
	#endif 
#endif

#if defined(_CONTRAST_BRIGHTNESS_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_Contrast)
	DECLARE_PROPERTY_FLOAT(_Brightness)
#endif

#if defined(_HEIGHT_GRADIENT_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_MinGradientHeight)
	DECLARE_PROPERTY_FLOAT(_MaxGradientHeight)
	DECLARE_PROPERTY_FLOAT4(_GradientHeightColor01)
	DECLARE_PROPERTY_FLOAT4(_GradientHeightColor02)
#endif

#if defined(_INTERSECTION_GLOW_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_DepthGlowDist)
	DECLARE_PROPERTY_FLOAT(_DepthGlowPower)
	DECLARE_PROPERTY_FLOAT4(_DepthGlowColor)
	DECLARE_PROPERTY_FLOAT(_DepthGlowColorIntensity)
	DECLARE_PROPERTY_FLOAT(_DepthGlowGlobalIntensity)
#endif

#if defined(_INTERSECTION_FADE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_IntersectionFadeFactor)
#endif

#if defined(_HIGHLIGHTS_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_HighlightsColor)
	DECLARE_PROPERTY_FLOAT(_HighlightsStrength)
	DECLARE_PROPERTY_FLOAT(_HighlightCutoff)
	DECLARE_PROPERTY_FLOAT(_HighlightSmoothness)
	DECLARE_PROPERTY_FLOAT3(_HighlightOffset)
#endif

#if defined(_RIM_LIGHTING_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_RimColor)
	DECLARE_PROPERTY_FLOAT(_RimAttenuation)
	DECLARE_PROPERTY_FLOAT(_MinRim)
	DECLARE_PROPERTY_FLOAT(_MaxRim)
	DECLARE_PROPERTY_FLOAT3(_RimOffset)
#endif

#if defined(_HUE_SHIFT_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_HueShift)
	DECLARE_PROPERTY_FLOAT(_HueSaturation)
	DECLARE_PROPERTY_FLOAT(_HueBrightness)
#endif

#if defined(_HIT_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_HitColor)
	DECLARE_PROPERTY_FLOAT(_HitGlow)
	DECLARE_PROPERTY_FLOAT(_HitBlend)
#endif

#if defined(_STOCHASTIC_SAMPLING_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_StochasticScale)
	DECLARE_PROPERTY_FLOAT(_StochasticSkew)
#endif

#if defined(_VERTEX_SHAKE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_ShakeSpeed)
	DECLARE_PROPERTY_FLOAT(_ShakeSpeedMult)
	DECLARE_PROPERTY_FLOAT4(_ShakeMaxDisplacement)
	DECLARE_PROPERTY_FLOAT(_ShakeBlend)
#endif

#if defined(_FADE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_FadeTex_ST)
	DECLARE_PROPERTY_FLOAT(_FadeAmount)
	DECLARE_PROPERTY_FLOAT(_FadePower)
	DECLARE_PROPERTY_FLOAT(_FadeTransition)
	#if defined(_FADE_BURN_ON) || defined(ALWAYS_DECLARE_PROPERTY)
		DECLARE_PROPERTY_FLOAT4(_FadeBurnColor)
		DECLARE_PROPERTY_FLOAT(_FadeBurnWidth)
		DECLARE_PROPERTY_FLOAT(_BurnCutoff)
		DECLARE_PROPERTY_FLOAT(_BurnSmoothness)
	#endif
#endif

#if defined(_FADE_BY_CAM_DISTANCE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_MinDistanceToFade)
	DECLARE_PROPERTY_FLOAT(_MaxDistanceToFade)
#endif

#if defined(_DITHER_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_DitherScale)
#endif

#if defined(_VERTEX_INFLATE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_MinInflate)
	DECLARE_PROPERTY_FLOAT(_MaxInflate)
	DECLARE_PROPERTY_FLOAT(_InflateBlend)
#endif

#if defined(_VERTEX_DISTORTION_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_VertexDistortionNoiseTex_ST)
	DECLARE_PROPERTY_FLOAT(_VertexDistortionAmount)
	DECLARE_PROPERTY_FLOAT(_VertexDistortionNoiseSpeedX)
	DECLARE_PROPERTY_FLOAT(_VertexDistortionNoiseSpeedY)
#endif

#if defined(_VOXELIZE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_VoxelSize)
	DECLARE_PROPERTY_FLOAT(_VoxelBlend)
#endif

#if defined(_GLITCH_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_GlitchTiling)
	DECLARE_PROPERTY_FLOAT(_GlitchAmount)
	DECLARE_PROPERTY_FLOAT3(_GlitchOffset)
	DECLARE_PROPERTY_FLOAT(_GlitchSpeed)
	DECLARE_PROPERTY_FLOAT(_GlitchWorldSpace)
#endif

#if defined(_WIND_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_WindAttenuation)
	#if defined(_USE_WIND_VERTICAL_MASK) || defined(ALWAYS_DECLARE_PROPERTY)
		DECLARE_PROPERTY_FLOAT(_WindVerticalMaskMinY)
		DECLARE_PROPERTY_FLOAT(_WindVerticalMaskMaxY)
	#endif
#endif

#if defined(_COLOR_RAMP_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_ColorRampLuminosity)
	DECLARE_PROPERTY_FLOAT(_ColorRampBlend)
	DECLARE_PROPERTY_FLOAT(_ColorRampScrollSpeed)
	DECLARE_PROPERTY_FLOAT(_ColorRampTiling)
#endif

#if defined(_ALBEDO_VERTEX_COLOR_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_VertexColorBlending)
#endif



//Texture blending properties declaration
#if defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_BlendingTextureG_ST)
	DECLARE_PROPERTY_FLOAT4(_BlendingTextureB_ST)

	DECLARE_PROPERTY_FLOAT4(_BlendingTextureWhite_ST)

	DECLARE_PROPERTY_FLOAT4(_TexBlendingMask_ST)
			
	DECLARE_PROPERTY_FLOAT(_BlendingMaskCutoffG)
	DECLARE_PROPERTY_FLOAT(_BlendingMaskSmoothnessG)

	DECLARE_PROPERTY_FLOAT(_BlendingMaskCutoffB)
	DECLARE_PROPERTY_FLOAT(_BlendingMaskSmoothnessB)

	DECLARE_PROPERTY_FLOAT(_BlendingMaskCutoffWhite)
	DECLARE_PROPERTY_FLOAT(_BlendingMaskSmoothnessWhite)
#else
	#if defined(_TEXTURE_BLENDING_ON)
		#if defined(_TEXTUREBLENDINGMODE_RGB)
			DECLARE_PROPERTY_FLOAT4(_BlendingTextureG_ST)
			DECLARE_PROPERTY_FLOAT4(_BlendingTextureB_ST)
		#else
			DECLARE_PROPERTY_FLOAT4(_BlendingTextureWhite_ST)
			DECLARE_PROPERTY_FLOAT(_BlendingMaskCutoffWhite)
			DECLARE_PROPERTY_FLOAT(_BlendingMaskSmoothnessWhite)
		#endif

		DECLARE_PROPERTY_FLOAT(_BlendingMaskCutoffG)
		DECLARE_PROPERTY_FLOAT(_BlendingMaskSmoothnessG)

		DECLARE_PROPERTY_FLOAT(_BlendingMaskCutoffB)
		DECLARE_PROPERTY_FLOAT(_BlendingMaskSmoothnessB)

		#if defined(_TEXTUREBLENDINGSOURCE_TEXTURE)
			DECLARE_PROPERTY_FLOAT4(_TexBlendingMask_ST)
		#endif
	#endif
#endif
//

#if defined(_GREYSCALE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_GreyscaleLuminosity)
	DECLARE_PROPERTY_FLOAT4(_GreyscaleTintColor)
	DECLARE_PROPERTY_FLOAT(_GreyscaleBlending)
#endif

#if defined(_POSTERIZE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_PosterizeNumColors)
	DECLARE_PROPERTY_FLOAT(_PosterizeGamma)
#endif

#if defined(_HAND_DRAWN_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_HandDrawnAmount)
	DECLARE_PROPERTY_FLOAT(_HandDrawnSpeed)
#endif

#if defined(_MATCAP_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_MatcapIntensity)
	DECLARE_PROPERTY_FLOAT(_MatcapBlend)
#endif

#if defined(_SCREEN_SPACE_UV_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_ScaleWithCameraDistance)
#endif

#if defined(_SCROLL_TEXTURE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_ScrollTextureX)
	DECLARE_PROPERTY_FLOAT(_ScrollTextureY)
#endif

#if defined(_UV_DISTORTION_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_DistortTex_ST)

	DECLARE_PROPERTY_FLOAT(_DistortAmount)
	DECLARE_PROPERTY_FLOAT(_DistortTexXSpeed)
	DECLARE_PROPERTY_FLOAT(_DistortTexYSpeed)
#endif
	
#if defined(_PIXELATE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_PixelateSize)
	DECLARE_PROPERTY_FLOAT4(_MainTex_TexelSize)
#endif

#if defined(_EMISSION_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_EmissionSelfGlow)
	DECLARE_PROPERTY_FLOAT4(_EmissionMap_ST)
	DECLARE_PROPERTY_FLOAT4(_EmissionColor)
#endif

#if defined(_WAVE_UV_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_WaveAmount)
	DECLARE_PROPERTY_FLOAT(_WaveSpeed)
	DECLARE_PROPERTY_FLOAT(_WaveStrength)
	DECLARE_PROPERTY_FLOAT(_WaveX)
	DECLARE_PROPERTY_FLOAT(_WaveY)
#endif

#if defined(_HOLOGRAM_ON) || defined(ALWAYS_DECLARE_PROPERTY)

	DECLARE_PROPERTY_FLOAT4(_HologramColor)
	DECLARE_PROPERTY_FLOAT3(_HologramLineDirection)
	DECLARE_PROPERTY_FLOAT(_HologramBaseAlpha)
		
	DECLARE_PROPERTY_FLOAT(_HologramScrollSpeed)
	DECLARE_PROPERTY_FLOAT(_HologramFrequency)
	DECLARE_PROPERTY_FLOAT(_HologramAlpha)

	DECLARE_PROPERTY_FLOAT(_HologramAccentSpeed)
	DECLARE_PROPERTY_FLOAT(_HologramAccentFrequency)
	DECLARE_PROPERTY_FLOAT(_HologramAccentAlpha)

	DECLARE_PROPERTY_FLOAT(_HologramLineCenter)
	DECLARE_PROPERTY_FLOAT(_HologramLineSpacing)
	DECLARE_PROPERTY_FLOAT(_HologramLineSmoothness)
#endif

#if defined(_TRIPLANAR_MAPPING_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_TriplanarTopTex_ST)
	DECLARE_PROPERTY_FLOAT4(_TriplanarTopNormalMap_ST)

	DECLARE_PROPERTY_FLOAT(_FaceDownCutoff)
	DECLARE_PROPERTY_FLOAT(_TriplanarSharpness)

	DECLARE_PROPERTY_FLOAT4(_TriplanarNoiseTex_ST)
	DECLARE_PROPERTY_FLOAT(_TriplanarTransitionPower)
#endif

#if defined(_SUBSURFACE_SCATTERING_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_NormalInfluence)
	DECLARE_PROPERTY_FLOAT(_SSSPower)
	DECLARE_PROPERTY_FLOAT(_SSSFrontPower)
	DECLARE_PROPERTY_FLOAT(_SSSAtten)
	DECLARE_PROPERTY_FLOAT(_SSSFrontAtten)
	DECLARE_PROPERTY_FLOAT4(_SSSColor)
#endif

#if defined(_ALPHA_CUTOFF_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT(_AlphaCutoffValue)
#endif

#if defined(OUTLINE_ON) || defined(ALWAYS_DECLARE_PROPERTY)
	DECLARE_PROPERTY_FLOAT4(_OutlineColor)
	DECLARE_PROPERTY_FLOAT(_OutlineThickness)
	DECLARE_PROPERTY_FLOAT(_MaxCameraDistance)
	DECLARE_PROPERTY_FLOAT(_MaxFadeDistance)
#endif

#endif //ALLIN13DSHADER_BUFFERPROPERTIESDECLARATION