public IShaderPin CreatePin(string type, EffectVariable var, IPluginHost host, IIOFactory iofactory) { if (this.delegates.ContainsKey(type)) { IShaderPin sp = this.delegates[type](var); sp.Initialize(iofactory, var); return(sp); } else { return(null); } }
protected override void CreatePin(EffectVariable var) { if (var.AsInterface() != null) { if (var.LinkClasses().Length == 0) { if (var.GetVariableType().Description.Elements == 0) { /*InterfaceShaderPin ip = new InterfaceShaderPin(var, this.host, this.iofactory); * ip.ParentEffect = this.shader.DefaultEffect; * this.shaderpins.Add(var.Description.Name, ip);*/ } } else { RestrictedInterfaceShaderPin rp = new RestrictedInterfaceShaderPin(); rp.Initialize(this.iofactory, var); rp.ParentEffect = this.shader.DefaultEffect; this.shaderpins.Add(var.Description.Name, rp); } return; } //Search for render variable first if (ShaderPinFactory.IsRenderVariable(var)) { IRenderVariable rv = ShaderPinFactory.GetRenderVariable(var, this.host, this.iofactory); this.rendervariables.Add(rv.Name, rv); } else if (ShaderPinFactory.IsWorldRenderVariable(var)) { IWorldRenderVariable wv = ShaderPinFactory.GetWorldRenderVariable(var, this.host, this.iofactory); this.worldvariables.Add(wv.Name, wv); } else if (ShaderPinFactory.IsShaderPin(var)) { IShaderPin sp = traverseResult().Pins[var.Description.Name]; sp.Initialize(iofactory, var); if (sp != null) { this.shaderpins.Add(sp.Name, sp); } } else { if (var.Description.Semantic != "IMMUTABLE" && var.Description.Semantic != "") { this.customvariables.Add(new DX11CustomRenderVariable(var)); } } }
public static bool Match(this EffectVariable var, IShaderPin shadervar) { //For pins, if type/elements or now has a semantic, we need to recreate the pin bool res = var.GetVariableType().Description.TypeName == shadervar.TypeName && var.GetVariableType().Description.Elements == shadervar.Elements && var.Description.Name == shadervar.Name && var.Description.Semantic == ""; //Check if need to change shader type if (res && shadervar is IMultiTypeShaderPin) { res = ((IMultiTypeShaderPin)shadervar).ChangeType(var); } return(res); }
public static bool Match(this EffectVariable var, IShaderPin shadervar) { //For pins, if type/elements or now has a semantic, we need to recreate the pin bool res = var.GetVariableType().Description.TypeName == shadervar.TypeName && var.GetVariableType().Description.Elements == shadervar.Elements && var.Description.Name == shadervar.Name && var.Description.Semantic ==""; //Check if need to change shader type if (res && shadervar is IMultiTypeShaderPin) { res = ((IMultiTypeShaderPin)shadervar).ChangeType(var); } return res; }