예제 #1
0
        protected virtual object EvalTechnique_Declaration(ParseTree tree, params object[] paramlist)
        {
            TechniqueInfo technique = new TechniqueInfo();

            technique.name     = this.GetValue(tree, TokenType.Identifier, 0) as string ?? string.Empty;
            technique.startPos = Token.StartPos;
            technique.length   = Token.Length;

            foreach (ParseNode node in Nodes)
            {
                var pass = node.Eval(tree, technique) as PassInfo;
                if (pass != null)
                {
                    technique.Passes.Add(pass);
                }
            }

            return(technique);
        }
예제 #2
0
        protected virtual object EvalTechnique_Declaration(ParseTree tree, params object[] paramlist)
        {
            var technique = new TechniqueInfo();

            technique.name     = this.GetValue(tree, TokenType.Identifier, 0) as string ?? string.Empty;
            technique.startPos = Token.StartPos;
            technique.length   = Token.Length;

            foreach (var node in Nodes)
            {
                node.Eval(tree, technique);
            }

            // Make sure we have at least one pass.
            if (technique.Passes.Count > 0)
            {
                var shaderInfo = paramlist[0] as ShaderInfo;
                shaderInfo.Techniques.Add(technique);
            }

            return(null);
        }