Пример #1
0
 string GetSemanticName(SignatureParameterDescription param)
 {
     if (param.SemanticName == "TEXCOORD")
     {
         return($"{param.SemanticName}{param.SemanticIndex}");
     }
     return(param.SemanticName);
 }
Пример #2
0
        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));
 }
Пример #4
0
        void WriteParameter(SignatureParameterDescription param)
        {
            WriteIndent();
            var fieldType = GetFieldType(param);

            Write($"{fieldType} {param.GetName()} : {GetSemanticName(param)};");
            DebugSignatureParamater(param);
        }
Пример #5
0
 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);
 }
Пример #6
0
        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}");
            }
        }
Пример #7
0
 void DebugSignatureParamater(SignatureParameterDescription param)
 {
     Output.Append(" // ");
     Output.AppendLine(param.ToString());
 }
Пример #8
0
 public static string GetName(this SignatureParameterDescription param)
 {
     return($"{param.SemanticName.ToLower()}{param.SemanticIndex}");
 }
Пример #9
0
 void DebugSignatureParamater(SignatureParameterDescription param)
 {
     Write(" // ");
     WriteLine(param.ToString());
 }