示例#1
0
        public void Export(TextWriter writer)
        {
            if (Name != string.Empty)
            {
                writer.WriteIntent(3);
                writer.Write("Name \"{0}\"\n", Name);
            }
            if (LOD != 0)
            {
                writer.WriteIntent(3);
                writer.Write("LOD {0}\n", LOD);
            }
            Tags.Export(writer, 3);

            RtBlend0.Export(writer, RtSeparateBlend ? 0 : -1);
            RtBlend1.Export(writer, 1);
            RtBlend2.Export(writer, 2);
            RtBlend3.Export(writer, 3);
            RtBlend4.Export(writer, 4);
            RtBlend5.Export(writer, 5);
            RtBlend6.Export(writer, 6);
            RtBlend7.Export(writer, 7);

            if (AlphaToMaskValue)
            {
                writer.WriteIntent(3);
                writer.Write("AlphaToMask On\n");
            }

            if (!ZClipValue.IsOn())
            {
                writer.WriteIntent(3);
                writer.Write("ZClip {0}\n", ZClipValue);
            }
            if (!ZTestValue.IsLEqual())
            {
                writer.WriteIntent(3);
                writer.Write("ZTest {0}\n", ZTestValue);
            }
            if (!ZWriteValue.IsOn())
            {
                writer.WriteIntent(3);
                writer.Write("ZWrite {0}\n", ZWriteValue);
            }
            if (!CullingValue.IsBack())
            {
                writer.WriteIntent(3);
                writer.Write("Cull {0}\n", CullingValue);
            }
            if (!OffsetFactor.IsZero || !OffsetUnits.IsZero)
            {
                writer.WriteIntent(3);
                writer.Write("Offset {0}, {1}\n", OffsetFactor.Val, OffsetUnits.Val);
            }

            if (!StencilRef.IsZero || !StencilReadMask.IsMax || !StencilWriteMask.IsMax || !StencilOp.IsDefault || !StencilOpFront.IsDefault || !StencilOpBack.IsDefault)
            {
                writer.WriteIntent(3);
                writer.Write("Stencil {\n");
                if (!StencilRef.IsZero)
                {
                    writer.WriteIntent(4);
                    writer.Write("Ref {0}\n", StencilRef.Val);
                }
                if (!StencilReadMask.IsMax)
                {
                    writer.WriteIntent(4);
                    writer.Write("ReadMask {0}\n", StencilReadMask.Val);
                }
                if (!StencilWriteMask.IsMax)
                {
                    writer.WriteIntent(4);
                    writer.Write("WriteMask {0}\n", StencilWriteMask.Val);
                }
                if (!StencilOp.IsDefault)
                {
                    StencilOp.Export(writer, StencilType.Base);
                }
                if (!StencilOpFront.IsDefault)
                {
                    StencilOpFront.Export(writer, StencilType.Front);
                }
                if (!StencilOpBack.IsDefault)
                {
                    StencilOpBack.Export(writer, StencilType.Back);
                }
                writer.WriteIntent(3);
                writer.Write("}\n");
            }

            if (!FogMode.IsUnknown() || !FogColor.IsZero || !FogDensity.IsZero || !FogStart.IsZero || !FogEnd.IsZero)
            {
                writer.WriteIntent(3);
                writer.Write("Fog {\n");
                if (!FogMode.IsUnknown())
                {
                    writer.WriteIntent(4);
                    writer.Write("Mode {0}\n", FogMode);
                }
                if (!FogColor.IsZero)
                {
                    writer.WriteIntent(4);
                    writer.Write("Color ({0},{1},{2},{3})\n",
                                 FogColor.X.Val.ToString(CultureInfo.InvariantCulture),
                                 FogColor.Y.Val.ToString(CultureInfo.InvariantCulture),
                                 FogColor.Z.Val.ToString(CultureInfo.InvariantCulture),
                                 FogColor.W.Val.ToString(CultureInfo.InvariantCulture));
                }
                if (!FogDensity.IsZero)
                {
                    writer.WriteIntent(4);
                    writer.Write("Density {0}\n", FogDensity.Val.ToString(CultureInfo.InvariantCulture));
                }
                if (!FogStart.IsZero || !FogEnd.IsZero)
                {
                    writer.WriteIntent(4);
                    writer.Write("Range {0}, {1}\n",
                                 FogStart.Val.ToString(CultureInfo.InvariantCulture),
                                 FogEnd.Val.ToString(CultureInfo.InvariantCulture));
                }
                writer.WriteIntent(3);
                writer.Write("}\n");
            }

            if (Lighting)
            {
                writer.WriteIntent(3);
                writer.Write("Lighting {0}\n", LightingValue);
            }
            writer.WriteIntent(3);
            writer.Write("GpuProgramID {0}\n", GpuProgramID);
        }
