mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-30 19:31:07 +00:00
Remap topology diagrams to Base/Text palette colours instead of b/w
This commit is contained in:
@@ -1307,27 +1307,7 @@ void D3D11PipelineStateViewer::setState()
|
||||
ui->topology->setText(ToQStr(topo));
|
||||
}
|
||||
|
||||
switch(topo)
|
||||
{
|
||||
case Topology::PointList: ui->topologyDiagram->setPixmap(Pixmaps::topo_pointlist()); break;
|
||||
case Topology::LineList: ui->topologyDiagram->setPixmap(Pixmaps::topo_linelist()); break;
|
||||
case Topology::LineStrip: ui->topologyDiagram->setPixmap(Pixmaps::topo_linestrip()); break;
|
||||
case Topology::TriangleList: ui->topologyDiagram->setPixmap(Pixmaps::topo_trilist()); break;
|
||||
case Topology::TriangleStrip: ui->topologyDiagram->setPixmap(Pixmaps::topo_tristrip()); break;
|
||||
case Topology::LineList_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_linelist_adj());
|
||||
break;
|
||||
case Topology::LineStrip_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_linestrip_adj());
|
||||
break;
|
||||
case Topology::TriangleList_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_trilist_adj());
|
||||
break;
|
||||
case Topology::TriangleStrip_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_tristrip_adj());
|
||||
break;
|
||||
default: ui->topologyDiagram->setPixmap(Pixmaps::topo_patch()); break;
|
||||
}
|
||||
m_Common.setTopologyDiagram(ui->topologyDiagram, topo);
|
||||
|
||||
bool ibufferUsed = draw && (draw->flags & DrawFlags::UseIBuffer);
|
||||
|
||||
|
||||
@@ -1336,27 +1336,7 @@ void D3D12PipelineStateViewer::setState()
|
||||
ui->topology->setText(ToQStr(topo));
|
||||
}
|
||||
|
||||
switch(topo)
|
||||
{
|
||||
case Topology::PointList: ui->topologyDiagram->setPixmap(Pixmaps::topo_pointlist()); break;
|
||||
case Topology::LineList: ui->topologyDiagram->setPixmap(Pixmaps::topo_linelist()); break;
|
||||
case Topology::LineStrip: ui->topologyDiagram->setPixmap(Pixmaps::topo_linestrip()); break;
|
||||
case Topology::TriangleList: ui->topologyDiagram->setPixmap(Pixmaps::topo_trilist()); break;
|
||||
case Topology::TriangleStrip: ui->topologyDiagram->setPixmap(Pixmaps::topo_tristrip()); break;
|
||||
case Topology::LineList_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_linelist_adj());
|
||||
break;
|
||||
case Topology::LineStrip_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_linestrip_adj());
|
||||
break;
|
||||
case Topology::TriangleList_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_trilist_adj());
|
||||
break;
|
||||
case Topology::TriangleStrip_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_tristrip_adj());
|
||||
break;
|
||||
default: ui->topologyDiagram->setPixmap(Pixmaps::topo_patch()); break;
|
||||
}
|
||||
m_Common.setTopologyDiagram(ui->topologyDiagram, topo);
|
||||
|
||||
bool ibufferUsed = draw && (draw->flags & DrawFlags::UseIBuffer);
|
||||
|
||||
|
||||
@@ -1214,6 +1214,8 @@ void GLPipelineStateViewer::setState()
|
||||
ui->topology->setText(ToQStr(topo));
|
||||
}
|
||||
|
||||
m_Common.setTopologyDiagram(ui->topologyDiagram, topo);
|
||||
|
||||
bool ibufferUsed = draw && (draw->flags & DrawFlags::UseIBuffer);
|
||||
|
||||
if(ibufferUsed)
|
||||
@@ -1230,28 +1232,6 @@ void GLPipelineStateViewer::setState()
|
||||
ui->primRestart->setVisible(false);
|
||||
}
|
||||
|
||||
switch(topo)
|
||||
{
|
||||
case Topology::PointList: ui->topologyDiagram->setPixmap(Pixmaps::topo_pointlist()); break;
|
||||
case Topology::LineList: ui->topologyDiagram->setPixmap(Pixmaps::topo_linelist()); break;
|
||||
case Topology::LineStrip: ui->topologyDiagram->setPixmap(Pixmaps::topo_linestrip()); break;
|
||||
case Topology::TriangleList: ui->topologyDiagram->setPixmap(Pixmaps::topo_trilist()); break;
|
||||
case Topology::TriangleStrip: ui->topologyDiagram->setPixmap(Pixmaps::topo_tristrip()); break;
|
||||
case Topology::LineList_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_linelist_adj());
|
||||
break;
|
||||
case Topology::LineStrip_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_linestrip_adj());
|
||||
break;
|
||||
case Topology::TriangleList_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_trilist_adj());
|
||||
break;
|
||||
case Topology::TriangleStrip_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_tristrip_adj());
|
||||
break;
|
||||
default: ui->topologyDiagram->setPixmap(Pixmaps::topo_patch()); break;
|
||||
}
|
||||
|
||||
vs = ui->viBuffers->verticalScrollBar()->value();
|
||||
ui->viBuffers->setUpdatesEnabled(false);
|
||||
ui->viBuffers->clear();
|
||||
|
||||
@@ -423,11 +423,73 @@ void PipelineStateViewer::endHTMLExport(QXmlStreamWriter *xml)
|
||||
delete xml;
|
||||
}
|
||||
|
||||
void PipelineStateViewer::setTopologyDiagram(QLabel *diagram, Topology topo)
|
||||
{
|
||||
int idx = qMin((int)topo, (int)Topology::PatchList);
|
||||
|
||||
if(m_TopoPixmaps[idx].isNull())
|
||||
{
|
||||
QImage im;
|
||||
switch(topo)
|
||||
{
|
||||
case Topology::PointList: im = Pixmaps::topo_pointlist().toImage(); break;
|
||||
case Topology::LineList: im = Pixmaps::topo_linelist().toImage(); break;
|
||||
case Topology::LineStrip: im = Pixmaps::topo_linestrip().toImage(); break;
|
||||
case Topology::TriangleList: im = Pixmaps::topo_trilist().toImage(); break;
|
||||
case Topology::TriangleStrip: im = Pixmaps::topo_tristrip().toImage(); break;
|
||||
case Topology::LineList_Adj: im = Pixmaps::topo_linelist_adj().toImage(); break;
|
||||
case Topology::LineStrip_Adj: im = Pixmaps::topo_linestrip_adj().toImage(); break;
|
||||
case Topology::TriangleList_Adj: im = Pixmaps::topo_trilist_adj().toImage(); break;
|
||||
case Topology::TriangleStrip_Adj: im = Pixmaps::topo_tristrip_adj().toImage(); break;
|
||||
default: im = Pixmaps::topo_patch().toImage(); break;
|
||||
}
|
||||
|
||||
im = im.convertToFormat(QImage::Format_ARGB32);
|
||||
|
||||
// convert the colors - black maps to Text (foreground) and white maps to Base (background)
|
||||
QColor white = diagram->palette().color(QPalette::Active, QPalette::Base);
|
||||
QColor black = diagram->palette().color(QPalette::Active, QPalette::Text);
|
||||
|
||||
const float br = black.redF();
|
||||
const float bg = black.greenF();
|
||||
const float bb = black.blueF();
|
||||
|
||||
const float wr = white.redF();
|
||||
const float wg = white.greenF();
|
||||
const float wb = white.blueF();
|
||||
|
||||
for(int y = 0; y < im.height(); y++)
|
||||
{
|
||||
QRgb *line = (QRgb *)im.scanLine(y);
|
||||
|
||||
for(int x = 0; x < im.width(); x++)
|
||||
{
|
||||
// delta of 0 is black, delta of 255 is white
|
||||
const float delta = float(qRed(*line));
|
||||
const float bd = 255.0f - delta;
|
||||
const float wd = delta;
|
||||
|
||||
const int r = int(br * bd + wr * wd);
|
||||
const int g = int(bg * bd + wg * wd);
|
||||
const int b = int(bb * bd + wb * wd);
|
||||
|
||||
*line = qRgba(r, g, b, qAlpha(*line));
|
||||
|
||||
line++;
|
||||
}
|
||||
}
|
||||
|
||||
m_TopoPixmaps[idx] = QPixmap::fromImage(im);
|
||||
}
|
||||
|
||||
diagram->setPixmap(m_TopoPixmaps[idx]);
|
||||
}
|
||||
|
||||
void PipelineStateViewer::setMeshViewPixmap(RDLabel *meshView)
|
||||
{
|
||||
QImage meshIcon = Pixmaps::wireframe_mesh().toImage();
|
||||
QImage colSwapped(meshIcon.size(), QImage::Format_ARGB32);
|
||||
colSwapped.fill(palette().color(QPalette::WindowText));
|
||||
colSwapped.fill(meshView->palette().color(QPalette::WindowText));
|
||||
|
||||
for(int y = 0; y < meshIcon.height(); y++)
|
||||
{
|
||||
|
||||
@@ -70,6 +70,7 @@ public:
|
||||
void EditShader(ShaderStage shaderType, ResourceId id, const ShaderReflection *shaderDetails,
|
||||
const QString &entryFunc, const QStringMap &files, const QString &mainfile);
|
||||
|
||||
void setTopologyDiagram(QLabel *diagram, Topology topo);
|
||||
void setMeshViewPixmap(RDLabel *meshView);
|
||||
|
||||
QXmlStreamWriter *beginHTMLExport();
|
||||
@@ -82,6 +83,8 @@ private:
|
||||
Ui::PipelineStateViewer *ui;
|
||||
ICaptureContext &m_Ctx;
|
||||
|
||||
QPixmap m_TopoPixmaps[(int)Topology::PatchList + 1];
|
||||
|
||||
void setToD3D11();
|
||||
void setToD3D12();
|
||||
void setToGL();
|
||||
|
||||
@@ -1520,29 +1520,9 @@ void VulkanPipelineStateViewer::setState()
|
||||
ui->topology->setText(ToQStr(topo));
|
||||
}
|
||||
|
||||
ui->primRestart->setVisible(state.IA.primitiveRestartEnable);
|
||||
m_Common.setTopologyDiagram(ui->topologyDiagram, topo);
|
||||
|
||||
switch(topo)
|
||||
{
|
||||
case Topology::PointList: ui->topologyDiagram->setPixmap(Pixmaps::topo_pointlist()); break;
|
||||
case Topology::LineList: ui->topologyDiagram->setPixmap(Pixmaps::topo_linelist()); break;
|
||||
case Topology::LineStrip: ui->topologyDiagram->setPixmap(Pixmaps::topo_linestrip()); break;
|
||||
case Topology::TriangleList: ui->topologyDiagram->setPixmap(Pixmaps::topo_trilist()); break;
|
||||
case Topology::TriangleStrip: ui->topologyDiagram->setPixmap(Pixmaps::topo_tristrip()); break;
|
||||
case Topology::LineList_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_linelist_adj());
|
||||
break;
|
||||
case Topology::LineStrip_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_linestrip_adj());
|
||||
break;
|
||||
case Topology::TriangleList_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_trilist_adj());
|
||||
break;
|
||||
case Topology::TriangleStrip_Adj:
|
||||
ui->topologyDiagram->setPixmap(Pixmaps::topo_tristrip_adj());
|
||||
break;
|
||||
default: ui->topologyDiagram->setPixmap(Pixmaps::topo_patch()); break;
|
||||
}
|
||||
ui->primRestart->setVisible(state.IA.primitiveRestartEnable);
|
||||
|
||||
vs = ui->viBuffers->verticalScrollBar()->value();
|
||||
ui->viBuffers->setUpdatesEnabled(false);
|
||||
|
||||
Reference in New Issue
Block a user