asset browser: implement light settings

This commit is contained in:
sshumakov3
2020-11-16 02:48:48 +03:00
parent 40e55c8053
commit 48a4a299e8
3 changed files with 37 additions and 4 deletions

View File

@@ -14,6 +14,7 @@
#include <chrono>
#include <QSettings>
#include <QColor>
using namespace noggit::Red;
@@ -69,6 +70,16 @@ void PreviewRenderer::setModel(std::string const &filename)
throw std::logic_error("Preview renderer only supports viewing M2 and WMO for now.");
}
auto diffuse_color = _settings->value("assetBrowser/diffuse_light").value<QColor>();
_diffuse_light = {static_cast<float>(diffuse_color.redF()),
static_cast<float>(diffuse_color.greenF()),
static_cast<float>(diffuse_color.blueF())};
auto ambient_color = _settings->value("assetBrowser/ambient_light").value<QColor>();
_ambient_light = {static_cast<float>(ambient_color.redF()),
static_cast<float>(ambient_color.greenF()),
static_cast<float>(ambient_color.blueF())};
resetCamera();
}
@@ -201,8 +212,8 @@ void PreviewRenderer::draw()
wmo_program.uniform("draw_fog", 0);
wmo_program.uniform("exterior_light_dir", math::vector_3d(0.0f, 1.0f, 0.0f));
wmo_program.uniform("exterior_diffuse_color", math::vector_3d(1.0f, 1.0f, 1.0f));
wmo_program.uniform("exterior_ambient_color", math::vector_3d(1.0f, 1.0f, 1.0f));
wmo_program.uniform("exterior_diffuse_color", _diffuse_light);
wmo_program.uniform("exterior_ambient_color", _ambient_light);
for (auto& wmo_instance : _wmo_instances)
{
@@ -244,8 +255,8 @@ void PreviewRenderer::draw()
m2_shader.uniform("draw_fog", 0);
m2_shader.uniform("light_dir", math::vector_3d(0.0f, 1.0f, 0.0f));
m2_shader.uniform("diffuse_color", math::vector_3d(1.0f, 1.0f, 1.0f));
m2_shader.uniform("ambient_color", math::vector_3d(1.0f, 1.0f, 1.0f));
m2_shader.uniform("diffuse_color", _diffuse_light);
m2_shader.uniform("ambient_color", _ambient_light);
for (auto& model_instance : _model_instances)
{

View File

@@ -71,6 +71,9 @@ namespace noggit::Red
QOpenGLContext _offscreen_context;
QOpenGLFramebufferObjectFormat _fmt;
QOffscreenSurface _offscreen_surface;
math::vector_3d _diffuse_light;
math::vector_3d _ambient_light;
};
}

View File

@@ -213,6 +213,19 @@ namespace noggit
_settings->value("additional_file_loading_log", false).toBool());
ui->_theme->setCurrentText(_settings->value("theme", "Dark").toString());
ui->assetBrowserBgCol->setColor(_settings->value("assetBrowser/background_color",
QVariant::fromValue(QColor(127, 127, 127))).value<QColor>());
ui->assetBrowserDiffuseLight->setColor(_settings->value("assetBrowser/diffuse_light",
QVariant::fromValue(QColor::fromRgbF(1.0f, 0.532352924f, 0.0f))).value<QColor>());
ui->assetBrowserAmbientLight->setColor(_settings->value("assetBrowser/ambient_light",
QVariant::fromValue(QColor::fromRgbF(0.407770514f, 0.508424163f, 0.602650642f))).value<QColor>());
ui->assetBrowserCopyToClipboard->setChecked(_settings->value("assetBrowser/copy_to_clipboard", true).toBool());
ui->assetBrowserDefaultModel->setText(_settings->value("assetBrowser/default_model",
"world/wmo/azeroth/human/buildings/human_farm/farm.wmo").toString());
ui->assetBrowserMoveSensitivity->setValue(_settings->value("assetBrowser/move_sensitivity", 15.0f).toFloat());
#ifdef USE_MYSQL_UID_STORAGE
ui->_mysql_box->setChecked (_settings->value ("project/mysql/enabled").toBool());
@@ -273,6 +286,12 @@ namespace noggit
_settings->setValue("wireframe/width", ui->_wireframe_width->value());
_settings->setValue("wireframe/color", ui->_wireframe_color->color());
_settings->setValue("theme", ui->_theme->currentText());
_settings->setValue("assetBrowser/background_color", ui->assetBrowserBgCol->color());
_settings->setValue("assetBrowser/diffuse_light", ui->assetBrowserDiffuseLight->color());
_settings->setValue("assetBrowser/ambient_light", ui->assetBrowserAmbientLight->color());
_settings->setValue("assetBrowser/copy_to_clipboard", ui->assetBrowserCopyToClipboard->isChecked());
_settings->setValue("assetBrowser/default_model", ui->assetBrowserDefaultModel->text());
_settings->setValue("assetBrowser/move_sensitivity", ui->assetBrowserMoveSensitivity->text());
_settings->sync();
}