private void WriteBlendState(String name, BlendState value) { _writer.Write(TAB_BLOCK2); _writer.Write("BlendState"); WriteSpace(); _writer.Write(name); RenderStateKey key = value.RenderStateKey; if (key.Equals(BlendState.AdditiveBlend.RenderStateKey)) { WriteSeparator(); _writer.Write("AdditiveBlend"); WriteNewLine(); } else if (key.Equals(BlendState.AlphaBlendNonPremultiplied.RenderStateKey)) { WriteSeparator(); _writer.Write("AlphaBlendNonPremultiplied"); WriteNewLine(); } else if (key.Equals(BlendState.AlphaBlendPremultiplied.RenderStateKey)) { WriteSeparator(); _writer.Write("AlphaBlendPremultiplied"); WriteNewLine(); } else if (key.Equals(BlendState.Opaque.RenderStateKey)) { WriteSeparator(); _writer.Write("Opaque"); WriteNewLine(); } else { WriteOpenBrace(); if (value.AlphaBlendFunction != BlendFunction.Add) { _writer.Write(TAB_BLOCK3); _writer.Write("AlphaBlendFunction"); WriteSeparator(); _writer.Write(value.AlphaBlendFunction.ToString()); WriteNewLine(); } if (value.AlphaSourceBlend != Blend.One) { _writer.Write(TAB_BLOCK3); _writer.Write("AlphaSourceBlend"); WriteSeparator(); _writer.Write(value.AlphaSourceBlend.ToString()); WriteNewLine(); } if (value.AlphaDestinationBlend != Blend.Zero) { _writer.Write(TAB_BLOCK3); _writer.Write("AlphaDestinationBlend"); WriteSeparator(); _writer.Write(value.AlphaDestinationBlend.ToString()); WriteNewLine(); } if (value.ColorBlendFunction != BlendFunction.Add) { _writer.Write(TAB_BLOCK3); _writer.Write("ColorBlendFunction"); WriteSeparator(); _writer.Write(value.ColorBlendFunction.ToString()); WriteNewLine(); } if (value.ColorSourceBlend != Blend.One) { _writer.Write(TAB_BLOCK3); _writer.Write("ColorSourceBlend"); WriteSeparator(); _writer.Write(value.ColorSourceBlend.ToString()); WriteNewLine(); } if (value.ColorDestinationBlend != Blend.Zero) { _writer.Write(TAB_BLOCK3); _writer.Write("ColorDestinationBlend"); WriteSeparator(); _writer.Write(value.ColorDestinationBlend.ToString()); WriteNewLine(); } if (!value.BlendFactor.Equals(Color.White)) { _writer.Write(TAB_BLOCK3); _writer.Write("BlendFactor"); WriteSeparator(); Color c = value.BlendFactor; _writer.Write(c.R); WriteSpace(); _writer.Write(c.G); WriteSpace(); _writer.Write(c.B); WriteSpace(); _writer.Write(c.A); WriteNewLine(); } if (value.MultiSampleMask != int.MaxValue) { _writer.Write(TAB_BLOCK3); _writer.Write("MultiSampleMask"); WriteSeparator(); _writer.Write(value.MultiSampleMask); WriteNewLine(); } int beCount = value.BlendEnableCount; if (beCount > 0) { if (value.GetBlendEnable(0) == false) { _writer.Write(TAB_BLOCK3); _writer.Write("BlendEnable[0]"); WriteSeparator(); _writer.Write("false"); WriteNewLine(); } for (int i = 1; i < beCount; i++) { if (value.GetBlendEnable(i) == true) { _writer.Write(TAB_BLOCK3); _writer.Write("BlendEnable["); _writer.Write(i); _writer.Write("]"); WriteSeparator(); _writer.Write("true"); WriteNewLine(); } } } int cwCount = value.ColorWriteChannelsCount; if (cwCount > 0) { ColorWriteChannels cwc = value.GetWriteChannels(0); if (cwc != ColorWriteChannels.All) { _writer.Write(TAB_BLOCK3); _writer.Write("ColorWriteChannels[0]"); WriteSeparator(); _writer.Write(cwc.ToString().Replace(",", " |")); WriteNewLine(); } for (int i = 1; i < cwCount; i++) { cwc = value.GetWriteChannels(i); if (cwc != ColorWriteChannels.All) { _writer.Write(TAB_BLOCK3); _writer.Write("ColorWriteChannels["); _writer.Write(i); _writer.Write("]"); WriteSeparator(); _writer.Write(cwc.ToString().Replace(",", " |")); WriteNewLine(); } } } WriteCloseBrace(false, TAB_BLOCK2); } }