Beispiel #1
0
        private PassSyntax ParseUnityPass()
        {
            var passKeyword    = Match(SyntaxKind.PassKeyword);
            var openBraceToken = Match(SyntaxKind.OpenBraceToken);

            var statements     = new List <SyntaxNode>();
            var shouldContinue = true;

            while (shouldContinue && Current.Kind != SyntaxKind.CloseBraceToken)
            {
                switch (Current.Kind)
                {
                case SyntaxKind.TagsKeyword:
                    statements.Add(ParseUnityShaderTags());
                    break;

                case SyntaxKind.NameKeyword:
                    statements.Add(ParseUnityName());
                    break;

                default:
                    shouldContinue = TryParseStateProperty(statements);
                    break;
                }
            }

            ShaderProgramSyntax shaderProgram = null;

            if (Current.Kind == SyntaxKind.CgProgramKeyword || Current.Kind == SyntaxKind.HlslProgramKeyword)
            {
                shaderProgram = ParseUnityShaderProgram();
            }

            var closeBraceToken = Match(SyntaxKind.CloseBraceToken);

            return(new PassSyntax(
                       passKeyword,
                       openBraceToken,
                       statements,
                       shaderProgram,
                       closeBraceToken));
        }
Beispiel #2
0
 public override void VisitShaderProgram(ShaderProgramSyntax node)
 {
     AddBlockSpan(node.BeginProgramKeyword, node.EndProgramKeyword);
 }
 public virtual void VisitShaderProgram(ShaderProgramSyntax node)
 {
     DefaultVisit(node);
 }