mirror of
https://github.com/muskit/H3VR-TNH-Quality-of-Life-Improvements.git
synced 2026-06-03 12:44:26 -07:00
85 lines
2.8 KiB
HLSL
85 lines
2.8 KiB
HLSL
|
|
// 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
|