Files
H3VR-TNH-Quality-of-Life-Im…/Assets/Alloy/Mods/Shaders/Definition/WeatheredBlend.cginc
T

85 lines
2.8 KiB
HLSL
Raw Normal View History

2022-01-22 20:13:49 -08:00
// Alloy Physical Shader Framework
// Copyright 2013-2017 RUST LLC.
// http://www.alloy.rustltd.com/
/////////////////////////////////////////////////////////////////////////////////
/// @file WeatheredBlend.cginc
/// @brief Weathered Blend shader definition.
/////////////////////////////////////////////////////////////////////////////////
#ifndef ALLOY_MODS_SHADERS_DEFINITION_WEATHERED_BLEND_CGINC
#define ALLOY_MODS_SHADERS_DEFINITION_WEATHERED_BLEND_CGINC
#define A_METALLIC_ON
#define A_AMBIENT_OCCLUSION_ON
#define A_MAIN_TEXTURES_ON
#define A_MAIN_TEXTURES_CUTOUT_OFF
#define A_EMISSION_MASK_MAP_OFF
#define A_EMISSION_EFFECTS_MAP_OFF
#define A_RIM_EFFECTS_MAP_OFF
#define A_SECONDARY_TEXTURES_ON
#include "Assets/Alloy/Shaders/Lighting/Standard.cginc"
#include "Assets/Alloy/Shaders/Type/Standard.cginc"
A_SAMPLER_2D(_Layered2MatPackedMap);
sampler2D _Layered2MatBumpMap;
sampler2D _Layered2MatPackedFxMap;
half _Layered2MatOxidation;
half3 _Layered2MatDustTint;
half _Layered2MatDustiness;
half _Layered2MatRougherness;
half _Layered2MatOcclusion;
half _Layered2MatBumpScale;
float _DecalMode;
void aSurfaceShader(
inout ASurface s)
{
s.baseUv = A_BV(s, A_TEX_TRANSFORM_UV(s, _Layered2MatPackedMap));
s.baseTiling = _Layered2MatPackedMap_ST.xy;
aParallax(s);
half4 packedMap = tex2D(_Layered2MatPackedMap, s.baseUv);
half3 normals = UnpackScaleNormal(tex2D(_Layered2MatBumpMap, s.baseUv), _Layered2MatBumpScale);
half4 packedFx = tex2D(_Layered2MatPackedFxMap, s.baseUv);
s.baseUv = A_BV(s, A_TEX_TRANSFORM_UV_SCROLL(s, _MainTex));
aMainTextures(s);
s.mask = 1.0h - packedMap.a;
aSecondaryTextures(s);
aCutout(s);
s.normalTangent = A_NT(s, BlendNormals(s.normalTangent, normals));
s.ambientOcclusion *= aOcclusionStrength(packedMap.g, _Layered2MatOcclusion);
s.mask = packedMap.r;
aDetail(s);
s.mask = _DecalMode < 0.5f ? 1.0h : (_DecalMode < 1.5f ? packedMap.a : 1.0h - packedMap.a);
aDecal(s);
s.mask = 1.0h;
aWetness(s);
half curvature = packedMap.b;
s.baseColor *= lerp(_Layered2MatDustTint, A_WHITE, curvature);
s.specularity = lerp(s.specularity * (1.0h - _Layered2MatDustiness), s.specularity, curvature);
s.metallic = lerp(s.metallic * (1.0h - _Layered2MatOxidation), s.metallic, curvature);
s.roughness = lerp(lerp(s.roughness, 1.0h, _Layered2MatRougherness), s.roughness, curvature);
#ifdef A_EMISSION_ON
float2 incandescenceUv = A_TEX_TRANSFORM_UV_SCROLL(s, _IncandescenceMap);
s.mask = aGammaToLinear(packedFx.r * tex2D(_Layered2MatPackedFxMap, incandescenceUv).g);
aEmission(s);
#endif
#ifdef A_RIM_ON
float2 rimUv = A_TEX_TRANSFORM_UV_SCROLL(s, _RimTex);
s.mask = aGammaToLinear(packedFx.b * tex2D(_Layered2MatPackedFxMap, rimUv).a);
aRim(s);
#endif
}
#endif // ALLOY_MODS_SHADERS_DEFINITION_WEATHERED_BLEND_CGINC