rabidus-test/Assets/PolyFew/BatchFewShader/Includes/BatchFewStandardConfig.cginc

92 lines
3.5 KiB
HLSL
Raw Permalink Normal View History

2023-10-20 13:29:44 +03:00
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
// This code in no way belongs to BrainFailProductions. I have just made a small change to make
// it work with texture arrays
#ifndef UNITY_STANDARD_CONFIG_INCLUDED
#define UNITY_STANDARD_CONFIG_INCLUDED
// Define Specular cubemap constants
#ifndef UNITY_SPECCUBE_LOD_EXPONENT
#define UNITY_SPECCUBE_LOD_EXPONENT (1.5)
#endif
#ifndef UNITY_SPECCUBE_LOD_STEPS
#define UNITY_SPECCUBE_LOD_STEPS (6)
#endif
// Energy conservation for Specular workflow is Monochrome. For instance: Red metal will make diffuse Black not Cyan
#ifndef UNITY_CONSERVE_ENERGY
#define UNITY_CONSERVE_ENERGY 1
#endif
#ifndef UNITY_CONSERVE_ENERGY_MONOCHROME
#define UNITY_CONSERVE_ENERGY_MONOCHROME 1
#endif
// "platform caps" defines: they are controlled from TierSettings (Editor will determine values and pass them to compiler)
// UNITY_SPECCUBE_BOX_PROJECTION: TierSettings.reflectionProbeBoxProjection
// UNITY_SPECCUBE_BLENDING: TierSettings.reflectionProbeBlending
// UNITY_ENABLE_DETAIL_NORMALMAP: TierSettings.detailNormalMap
// UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS: TierSettings.semitransparentShadows
// disregarding what is set in TierSettings, some features have hardware restrictions
// so we still add safety net, otherwise we might end up with shaders failing to compile
#if SHADER_TARGET < 30
#undef UNITY_SPECCUBE_BOX_PROJECTION
#undef UNITY_SPECCUBE_BLENDING
#undef UNITY_ENABLE_DETAIL_NORMALMAP
#if defined(_PARALLAXMAP)
#undef _PARALLAXMAP
#endif
#if defined(_POM)
#undef _POM
#endif
#endif
#if (SHADER_TARGET < 30) || defined(SHADER_API_GLES) || defined(SHADER_API_D3D11_9X) || defined (SHADER_API_PSP2)
#undef UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS
#endif
#ifndef UNITY_SAMPLE_FULL_SH_PER_PIXEL
//If this is enabled then we should consider Light Probe Proxy Volumes(SHEvalLinearL0L1_SampleProbeVolume) in ShadeSH9
#define UNITY_SAMPLE_FULL_SH_PER_PIXEL 0
#endif
#ifndef UNITY_BRDF_GGX
#define UNITY_BRDF_GGX 1
#endif
// Orthnormalize Tangent Space basis per-pixel
// Necessary to support high-quality normal-maps. Compatible with Maya and Marmoset.
// However xNormal expects oldschool non-orthnormalized basis - essentially preventing good looking normal-maps :(
// Due to the fact that xNormal is probably _the most used tool to bake out normal-maps today_ we have to stick to old ways for now.
//
// Disabled by default, until xNormal has an option to bake proper normal-maps.
#ifndef UNITY_TANGENT_ORTHONORMALIZE
#define UNITY_TANGENT_ORTHONORMALIZE 0
#endif
// Some extra optimizations
// Simplified Standard Shader is off by default and should not be used for Legacy Shaders
#ifndef UNITY_STANDARD_SIMPLE
#define UNITY_STANDARD_SIMPLE 0
#endif
// Setup a new define with meaningful name to know if we require world pos in fragment shader
#if UNITY_STANDARD_SIMPLE
#define UNITY_REQUIRE_FRAG_WORLDPOS 0
#else
#define UNITY_REQUIRE_FRAG_WORLDPOS 1
#endif
// Should we pack worldPos along tangent (saving an interpolator)
// We want to skip this on mobile platforms, because worldpos gets packed into mediump
#if UNITY_REQUIRE_FRAG_WORLDPOS && !defined(_PARALLAXMAP) && !defined(_POM) && !(defined(SHADER_API_MOBILE) && !defined(SHADER_API_D3D11_9X))
#define UNITY_PACK_WORLDPOS_WITH_TANGENT 1
#else
#define UNITY_PACK_WORLDPOS_WITH_TANGENT 0
#endif
#endif // UNITY_STANDARD_CONFIG_INCLUDED