private void ParseTechnique(UnifiedShaderInfo info, List<UnifiedShaderToken> tokens)
{
var name = ConsumeToken(tokens);
ExpectToken(name, UnifiedShaderTokenType.StringToken);
ExpectToken(ConsumeToken(tokens), UnifiedShaderTokenType.OpenBrace);
var technique = new TechniqueInfo
{
Name = name.Text,
Passes = new List<PassInfo>()
};
while (tokens[0].TokenType == UnifiedShaderTokenType.StringToken &&
tokens[0].Text == "pass")
{
var pass = new PassInfo();
ExpectToken(ConsumeToken(tokens), "pass");
var passName = ConsumeToken(tokens);
ExpectToken(passName, UnifiedShaderTokenType.StringToken);
pass.Name = passName.Text;
ParsePass(pass, tokens);
technique.Passes.Add(pass);
}
info.Techniques.Add(technique);
ExpectToken(ConsumeToken(tokens), UnifiedShaderTokenType.CloseBrace);
}