diff --git a/ArchitectureColoredPainting/RendererWidget.ui b/ArchitectureColoredPainting/RendererWidget.ui index b1d80e8..85c5a86 100644 --- a/ArchitectureColoredPainting/RendererWidget.ui +++ b/ArchitectureColoredPainting/RendererWidget.ui @@ -165,6 +165,19 @@ 12 + + + + 0 + + + 600 + + + Qt::Vertical + + + diff --git a/ArchitectureColoredPainting/src/Renderer/RendererGLWidget.cpp b/ArchitectureColoredPainting/src/Renderer/RendererGLWidget.cpp index afdf33b..35421cc 100644 --- a/ArchitectureColoredPainting/src/Renderer/RendererGLWidget.cpp +++ b/ArchitectureColoredPainting/src/Renderer/RendererGLWidget.cpp @@ -14,7 +14,7 @@ using namespace Renderer; -QVector3D mainLightRadiance = 40 * QVector3D(0.7529, 0.7450, 0.6784).normalized(); +QVector3D mainLightRadiance = 10 * QVector3D(0.7529, 0.7450, 0.6784).normalized(); static float sunPitch = 105, sunYaw = 80; static int sunSpeed = 10; @@ -89,6 +89,11 @@ void RendererGLWidget::setModel(QString path) doneCurrent(); } +void Renderer::RendererGLWidget::setMainLightRadiance(QVector3D radiance) +{ + mainLightRadiance = radiance; +} + void RendererGLWidget::setMainLightPitch(float pitch) { //qDebug() << "pitch" << pitch; @@ -344,30 +349,34 @@ void RendererGLWidget::paintGL() if (model != nullptr) model->draw(); - //plainProgramPtr->bind(); - //plainProgramPtr->setUniformValue("projection", projection); - //plainProgramPtr->setUniformValue("view", view); - //plainProgramPtr->setUniformValue("albedo", 0.5f, 0.5f, 0.5f); - //QMatrix4x4 model; - //int nrRows = 7, nrColumns = 7; - //float spacing = 2.5; - //for (int row = 0; row < nrRows; ++row) - //{ - // plainProgramPtr->setUniformValue("metallic", (float)row / (float)nrRows); - // for (int col = 0; col < nrColumns; ++col) - // { - // plainProgramPtr->setUniformValue("roughness", glm::clamp((float)col / (float)nrColumns, 0.05f, 1.0f)); + /// Debug Lighting + if (false) + { + plainProgramPtr->bind(); + plainProgramPtr->setUniformValue("projection", projection); + plainProgramPtr->setUniformValue("view", view); + plainProgramPtr->setUniformValue("albedo", 0.5f, 0.5f, 0.5f); + QMatrix4x4 model; + int nrRows = 7, nrColumns = 7; + float spacing = 2.5; + for (int row = 0; row < nrRows; ++row) + { + plainProgramPtr->setUniformValue("metallic", (float)row / (float)nrRows); + for (int col = 0; col < nrColumns; ++col) + { + plainProgramPtr->setUniformValue("roughness", glm::clamp((float)col / (float)nrColumns, 0.05f, 1.0f)); - // model.setToIdentity(); - // model.scale(10); - // model.translate(QVector3D((float)(col - (nrColumns / 2)) * spacing, - // (float)(row - (nrRows / 2)) * spacing + 20, - // -2.0f)); - // plainProgramPtr->setUniformValue("model", model); - // IblUtils::renderSphere(glFunc); - // } - //} - //plainProgramPtr->release(); + model.setToIdentity(); + model.scale(10); + model.translate(QVector3D((float)(col - (nrColumns / 2)) * spacing, + (float)(row - (nrRows / 2)) * spacing + 20, + -2.0f)); + plainProgramPtr->setUniformValue("model", model); + IblUtils::renderSphere(glFunc); + } + } + plainProgramPtr->release(); + } pageIdDownsampleProgramPtr->bind(); gl->BindImageTexture(3, gbuffers[4], 0, GL_FALSE, 0, GL_READ_WRITE, GL_RG16UI); diff --git a/ArchitectureColoredPainting/src/Renderer/RendererGLWidget.h b/ArchitectureColoredPainting/src/Renderer/RendererGLWidget.h index c64a7c0..c75e931 100644 --- a/ArchitectureColoredPainting/src/Renderer/RendererGLWidget.h +++ b/ArchitectureColoredPainting/src/Renderer/RendererGLWidget.h @@ -29,6 +29,7 @@ namespace Renderer public slots: void setModel(QString path); + void setMainLightRadiance(QVector3D radiance); void setMainLightPitch(float pitch); void setMainLightYaw(float yaw); void setExposure(float exposure); diff --git a/ArchitectureColoredPainting/src/Renderer/RendererWidget.cpp b/ArchitectureColoredPainting/src/Renderer/RendererWidget.cpp index 1af6db2..d244c41 100644 --- a/ArchitectureColoredPainting/src/Renderer/RendererWidget.cpp +++ b/ArchitectureColoredPainting/src/Renderer/RendererWidget.cpp @@ -64,6 +64,9 @@ Renderer::RendererWidget::RendererWidget(QWidget* parent) emit openPaintingFile(paintingPath); }); + QObject::connect(ui.lightRadianceSlider, &QSlider::valueChanged, [&](int value) { + ui.openGLWidget->setMainLightRadiance(value / 10.f * QVector3D(0.7529, 0.7450, 0.6784).normalized()); + }); QObject::connect(ui.horizontalSlider, &QSlider::valueChanged, ui.openGLWidget, &Renderer::RendererGLWidget::setMainLightPitch); QObject::connect(ui.horizontalSlider_2, &QSlider::valueChanged, @@ -71,6 +74,7 @@ Renderer::RendererWidget::RendererWidget(QWidget* parent) QObject::connect(ui.exposureSlider, &QSlider::valueChanged, [&](int value) { ui.openGLWidget->setExposure(value / 100.f); }); + ui.lightRadianceSlider->setValue(100); ui.horizontalSlider->setValue(105); ui.horizontalSlider_2->setValue(80); ui.exposureSlider->setValue(60);