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
@@ -0,0 +1,85 @@
// Alloy Physical Shader Framework
// Copyright 2013-2017 RUST LLC.
// http://www.alloy.rustltd.com/
/////////////////////////////////////////////////////////////////////////////////
/// @file SPCarPaint.cginc
/// @brief SP Car Paint surface shader definition.
/////////////////////////////////////////////////////////////////////////////////
#ifndef ALLOY_MODS_SHADERS_DEFINITION_SP_CAR_PAINT_CGINC
#define ALLOY_MODS_SHADERS_DEFINITION_SP_CAR_PAINT_CGINC
#define A_CLEARCOAT_ON
#define A_MAIN_TEXTURES_ON
#include "Assets/Alloy/Shaders/Lighting/Standard.cginc"
#include "Assets/Alloy/Shaders/Type/Standard.cginc"
/// The secondary paint tint color.
/// Expects a linear LDR color.
half3 _CarPaintSecondaryColor;
/// The tertiary paint tint color.
/// Expects a linear LDR color.
half3 _CarPaintTertiaryColor;
/// Clear Coat weight.
/// Expects values in the range [0,1].
half _CarPaintClearCoatWeight;
/// Clear Coat roughness.
/// Expects values in the range [0,1].
half _CarPaintClearCoatRoughness;
/// The metallic flake tint color.
/// Expects a linear LDR color.
half3 _CarPaintFlakeColor;
/// Flake normal map.
/// Expects a compressed normal map.
A_SAMPLER_2D(_CarPaintFlakeNormalMap);
/// Flake weight.
/// Expects values in the range [0,1].
half _CarPaintFlakeWeight;
void aSurfaceShader(
inout ASurface s)
{
aParallax(s);
aDissolve(s);
aMainTextures(s);
aDetail(s);
aTeamColor(s);
s.mask = s.opacity;
// Two-tone car paint with metal flakes.
// http://www.chrisoat.com/papers/Oat-Tatarchuk-Isidoro-Layered_Car_Paint_Shader_Print.pdf
float2 flakeUv = A_TEX_TRANSFORM_UV(s, _CarPaintFlakeNormalMap);
half3 flakeNormalTangent = UnpackScaleNormal(tex2D(_CarPaintFlakeNormalMap, flakeUv), 1.0h);
half3 paintNpWorld = aTangentToWorld(s, 0.2h * flakeNormalTangent + s.normalTangent);
half3 flakeNpWorld = aTangentToWorld(s, _CarPaintFlakeWeight * flakeNormalTangent + s.normalTangent);
half fresnel1 = aDotClamp(paintNpWorld, s.viewDirWorld);
half fresnel2 = aDotClamp(flakeNpWorld, s.viewDirWorld);
half fresnel1Sq = fresnel1 * fresnel1;
half3 paintColor = fresnel1 * s.baseColor +
fresnel1Sq * _CarPaintSecondaryColor +
fresnel1Sq * fresnel1Sq * _CarPaintTertiaryColor +
pow(fresnel2, 16.0h) * _CarPaintFlakeColor;
// Clear Coat
s.baseColor = lerp(s.baseColor, paintColor, s.mask);
s.clearCoat = s.mask * _CarPaintClearCoatWeight;
s.clearCoatRoughness = _CarPaintClearCoatRoughness;
s.mask = 1.0h;
aAo2(s);
aDecal(s);
aWetness(s);
aEmission(s);
aRim(s);
}
#endif // ALLOY_MODS_SHADERS_DEFINITION_SP_CAR_PAINT_CGINC