protected override void ChooseEffect(GraphicsDevice graphicsDevice) { // TODO: Free previous descriptor sets and layouts? // Looks like the effect changed, it needs a recompilation var compilerParameters = new CompilerParameters(); foreach (var effectParameterKey in Parameters.ParameterKeyInfos) { if (effectParameterKey.Key.Type == ParameterKeyType.Permutation) { // TODO GRAPHICS REFACTOR avoid direct access, esp. since permutation values might be separated from Objects at some point compilerParameters.SetObject(effectParameterKey.Key, Parameters.ObjectValues[effectParameterKey.BindingSlot]); } } effect = effectSystem.LoadEffect(effectName, compilerParameters).WaitForResult(); }
private CompilerParameters BuildCompilerParameters(DynamicEffectInstance effectInstance, ParameterCollection passParameters) { var compilerParameters = new CompilerParameters(); parameterCollections.Clear(); if (passParameters != null) { parameterCollections.Add(passParameters); } effectInstance.FillParameterCollections(ref parameterCollections); foreach (var parameterCollection in parameterCollections) { if (parameterCollection != null) { foreach (var parameter in parameterCollection.InternalValues) { compilerParameters.SetObject(parameter.Key, parameter.Value.Object); } } } compilerParameters.TaskPriority = taskPriority; foreach (var parameter in GraphicsDevice.Parameters.InternalValues) { compilerParameters.SetObject(parameter.Key, parameter.Value.Object); } return compilerParameters; }