From fbf03ecd772589eb892424a9e623fee21eaadaa3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 30 May 2017 17:14:37 +0100 Subject: [PATCH] Set up pipeline viewers to re-draw the mesh icon in an appropriate color --- .../D3D11PipelineStateViewer.cpp | 2 + .../PipelineState/D3D11PipelineStateViewer.ui | 33 ++++++++------- .../D3D12PipelineStateViewer.cpp | 2 + .../PipelineState/D3D12PipelineStateViewer.ui | 33 ++++++++------- .../PipelineState/GLPipelineStateViewer.cpp | 2 + .../PipelineState/GLPipelineStateViewer.ui | 33 ++++++++------- .../PipelineState/PipelineStateViewer.cpp | 42 +++++++++++++++++++ .../PipelineState/PipelineStateViewer.h | 5 +++ .../VulkanPipelineStateViewer.cpp | 2 + .../VulkanPipelineStateViewer.ui | 33 ++++++++------- 10 files changed, 131 insertions(+), 56 deletions(-) diff --git a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp index 7002e5ead..e192e477b 100644 --- a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp @@ -371,6 +371,8 @@ D3D11PipelineStateViewer::D3D11PipelineStateViewer(ICaptureContext &ctx, ui->pipeFlow->setStagesEnabled({true, true, true, true, true, true, true, true, true}); + m_Common.setMeshViewPixmap(ui->meshView); + ui->iaLayouts->setFont(Formatter::PreferredFont()); ui->iaBuffers->setFont(Formatter::PreferredFont()); diff --git a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.ui b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.ui index 0ca8f302c..24663ecac 100644 --- a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.ui +++ b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.ui @@ -406,24 +406,29 @@ - + + + + 0 + 0 + + + + + 75 + 75 + + + + PointingHandCursor + View the mesh input data - - + + :/wireframe_mesh.png - - - :/wireframe_mesh.png:/wireframe_mesh.png - - - - 158 - 191 - - - + true diff --git a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp index 4609c0a9b..e3e78e287 100644 --- a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp @@ -410,6 +410,8 @@ D3D12PipelineStateViewer::D3D12PipelineStateViewer(ICaptureContext &ctx, ui->pipeFlow->setStagesEnabled({true, true, true, true, true, true, true, true, true}); + m_Common.setMeshViewPixmap(ui->meshView); + ui->iaLayouts->setFont(Formatter::PreferredFont()); ui->iaBuffers->setFont(Formatter::PreferredFont()); ui->gsStreamOut->setFont(Formatter::PreferredFont()); diff --git a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.ui b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.ui index 01b586b99..91cb81f63 100644 --- a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.ui +++ b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.ui @@ -421,24 +421,29 @@ - + + + + 0 + 0 + + + + + 75 + 75 + + + + PointingHandCursor + View the mesh input data - - + + :/wireframe_mesh.png - - - :/wireframe_mesh.png:/wireframe_mesh.png - - - - 158 - 191 - - - + true diff --git a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp index 56d860137..08b08e7a7 100644 --- a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp @@ -379,6 +379,8 @@ GLPipelineStateViewer::GLPipelineStateViewer(ICaptureContext &ctx, PipelineState ui->pipeFlow->setStagesEnabled({true, true, true, true, true, true, true, true, true}); + m_Common.setMeshViewPixmap(ui->meshView); + ui->viAttrs->setFont(Formatter::PreferredFont()); ui->viBuffers->setFont(Formatter::PreferredFont()); ui->gsFeedback->setFont(Formatter::PreferredFont()); diff --git a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.ui b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.ui index b4dcd52ef..08b0a4c3a 100644 --- a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.ui +++ b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.ui @@ -351,24 +351,29 @@ - + + + + 0 + 0 + + + + + 75 + 75 + + + + PointingHandCursor + View the mesh input data - - + + :/wireframe_mesh.png - - - :/wireframe_mesh.png:/wireframe_mesh.png - - - - 158 - 191 - - - + true diff --git a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp index 236c95122..3a440e4df 100644 --- a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp @@ -23,8 +23,11 @@ ******************************************************************************/ #include "PipelineStateViewer.h" +#include #include #include "3rdparty/toolwindowmanager/ToolWindowManager.h" +#include "Code/Resources.h" +#include "Widgets/Extended/RDLabel.h" #include "D3D11PipelineStateViewer.h" #include "D3D12PipelineStateViewer.h" #include "GLPipelineStateViewer.h" @@ -420,6 +423,45 @@ void PipelineStateViewer::endHTMLExport(QXmlStreamWriter *xml) delete xml; } +void PipelineStateViewer::setMeshViewPixmap(RDLabel *meshView) +{ + QImage meshIcon = Pixmaps::wireframe_mesh().toImage(); + QImage colSwapped(meshIcon.size(), QImage::Format_ARGB32); + colSwapped.fill(palette().color(QPalette::WindowText)); + + for(int y = 0; y < meshIcon.height(); y++) + { + const QRgb *in = (const QRgb *)meshIcon.constScanLine(y); + QRgb *out = (QRgb *)colSwapped.scanLine(y); + + for(int x = 0; x < meshIcon.width(); x++) + { + *out = qRgba(qRed(*out), qGreen(*out), qBlue(*out), qAlpha(*in)); + + in++; + out++; + } + } + + meshView->setPixmap(QPixmap::fromImage(colSwapped)); + meshView->setPreserveAspectRatio(true); + + QPalette pal = meshView->palette(); + pal.setColor(QPalette::Shadow, pal.color(QPalette::Window).darker(120)); + meshView->setPalette(pal); + meshView->setBackgroundRole(QPalette::Window); + meshView->setMouseTracking(true); + + QObject::connect(meshView, &RDLabel::mouseMoved, [meshView](QMouseEvent *) { + meshView->setBackgroundRole(QPalette::Shadow); + meshView->setAutoFillBackground(true); + }); + QObject::connect(meshView, &RDLabel::leave, [meshView]() { + meshView->setBackgroundRole(QPalette::Window); + meshView->setAutoFillBackground(false); + }); +} + bool PipelineStateViewer::PrepareShaderEditing(const ShaderReflection *shaderDetails, QString &entryFunc, QStringMap &files, QString &mainfile) diff --git a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.h b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.h index bb705bdc7..bfec2e344 100644 --- a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.h +++ b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.h @@ -34,6 +34,8 @@ class PipelineStateViewer; class QXmlStreamWriter; +class RDLabel; + class D3D11PipelineStateViewer; class D3D12PipelineStateViewer; class GLPipelineStateViewer; @@ -67,6 +69,9 @@ public: QStringMap &files, QString &mainfile); void EditShader(ShaderStage shaderType, ResourceId id, const ShaderReflection *shaderDetails, const QString &entryFunc, const QStringMap &files, const QString &mainfile); + + void setMeshViewPixmap(RDLabel *meshView); + QXmlStreamWriter *beginHTMLExport(); void exportHTMLTable(QXmlStreamWriter &xml, const QStringList &cols, const QList &rows); diff --git a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp index 653a93005..2ea7525a8 100644 --- a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp @@ -336,6 +336,8 @@ VulkanPipelineStateViewer::VulkanPipelineStateViewer(ICaptureContext &ctx, ui->pipeFlow->setStagesEnabled({true, true, true, true, true, true, true, true, true}); + m_Common.setMeshViewPixmap(ui->meshView); + ui->viAttrs->setFont(Formatter::PreferredFont()); ui->viBuffers->setFont(Formatter::PreferredFont()); ui->vsShader->setFont(Formatter::PreferredFont()); diff --git a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui index 9512f22e0..9b9bcaa5f 100644 --- a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui +++ b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui @@ -351,24 +351,29 @@ - + + + + 0 + 0 + + + + + 75 + 75 + + + + PointingHandCursor + View the mesh input data - - + + :/wireframe_mesh.png - - - :/wireframe_mesh.png:/wireframe_mesh.png - - - - 158 - 191 - - - + true