From 59c5267e241b9c843166566e9d09637bad1d344b Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 3 Oct 2016 12:22:29 +0200 Subject: [PATCH] Set up remaining widgets etc in texture viewer --- qrenderdoc/Windows/TextureViewer.cpp | 220 ++++++++++++++++++++++++++- qrenderdoc/Windows/TextureViewer.h | 11 ++ qrenderdoc/Windows/TextureViewer.ui | 162 ++++++++++++++------ 3 files changed, 344 insertions(+), 49 deletions(-) diff --git a/qrenderdoc/Windows/TextureViewer.cpp b/qrenderdoc/Windows/TextureViewer.cpp index 884faa5cc..a503e116f 100644 --- a/qrenderdoc/Windows/TextureViewer.cpp +++ b/qrenderdoc/Windows/TextureViewer.cpp @@ -47,6 +47,29 @@ TextureViewer::TextureViewer(Core *core, QWidget *parent) QObject::connect(ui->zoomOption->lineEdit(), &QLineEdit::returnPressed, this, &TextureViewer::on_zoomOption_returnPressed); + QObject::connect(ui->depthDisplay, &QToolButton::toggled, this, + &TextureViewer::on_channelsWidget_toggled); + QObject::connect(ui->stencilDisplay, &QToolButton::toggled, this, + &TextureViewer::on_channelsWidget_toggled); + QObject::connect(ui->flip_y, &QToolButton::toggled, this, + &TextureViewer::on_channelsWidget_toggled); + QObject::connect(ui->channelRed, &QToolButton::toggled, this, + &TextureViewer::on_channelsWidget_toggled); + QObject::connect(ui->channelGreen, &QToolButton::toggled, this, + &TextureViewer::on_channelsWidget_toggled); + QObject::connect(ui->channelBlue, &QToolButton::toggled, this, + &TextureViewer::on_channelsWidget_toggled); + QObject::connect(ui->channelAlpha, &QToolButton::toggled, this, + &TextureViewer::on_channelsWidget_toggled); + QObject::connect(ui->gammaDisplay, &QToolButton::toggled, this, + &TextureViewer::on_channelsWidget_toggled); + QObject::connect(ui->channels, QOverload::of(&QComboBox::currentIndexChanged), this, + &TextureViewer::on_channelsWidget_selected); + QObject::connect(ui->hdrMul, QOverload::of(&QComboBox::currentIndexChanged), this, + &TextureViewer::on_channelsWidget_selected); + QObject::connect(ui->customShader, QOverload::of(&QComboBox::currentIndexChanged), this, + &TextureViewer::on_channelsWidget_selected); + ui->dockarea->addToolWindow(ui->renderContainer, ToolWindowManager::EmptySpace); ui->dockarea->setToolWindowProperties(renderContainer, ToolWindowManager::DisallowUserDocking | ToolWindowManager::HideCloseButton | @@ -136,8 +159,8 @@ TextureViewer::TextureViewer(Core *core, QWidget *parent) vertical->addWidget(ui->dockarea); Ui_TextureViewer *u = ui; - u->pixelcontextgrid->setAlignment(u->pushButton, Qt::AlignCenter); - u->pixelcontextgrid->setAlignment(u->pushButton_2, Qt::AlignCenter); + u->pixelcontextgrid->setAlignment(u->pixelHistory, Qt::AlignCenter); + u->pixelcontextgrid->setAlignment(u->debugPixelContext, Qt::AlignCenter); QWidget *statusflowWidget = new QWidget(this); @@ -522,6 +545,179 @@ void TextureViewer::UI_OnTextureSelectionChanged(bool newdraw) UI_UpdateTextureDetails(); } +void TextureViewer::UI_UpdateChannels() +{ + FetchTexture *tex = m_Core->GetTexture(m_TexDisplay.texid); + + /* + if (tex != NULL && (tex.creationFlags & TextureCreationFlags.SwapBuffer) != 0) + { + // swapbuffer is always srgb for 8-bit types, linear for 16-bit types + gammaDisplay.Enabled = false; + + if (tex.format.compByteWidth == 2 && !tex.format.special) + m_TexDisplay.linearDisplayAsGamma = false; + else + m_TexDisplay.linearDisplayAsGamma = true; + } + else + { + if (tex != null && !tex.format.srgbCorrected) + gammaDisplay.Enabled = true; + else + gammaDisplay.Enabled = false; + + m_TexDisplay.linearDisplayAsGamma = !gammaDisplay.Enabled || gammaDisplay.Checked; + } + + if (tex != null && tex.format.srgbCorrected) + m_TexDisplay.linearDisplayAsGamma = false; + + bool dsv = false; + if (tex != null) + dsv = ((tex.creationFlags & TextureCreationFlags.DSV) != 0) || (tex.format.compType == + FormatComponentType.Depth); + + if (dsv && + (string)channels.SelectedItem != "Custom") + { + customRed.Visible = false; + customGreen.Visible = false; + customBlue.Visible = false; + customAlpha.Visible = false; + mulLabel.Visible = false; + hdrMul.Visible = false; + customShader.Visible = false; + customCreate.Visible = false; + customEdit.Visible = false; + customDelete.Visible = false; + depthStencilToolstrip.Visible = true; + + backcolorPick.Visible = false; + checkerBack.Visible = false; + + mulSep.Visible = false; + + m_TexDisplay.Red = depthDisplay.Checked; + m_TexDisplay.Green = stencilDisplay.Checked; + m_TexDisplay.Blue = false; + m_TexDisplay.Alpha = false; + + m_TexDisplay.HDRMul = -1.0f; + if (m_TexDisplay.CustomShader != ResourceId.Null) { m_CurPixelValue = null; m_CurRealValue = + null; UI_UpdateStatusText(); } + m_TexDisplay.CustomShader = ResourceId.Null; + } + else if ((string)channels.SelectedItem == "RGBA" || !m_Core.LogLoaded) + { + customRed.Visible = true; + customGreen.Visible = true; + customBlue.Visible = true; + customAlpha.Visible = true; + mulLabel.Visible = false; + hdrMul.Visible = false; + customShader.Visible = false; + customCreate.Visible = false; + customEdit.Visible = false; + customDelete.Visible = false; + depthStencilToolstrip.Visible = false; + + backcolorPick.Visible = true; + checkerBack.Visible = true; + + mulSep.Visible = false; + + m_TexDisplay.Red = customRed.Checked; + m_TexDisplay.Green = customGreen.Checked; + m_TexDisplay.Blue = customBlue.Checked; + m_TexDisplay.Alpha = customAlpha.Checked; + + m_TexDisplay.HDRMul = -1.0f; + if (m_TexDisplay.CustomShader != ResourceId.Null) { m_CurPixelValue = null; m_CurRealValue = + null; UI_UpdateStatusText(); } + m_TexDisplay.CustomShader = ResourceId.Null; + } + else if ((string)channels.SelectedItem == "RGBM") + { + customRed.Visible = true; + customGreen.Visible = true; + customBlue.Visible = true; + customAlpha.Visible = false; + mulLabel.Visible = true; + hdrMul.Visible = true; + customShader.Visible = false; + customCreate.Visible = false; + customEdit.Visible = false; + customDelete.Visible = false; + depthStencilToolstrip.Visible = false; + + backcolorPick.Visible = false; + checkerBack.Visible = false; + + mulSep.Visible = true; + + m_TexDisplay.Red = customRed.Checked; + m_TexDisplay.Green = customGreen.Checked; + m_TexDisplay.Blue = customBlue.Checked; + m_TexDisplay.Alpha = false; + + float mul = 32.0f; + + if (!float.TryParse(hdrMul.Text, out mul)) + hdrMul.Text = mul.ToString(); + + m_TexDisplay.HDRMul = mul; + if (m_TexDisplay.CustomShader != ResourceId.Null) { m_CurPixelValue = null; m_CurRealValue = + null; UI_UpdateStatusText(); } + m_TexDisplay.CustomShader = ResourceId.Null; + } + else if ((string)channels.SelectedItem == "Custom") + { + customRed.Visible = true; + customGreen.Visible = true; + customBlue.Visible = true; + customAlpha.Visible = true; + mulLabel.Visible = false; + hdrMul.Visible = false; + customShader.Visible = true; + customCreate.Visible = true; + customEdit.Visible = true; + customDelete.Visible = true; + depthStencilToolstrip.Visible = false; + + backcolorPick.Visible = false; + checkerBack.Visible = false; + + mulSep.Visible = false; + + m_TexDisplay.Red = customRed.Checked; + m_TexDisplay.Green = customGreen.Checked; + m_TexDisplay.Blue = customBlue.Checked; + m_TexDisplay.Alpha = customAlpha.Checked; + + m_TexDisplay.HDRMul = -1.0f; + + m_TexDisplay.CustomShader = ResourceId.Null; + if (m_CustomShaders.ContainsKey(customShader.Text.ToUpperInvariant())) + { + if (m_TexDisplay.CustomShader == ResourceId.Null) { m_CurPixelValue = null; m_CurRealValue = + null; UI_UpdateStatusText(); } + m_TexDisplay.CustomShader = m_CustomShaders[customShader.Text.ToUpperInvariant()]; + customDelete.Enabled = customEdit.Enabled = true; + } + else + { + customDelete.Enabled = customEdit.Enabled = false; + } + } + + m_TexDisplay.FlipY = ui->flip_y->isChecked(); + + m_Core->Renderer()->AsyncInvoke([this](IReplayRenderer *) { RT_UpdateAndDisplay(); }); + // m_Core->Renderer()->AsyncInvoke([this](IReplayRenderer *) { RT_UpdateVisualRange(); }); + */ +} + void TextureViewer::render_mouseWheel(QWheelEvent *e) { QPoint cursorPos = e->pos(); @@ -961,3 +1157,23 @@ void TextureViewer::on_zoomOption_returnPressed() { UI_SetScale(getCurrentZoomValue()); } + +void TextureViewer::on_overlay_currentIndexChanged(int index) +{ +} + +void TextureViewer::on_zoomRange_clicked() +{ +} + +void TextureViewer::on_autoFit_clicked() +{ +} + +void TextureViewer::on_reset01_clicked() +{ +} + +void TextureViewer::on_visualiseRange_clicked() +{ +} diff --git a/qrenderdoc/Windows/TextureViewer.h b/qrenderdoc/Windows/TextureViewer.h index 5361c1fc1..921b2b61e 100644 --- a/qrenderdoc/Windows/TextureViewer.h +++ b/qrenderdoc/Windows/TextureViewer.h @@ -37,6 +37,15 @@ private slots: void on_zoomOption_currentIndexChanged(int index); void on_zoomOption_returnPressed(); + void on_overlay_currentIndexChanged(int index); + + void on_zoomRange_clicked(); + void on_autoFit_clicked(); + void on_reset01_clicked(); + void on_visualiseRange_clicked(); + + void on_channelsWidget_toggled(bool checked) { UI_UpdateChannels(); } + void on_channelsWidget_selected(int index) { UI_UpdateChannels(); } private: void RT_FetchCurrentPixel(uint32_t x, uint32_t y, PixelValue &pickValue, PixelValue &realValue); void RT_PickPixelsAndUpdate(); @@ -47,6 +56,8 @@ private: void UI_UpdateTextureDetails(); void UI_OnTextureSelectionChanged(bool newdraw); + void UI_UpdateChannels(); + void setFitToWindow(bool checked); void setCurrentZoomValue(float zoom); diff --git a/qrenderdoc/Windows/TextureViewer.ui b/qrenderdoc/Windows/TextureViewer.ui index 22a6bdd5b..a54bc7ab2 100644 --- a/qrenderdoc/Windows/TextureViewer.ui +++ b/qrenderdoc/Windows/TextureViewer.ui @@ -6,7 +6,7 @@ 0 0 - 591 + 775 571 @@ -82,14 +82,14 @@ 2 - + Range - + 0 @@ -108,7 +108,7 @@ - + 0 @@ -127,7 +127,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -155,7 +155,7 @@ - + ... @@ -169,7 +169,7 @@ - + ... @@ -177,6 +177,9 @@ :/Resources/chart_curve.png:/Resources/chart_curve.png + + true + true @@ -207,7 +210,7 @@ - 3 + 2 6 @@ -222,14 +225,18 @@ 2 - + Overlay - + + + 20 + + @@ -256,7 +263,7 @@ - 3 + 2 6 @@ -357,9 +364,9 @@ - 340 + 330 40 - 101 + 149 28 @@ -377,7 +384,7 @@ - 3 + 2 6 @@ -392,14 +399,14 @@ 2 - + Actions - + @@ -413,7 +420,7 @@ - + @@ -426,6 +433,34 @@ + + + + + + + + :/Resources/page_white_code.png:/Resources/page_white_code.png + + + true + + + + + + + + + + + :/Resources/find.png:/Resources/find.png + + + true + + + @@ -433,10 +468,16 @@ 10 40 - 304 + 299 28 + + + 0 + 0 + + 0 @@ -451,7 +492,7 @@ - 3 + 2 6 @@ -466,7 +507,7 @@ 2 - + Subresource @@ -480,24 +521,24 @@ - + Mip - + - + Slice/Face - + @@ -506,10 +547,16 @@ 3 3 - 579 + 701 28 + + + 0 + 0 + + 0 @@ -524,7 +571,7 @@ - 3 + 2 6 @@ -539,28 +586,28 @@ 2 - + Channels - + true - + Qt::Vertical - + R @@ -576,7 +623,7 @@ - + G @@ -592,7 +639,7 @@ - + B @@ -611,7 +658,7 @@ - + A @@ -624,21 +671,21 @@ - + Qt::Vertical - + Mul: - + 0 @@ -666,7 +713,28 @@ - + + + Qt::Vertical + + + + + + + Depth + + + + + + + Stencil + + + + + 0 @@ -682,7 +750,7 @@ - + @@ -696,7 +764,7 @@ - + @@ -710,7 +778,7 @@ - + @@ -724,7 +792,7 @@ - + @@ -741,7 +809,7 @@ - + @@ -761,14 +829,14 @@ - + Qt::Vertical - + 23 @@ -964,14 +1032,14 @@ - + History - + Debug