Example #1
0
 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);
     }
 }
Example #2
0
        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));
                }
            }
        }
Example #3
0
        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;
        }