/// <summary> /// Set effect parameter /// </summary> /// <param name="name">Name of the uniform variable</param> /// <param name="value">Value of the uniform variable</param> public void SetEffectParam(string name, object value) { object param; if (ParamDecl != null) { if (ParamDecl.TryGetValue(name, out param)) { if (param != null) {// do nothing if new value = old value if (param.Equals(value)) { return; // TODO: Write a better compare method! } } ParamDecl[name] = value; ShaderEffectChanged?.Invoke(this, new ShaderEffectEventArgs(this, ShaderEffectChangedEnum.UNIFORM_VAR_UPDATED, name, value)); } else { // not in Parameters yet, add it and call uniform_var_changed! ParamDecl.Add(name, value); ShaderEffectChanged?.Invoke(this, new ShaderEffectEventArgs(this, ShaderEffectChangedEnum.UNIFORM_VAR_ADDED)); } } }
/// <summary> /// Set effect parameter /// </summary> /// <param name="name">Name of the uniform variable</param> /// <param name="value">Value of the uniform variable</param> public void SetEffectParam(string name, object value) { if (ParamDecl != null) { if (ParamDecl.ContainsKey(name)) { if (ParamDecl[name] != null) { if (ParamDecl[name].Equals(value)) { return; } } ParamDecl[name] = value; EffectEventArgs.Changed = ShaderEffectChangedEnum.UniformUpdated; EffectEventArgs.ChangedEffectVarName = name; EffectEventArgs.ChangedEffectVarValue = value; ShaderEffectChanged?.Invoke(this, EffectEventArgs); } else { Diagnostics.Warn("Trying to set unknown parameter! Ignoring change...."); } } }
/// <summary> /// Invokes deletion of shaders on GPU /// </summary> protected void Dispose() { ShaderEffectChanged?.Invoke(this, new ShaderEffectEventArgs(this, ShaderEffectChangedEnum.Dispose)); }
/// <summary> /// Is called when GC of this shadereffect kicks in /// </summary> public void Dispose() { ShaderEffectChanged?.Invoke(this, new ShaderEffectEventArgs(this, ShaderEffectChangedEnum.DISPOSE)); }