private void processNormalFields(StreamWriter stream, List <FieldInfo> normalFields, BaseCompilerOutputs baseType) { if (outputType == CompilerOutputs.D3D11) { int fieldCount = 0; foreach (var field in normalFields) { Type filedType = field.FieldType; if (filedType == typeof(Texture2D)) { ++fieldCount; } } if (fieldCount != 0) { stream.WriteLine(string.Format("{0} {1}[{2}];", "sampler", "Samplers", fieldCount)); } } int samplerFieldCount = 0, registerIndex = 0; foreach (var field in normalFields) { string fieldType = convertToBasicType(field.FieldType, true); if (baseType == BaseCompilerOutputs.GLSL || baseType == BaseCompilerOutputs.CG) { stream.Write("uniform "); } int arrayLength = -1; if (field.FieldType.IsArray && field.GetCustomAttributes(typeof(ArrayType), true).Length != 0) { var attributes = field.GetCustomAttributes(typeof(ArrayType), true)[0] as ArrayType; if (attributes != null) { arrayLength = attributes.Length; } } if (outputType == CompilerOutputs.Silverlight) { if (field.FieldType == typeof(Texture2D)) { stream.WriteLine(string.Format("sampler2D {0} : register(s{1});", field.Name, samplerFieldCount)); ++samplerFieldCount; } else { int registerSize = getRegisterySize(field); stream.WriteLine(string.Format("{0} {1} : register(c{2});", fieldType, field.Name + ((arrayLength == -1) ? "" : "[" + arrayLength.ToString() + "]"), registerIndex)); registerIndex += registerSize; } } else { stream.WriteLine(string.Format("{0} {1};", fieldType, field.Name + ((arrayLength == -1) ? "" : "[" + arrayLength.ToString() + "]"))); } if (outputType == CompilerOutputs.XNA && field.FieldType == typeof(Texture2D)) { stream.Write(string.Format("sampler2D {0}_S : register(s{1}) = sampler_state", field.Name, samplerFieldCount) + " {"); stream.WriteLine(string.Format("Texture = <{0}>;", field.Name) + "};"); ++samplerFieldCount; } } stream.WriteLine(); }
private void processNormalFields(StreamWriter stream, List<FieldInfo> normalFields, BaseCompilerOutputs baseType) { if (outputType == CompilerOutputs.D3D11) { int fieldCount = 0; foreach (var field in normalFields) { Type filedType = field.FieldType; if (filedType == typeof(Texture2D)) { ++fieldCount; } } if (fieldCount != 0) { stream.WriteLine(string.Format("{0} {1}[{2}];", "sampler", "Samplers", fieldCount)); } } int samplerFieldCount = 0, registerIndex = 0; foreach (var field in normalFields) { string fieldType = convertToBasicType(field.FieldType, true); if (baseType == BaseCompilerOutputs.GLSL || baseType == BaseCompilerOutputs.CG) stream.Write("uniform "); int arrayLength = -1; if (field.FieldType.IsArray && field.GetCustomAttributes(typeof(ArrayType), true).Length != 0) { var attributes = field.GetCustomAttributes(typeof(ArrayType), true)[0] as ArrayType; if (attributes != null) { arrayLength = attributes.Length; } } if (outputType == CompilerOutputs.Silverlight) { if (field.FieldType == typeof(Texture2D)) { stream.WriteLine(string.Format("sampler2D {0} : register(s{1});", field.Name, samplerFieldCount)); ++samplerFieldCount; } else { int registerSize = getRegisterySize(field); stream.WriteLine(string.Format("{0} {1} : register(c{2});", fieldType, field.Name + ((arrayLength == -1) ? "" : "[" + arrayLength.ToString() + "]"), registerIndex)); registerIndex += registerSize; } } else { stream.WriteLine(string.Format("{0} {1};", fieldType, field.Name + ((arrayLength == -1) ? "" : "[" + arrayLength.ToString() + "]"))); } if (outputType == CompilerOutputs.XNA && field.FieldType == typeof(Texture2D)) { stream.Write(string.Format("sampler2D {0}_S : register(s{1}) = sampler_state", field.Name, samplerFieldCount) + " {"); stream.WriteLine(string.Format("Texture = <{0}>;", field.Name) + "};"); ++samplerFieldCount; } } stream.WriteLine(); }