internal void AddTechnique(string effectId, MaterialTechnique_14 technique) { s_Log.Info("AddTechnique: " + effectId); if (!m_Techniques.ContainsKey(effectId)) { m_Techniques[effectId] = new List <MaterialTechnique_14>(); } m_Techniques[effectId].Add(technique); }
internal void AddTechnique( string effectId, MaterialTechnique_14 technique ) { s_Log.Info( "AddTechnique: " + effectId ); if( !m_Techniques.ContainsKey( effectId ) ) { m_Techniques[ effectId ] = new List<MaterialTechnique_14>(); } m_Techniques[ effectId ].Add( technique ); }
public void ReadAmbient( MaterialTechnique_14 technique, XmlNode node, ColladaMeshInfo meshInfo ) { foreach( XmlNode childNode in node.ChildNodes ) { switch( childNode.Name ) { case "color": technique.Ambient = ReadColor( node ); break; case "texture": log.Warn( "Ambient texture is unsupported" ); technique.AmbientTexture = ReadTexture( childNode ); break; default: DebugMessage( node ); break; } } }
public void ReadPhong( MaterialTechnique_14 technique, XmlNode node, ColladaMeshInfo meshInfo ) { foreach( XmlNode childNode in node.ChildNodes ) { switch( childNode.Name ) { case "diffuse": ReadDiffuse( technique, childNode, meshInfo ); break; case "emission": ReadEmission( technique, childNode, meshInfo ); break; case "ambient": ReadAmbient( technique, childNode, meshInfo ); break; case "specular": ReadSpecular( technique, childNode, meshInfo ); break; case "shininess": case "reflective": case "reflectivity": case "transparent": case "transparency": case "index_of_refraction": // ignored default: DebugMessage( childNode ); break; } } }
public void ReadDiffuse( MaterialTechnique_14 technique, XmlNode node, ColladaMeshInfo meshInfo ) { foreach( XmlNode childNode in node.ChildNodes ) { switch( childNode.Name ) { case "color": technique.Diffuse = ReadColor( node ); break; case "texture": technique.DiffuseTexture = ReadTexture( childNode ); break; default: DebugMessage( node ); break; } } }
public void ReadConstant( MaterialTechnique_14 technique, XmlNode node, ColladaMeshInfo meshInfo ) { // should really be lit based solely on emissive, // with ambient, diffuse and specular set to 0 foreach( XmlNode childNode in node.ChildNodes ) { switch( childNode.Name ) { case "emission": technique.Emissive = ReadColorProperty( childNode ); break; case "reflective": case "reflectivity": case "transparent": case "transparency": case "index_of_refraction": // ignored default: DebugMessage( childNode ); break; } } }
public void ReadTechniqueCommon( string effectId, string effectName, XmlNode node, ColladaMeshInfo meshInfo ) { string techniqueId = string.Empty; if( node.Attributes[ "id" ] != null ) techniqueId = node.Attributes[ "id" ].Value; MaterialTechnique_14 technique = new MaterialTechnique_14( techniqueId ); foreach( XmlNode childNode in node.ChildNodes ) { switch( childNode.Name ) { case "constant": ReadConstant( technique, childNode, meshInfo ); break; case "lambert": case "phong": case "blinn": // looks like the modeling tools output phong to collada even if the // shader is specified as blinn in the tool // Note: phong uses the reflection vector instead of the half angle vector ReadPhong( technique, childNode, meshInfo ); break; case "asset": case "image": case "extra": default: DebugMessage( childNode ); break; } } MaterialBuilder.AddTechnique( effectId, technique ); }