rj-action-library/Runtime/Shading/Generators/Spatial/Alpha/AlphaFade.cs

56 lines
951 B
C#

using Godot;
using System.Reflection;
using System.Collections.Generic;
namespace Rokojori
{
public enum AlphaFadeMode
{
___,
Alpha,
NoiseDitherDiscard
}
public static class AlphaFade
{
public static List<ShaderCode> Includes( string variableName, AlphaFadeMode mode )
{
if ( AlphaFadeMode.NoiseDitherDiscard != mode )
{
return null;
}
return ShaderGenerationModule.IncludeNoiseLibrary();
}
public static string Fragment( string variableName, AlphaFadeMode mode )
{
if ( AlphaFadeMode.Alpha == mode )
{
return " ALPHA *= " + variableName + ";\n";
}
if ( AlphaFadeMode.NoiseDitherDiscard == mode )
{
var code =
$@"
if ( ditherDiscard( {variableName}, FRAGCOORD ) )
{{
discard;
}}
";
return code.Indent( " ");
}
return null;
}
}
}