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,105 @@
// Alloy Physical Shader Framework
// Copyright 2013-2017 RUST LLC.
// http://www.alloy.rustltd.com/
/////////////////////////////////////////////////////////////////////////////////
/// @file SpeedTree.cginc
/// @brief SpeedTree standard material properties.
/////////////////////////////////////////////////////////////////////////////////
#ifndef ALLOY_SHADERS_FEATURE_SPEED_TREE_CGINC
#define ALLOY_SHADERS_FEATURE_SPEED_TREE_CGINC
#ifdef A_SPEED_TREE_ON
// NOTE: AO on/off determined by matching SpeedTree(Billboard) Model.
#if defined(GEOM_TYPE_FROND) || defined(GEOM_TYPE_LEAF) || defined(GEOM_TYPE_FACING_LEAF)
#ifndef _ALPHATEST_ON
#define _ALPHATEST_ON
#endif
#ifndef A_TWO_SIDED_SHADER
#define A_TWO_SIDED_SHADER
#endif
#ifndef A_SUBSURFACE_ON
#define A_SUBSURFACE_ON
#endif
#endif
#endif
#include "Assets/Alloy/Shaders/Framework/Feature.cginc"
#ifdef A_SPEED_TREE_ON
#ifdef GEOM_TYPE_BRANCH_DETAIL
sampler2D _DetailTex;
sampler2D _DetailNormalMap;
#endif
#ifdef EFFECT_HUE_VARIATION
half4 _HueVariation;
#endif
#ifdef A_SUBSURFACE_ON
/// Transmission tint color.
/// Expects a linear LDR color.
half3 _TransColor;
/// Transmission color * thickness texture.
/// Expects an RGB map with sRGB sampling.
sampler2D _TransTex;
/// Weight of the transmission effect.
/// Expects gamma-space values in the range [0,1].
half _TransScale;
#endif
#endif
void aSpeedTree(
inout ASurface s)
{
#ifdef A_SPEED_TREE_ON
half4 base = aSampleBase(s);
s.baseColor = base.rgb;
s.opacity = _Color.a * base.a;
aCutout(s);
// AO content depends on matching Model header.
s.ambientOcclusion = s.vertexColor.r;
s.normalTangent = A_NT(s, aSampleBump(s));
#ifdef A_SUBSURFACE_ON
s.subsurface = A_SS(s, _TransScale * tex2D(_TransTex, s.baseUv).a);
s.subsurfaceColor *= _TransColor;
#endif
#ifdef GEOM_TYPE_BRANCH_DETAIL
half4 detailColor = tex2D(_DetailTex, s.uv01.zw);
half weight = s.vertexColor.g < 2.0f ? saturate(s.vertexColor.g) : detailColor.a;
s.baseColor = lerp(s.baseColor, detailColor.rgb, weight);
half3 detailNormals = UnpackScaleNormal(tex2D(_DetailNormalMap, s.uv01.zw), weight);
s.normalTangent = A_NT(s, BlendNormals(s.normalTangent, detailNormals));
#endif
#ifdef EFFECT_HUE_VARIATION
half3 shiftedColor = lerp(s.baseColor, _HueVariation.rgb, s.vertexColor.b);
half maxBase = max(s.baseColor.r, max(s.baseColor.g, s.baseColor.b));
half newMaxBase = max(shiftedColor.r, max(shiftedColor.g, shiftedColor.b));
maxBase /= newMaxBase;
maxBase = maxBase * 0.5f + 0.5f;
// preserve vibrance
shiftedColor.rgb *= maxBase;
s.baseColor = saturate(shiftedColor);
#endif
s.baseColor *= _Color.rgb;
#endif
}
#endif // ALLOY_SHADERS_FEATURE_SPEED_TREE_CGINC