mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-13 05:20:45 +00:00
Improve type display in constant buffer previewer
This commit is contained in:
@@ -85,6 +85,8 @@ struct ShaderVariable
|
||||
uint32_t uv[16];
|
||||
} value;
|
||||
|
||||
bool32 isStruct;
|
||||
|
||||
rdctype::array<ShaderVariable> members;
|
||||
};
|
||||
|
||||
|
||||
@@ -542,6 +542,8 @@ void Serialiser::Serialise(const char *name, ShaderVariable &el)
|
||||
|
||||
Serialise<16>("", el.value.uv);
|
||||
|
||||
Serialise("", el.isStruct);
|
||||
|
||||
Serialise("", el.members);
|
||||
}
|
||||
|
||||
|
||||
@@ -92,14 +92,20 @@ void D3D11DebugManager::FillCBufferVariables(const string &prefix, size_t &offse
|
||||
|
||||
FillCBufferVariables("", vec, flatten, invars[v].type.members, mems, data);
|
||||
|
||||
vr.isStruct = true;
|
||||
|
||||
vr.members = mems;
|
||||
|
||||
varmembers.push_back(vr);
|
||||
}
|
||||
}
|
||||
|
||||
var.isStruct = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
var.isStruct = true;
|
||||
|
||||
if(flatten)
|
||||
FillCBufferVariables(basename + ".", vec, flatten, invars[v].type.members, outvars, data);
|
||||
else
|
||||
@@ -168,6 +174,7 @@ void D3D11DebugManager::FillCBufferVariables(const string &prefix, size_t &offse
|
||||
combinedName += ", " + basename;
|
||||
outvars[outIdx].name = combinedName;
|
||||
outvars[outIdx].rows = 1;
|
||||
outvars[outIdx].isStruct = false;
|
||||
outvars[outIdx].columns += cols;
|
||||
|
||||
if(dataOffset < data.size())
|
||||
@@ -182,6 +189,7 @@ void D3D11DebugManager::FillCBufferVariables(const string &prefix, size_t &offse
|
||||
outvars[outIdx].name = basename;
|
||||
outvars[outIdx].rows = 1;
|
||||
outvars[outIdx].type = type;
|
||||
outvars[outIdx].isStruct = false;
|
||||
outvars[outIdx].columns = cols;
|
||||
|
||||
ShaderVariable &var = outvars[outIdx];
|
||||
@@ -289,6 +297,7 @@ void D3D11DebugManager::FillCBufferVariables(const string &prefix, size_t &offse
|
||||
(*out)[outIdx+r].name = base + buf;
|
||||
(*out)[outIdx+r].rows = (uint32_t)rowCopy;
|
||||
(*out)[outIdx+r].type = type;
|
||||
(*out)[outIdx+r].isStruct = false;
|
||||
(*out)[outIdx+r].columns = regLen;
|
||||
|
||||
size_t dataOffset = (vec+r*rowCopy)*16;
|
||||
@@ -311,7 +320,10 @@ void D3D11DebugManager::FillCBufferVariables(const string &prefix, size_t &offse
|
||||
}
|
||||
|
||||
if(!flatten)
|
||||
{
|
||||
var.isStruct = false;
|
||||
var.members = varmembers;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1214,6 +1214,7 @@ void GLReplay::FillCBufferVariables(WrappedOpenGL &gl, GLuint prog, bool bufferB
|
||||
{
|
||||
vector<ShaderVariable> ov;
|
||||
FillCBufferVariables(gl, prog, bufferBacked, prefix + var.name.elems + ".", variables[i].type.members, ov, data);
|
||||
var.isStruct = true;
|
||||
var.members = ov;
|
||||
}
|
||||
else
|
||||
@@ -1227,10 +1228,13 @@ void GLReplay::FillCBufferVariables(WrappedOpenGL &gl, GLuint prog, bool bufferB
|
||||
vector<ShaderVariable> ov;
|
||||
FillCBufferVariables(gl, prog, bufferBacked, prefix + arrEl.name.elems + ".", variables[i].type.members, ov, data);
|
||||
arrEl.members = ov;
|
||||
|
||||
arrEl.isStruct = true;
|
||||
|
||||
arrelems.push_back(arrEl);
|
||||
}
|
||||
var.members = arrelems;
|
||||
var.isStruct = false;
|
||||
var.rows = var.columns = 0;
|
||||
}
|
||||
}
|
||||
@@ -1277,10 +1281,13 @@ void GLReplay::FillCBufferVariables(WrappedOpenGL &gl, GLuint prog, bool bufferB
|
||||
FillCBufferValue(gl, prog, bufferBacked, desc.rowMajorStorage ? true : false,
|
||||
values[0] + values[2] * a, values[1], data, el);
|
||||
|
||||
el.isStruct = false;
|
||||
|
||||
elems.push_back(el);
|
||||
}
|
||||
|
||||
var.members = elems;
|
||||
var.isStruct = false;
|
||||
var.rows = var.columns = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,18 +81,21 @@ namespace renderdoc
|
||||
[CustomMarshalAs(CustomUnmanagedType.Union)]
|
||||
public ValueUnion value;
|
||||
|
||||
public bool isStruct;
|
||||
|
||||
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
||||
public ShaderVariable[] members;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
if(members.Length > 0) return String.Format("struct[{0}]", members.Length);
|
||||
if(rows == 1) return Row(0);
|
||||
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
if (members.Length > 0)
|
||||
return "";
|
||||
if (rows == 1) return Row(0);
|
||||
|
||||
string ret = "";
|
||||
for (int i = 0; i < (int)rows; i++)
|
||||
for (int i = 0; i < (int)rows; i++)
|
||||
{
|
||||
if(i > 0) ret += ", ";
|
||||
if (i > 0) ret += ", ";
|
||||
ret += "{" + Row(i) + "}";
|
||||
}
|
||||
|
||||
@@ -101,24 +104,36 @@ namespace renderdoc
|
||||
|
||||
public string RowTypeString()
|
||||
{
|
||||
if (members.Length > 0) return "struct";
|
||||
if (members.Length > 0)
|
||||
{
|
||||
if (isStruct)
|
||||
return "struct";
|
||||
else
|
||||
return "flibbertygibbet";
|
||||
}
|
||||
|
||||
if(rows == 0 && columns == 0)
|
||||
if (rows == 0 && columns == 0)
|
||||
return "-";
|
||||
|
||||
if(columns == 1)
|
||||
if (columns == 1)
|
||||
return type.Str();
|
||||
|
||||
return String.Format("{0}{1}", type.Str(), columns);
|
||||
return String.Format("{0}{1}", type.Str(), columns);
|
||||
}
|
||||
|
||||
public string TypeString()
|
||||
{
|
||||
if (members.Length > 0) return "struct";
|
||||
if (members.Length > 0)
|
||||
{
|
||||
if (isStruct)
|
||||
return "struct";
|
||||
else
|
||||
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);
|
||||
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);
|
||||
}
|
||||
|
||||
public string RowValuesToString(int cols, double x, double y)
|
||||
|
||||
Reference in New Issue
Block a user