4 using System.Collections.Generic;
6 using SiliconStudio.Paradox.Effects;
8 namespace SiliconStudio.
Paradox.Shaders
15 private static readonly Dictionary<string, IShaderMixinBuilder> RegisteredBuilders =
new Dictionary<string, IShaderMixinBuilder>();
29 if (pdxfxEffectName == null)
30 throw new ArgumentNullException(
"pdxfxEffectName");
33 throw new ArgumentNullException(
"builder");
35 lock (RegisteredBuilders)
37 RegisteredBuilders[pdxfxEffectName] = builder;
47 public static bool Contains(
string pdxfxEffectName)
49 if (pdxfxEffectName == null)
throw new ArgumentNullException(
"pdxfxEffectName");
50 lock (RegisteredBuilders)
52 return RegisteredBuilders.ContainsKey(pdxfxEffectName);
65 if (pdxfxEffectName == null)
66 throw new ArgumentNullException(
"pdxfxEffectName");
68 lock (RegisteredBuilders)
70 return RegisteredBuilders.TryGetValue(pdxfxEffectName, out builder);
83 if (pdxfxEffectName == null)
throw new ArgumentNullException(
"pdxfxEffectName");
85 if (properties == null)
86 throw new ArgumentNullException(
"properties");
89 Dictionary<string, IShaderMixinBuilder> builders;
90 lock (RegisteredBuilders)
92 if (!TryGet(pdxfxEffectName, out builder))
93 throw new ArgumentException(
string.Format(
"Pdxfx effect [{0}] not found", pdxfxEffectName),
"pdxfxEffectName");
95 builders =
new Dictionary<string, IShaderMixinBuilder>(RegisteredBuilders);
100 builder.Generate(mixinTree, context);
102 mainUsedParameters = context.GetMainUsedParameters();
103 usedParameters = context.GetUsedParameters();
112 lock (RegisteredBuilders)
114 RegisteredBuilders.Clear();
Parameters used for mixin.
static bool Contains(string pdxfxEffectName)
Determines whether the specified PDXFX effect is registered.
static void UnRegisterAll()
Un-register all registered IShaderMixinBuilder.
Contains a tree of ShaderMixinSource.
A context used when mixin ShaderSource.
static ShaderMixinSourceTree Generate(string pdxfxEffectName, ParameterCollection properties, out ShaderMixinParameters mainUsedParameters, out List< ShaderMixinParameters > usedParameters)
Generates a ShaderMixinSourceTree for the specified names and parameters.
static void Register(string pdxfxEffectName, IShaderMixinBuilder builder)
Registers a IShaderMixinBuilder with the specified pdxfx effect name.
Manages IShaderMixinBuilder and generation of shader mixins.
Interface to be implemented for dynamic mixin generation.
static bool TryGet(string pdxfxEffectName, out IShaderMixinBuilder builder)
Tries to get a IShaderMixinBuilder by its name.
A container to handle a hierarchical collection of effect variables.