Update mesh viewer to allow better customisation. Closes #1811

This commit is contained in:
baldurk
2025-12-04 16:08:20 +00:00
parent 5b1b57d703
commit 45eabffb54
8 changed files with 295 additions and 212 deletions
@@ -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:" \
+106 -48
View File
@@ -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<double>::of(&QDoubleSpinBox::valueChanged), this,
&BufferViewer::camGuess_changed);
QObject::connect(ui->aspectGuess, OverloadedSlot<double>::of(&QDoubleSpinBox::valueChanged), this,
&BufferViewer::camGuess_changed);
QObject::connect(ui->nearGuess, OverloadedSlot<double>::of(&QDoubleSpinBox::valueChanged), this,
&BufferViewer::camGuess_changed);
QObject::connect(ui->farGuess, OverloadedSlot<double>::of(&QDoubleSpinBox::valueChanged), this,
&BufferViewer::camGuess_changed);
QObject::connect(ui->matrixType, OverloadedSlot<int>::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)
+8 -2
View File
@@ -28,6 +28,7 @@
#include <QMutex>
#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);
+90 -153
View File
@@ -121,7 +121,7 @@
<x>50</x>
<y>220</y>
<width>666</width>
<height>312</height>
<height>401</height>
</rect>
</property>
<property name="currentIndex">
@@ -494,7 +494,7 @@
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="cameraControlsGroup">
<widget class="QGroupBox" name="configurationGroup">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -502,7 +502,7 @@
</sizepolicy>
</property>
<property name="title">
<string>Camera Controls</string>
<string>Configuration</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
@@ -545,8 +545,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>312</width>
<height>308</height>
<width>267</width>
<height>321</height>
</rect>
</property>
<property name="sizePolicy">
@@ -556,6 +556,41 @@
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="11" column="0" colspan="2">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Bounding Box:</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="axisMappingLabel">
<property name="text">
<string>Axis Mapping:</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<widget class="QLabel" name="guessDetails2">
<property name="text">
<string>Aspect ratio Auto, Near-Far 0.01 - 1000.0</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="camSpeedLabel">
<property name="text">
@@ -563,6 +598,33 @@
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QLabel" name="minBoundsLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QComboBox" name="axisMappingCombo"/>
</item>
<item row="6" column="0" colspan="2">
<widget class="QLabel" name="guessDetails1">
<property name="text">
<string>Perspective Projection, FOV 90</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QPushButton" name="axisMappingButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Edit Custom Mapping</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="camSpeed">
<property name="sizePolicy">
@@ -588,160 +650,35 @@
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="guessInstructions">
<property name="text">
<string>Manually configure projection used by vertex pipeline.
Enter 0.0 to use automatic/guessed value derived from data.</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="matrixTypeLabel">
<property name="text">
<string>Matrix Type:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="matrixType">
<property name="maxVisibleItems">
<number>2</number>
</property>
<property name="maxCount">
<number>2</number>
</property>
<property name="insertPolicy">
<enum>QComboBox::NoInsert</enum>
</property>
<property name="frame">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="fovGuessLabel">
<property name="text">
<string>Persp. FOV:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="fovGuess">
<property name="minimum">
<double>1.000000000000000</double>
</property>
<property name="maximum">
<double>180.000000000000000</double>
</property>
<property name="value">
<double>90.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="aspectGuessLabel">
<property name="text">
<string>Aspect Ratio:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="aspectGuess">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>10.000000000000000</double>
</property>
<property name="singleStep">
<double>0.010000000000000</double>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="nearGuessLabel">
<property name="text">
<string>Near Plane:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QDoubleSpinBox" name="nearGuess">
<property name="maximum">
<double>100.000000000000000</double>
</property>
<property name="singleStep">
<double>0.010000000000000</double>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="farGuessLabel">
<property name="text">
<string>Far Plane:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QDoubleSpinBox" name="farGuess">
<property name="maximum">
<double>1000000.000000000000000</double>
</property>
<property name="singleStep">
<double>10.000000000000000</double>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="axisMappingLabel">
<property name="text">
<string>Axis Mapping:</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="axisMappingCombo"/>
</item>
<item row="8" column="1">
<widget class="QPushButton" name="axisMappingButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Edit Custom Mapping</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="2">
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Bounding Box:</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QLabel" name="minBoundsLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="11" column="1">
<item row="13" column="1">
<widget class="QLabel" name="maxBoundsLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="12" column="1">
<item row="5" column="0" colspan="2">
<widget class="QLabel" name="guessLabel">
<property name="text">
<string>Unproject matrix used:</string>
</property>
</widget>
</item>
<item row="8" column="0" colspan="2">
<widget class="QPushButton" name="guessButton">
<property name="text">
<string>Vertex Projection Configuration</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="camParameters">
<property name="text">
<string>Camera Settings &amp;&amp; Controls</string>
</property>
</widget>
</item>
<item row="14" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>300</width>
<height>200</height>
<width>260</width>
<height>149</height>
</rect>
</property>
<property name="windowTitle">
@@ -18,16 +18,16 @@
<enum>QLayout::SetFixedSize</enum>
</property>
<property name="leftMargin">
<number>30</number>
<number>10</number>
</property>
<property name="topMargin">
<number>30</number>
<number>10</number>
</property>
<property name="rightMargin">
<number>30</number>
<number>10</number>
</property>
<property name="bottomMargin">
<number>30</number>
<number>10</number>
</property>
<item>
<layout class="QGridLayout" name="gridLayout_5">
+9 -3
View File
@@ -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
+30
View File
@@ -617,6 +617,8 @@
<ClCompile Include="$(IntDir)generated\moc_AnalyticsPromptDialog.cpp" />
<ClCompile Include="$(IntDir)generated\moc_APIInspector.cpp" />
<ClCompile Include="$(IntDir)generated\moc_AxisMappingDialog.cpp" />
<ClCompile Include="$(IntDir)generated\moc_CameraControlsDialog.cpp" />
<ClCompile Include="$(IntDir)generated\moc_ProjectionGuessDialog.cpp" />
<ClCompile Include="$(IntDir)generated\moc_ResourceInspector.cpp" />
<ClCompile Include="$(IntDir)generated\moc_BufferFormatSpecifier.cpp" />
<ClCompile Include="$(IntDir)generated\moc_ComputeDebugSelector.cpp" />
@@ -756,6 +758,8 @@
<ClCompile Include="Windows\Dialogs\AnalyticsConfirmDialog.cpp" />
<ClCompile Include="Windows\Dialogs\AnalyticsPromptDialog.cpp" />
<ClCompile Include="Windows\Dialogs\AxisMappingDialog.cpp" />
<ClCompile Include="Windows\Dialogs\CameraControlsDialog.cpp" />
<ClCompile Include="Windows\Dialogs\ProjectionGuessDialog.cpp" />
<ClCompile Include="Windows\Dialogs\CaptureDialog.cpp" />
<ClCompile Include="Windows\Dialogs\LiveCapture.cpp" />
<ClCompile Include="Windows\Dialogs\EnvironmentEditor.cpp" />
@@ -960,6 +964,8 @@
<ClInclude Include="$(IntDir)generated\ui_AnalyticsPromptDialog.h" />
<ClInclude Include="$(IntDir)generated\ui_APIInspector.h" />
<ClInclude Include="$(IntDir)generated\ui_AxisMappingDialog.h" />
<ClInclude Include="$(IntDir)generated\ui_CameraControlsDialog.h" />
<ClInclude Include="$(IntDir)generated\ui_ProjectionGuessDialog.h" />
<ClInclude Include="$(IntDir)generated\ui_ResourceInspector.h" />
<ClInclude Include="$(IntDir)generated\ui_BufferFormatSpecifier.h" />
<ClInclude Include="$(IntDir)generated\ui_ComputeDebugSelector.h" />
@@ -1269,6 +1275,18 @@
<Message>MOC %(Filename).h</Message>
<Outputs>$(IntDir)generated\moc_%(Filename).cpp</Outputs>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\CameraControlsDialog.h">
<AdditionalInputs>%(Fullpath);$(QtBinDir)\moc.exe;%(AdditionalInputs)</AdditionalInputs>
<Command>"$(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"</Command>
<Message>MOC %(Filename).h</Message>
<Outputs>$(IntDir)generated\moc_%(Filename).cpp</Outputs>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\ProjectionGuessDialog.h">
<AdditionalInputs>%(Fullpath);$(QtBinDir)\moc.exe;%(AdditionalInputs)</AdditionalInputs>
<Command>"$(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"</Command>
<Message>MOC %(Filename).h</Message>
<Outputs>$(IntDir)generated\moc_%(Filename).cpp</Outputs>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\CaptureDialog.h">
<AdditionalInputs>%(Fullpath);$(QtBinDir)\moc.exe;%(AdditionalInputs)</AdditionalInputs>
<Command>"$(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"</Command>
@@ -1570,6 +1588,18 @@
<Message>UIC %(Filename).ui</Message>
<Outputs>$(IntDir)generated\ui_%(Filename).h</Outputs>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\CameraControlsDialog.ui">
<AdditionalInputs>%(Fullpath);$(QtBinDir)\uic.exe;%(AdditionalInputs)</AdditionalInputs>
<Command>"$(QtBinDir)\uic.exe" "%(Fullpath)" -o "$(IntDir)generated\ui_%(Filename).h"</Command>
<Message>UIC %(Filename).ui</Message>
<Outputs>$(IntDir)generated\ui_%(Filename).h</Outputs>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\ProjectionGuessDialog.ui">
<AdditionalInputs>%(Fullpath);$(QtBinDir)\uic.exe;%(AdditionalInputs)</AdditionalInputs>
<Command>"$(QtBinDir)\uic.exe" "%(Fullpath)" -o "$(IntDir)generated\ui_%(Filename).h"</Command>
<Message>UIC %(Filename).ui</Message>
<Outputs>$(IntDir)generated\ui_%(Filename).h</Outputs>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\CaptureDialog.ui">
<AdditionalInputs>%(Fullpath);$(QtBinDir)\uic.exe;%(AdditionalInputs)</AdditionalInputs>
<Command>"$(QtBinDir)\uic.exe" "%(Fullpath)" -o "$(IntDir)generated\ui_%(Filename).h"</Command>
@@ -771,6 +771,18 @@
<ClCompile Include="Widgets\ComputeDebugSelector.cpp">
<Filter>Widgets</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)generated\moc_ProjectionGuessDialog.cpp">
<Filter>Generated Files</Filter>
</ClCompile>
<ClCompile Include="$(IntDir)generated\moc_CameraControlsDialog.cpp">
<Filter>Generated Files</Filter>
</ClCompile>
<ClCompile Include="Windows\Dialogs\CameraControlsDialog.cpp">
<Filter>Windows\Dialogs</Filter>
</ClCompile>
<ClCompile Include="Windows\Dialogs\ProjectionGuessDialog.cpp">
<Filter>Windows\Dialogs</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="3rdparty\flowlayout\FlowLayout.h">
@@ -1151,6 +1163,12 @@
<ClInclude Include="3rdparty\catch\official\catch.hpp">
<Filter>3rdparty\catch</Filter>
</ClInclude>
<ClInclude Include="$(IntDir)generated\ui_ProjectionGuessDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="$(IntDir)generated\ui_CameraControlsDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="Code\pyrenderdoc\pyconversion.h">
@@ -1574,6 +1592,18 @@
<CustomBuild Include="Widgets\ComputeDebugSelector.ui">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\CameraControlsDialog.h">
<Filter>Windows\Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\CameraControlsDialog.ui">
<Filter>Windows\Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\ProjectionGuessDialog.h">
<Filter>Windows\Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="Windows\Dialogs\ProjectionGuessDialog.ui">
<Filter>Windows\Dialogs</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<Image Include="Resources\action.png">