public void ReadTechniquePassInput( TechniquePass tp, XmlNode node )
 {
     string semantic = node.Attributes[ "semantic" ].Value;
     if( !semantic.Equals( "TEXTURE" ) )
         return;
     string source = node.Attributes[ "source" ].Value;
     // strip off the leading '#'
     source = source.Substring( 1 );
     tp.textureId = source;
 }
 public void ReadTechniquePassProgram( TechniquePass tp, XmlNode node )
 {
     string url = node.Attributes[ "url" ].Value;
     switch( url )
     {
     case "PHONG":
     case "LAMBERT":
         tp.shader = "phong";
         break;
     case "CONSTANT":
     default:
         DebugMessage( node );
         break;
     }
 }
 public TechniquePass ReadTechniquePass( XmlNode node )
 {
     TechniquePass tp = new TechniquePass();
     foreach( XmlNode childNode in node.ChildNodes )
     {
         switch( childNode.Name )
         {
         case "input":
             ReadTechniquePassInput( tp, childNode );
             break;
         case "program":
             ReadTechniquePassProgram( tp, childNode );
             break;
         default:
             DebugMessage( childNode );
             break;
         }
     }
     return tp;
 }