diff --git a/qrenderdoc/Code/Resources.h b/qrenderdoc/Code/Resources.h index 422302355..8b193a286 100644 --- a/qrenderdoc/Code/Resources.h +++ b/qrenderdoc/Code/Resources.h @@ -76,16 +76,16 @@ RESOURCE_DEF(wireframe_mesh, "wireframe_mesh.png") \ RESOURCE_DEF(wrench, "wrench.png") \ RESOURCE_DEF(zoom, "zoom.png") \ - RESOURCE_DEF(topo_linelist, "topologies/topo_linelist.png") \ - RESOURCE_DEF(topo_linelist_adj, "topologies/topo_linelist_adj.png") \ - RESOURCE_DEF(topo_linestrip, "topologies/topo_linestrip.png") \ - RESOURCE_DEF(topo_linestrip_adj, "topologies/topo_linestrip_adj.png") \ - RESOURCE_DEF(topo_patch, "topologies/topo_patch.png") \ - RESOURCE_DEF(topo_pointlist, "topologies/topo_pointlist.png") \ - RESOURCE_DEF(topo_trilist, "topologies/topo_trilist.png") \ - RESOURCE_DEF(topo_trilist_adj, "topologies/topo_trilist_adj.png") \ - RESOURCE_DEF(topo_tristrip, "topologies/topo_tristrip.png") \ - RESOURCE_DEF(topo_tristrip_adj, "topologies/topo_tristrip_adj.png") \ + RESOURCE_DEF(topo_linelist, "topologies/topo_linelist.svg") \ + RESOURCE_DEF(topo_linelist_adj, "topologies/topo_linelist_adj.svg") \ + RESOURCE_DEF(topo_linestrip, "topologies/topo_linestrip.svg") \ + RESOURCE_DEF(topo_linestrip_adj, "topologies/topo_linestrip_adj.svg") \ + RESOURCE_DEF(topo_patch, "topologies/topo_patch.svg") \ + RESOURCE_DEF(topo_pointlist, "topologies/topo_pointlist.svg") \ + RESOURCE_DEF(topo_trilist, "topologies/topo_trilist.svg") \ + RESOURCE_DEF(topo_trilist_adj, "topologies/topo_trilist_adj.svg") \ + RESOURCE_DEF(topo_tristrip, "topologies/topo_tristrip.svg") \ + RESOURCE_DEF(topo_tristrip_adj, "topologies/topo_tristrip_adj.svg") \ RESOURCE_DEF(action, "action.png") \ RESOURCE_DEF(action_hover, "action_hover.png") diff --git a/qrenderdoc/Resources/resources.qrc b/qrenderdoc/Resources/resources.qrc index e5859ba83..5063fa540 100644 --- a/qrenderdoc/Resources/resources.qrc +++ b/qrenderdoc/Resources/resources.qrc @@ -3,16 +3,16 @@ glsl.xml hlsl.xml logo.svg - topologies/topo_linelist.png - topologies/topo_linelist_adj.png - topologies/topo_linestrip.png - topologies/topo_linestrip_adj.png - topologies/topo_patch.png - topologies/topo_pointlist.png - topologies/topo_trilist.png - topologies/topo_trilist_adj.png - topologies/topo_tristrip.png - topologies/topo_tristrip_adj.png + topologies/topo_linelist.svg + topologies/topo_linelist_adj.svg + topologies/topo_linestrip.svg + topologies/topo_linestrip_adj.svg + topologies/topo_patch.svg + topologies/topo_pointlist.svg + topologies/topo_trilist.svg + topologies/topo_trilist_adj.svg + topologies/topo_tristrip.svg + topologies/topo_tristrip_adj.svg action.png action@2x.png action_hover.png diff --git a/qrenderdoc/Resources/topologies/topo_linelist.png b/qrenderdoc/Resources/topologies/topo_linelist.png deleted file mode 100644 index a9078db14..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_linelist.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_linelist.svg b/qrenderdoc/Resources/topologies/topo_linelist.svg new file mode 100644 index 000000000..33e4ac547 --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_linelist.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Resources/topologies/topo_linelist_adj.png b/qrenderdoc/Resources/topologies/topo_linelist_adj.png deleted file mode 100644 index e88c03511..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_linelist_adj.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_linelist_adj.svg b/qrenderdoc/Resources/topologies/topo_linelist_adj.svg new file mode 100644 index 000000000..19cce3556 --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_linelist_adj.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Resources/topologies/topo_linestrip.png b/qrenderdoc/Resources/topologies/topo_linestrip.png deleted file mode 100644 index 08dad1f0a..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_linestrip.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_linestrip.svg b/qrenderdoc/Resources/topologies/topo_linestrip.svg new file mode 100644 index 000000000..758dda14e --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_linestrip.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Resources/topologies/topo_linestrip_adj.png b/qrenderdoc/Resources/topologies/topo_linestrip_adj.png deleted file mode 100644 index 11978f508..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_linestrip_adj.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_linestrip_adj.svg b/qrenderdoc/Resources/topologies/topo_linestrip_adj.svg new file mode 100644 index 000000000..25436e529 --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_linestrip_adj.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Resources/topologies/topo_patch.png b/qrenderdoc/Resources/topologies/topo_patch.png deleted file mode 100644 index 59cb92532..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_patch.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_patch.svg b/qrenderdoc/Resources/topologies/topo_patch.svg new file mode 100644 index 000000000..53fb646e3 --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_patch.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Resources/topologies/topo_pointlist.png b/qrenderdoc/Resources/topologies/topo_pointlist.png deleted file mode 100644 index 9d69eb3e0..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_pointlist.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_pointlist.svg b/qrenderdoc/Resources/topologies/topo_pointlist.svg new file mode 100644 index 000000000..ff7bf0aca --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_pointlist.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Resources/topologies/topo_trilist.png b/qrenderdoc/Resources/topologies/topo_trilist.png deleted file mode 100644 index 7f9a64704..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_trilist.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_trilist.svg b/qrenderdoc/Resources/topologies/topo_trilist.svg new file mode 100644 index 000000000..d06c24f81 --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_trilist.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Resources/topologies/topo_trilist_adj.png b/qrenderdoc/Resources/topologies/topo_trilist_adj.png deleted file mode 100644 index 80a4b6838..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_trilist_adj.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_trilist_adj.svg b/qrenderdoc/Resources/topologies/topo_trilist_adj.svg new file mode 100644 index 000000000..bb7410152 --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_trilist_adj.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Resources/topologies/topo_tristrip.png b/qrenderdoc/Resources/topologies/topo_tristrip.png deleted file mode 100644 index 39fd59a75..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_tristrip.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_tristrip.svg b/qrenderdoc/Resources/topologies/topo_tristrip.svg new file mode 100644 index 000000000..dbd597058 --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_tristrip.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Resources/topologies/topo_tristrip_adj.png b/qrenderdoc/Resources/topologies/topo_tristrip_adj.png deleted file mode 100644 index 7ebcf2297..000000000 Binary files a/qrenderdoc/Resources/topologies/topo_tristrip_adj.png and /dev/null differ diff --git a/qrenderdoc/Resources/topologies/topo_tristrip_adj.svg b/qrenderdoc/Resources/topologies/topo_tristrip_adj.svg new file mode 100644 index 000000000..9a443b755 --- /dev/null +++ b/qrenderdoc/Resources/topologies/topo_tristrip_adj.svg @@ -0,0 +1 @@ + diff --git a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.ui b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.ui index f81d358d9..7bc87327a 100644 --- a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.ui +++ b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.ui @@ -368,7 +368,7 @@ - :/topologies/topo_trilist.png + :/topologies/topo_trilist.svg Qt::AlignCenter diff --git a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.ui b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.ui index 3fe97fa59..957526f7b 100644 --- a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.ui +++ b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.ui @@ -432,7 +432,7 @@ - :/topologies/topo_trilist.png + :/topologies/topo_trilist.svg Qt::AlignCenter diff --git a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.ui b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.ui index 9b4cfd758..055b6adb5 100644 --- a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.ui +++ b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.ui @@ -432,7 +432,7 @@ - :/topologies/topo_trilist.png + :/topologies/topo_trilist.svg Qt::AlignCenter diff --git a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp index fd87ac705..9b9b77d1c 100644 --- a/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/PipelineStateViewer.cpp @@ -24,6 +24,8 @@ #include "PipelineStateViewer.h" #include +#include +#include #include #include "3rdparty/toolwindowmanager/ToolWindowManager.h" #include "Code/Resources.h" @@ -429,22 +431,30 @@ void PipelineStateViewer::setTopologyDiagram(QLabel *diagram, Topology topo) if(m_TopoPixmaps[idx].isNull()) { - QImage im; + QSvgRenderer svg; switch(topo) { - case Topology::PointList: im = Pixmaps::topo_pointlist(diagram).toImage(); break; - case Topology::LineList: im = Pixmaps::topo_linelist(diagram).toImage(); break; - case Topology::LineStrip: im = Pixmaps::topo_linestrip(diagram).toImage(); break; - case Topology::TriangleList: im = Pixmaps::topo_trilist(diagram).toImage(); break; - case Topology::TriangleStrip: im = Pixmaps::topo_tristrip(diagram).toImage(); break; - case Topology::LineList_Adj: im = Pixmaps::topo_linelist_adj(diagram).toImage(); break; - case Topology::LineStrip_Adj: im = Pixmaps::topo_linestrip_adj(diagram).toImage(); break; - case Topology::TriangleList_Adj: im = Pixmaps::topo_trilist_adj(diagram).toImage(); break; - case Topology::TriangleStrip_Adj: im = Pixmaps::topo_tristrip_adj(diagram).toImage(); break; - default: im = Pixmaps::topo_patch(diagram).toImage(); break; + case Topology::PointList: svg.load(lit(":/topologies/topo_pointlist.svg")); break; + case Topology::LineList: svg.load(lit(":/topologies/topo_linelist.svg")); break; + case Topology::LineStrip: svg.load(lit(":/topologies/topo_linestrip.svg")); break; + case Topology::TriangleList: svg.load(lit(":/topologies/topo_trilist.svg")); break; + case Topology::TriangleStrip: svg.load(lit(":/topologies/topo_tristrip.svg")); break; + case Topology::LineList_Adj: svg.load(lit(":/topologies/topo_linelist_adj.svg")); break; + case Topology::LineStrip_Adj: svg.load(lit(":/topologies/topo_linestrip_adj.svg")); break; + case Topology::TriangleList_Adj: svg.load(lit(":/topologies/topo_trilist_adj.svg")); break; + case Topology::TriangleStrip_Adj: svg.load(lit(":/topologies/topo_tristrip_adj.svg")); break; + default: svg.load(lit(":/topologies/topo_patch.svg")); break; } - im = im.convertToFormat(QImage::Format_ARGB32); + QRect rect = svg.viewBox(); + + QImage im(rect.size() * diagram->devicePixelRatio(), QImage::Format_ARGB32); + + im.fill(QColor(0, 0, 0, 0)); + + QPainter p(&im); + + svg.render(&p); // convert the colors - black maps to Text (foreground) and white maps to Base (background) QColor white = diagram->palette().color(QPalette::Active, QPalette::Base); @@ -480,6 +490,7 @@ void PipelineStateViewer::setTopologyDiagram(QLabel *diagram, Topology topo) } m_TopoPixmaps[idx] = QPixmap::fromImage(im); + m_TopoPixmaps[idx].setDevicePixelRatio(diagram->devicePixelRatioF()); } diagram->setPixmap(m_TopoPixmaps[idx]); diff --git a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui index e2d884ac5..c80a05e1a 100644 --- a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui +++ b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.ui @@ -432,7 +432,7 @@ - :/topologies/topo_trilist.png + :/topologies/topo_trilist.svg Qt::AlignCenter diff --git a/qrenderdoc/qrenderdoc_local.vcxproj b/qrenderdoc/qrenderdoc_local.vcxproj index e349e624d..99104b144 100644 --- a/qrenderdoc/qrenderdoc_local.vcxproj +++ b/qrenderdoc/qrenderdoc_local.vcxproj @@ -88,9 +88,9 @@ ProgramDatabase true true - $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\pyside\include\PySide2;3rdparty\pyside\include\PySide2\QtCore;3rdparty\pyside\include\PySide2\QtGui;3rdparty\pyside\include\PySide2\QtWidgets;3rdparty\pyside\include\shiboken2;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) + $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\pyside\include\PySide2;3rdparty\pyside\include\PySide2\QtCore;3rdparty\pyside\include\PySide2\QtGui;3rdparty\pyside\include\PySide2\QtWidgets;3rdparty\pyside\include\shiboken2;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;3rdparty\qt\$(Platform)\include\QtSvg;%(AdditionalIncludeDirectories) /Zc:strictStrings /Zc:throwingNew %(AdditionalOptions) - _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;PYSIDE2_ENABLED=1;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_NO_CAST_FROM_ASCII;QT_NO_CAST_TO_ASCII;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;PYSIDE2_ENABLED=1;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_NO_CAST_FROM_ASCII;QT_NO_CAST_TO_ASCII;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) Level4 true 4100;4127;4189;4714;4718;4996;%(DisableSpecificWarnings) @@ -100,7 +100,7 @@ Windows - shiboken2.lib;python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;shell32.lib + shiboken2.lib;python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;Qt5Svg.lib;shell32.lib 3rdparty\pyside\$(Platform);3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib;%(AdditionalLibraryDirectories) true true @@ -117,7 +117,7 @@ 0 - _WINDOWS;UNICODE;WIN32;RENDERDOC_PLATFORM_WIN32;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;WIN32;RENDERDOC_PLATFORM_WIN32;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) $(SolutionDir)\renderdoc\api\replay @@ -148,7 +148,7 @@ MultiThreadedDebugDLL - shiboken2.lib;python36.lib;qtmaind.lib;Qt5Widgetsd.lib;Qt5Guid.lib;Qt5Cored.lib;shell32.lib + shiboken2.lib;python36.lib;qtmaind.lib;Qt5Widgetsd.lib;Qt5Guid.lib;Qt5Cored.lib;Qt5Svgd.lib;shell32.lib