示例#2
0
        public StringBuilder ToString(StringBuilder sb)
        {
            if (Name != string.Empty)
            {
                sb.AppendIntent(3).Append("Name").Append(' ');
                sb.Append('"').Append(Name).Append('"');
                sb.Append('\n');
            }
            if (LOD != 0)
            {
                sb.AppendIntent(3).Append("LOD").Append(' ').Append(LOD).Append('\n');
            }
            Tags.ToString(sb, 3);

            RtBlend0.ToString(sb, RtSeparateBlend ? 0 : -1);
            RtBlend1.ToString(sb, 1);
            RtBlend2.ToString(sb, 2);
            RtBlend3.ToString(sb, 3);
            RtBlend4.ToString(sb, 4);
            RtBlend5.ToString(sb, 5);
            RtBlend6.ToString(sb, 6);
            RtBlend7.ToString(sb, 7);

            if (AlphaToMaskValue)
            {
                sb.AppendIntent(3).Append("AlphaToMask").Append(' ').Append("On").Append('\n');
            }

            if (!ZClipValue.IsOn())
            {
                sb.AppendIntent(3).Append("ZClip").Append(' ').Append(ZClipValue).Append('\n');
            }
            if (!ZTestValue.IsLEqual())
            {
                sb.AppendIntent(3).Append("ZTest").Append(' ').Append(ZTestValue).Append('\n');
            }
            if (!ZWriteValue.IsOn())
            {
                sb.AppendIntent(3).Append("ZWrite").Append(' ').Append(ZWriteValue).Append('\n');
            }
            if (!CullingValue.IsBack())
            {
                sb.AppendIntent(3).Append("Cull").Append(' ').Append(CullingValue).Append('\n');
            }
            if (!OffsetFactor.IsZero || !OffsetUnits.IsZero)
            {
                sb.AppendIntent(3).Append("Offset").Append(' ').Append(OffsetFactor.Val).Append(',').Append(' ').Append(OffsetUnits.Val).Append('\n');
            }

            if (!StencilRef.IsZero || !StencilReadMask.IsMax || !StencilWriteMask.IsMax || !StencilOp.IsDefault || !StencilOpFront.IsDefault || !StencilOpBack.IsDefault)
            {
                sb.AppendIntent(3).Append("Stencil").Append(' ').Append('{').Append('\n');
                if (!StencilRef.IsZero)
                {
                    sb.AppendIntent(4).Append("Ref").Append(' ').Append(StencilRef.Val).Append('\n');
                }
                if (!StencilReadMask.IsMax)
                {
                    sb.AppendIntent(4).Append("ReadMask").Append(' ').Append(StencilReadMask.Val).Append('\n');
                }
                if (!StencilWriteMask.IsMax)
                {
                    sb.AppendIntent(4).Append("WriteMask").Append(' ').Append(StencilWriteMask.Val).Append('\n');
                }
                if (!StencilOp.IsDefault)
                {
                    StencilOp.ToString(sb, StencilType.Base);
                }
                if (!StencilOpFront.IsDefault)
                {
                    StencilOpFront.ToString(sb, StencilType.Front);
                }
                if (!StencilOpBack.IsDefault)
                {
                    StencilOpBack.ToString(sb, StencilType.Back);
                }
                sb.AppendIntent(3).Append('}').Append('\n');
            }

            if (!FogMode.IsUnknown() || !FogColor.IsZero || !FogDensity.IsZero || !FogStart.IsZero || !FogEnd.IsZero)
            {
                sb.AppendIntent(3).Append("Fog").Append(' ').Append('{').Append('\n');
                if (!FogMode.IsUnknown())
                {
                    sb.AppendIntent(4).Append("Mode").Append(' ').Append(FogMode).Append('\n');
                }
                if (!FogColor.IsZero)
                {
                    sb.AppendIntent(4).Append("Color").Append(' ').Append('(');
                    sb.Append(FogColor.X.Val.ToString(CultureInfo.InvariantCulture)).Append(',');
                    sb.Append(FogColor.Y.Val.ToString(CultureInfo.InvariantCulture)).Append(',');
                    sb.Append(FogColor.Z.Val.ToString(CultureInfo.InvariantCulture)).Append(',');
                    sb.Append(FogColor.W.Val.ToString(CultureInfo.InvariantCulture));
                    sb.Append(')').Append('\n');
                }
                if (!FogDensity.IsZero)
                {
                    sb.AppendIntent(4).Append("Density").Append(' ').Append(FogDensity.Val.ToString(CultureInfo.InvariantCulture)).Append('\n');
                }
                if (!FogStart.IsZero || !FogEnd.IsZero)
                {
                    sb.AppendIntent(4).Append("Range").Append(' ').Append(FogStart.Val.ToString(CultureInfo.InvariantCulture)).Append(',');
                    sb.Append(' ').Append(FogEnd.Val.ToString(CultureInfo.InvariantCulture)).Append('\n');
                }
                sb.AppendIntent(3).Append('}').Append('\n');
            }

            if (Lighting)
            {
                sb.AppendIntent(3).Append("Lighting").Append(' ').Append(LightingValue).Append('\n');
            }
            sb.AppendIntent(3).Append("GpuProgramID").Append(' ').Append(GpuProgramID).Append('\n');
            return(sb);
        }