Initial commit

This commit is contained in:
msk
2022-01-22 20:13:49 -08:00
parent f9d23e5bcf
commit 687473573d
878 changed files with 70957 additions and 0 deletions
+96
View File
@@ -0,0 +1,96 @@
// Alloy Physical Shader Framework
// Copyright 2013-2017 RUST LLC.
// http://www.alloy.rustltd.com/
/////////////////////////////////////////////////////////////////////////////////
/// @file Detail.cginc
/// @brief Surface detail materials and normals.
/////////////////////////////////////////////////////////////////////////////////
#ifndef ALLOY_SHADERS_FEATURE_DETAIL_CGINC
#define ALLOY_SHADERS_FEATURE_DETAIL_CGINC
#if !defined(A_DETAIL_ON) && defined(_DETAIL_MULX2)
#define A_DETAIL_ON
#endif
#if !defined(A_DETAIL_MASK_VERTEX_COLOR_ALPHA_ON) && defined(_NORMALMAP)
#define A_DETAIL_MASK_VERTEX_COLOR_ALPHA_ON
#endif
#include "Assets/Alloy/Shaders/Framework/Feature.cginc"
#ifdef A_DETAIL_ON
#ifndef A_DETAIL_MASK_OFF
/// Mask that controls the detail influence on the base material.
/// Expects an alpha data map.
sampler2D _DetailMask;
#endif
/// Controls how much the vertex alpha masks the detail maps.
/// Expects values in the range [0,1].
half _DetailMaskStrength;
#ifndef A_DETAIL_COLOR_MAP_OFF
/// Detail base color blending mode.
/// Expects either 0 or 1.
float _DetailMode;
/// Detail base color map.
/// Expects an RGB map with sRGB sampling.
A_SAMPLER_2D(_DetailAlbedoMap);
#endif
#ifndef A_DETAIL_NORMAL_MAP_OFF
/// Detail normal map.
/// Expects a compressed normal map.
A_SAMPLER_2D(_DetailNormalMap);
#endif
/// Controls the detail influence on the base material.
/// Expects values in the range [0,1].
half _DetailWeight;
#ifndef A_DETAIL_NORMAL_MAP_OFF
/// Normal map XY scale.
half _DetailNormalMapScale;
#endif
#endif
void aDetail(
inout ASurface s)
{
#ifdef A_DETAIL_ON
half mask = s.mask * _DetailWeight;
#ifndef A_DETAIL_MASK_OFF
#ifdef A_DETAIL_MASK_VERTEX_COLOR_ALPHA_ON
half alpha = s.vertexColor.a;
#else
half alpha = tex2D(_DetailMask, s.baseUv).a;
#endif
mask *= aLerpOneTo(alpha, _DetailMaskStrength);
#endif
#ifndef A_DETAIL_COLOR_MAP_OFF
float2 detailUv = A_TEX_TRANSFORM_UV_SCROLL(s, _DetailAlbedoMap);
#else
float2 detailUv = A_TEX_TRANSFORM_UV_SCROLL(s, _DetailNormalMap);
#endif
#ifndef A_DETAIL_COLOR_MAP_OFF
half3 detailAlbedo = tex2D(_DetailAlbedoMap, detailUv).rgb;
half3 colorScale = _DetailMode < 0.5f ? A_WHITE : unity_ColorSpaceDouble.rgb;
s.baseColor *= aLerpWhiteTo(detailAlbedo * colorScale, mask);
#endif
#ifndef A_DETAIL_NORMAL_MAP_OFF
half3 detailNormalTangent = UnpackScaleNormal(tex2D(_DetailNormalMap, detailUv), mask * _DetailNormalMapScale);
s.normalTangent = A_NT(s, BlendNormals(s.normalTangent, detailNormalTangent));
#endif
#endif
}
#endif // ALLOY_SHADERS_FEATURE_DETAIL_CGINC