From 45eabffb54fdb1696f7cdc9af21d33d6983bfaa9 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 4 Dec 2025 16:08:20 +0000 Subject: [PATCH] Update mesh viewer to allow better customisation. Closes #1811 --- qrenderdoc/Code/Interface/PersistantConfig.h | 16 ++ qrenderdoc/Windows/BufferViewer.cpp | 154 +++++++---- qrenderdoc/Windows/BufferViewer.h | 10 +- qrenderdoc/Windows/BufferViewer.ui | 243 +++++++----------- .../Windows/Dialogs/AxisMappingDialog.ui | 12 +- qrenderdoc/qrenderdoc.pro | 12 +- qrenderdoc/qrenderdoc_local.vcxproj | 30 +++ qrenderdoc/qrenderdoc_local.vcxproj.filters | 30 +++ 8 files changed, 295 insertions(+), 212 deletions(-) diff --git a/qrenderdoc/Code/Interface/PersistantConfig.h b/qrenderdoc/Code/Interface/PersistantConfig.h index 6fe35ba8d..0a4d4e0a3 100644 --- a/qrenderdoc/Code/Interface/PersistantConfig.h +++ b/qrenderdoc/Code/Interface/PersistantConfig.h @@ -342,6 +342,22 @@ DECLARE_REFLECTION_STRUCT(BugReport); ":type: int"); \ CONFIG_SETTING_VAL(public, int, int, MeshViewer_SpeedModifier, -1) \ \ + DOCUMENT( \ + "The near plane used in the mesh viewers display." \ + "\n" \ + "Defaults to ``0.1``." \ + "" \ + ":type: float"); \ + CONFIG_SETTING_VAL(public, float, float, MeshViewer_CameraNear, 0.1f) \ + \ + DOCUMENT( \ + "The far plane used in the mesh viewers display." \ + "\n" \ + "Defaults to ``100000.0``." \ + "" \ + ":type: float"); \ + CONFIG_SETTING_VAL(public, float, float, MeshViewer_CameraFar, 100000.0f) \ + \ DOCUMENT( \ "List of the directories containing custom shader files for the Texture Viewer.\n" \ "\n:" \ diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp index 018256352..84d565739 100644 --- a/qrenderdoc/Windows/BufferViewer.cpp +++ b/qrenderdoc/Windows/BufferViewer.cpp @@ -2577,10 +2577,6 @@ BufferViewer::BufferViewer(ICaptureContext &ctx, bool meshview, QWidget *parent) ui->instance->setFont(Formatter::PreferredFont()); ui->viewIndex->setFont(Formatter::PreferredFont()); ui->camSpeed->setFont(Formatter::PreferredFont()); - ui->fovGuess->setFont(Formatter::PreferredFont()); - ui->aspectGuess->setFont(Formatter::PreferredFont()); - ui->nearGuess->setFont(Formatter::PreferredFont()); - ui->farGuess->setFont(Formatter::PreferredFont()); if(meshview) SetupMeshView(); @@ -2707,8 +2703,6 @@ BufferViewer::BufferViewer(ICaptureContext &ctx, bool meshview, QWidget *parent) ui->visualisation->adjustSize(); ui->visualisation->setCurrentIndex(0); - ui->matrixType->addItems({tr("Perspective"), tr("Orthographic")}); - ui->axisMappingCombo->addItems({tr("Y-up, left handed"), tr("Y-up, right handed"), tr("Z-up, left handed"), tr("Z-up, right handed"), tr("Custom...")}); ui->axisMappingCombo->setCurrentIndex(0); @@ -2718,8 +2712,6 @@ BufferViewer::BufferViewer(ICaptureContext &ctx, bool meshview, QWidget *parent) ui->setFormat->setVisible(false); - ui->fovGuess->setValue(90.0); - ui->controlType->setCurrentIndex(0); on_controlType_currentIndexChanged(0); @@ -2752,17 +2744,6 @@ BufferViewer::BufferViewer(ICaptureContext &ctx, bool meshview, QWidget *parent) QObject::connect(ui->out2Table->verticalScrollBar(), &QScrollBar::valueChanged, this, &BufferViewer::data_scrolled); - QObject::connect(ui->fovGuess, OverloadedSlot::of(&QDoubleSpinBox::valueChanged), this, - &BufferViewer::camGuess_changed); - QObject::connect(ui->aspectGuess, OverloadedSlot::of(&QDoubleSpinBox::valueChanged), this, - &BufferViewer::camGuess_changed); - QObject::connect(ui->nearGuess, OverloadedSlot::of(&QDoubleSpinBox::valueChanged), this, - &BufferViewer::camGuess_changed); - QObject::connect(ui->farGuess, OverloadedSlot::of(&QDoubleSpinBox::valueChanged), this, - &BufferViewer::camGuess_changed); - QObject::connect(ui->matrixType, OverloadedSlot::of(&QComboBox::currentIndexChanged), - [this](int) { camGuess_changed(0.0); }); - { QMenu *extensionsMenu = new QMenu(this); @@ -2965,7 +2946,7 @@ void BufferViewer::SetupMeshView() ui->resourceDetails->setVisible(false); ui->formatSpecifier->setVisible(false); - ui->cameraControlsGroup->setVisible(false); + ui->configurationGroup->setVisible(false); ui->minBoundsLabel->setText(lit("---")); ui->maxBoundsLabel->setText(lit("---")); @@ -3502,12 +3483,12 @@ void BufferViewer::OnEventChanged(uint32_t eventId) float vpWidth = qAbs(vp.width); float vpHeight = qAbs(vp.height); - m_Config.fov = ui->fovGuess->value(); + m_Config.fov = m_ProjGuess.fov; m_Config.aspect = (vpWidth > 0.0f && vpHeight > 0.0f) ? (vpWidth / vpHeight) : 1.0f; m_Config.highlightVert = 0; - if(ui->aspectGuess->value() > 0.0) - m_Config.aspect = ui->aspectGuess->value(); + if(m_ProjGuess.aspect > 0.0) + m_Config.aspect = m_ProjGuess.aspect; } else { @@ -3906,7 +3887,7 @@ void BufferViewer::OnEventChanged(uint32_t eventId) m_ModelOut2->setSecondaryColumn(-1, m_Config.visualisationMode == Visualisation::Secondary, false); - EnableCameraGuessControls(); + UpdateStageDataControls(); populateBBox(bufdata); @@ -5066,7 +5047,7 @@ void BufferViewer::UpdateCurrentMeshConfig() default: break; } - camGuess_changed(0.0); + UI_UpdateGuessParameters(); m_Config.showBBox = false; @@ -6030,11 +6011,16 @@ void BufferViewer::data_scrolled(int scrollvalue) SyncViews(view, false, true); } -void BufferViewer::camGuess_changed(double value) +void BufferViewer::UI_UpdateGuessParameters() { - m_Config.ortho = (ui->matrixType->currentIndex() == 1); + m_Arcball->camera()->SetNearFar(m_Ctx.Config().MeshViewer_CameraNear, + m_Ctx.Config().MeshViewer_CameraFar); + m_Flycam->camera()->SetNearFar(m_Ctx.Config().MeshViewer_CameraNear, + m_Ctx.Config().MeshViewer_CameraFar); - m_Config.fov = ui->fovGuess->value(); + m_Config.ortho = m_ProjGuess.orthographic; + + m_Config.fov = m_ProjGuess.fov; m_Config.aspect = 1.0f; @@ -6046,8 +6032,8 @@ void BufferViewer::camGuess_changed(double value) m_Config.aspect = (vpWidth > 0.0f && vpHeight > 0.0f) ? (vpWidth / vpHeight) : 1.0f; - if(ui->aspectGuess->value() > 0.0) - m_Config.aspect = ui->aspectGuess->value(); + if(m_ProjGuess.aspect > 0.0) + m_Config.aspect = m_ProjGuess.aspect; // use estimates from post vs data (calculated from vertex position data) if the user // hasn't overridden the values @@ -6075,8 +6061,8 @@ void BufferViewer::camGuess_changed(double value) m_Config.position.flipY = m_Out2Data.flipY; } - if(ui->nearGuess->value() > 0.0) - m_Config.position.nearPlane = ui->nearGuess->value(); + if(m_ProjGuess.nearPlane > 0.0) + m_Config.position.nearPlane = m_ProjGuess.nearPlane; m_Config.position.farPlane = 100.0f; @@ -6089,10 +6075,10 @@ void BufferViewer::camGuess_changed(double value) else if(m_CurStage == MeshDataStage::MeshOut) m_Config.position.farPlane = m_Out2Data.farPlane; - if(ui->farGuess->value() > 0.0) - m_Config.position.farPlane = ui->farGuess->value(); + if(m_ProjGuess.farPlane > 0.0) + m_Config.position.farPlane = m_ProjGuess.farPlane; - EnableCameraGuessControls(); + UpdateStageDataControls(); INVOKE_MEMFN(RT_UpdateAndDisplay); } @@ -6166,6 +6152,27 @@ void BufferViewer::on_axisMappingButton_clicked() showAxisMappingDialog(); } +void BufferViewer::on_camParameters_clicked() +{ + CameraControlsDialog dialog(m_Ctx, this); + RDDialog::show(&dialog); + + if(dialog.result() == QDialog::Accepted) + UI_UpdateGuessParameters(); +} + +void BufferViewer::on_guessButton_clicked() +{ + ProjectionGuessDialog dialog(m_Ctx, m_ProjGuess, this); + RDDialog::show(&dialog); + + if(dialog.result() == QDialog::Accepted) + { + m_ProjGuess = dialog.getParameters(); + UI_UpdateGuessParameters(); + } +} + void BufferViewer::on_setFormat_toggled(bool checked) { if(!checked) @@ -7102,15 +7109,69 @@ void BufferViewer::UpdateHighlightVerts() m_Config.highlightVert = selected[0].row(); } -void BufferViewer::EnableCameraGuessControls() +void BufferViewer::UpdateStageDataControls() { - ui->matrixType->setEnabled(isCurrentRasterOut()); - ui->aspectGuess->setEnabled(isCurrentRasterOut()); - ui->nearGuess->setEnabled(isCurrentRasterOut()); - ui->farGuess->setEnabled(isCurrentRasterOut()); + if(isCurrentRasterOut()) + { + ui->guessLabel->setVisible(true); + ui->guessDetails1->setVisible(true); + ui->guessDetails2->setVisible(true); + ui->guessButton->setVisible(true); - // FOV is only available in perspective mode - ui->fovGuess->setEnabled(isCurrentRasterOut() && ui->matrixType->currentIndex() == 0); + QString aspectStr = tr("Auto"); + if(m_ProjGuess.aspect > 0) + aspectStr = Formatter::Format(m_ProjGuess.aspect); + + if(m_ProjGuess.orthographic) + ui->guessDetails1->setText(tr("Orthographic Projection")); + else + ui->guessDetails1->setText( + tr("Perspective Projection, FOV %1").arg(Formatter::Format(m_ProjGuess.fov))); + + if(m_ProjGuess.farPlane == FLT_MAX) + { + if(m_ProjGuess.nearPlane > 0) + ui->guessDetails2->setText(tr("Aspect Ratio %1, Reverse Z Near %2") + .arg(aspectStr) + .arg(Formatter::Format(m_ProjGuess.nearPlane))); + else + ui->guessDetails2->setText(tr("Aspect Ratio %1, Reverse Z Near Automatic").arg(aspectStr)); + } + else + { + if(m_ProjGuess.nearPlane > 0 && m_ProjGuess.farPlane > 0) + ui->guessDetails2->setText(tr("Aspect Ratio %1, Near-Far %2 - %3") + .arg(aspectStr) + .arg(Formatter::Format(m_ProjGuess.nearPlane)) + .arg(Formatter::Format(m_ProjGuess.farPlane))); + else if(m_ProjGuess.nearPlane > 0) + ui->guessDetails2->setText(tr("Aspect Ratio %1, Near %2 Far Auto") + .arg(aspectStr) + .arg(Formatter::Format(m_ProjGuess.nearPlane))); + else if(m_ProjGuess.farPlane > 0) + ui->guessDetails2->setText(tr("Aspect Ratio %1, Near Auto Far %2") + .arg(aspectStr) + .arg(Formatter::Format(m_ProjGuess.farPlane))); + else + ui->guessDetails2->setText(tr("Aspect Ratio %1, Near-Far Automatic").arg(aspectStr)); + } + + ui->axisMappingLabel->setVisible(false); + ui->axisMappingCombo->setVisible(false); + ui->axisMappingButton->setVisible(false); + } + else + { + ui->guessLabel->setVisible(false); + ui->guessDetails1->setVisible(false); + ui->guessDetails2->setVisible(false); + ui->guessButton->setVisible(false); + + ui->axisMappingLabel->setVisible(true); + ui->axisMappingCombo->setVisible(true); + ui->axisMappingButton->setVisible(true); + ui->axisMappingButton->setEnabled(ui->axisMappingCombo->currentIndex() == 4); + } } void BufferViewer::on_outputTabs_currentChanged(int index) @@ -7130,10 +7191,7 @@ void BufferViewer::on_outputTabs_currentChanged(int index) on_resetCamera_clicked(); ui->autofitCamera->setEnabled(!isCurrentRasterOut()); - EnableCameraGuessControls(); - ui->axisMappingCombo->setEnabled(!isCurrentRasterOut()); - ui->axisMappingButton->setEnabled(!isCurrentRasterOut() && - ui->axisMappingCombo->currentIndex() == 4); + UpdateStageDataControls(); UpdateCurrentMeshConfig(); @@ -7142,7 +7200,7 @@ void BufferViewer::on_outputTabs_currentChanged(int index) void BufferViewer::on_toggleControls_toggled(bool checked) { - ui->cameraControlsGroup->setVisible(checked); + ui->configurationGroup->setVisible(checked); // temporarily set minimum bounds to the longest float we could format, to ensure the minimum size // we calculate below is as big as needs to be (sigh...). This is necessary because Qt doesn't @@ -7165,7 +7223,7 @@ void BufferViewer::on_toggleControls_toggled(bool checked) UI_UpdateBoundingBoxLabels(); - EnableCameraGuessControls(); + UpdateStageDataControls(); } void BufferViewer::on_syncViews_toggled(bool checked) diff --git a/qrenderdoc/Windows/BufferViewer.h b/qrenderdoc/Windows/BufferViewer.h index 2bc91998a..a006cc21e 100644 --- a/qrenderdoc/Windows/BufferViewer.h +++ b/qrenderdoc/Windows/BufferViewer.h @@ -28,6 +28,7 @@ #include #include "Code/Interface/QRDInterface.h" #include "Code/QRDUtils.h" +#include "Windows/Dialogs/ProjectionGuessDialog.h" namespace Ui { @@ -146,10 +147,13 @@ private slots: void on_axisMappingButton_clicked(); void on_setFormat_toggled(bool checked); void on_resetMeshFilterButton_clicked(); + void on_camParameters_clicked(); + void on_guessButton_clicked(); // manual slots void render_mouseMove(QMouseEvent *e); void render_clicked(QMouseEvent *e); + void render_unclicked(QMouseEvent *e); void render_mouseWheel(QWheelEvent *e); void render_keyPress(QKeyEvent *e); @@ -158,7 +162,6 @@ private slots: void data_selected(const QItemSelection &selected, const QItemSelection &deselected); void data_scrolled(int scroll); - void camGuess_changed(double value); void processFormat(const QString &format); @@ -182,6 +185,7 @@ private: void configureDrawRange(); + void UI_UpdateGuessParameters(); void RT_UpdateAndDisplay(IReplayController *r); QPushButton *MakePreviousPageButton(); @@ -253,6 +257,8 @@ private: ArcballWrapper *m_Arcball = NULL; FlycamWrapper *m_Flycam = NULL; + ProjectionGuessParameters m_ProjGuess; + bool m_MeshView; // for ease of reading, these stages are named as in, out1, and out2. Note however that this does @@ -362,7 +368,7 @@ private: void UI_ConfigureMeshPipeFormats(); void UpdateCurrentMeshConfig(); - void EnableCameraGuessControls(); + void UpdateStageDataControls(); void CalcColumnWidth(int maxNumRows = 1); void ApplyRowAndColumnDims(int numColumns, RDTableView *view, int dataColWidth); diff --git a/qrenderdoc/Windows/BufferViewer.ui b/qrenderdoc/Windows/BufferViewer.ui index b3cfd57ba..46de460fd 100644 --- a/qrenderdoc/Windows/BufferViewer.ui +++ b/qrenderdoc/Windows/BufferViewer.ui @@ -121,7 +121,7 @@ 50 220 666 - 312 + 401 @@ -494,7 +494,7 @@ - + 0 @@ -502,7 +502,7 @@ - Camera Controls + Configuration @@ -545,8 +545,8 @@ 0 0 - 312 - 308 + 267 + 321 @@ -556,6 +556,41 @@ + + + + Qt::Horizontal + + + + + + + Bounding Box: + + + + + + + Axis Mapping: + + + + + + + Aspect ratio Auto, Near-Far 0.01 - 1000.0 + + + + + + + Qt::Horizontal + + + @@ -563,6 +598,33 @@ + + + + + + + + + + + + + + Perspective Projection, FOV 90 + + + + + + + false + + + Edit Custom Mapping + + + @@ -588,160 +650,35 @@ - - - - Manually configure projection used by vertex pipeline. -Enter 0.0 to use automatic/guessed value derived from data. - - - - - - - Matrix Type: - - - - - - - 2 - - - 2 - - - QComboBox::NoInsert - - - true - - - - - - - Persp. FOV: - - - - - - - 1.000000000000000 - - - 180.000000000000000 - - - 90.000000000000000 - - - - - - - Aspect Ratio: - - - - - - - 0.000000000000000 - - - 10.000000000000000 - - - 0.010000000000000 - - - - - - - Near Plane: - - - - - - - 100.000000000000000 - - - 0.010000000000000 - - - - - - - Far Plane: - - - - - - - 1000000.000000000000000 - - - 10.000000000000000 - - - - - - - Axis Mapping: - - - - - - - - - - false - - - Edit Custom Mapping - - - - - - - Qt::Horizontal - - - - - - - Bounding Box: - - - - - - - - - - - + - + + + + Unproject matrix used: + + + + + + + Vertex Projection Configuration + + + + + + + Camera Settings && Controls + + + + Qt::Vertical diff --git a/qrenderdoc/Windows/Dialogs/AxisMappingDialog.ui b/qrenderdoc/Windows/Dialogs/AxisMappingDialog.ui index 71111b10f..44876045f 100644 --- a/qrenderdoc/Windows/Dialogs/AxisMappingDialog.ui +++ b/qrenderdoc/Windows/Dialogs/AxisMappingDialog.ui @@ -6,8 +6,8 @@ 0 0 - 300 - 200 + 260 + 149 @@ -18,16 +18,16 @@ QLayout::SetFixedSize - 30 + 10 - 30 + 10 - 30 + 10 - 30 + 10 diff --git a/qrenderdoc/qrenderdoc.pro b/qrenderdoc/qrenderdoc.pro index 9143b502b..e05d5cbd9 100644 --- a/qrenderdoc/qrenderdoc.pro +++ b/qrenderdoc/qrenderdoc.pro @@ -251,7 +251,9 @@ SOURCES += Code/qrenderdoc.cpp \ Windows/ResourceInspector.cpp \ Windows/Dialogs/AnalyticsConfirmDialog.cpp \ Windows/Dialogs/AnalyticsPromptDialog.cpp \ - Windows/Dialogs/AxisMappingDialog.cpp + Windows/Dialogs/AxisMappingDialog.cpp \ + Windows/Dialogs/CameraControlsDialog.cpp \ + Windows/Dialogs/ProjectionGuessDialog.cpp HEADERS += Code/CaptureContext.h \ Code/qprocessinfo.h \ Code/ReplayManager.h \ @@ -337,7 +339,9 @@ HEADERS += Code/CaptureContext.h \ Windows/ResourceInspector.h \ Windows/Dialogs/AnalyticsConfirmDialog.h \ Windows/Dialogs/AnalyticsPromptDialog.h \ - Windows/Dialogs/AxisMappingDialog.h + Windows/Dialogs/AxisMappingDialog.h \ + Windows/Dialogs/CameraControlsDialog.h \ + Windows/Dialogs/ProjectionGuessDialog.h FORMS += Windows/Dialogs/AboutDialog.ui \ Windows/Dialogs/CrashDialog.ui \ Windows/Dialogs/UpdateDialog.ui \ @@ -382,7 +386,9 @@ FORMS += Windows/Dialogs/AboutDialog.ui \ Windows/ResourceInspector.ui \ Windows/Dialogs/AnalyticsConfirmDialog.ui \ Windows/Dialogs/AnalyticsPromptDialog.ui \ - Windows/Dialogs/AxisMappingDialog.ui + Windows/Dialogs/AxisMappingDialog.ui \ + Windows/Dialogs/CameraControlsDialog.ui \ + Windows/Dialogs/ProjectionGuessDialog.ui RESOURCES += Resources/resources.qrc diff --git a/qrenderdoc/qrenderdoc_local.vcxproj b/qrenderdoc/qrenderdoc_local.vcxproj index 40a676d92..5ed69cbee 100644 --- a/qrenderdoc/qrenderdoc_local.vcxproj +++ b/qrenderdoc/qrenderdoc_local.vcxproj @@ -617,6 +617,8 @@ + + @@ -756,6 +758,8 @@ + + @@ -960,6 +964,8 @@ + + @@ -1269,6 +1275,18 @@ MOC %(Filename).h $(IntDir)generated\moc_%(Filename).cpp + + %(Fullpath);$(QtBinDir)\moc.exe;%(AdditionalInputs) + "$(QtBinDir)\moc.exe" -DUNICODE -DWIN32 -DWIN64 -D_WIN32 -D_WIN64 -DRENDERDOC_PLATFORM_WIN32 -DSCINTILLA_QT=1 -DSCI_LEXER=1 -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -D_MSC_VER=1900 -I"$(ProjectDir)." -I"$(SolutionDir)\renderdoc\api\replay" -I"$(QtIncludeDir)" -I"$(QtIncludeDir)\QtWidgets" -I"$(QtIncludeDir)\QtGui" -I"$(QtIncludeDir)\QtCore" "%(Fullpath)" -o "$(IntDir)generated\moc_%(Filename).cpp" + MOC %(Filename).h + $(IntDir)generated\moc_%(Filename).cpp + + + %(Fullpath);$(QtBinDir)\moc.exe;%(AdditionalInputs) + "$(QtBinDir)\moc.exe" -DUNICODE -DWIN32 -DWIN64 -D_WIN32 -D_WIN64 -DRENDERDOC_PLATFORM_WIN32 -DSCINTILLA_QT=1 -DSCI_LEXER=1 -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -D_MSC_VER=1900 -I"$(ProjectDir)." -I"$(SolutionDir)\renderdoc\api\replay" -I"$(QtIncludeDir)" -I"$(QtIncludeDir)\QtWidgets" -I"$(QtIncludeDir)\QtGui" -I"$(QtIncludeDir)\QtCore" "%(Fullpath)" -o "$(IntDir)generated\moc_%(Filename).cpp" + MOC %(Filename).h + $(IntDir)generated\moc_%(Filename).cpp + %(Fullpath);$(QtBinDir)\moc.exe;%(AdditionalInputs) "$(QtBinDir)\moc.exe" -DUNICODE -DWIN32 -DWIN64 -D_WIN32 -D_WIN64 -DRENDERDOC_PLATFORM_WIN32 -DSCINTILLA_QT=1 -DSCI_LEXER=1 -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -D_MSC_VER=1900 -I"$(ProjectDir)." -I"$(SolutionDir)\renderdoc\api\replay" -I"$(QtIncludeDir)" -I"$(QtIncludeDir)\QtWidgets" -I"$(QtIncludeDir)\QtGui" -I"$(QtIncludeDir)\QtCore" "%(Fullpath)" -o "$(IntDir)generated\moc_%(Filename).cpp" @@ -1570,6 +1588,18 @@ UIC %(Filename).ui $(IntDir)generated\ui_%(Filename).h + + %(Fullpath);$(QtBinDir)\uic.exe;%(AdditionalInputs) + "$(QtBinDir)\uic.exe" "%(Fullpath)" -o "$(IntDir)generated\ui_%(Filename).h" + UIC %(Filename).ui + $(IntDir)generated\ui_%(Filename).h + + + %(Fullpath);$(QtBinDir)\uic.exe;%(AdditionalInputs) + "$(QtBinDir)\uic.exe" "%(Fullpath)" -o "$(IntDir)generated\ui_%(Filename).h" + UIC %(Filename).ui + $(IntDir)generated\ui_%(Filename).h + %(Fullpath);$(QtBinDir)\uic.exe;%(AdditionalInputs) "$(QtBinDir)\uic.exe" "%(Fullpath)" -o "$(IntDir)generated\ui_%(Filename).h" diff --git a/qrenderdoc/qrenderdoc_local.vcxproj.filters b/qrenderdoc/qrenderdoc_local.vcxproj.filters index 119abf2b0..3bc13cc99 100644 --- a/qrenderdoc/qrenderdoc_local.vcxproj.filters +++ b/qrenderdoc/qrenderdoc_local.vcxproj.filters @@ -771,6 +771,18 @@ Widgets + + Generated Files + + + Generated Files + + + Windows\Dialogs + + + Windows\Dialogs + @@ -1151,6 +1163,12 @@ 3rdparty\catch + + Generated Files + + + Generated Files + @@ -1574,6 +1592,18 @@ Widgets + + Windows\Dialogs + + + Windows\Dialogs + + + Windows\Dialogs + + + Windows\Dialogs +