diff --git a/qrenderdoc/CustomPaintWidget.cpp b/qrenderdoc/CustomPaintWidget.cpp new file mode 100644 index 000000000..137dfcc24 --- /dev/null +++ b/qrenderdoc/CustomPaintWidget.cpp @@ -0,0 +1,27 @@ +#include "CustomPaintWidget.h" +#include + +#include "renderdoc_replay.h" + +extern ReplayOutput *out; +extern TextureDisplay d; + +CustomPaintWidget::CustomPaintWidget(QWidget *parent) : QWidget(parent) +{ + setAttribute(Qt::WA_PaintOnScreen); +} + +CustomPaintWidget::~CustomPaintWidget() +{ + +} + +void CustomPaintWidget::paintEvent(QPaintEvent *e) +{ + static float t = 0.0f; + t += 0.01f; + d.scale = 1.5f + sinf(t); + ReplayOutput_SetTextureDisplay(out, d); + ReplayOutput_Display(out); +} + diff --git a/qrenderdoc/CustomPaintWidget.h b/qrenderdoc/CustomPaintWidget.h new file mode 100644 index 000000000..9926fb602 --- /dev/null +++ b/qrenderdoc/CustomPaintWidget.h @@ -0,0 +1,22 @@ +#ifndef CUSTOMPAINTWIDGET_H +#define CUSTOMPAINTWIDGET_H + +#include + +class CustomPaintWidget : public QWidget +{ + Q_OBJECT + public: + explicit CustomPaintWidget(QWidget *parent = 0); + ~CustomPaintWidget(); + + signals: + + public slots: + + protected: + void paintEvent(QPaintEvent *e); + QPaintEngine *paintEngine() const { return NULL; } +}; + +#endif // CUSTOMPAINTWIDGET_H diff --git a/qrenderdoc/EventBrowser.ui b/qrenderdoc/EventBrowser.ui index bf2c280c5..a707a1753 100644 --- a/qrenderdoc/EventBrowser.ui +++ b/qrenderdoc/EventBrowser.ui @@ -19,25 +19,15 @@ QFrame::Raised - - - - 9 - 9 - 441 - 311 - - - - - 0 - 0 - - - - Placeholder for Event Browser - - + + + + + Placeholder for Event Browser + + + + diff --git a/qrenderdoc/MainWindow.cpp b/qrenderdoc/MainWindow.cpp index d40c5211e..6120d8e66 100644 --- a/qrenderdoc/MainWindow.cpp +++ b/qrenderdoc/MainWindow.cpp @@ -4,28 +4,28 @@ #include "ui_MainWindow.h" MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent), - ui(new Ui::MainWindow) + QMainWindow(parent), + ui(new Ui::MainWindow) { - ui->setupUi(this); + ui->setupUi(this); - EventBrowser *eventbrowser = new EventBrowser(); + EventBrowser *eventbrowser = new EventBrowser(); - ui->toolWindowManager->addToolWindow(eventbrowser, ToolWindowManager::EmptySpace); + ui->toolWindowManager->addToolWindow(eventbrowser, ToolWindowManager::EmptySpace); - TextureViewer *textureviewer = new TextureViewer(); + TextureViewer *textureviewer = new TextureViewer(); - ui->toolWindowManager->addToolWindow(textureviewer, ToolWindowManager::AreaReference(ToolWindowManager::RightOf, ui->toolWindowManager->areaOf(eventbrowser))); + ui->toolWindowManager->addToolWindow(textureviewer, ToolWindowManager::AreaReference(ToolWindowManager::RightOf, ui->toolWindowManager->areaOf(eventbrowser))); - ui->toolWindowManager->setRubberBandLineWidth(50); + ui->toolWindowManager->setRubberBandLineWidth(50); } MainWindow::~MainWindow() { - delete ui; + delete ui; } void MainWindow::on_action_Exit_triggered() { - this->close(); + this->close(); } diff --git a/qrenderdoc/TextureViewer.cpp b/qrenderdoc/TextureViewer.cpp index 5c8eaa6b6..20aff1ff9 100644 --- a/qrenderdoc/TextureViewer.cpp +++ b/qrenderdoc/TextureViewer.cpp @@ -1,11 +1,62 @@ #include "TextureViewer.h" #include "ui_TextureViewer.h" +#include "renderdoc_replay.h" + +ReplayOutput *out = NULL; +TextureDisplay d; + TextureViewer::TextureViewer(QWidget *parent) : QFrame(parent), ui(new Ui::TextureViewer) { ui->setupUi(this); + + ReplayRenderer *renderer = NULL; + + float progress = 0.0f; + RENDERDOC_CreateReplayRenderer("T:\\renderdoc\\archive_renderdoc_captures\\deferred_plusplus.rdc", &progress, &renderer); + + rdctype::array texs; + ReplayRenderer_GetTextures(renderer, &texs); + + for(int32_t i=0; i < texs.count; i++) + { + if(texs[i].creationFlags & eTextureCreate_SwapBuffer) + { + d.texid = texs[i].ID; + d.mip = 0; + d.sampleIdx = ~0U; + d.overlay = eTexOverlay_None; + d.CustomShader = ResourceId(); + d.HDRMul = -1.0f; + d.linearDisplayAsGamma = true; + d.FlipY = false; + d.rangemin = 0.0f; + d.rangemax = 1.0f; + d.scale = 1.0f; + d.offx = 0.0f; + d.offy = 0.0f; + d.sliceFace = 0; + d.rawoutput = false; + d.lightBackgroundColour = d.darkBackgroundColour = + FloatVector(0.0f, 0.0f, 0.0f, 0.0f); + d.Red = d.Green = d.Blue = true; + d.Alpha = false; + break; + } + } + + HWND wnd = (HWND)ui->framerender->winId(); + + out = ReplayRenderer_CreateOutput(renderer, wnd); + + OutputConfig c = { eOutputType_TexDisplay }; + + ReplayOutput_SetOutputConfig(out, c); + ReplayOutput_SetTextureDisplay(out, d); + + ReplayRenderer_SetFrameEvent(renderer, 0, 10000000+rand()%1000); } TextureViewer::~TextureViewer() diff --git a/qrenderdoc/TextureViewer.ui b/qrenderdoc/TextureViewer.ui index d9351ef5e..2aff63058 100644 --- a/qrenderdoc/TextureViewer.ui +++ b/qrenderdoc/TextureViewer.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 300 + 513 + 494 @@ -19,20 +19,28 @@ QFrame::Raised - - - - 80 - 50 - 211 - 131 - - - - Placeholder for Texture Viewer - - + + + + + Placeholder for Texture Viewer + + + + + + + + + + + + CustomPaintWidget + QWidget +
custompaintwidget.h
+
+
diff --git a/qrenderdoc/qrenderdoc.pro b/qrenderdoc/qrenderdoc.pro index 8410045fc..324ebc9af 100644 --- a/qrenderdoc/qrenderdoc.pro +++ b/qrenderdoc/qrenderdoc.pro @@ -53,14 +53,16 @@ SOURCES += main.cpp\ 3rdparty/toolwindowmanager/ToolWindowManagerArea.cpp \ 3rdparty/toolwindowmanager/ToolWindowManagerWrapper.cpp \ EventBrowser.cpp \ - TextureViewer.cpp + TextureViewer.cpp \ + CustomPaintWidget.cpp HEADERS += MainWindow.h \ 3rdparty/toolwindowmanager/ToolWindowManager.h \ 3rdparty/toolwindowmanager/ToolWindowManagerArea.h \ 3rdparty/toolwindowmanager/ToolWindowManagerWrapper.h \ EventBrowser.h \ - TextureViewer.h + TextureViewer.h \ + CustomPaintWidget.h FORMS += MainWindow.ui \ EventBrowser.ui \