rj-action-library/Runtime/Shading/Generators/ShaderGenerationContext.cs

41 lines
786 B
C#

using Godot;
using System.Reflection;
using System.Collections.Generic;
namespace Rokojori
{
public class ShaderGenerationContext
{
public ShaderPhase phase;
public List<ShaderVariant> variants = new List<ShaderVariant>();
public ShaderGenerationContext()
{
variants.Add( new ShaderVariant() );
}
public void Add( List<ShaderCode> code )
{
if ( code == null || code.Count == 0 )
{
return;
}
var newVariants = new List<ShaderVariant>();
for ( int i = 0; i < variants.Count; i++ )
{
var v = variants[ i ];
for ( int j = 0; j < code.Count; j++ )
{
newVariants.Add( v.Extend( code[ j ] ) );
}
}
variants = newVariants;
}
}
}