mirror of
https://github.com/muskit/H3VR-TNH-Quality-of-Life-Improvements.git
synced 2026-06-03 04:34:26 -07:00
Initial commit
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
// Alloy Physical Shader Framework
|
||||
// Copyright 2013-2017 RUST LLC.
|
||||
// http://www.alloy.rustltd.com/
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// @file DeferredDecal.cginc
|
||||
/// @brief Deferred Decal surface shader definition.
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef ALLOY_MODS_SHADERS_DEFINITION_DECAL_CGINC
|
||||
#define ALLOY_MODS_SHADERS_DEFINITION_DECAL_CGINC
|
||||
|
||||
#define A_METALLIC_ON
|
||||
#define A_AMBIENT_OCCLUSION_ON
|
||||
|
||||
#define A_SURFACE_CUSTOM_FIELDS \
|
||||
half decalMask2;
|
||||
|
||||
#include "Assets/Alloy/Shaders/Framework/Type.cginc"
|
||||
#include "Assets/Alloy/Shaders/Lighting/Standard.cginc"
|
||||
|
||||
half3 _GlowColor;
|
||||
half _RoughnessMin;
|
||||
half _RoughnessMax;
|
||||
half _AoAsCavity;
|
||||
|
||||
half _BaseColorWeight;
|
||||
half _NormalsWeight;
|
||||
|
||||
void aVertexShader(
|
||||
inout AVertex v)
|
||||
{
|
||||
aStandardVertexShader(v);
|
||||
}
|
||||
|
||||
void aColorShader(
|
||||
inout half4 color,
|
||||
ASurface s)
|
||||
{
|
||||
aStandardColorShader(v);
|
||||
}
|
||||
|
||||
void aGbufferShader(
|
||||
inout AGbuffer gb,
|
||||
ASurface s)
|
||||
{
|
||||
#ifdef A_DECAL_ALPHA_FIRSTPASS_SHADER
|
||||
gb.diffuseOcclusion.a = s.decalMask2;
|
||||
gb.specularSmoothness.a = s.opacity;
|
||||
gb.normalType.a = s.opacity;
|
||||
gb.emissionSubsurface.a = s.decalMask2;
|
||||
|
||||
#ifdef A_SHADOW_MASKS_BUFFER_ON
|
||||
gb.shadowMasks.a = s.opacity;
|
||||
#endif
|
||||
#else
|
||||
gb.diffuseOcclusion.a *= s.decalMask2;
|
||||
gb.specularSmoothness.a *= s.opacity;
|
||||
gb.normalType.a *= s.opacity;
|
||||
gb.emissionSubsurface.a *= s.decalMask2; // TODO: Apply AO to emission for outside areas' ambient.
|
||||
|
||||
#ifdef A_SHADOW_MASKS_BUFFER_ON
|
||||
gb.shadowMasks.a *= s.opacity;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void aSurfaceShader(
|
||||
inout ASurface s)
|
||||
{
|
||||
s.baseUv = A_BV(s, A_TEX_TRANSFORM_UV_SCROLL(s, _SpecTex));
|
||||
s.baseTiling = _SpecTex_ST.xy;
|
||||
aParallax(s);
|
||||
|
||||
s.baseColor = _Color.rgb * aBaseVertexColorTint(s);
|
||||
|
||||
half4 material = aSampleMaterial(s);
|
||||
|
||||
s.opacity = _Color.a * material.A_SPECULARITY_CHANNEL;
|
||||
//s.emissiveColor = _GlowColor * material.A_METALLIC_CHANNEL;
|
||||
s.decalMask2 = material.A_METALLIC_CHANNEL;
|
||||
|
||||
s.metallic = _Metal;
|
||||
s.ambientOcclusion = aLerpOneTo(material.A_AO_CHANNEL, _Occlusion);
|
||||
s.specularity = _Specularity;
|
||||
s.roughness = lerp(_RoughnessMin, _RoughnessMax, material.A_ROUGHNESS_CHANNEL);
|
||||
|
||||
s.baseColor *= aLerpOneTo(s.ambientOcclusion, _AoAsCavity);
|
||||
s.normalTangent = A_NT(s, aSampleBump(s));
|
||||
}
|
||||
|
||||
#endif // ALLOY_MODS_SHADERS_DEFINITION_DECAL_CGINC
|
||||
Reference in New Issue
Block a user