Fix double support in FormatElement & custom Buffer/CBuffer views

This commit is contained in:
baldurk
2014-09-17 18:51:00 +01:00
parent f2637a7bff
commit f4de6993bc
3 changed files with 19 additions and 12 deletions
+9 -6
View File
@@ -159,7 +159,9 @@ namespace renderdocui.Code
{
if (format.compType == FormatComponentType.Float)
{
if (format.compByteWidth == 4)
if (format.compByteWidth == 8)
ret.Add(read.ReadDouble());
else if (format.compByteWidth == 4)
ret.Add(read.ReadSingle());
else if (format.compByteWidth == 2)
ret.Add(format.ConvertFromHalf(read.ReadUInt16()));
@@ -194,9 +196,7 @@ namespace renderdocui.Code
}
else if (format.compType == FormatComponentType.Double)
{
// should never hit this! just read a float
ret.Add(read.ReadSingle());
renderdoc.StaticExports.LogText("Unexpected double FormatElement");
ret.Add(read.ReadDouble());
}
else
{
@@ -245,6 +245,7 @@ namespace renderdocui.Code
ret.value.fv = new float[16];
ret.value.uv = new uint[16];
ret.value.iv = new int[16];
ret.value._dv_arr = new double[16];
for (uint row = 0; row < ret.rows; row++)
{
@@ -255,7 +256,9 @@ namespace renderdocui.Code
object o = objs[src];
if (o is float)
if (o is double)
ret.value.dv[dst] = (double)o;
else if (o is float)
ret.value.fv[dst] = (float)o;
else if (o is uint)
ret.value.uv[dst] = (uint)o;
@@ -419,7 +422,7 @@ namespace renderdocui.Code
}
else if (basetype == "double")
{
type = FormatComponentType.Float;
type = FormatComponentType.Double;
width = 8;
}
else if (basetype == "unormh")
+6 -6
View File
@@ -50,13 +50,13 @@ namespace renderdoc
public Int32[] iv;
[CustomMarshalAs(CustomUnmanagedType.Skip)]
private double[] dv_arr;
public double[] _dv_arr;
public double[] dv
{
get
{
if (dv_arr == null)
if (_dv_arr == null)
{
UInt64[] ds = { 0, 0 };
ds[0] = uv[1];
@@ -68,12 +68,12 @@ namespace renderdoc
ds[0] |= uv[0];
ds[1] |= uv[2];
dv_arr = new double[2];
dv_arr[0] = BitConverter.Int64BitsToDouble(unchecked((long)ds[0]));
dv_arr[1] = BitConverter.Int64BitsToDouble(unchecked((long)ds[1]));
_dv_arr = new double[2];
_dv_arr[0] = BitConverter.Int64BitsToDouble(unchecked((long)ds[0]));
_dv_arr[1] = BitConverter.Int64BitsToDouble(unchecked((long)ds[1]));
}
return dv_arr;
return _dv_arr;
}
}
};
+4
View File
@@ -1340,6 +1340,10 @@ namespace renderdocui.Windows
{
return Formatter.Format((float)o);
}
else if (o is double)
{
return Formatter.Format((double)o);
}
else if (o is uint)
{
uint u = (uint)o;