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));
                }
            }
        }
Beispiel #2
0
        public bool HasDynamicPins(DX11Effect shader)
        {
            if (shader?.DefaultEffect == null)
            {
                return(false);
            }
            for (int i = 0; i < shader.DefaultEffect.Description.GlobalVariableCount; i++)
            {
                EffectVariable var = shader.DefaultEffect.GetVariableByIndex(i);
                if (ShaderPinFactory.IsShaderPin(var))
                {
                    return(true);
                }
            }

            return(false);
        }