public struct AllPossibleShaderParameters
public abstract class Settings
public abstract AllPossibleShaderParameters IntoShaderParameters(float t);
public sealed class SettingsUsingAAndB : Settings
public override AllPossibleShaderParameters IntoShaderParameters(float t)
return new AllPossibleShaderParameters
public sealed class SettingsUsingA : Settings
public override AllPossibleShaderParameters IntoShaderParameters(float t)
return new AllPossibleShaderParameters
public sealed class SettingsUsingBAndC : Settings
public override AllPossibleShaderParameters IntoShaderParameters(float t)
return new AllPossibleShaderParameters
public static void ApplyShaderParameters(AllPossibleShaderParameters parameters)
System.Console.WriteLine($"Applying shader parameters : ({parameters.A}, {parameters.B}, {parameters.C})");
public static void Main(string[] args)
ApplyShaderParameters(new SettingsUsingA().IntoShaderParameters(5.0f));
ApplyShaderParameters(new SettingsUsingAAndB().IntoShaderParameters(5.0f));
ApplyShaderParameters(new SettingsUsingBAndC().IntoShaderParameters(5.0f));