string GetSemanticName(SignatureParameterDescription param) { if (param.SemanticName == "TEXCOORD") { return($"{param.SemanticName}{param.SemanticIndex}"); } return(param.SemanticName); }
void WriteSignatureParamater(SignatureParameterDescription param) { AddIndent(); var fieldType = GetFieldType(param); Output.Append($"{fieldType} {param.GetName()} : {GetSemanticName(param)};"); DebugSignatureParamater(param); }
private static PixelShaderInputRegisterDeclarationToken FindInputRegisterDeclaration( IEnumerable <PixelShaderInputRegisterDeclarationToken> inputRegisterDeclarations, SignatureParameterDescription inputParameter) { return(inputRegisterDeclarations.FirstOrDefault(x => x.Operand.Indices[0].Value == inputParameter.Register && x.Operand.ComponentMask == inputParameter.ReadWriteMask)); }
void WriteParameter(SignatureParameterDescription param) { WriteIndent(); var fieldType = GetFieldType(param); Write($"{fieldType} {param.GetName()} : {GetSemanticName(param)};"); DebugSignatureParamater(param); }
private static void CompareParameter(ShaderParameterDescription expected, SignatureParameterDescription actual) { Assert.AreEqual((int)expected.ComponentType, (int)actual.ComponentType); //Assert.AreEqual((int) expected.ReadWriteMask, (int) actual.ReadWriteMask); // TODO: Bug in SharpDX? if (expected.Register != -1 || actual.Register != uint.MaxValue) { Assert.AreEqual(expected.Register, actual.Register); } Assert.AreEqual(expected.SemanticIndex, actual.SemanticIndex); Assert.AreEqual(expected.SemanticName, actual.SemanticName); Assert.AreEqual(expected.Stream, actual.Stream); Assert.AreEqual((int)expected.SystemValueType, (int)actual.SystemValueType); Assert.AreEqual((int)expected.UsageMask, (int)actual.Mask); }
string GetFieldType(SignatureParameterDescription param) { string fieldType = param.ComponentType.GetDescription(); if (param.MinPrecision != MinPrecision.None) { fieldType = param.MinPrecision.GetTypeName(); } int componentCount = 0; if (param.Mask.HasFlag(ComponentMask.X)) { componentCount += 1; } if (param.Mask.HasFlag(ComponentMask.Y)) { componentCount += 1; } if (param.Mask.HasFlag(ComponentMask.Z)) { componentCount += 1; } if (param.Mask.HasFlag(ComponentMask.W)) { componentCount += 1; } switch (componentCount) { case 1: return($"{fieldType}"); case 2: return($"{fieldType}2"); case 3: return($"{fieldType}3"); case 4: return($"{fieldType}4"); default: throw new Exception($"Invalid ComponentMask {param.Mask}"); } }
void DebugSignatureParamater(SignatureParameterDescription param) { Output.Append(" // "); Output.AppendLine(param.ToString()); }
public static string GetName(this SignatureParameterDescription param) { return($"{param.SemanticName.ToLower()}{param.SemanticIndex}"); }
void DebugSignatureParamater(SignatureParameterDescription param) { Write(" // "); WriteLine(param.ToString()); }