diff --git a/renderdocui/Code/FormatElement.cs b/renderdocui/Code/FormatElement.cs index 754b01e5a..656f325a0 100644 --- a/renderdocui/Code/FormatElement.cs +++ b/renderdocui/Code/FormatElement.cs @@ -383,6 +383,8 @@ namespace renderdocui.Code ret.columns = Math.Min(format.compCount, 4); ret.rows = Math.Min(matrixdim, 4); + ret.displayAsHex = hex; + ret.members = new ShaderVariable[0] { }; ret.value.fv = new float[16]; diff --git a/renderdocui/Interop/Formatter.cs b/renderdocui/Interop/Formatter.cs index 3d11794fd..8feacbff4 100644 --- a/renderdocui/Interop/Formatter.cs +++ b/renderdocui/Interop/Formatter.cs @@ -53,6 +53,11 @@ namespace renderdoc return String.Format("{0}", u); } + public static String Format(UInt32 u, bool hex) + { + return String.Format(hex ? "{0:X8}" : "{0}", u); + } + public static String Format(Int32 i) { return String.Format("{0}", i); diff --git a/renderdocui/Interop/Shader.cs b/renderdocui/Interop/Shader.cs index 0a9d4c87e..a457147ba 100644 --- a/renderdocui/Interop/Shader.cs +++ b/renderdocui/Interop/Shader.cs @@ -38,6 +38,9 @@ namespace renderdoc public VarType type; + [CustomMarshalAs(CustomUnmanagedType.Skip)] + public bool displayAsHex = false; + [StructLayout(LayoutKind.Sequential)] public struct ValueUnion { @@ -91,10 +94,15 @@ namespace renderdoc if (rows == 0 && columns == 0) return "-"; - if (columns == 1) - return type.Str(); + string typeStr = type.Str(); - return String.Format("{0}{1}", type.Str(), columns); + if(displayAsHex && type == VarType.UInt) + typeStr = "xint"; + + if (columns == 1) + return typeStr; + + return String.Format("{0}{1}", typeStr, columns); } public string TypeString() @@ -107,9 +115,14 @@ namespace renderdoc return String.Format("{0}[{1}]", members[0].TypeString(), members.Length); } - if (rows == 1 && columns == 1) return type.Str(); - if (rows == 1) return String.Format("{0}{1}", type.Str(), columns); - else return String.Format("{0}{1}x{2}", type.Str(), rows, columns); + string typeStr = type.Str(); + + if (displayAsHex && type == VarType.UInt) + typeStr = "xint"; + + if (rows == 1 && columns == 1) return typeStr; + if (rows == 1) return String.Format("{0}{1}", typeStr, columns); + else return String.Format("{0}{1}x{2}", typeStr, rows, columns); } public string RowValuesToString(int cols, double x, double y, double z, double w) @@ -130,10 +143,10 @@ namespace renderdoc public string RowValuesToString(int cols, UInt32 x, UInt32 y, UInt32 z, UInt32 w) { - if (cols == 1) return Formatter.Format(x); - else if (cols == 2) return Formatter.Format(x) + ", " + Formatter.Format(y); - else if (cols == 3) return Formatter.Format(x) + ", " + Formatter.Format(y) + ", " + Formatter.Format(z); - else return Formatter.Format(x) + ", " + Formatter.Format(y) + ", " + Formatter.Format(z) + ", " + Formatter.Format(w); + if (cols == 1) return Formatter.Format(x, displayAsHex); + else if (cols == 2) return Formatter.Format(x, displayAsHex) + ", " + Formatter.Format(y, displayAsHex); + else if (cols == 3) return Formatter.Format(x, displayAsHex) + ", " + Formatter.Format(y, displayAsHex) + ", " + Formatter.Format(z, displayAsHex); + else return Formatter.Format(x, displayAsHex) + ", " + Formatter.Format(y, displayAsHex) + ", " + Formatter.Format(z, displayAsHex) + ", " + Formatter.Format(w, displayAsHex); } public string RowValuesToString(int cols, Int32 x, Int32 y, Int32 z, Int32 w)