diff --git a/src/core/core/gltypes.h b/src/core/core/gltypes.h index 07a1ab7..d5e53c2 100644 --- a/src/core/core/gltypes.h +++ b/src/core/core/gltypes.h @@ -196,6 +196,9 @@ inline QColor operator/(const QColor & c, float v) { } +inline QVector4D color2vector(const QColor & c) { + return QVector4D(c.redF(), c.greenF(), c.blueF(), c.alphaF()); +} inline void qglColor(const QColor & c) { glColor4f(c.redF(), c.greenF(), c.blueF(), c.alphaF()); } diff --git a/src/core/render/renderer.cpp b/src/core/render/renderer.cpp index c2b51ba..c2cf7fb 100644 --- a/src/core/render/renderer.cpp +++ b/src/core/render/renderer.cpp @@ -223,6 +223,10 @@ void Renderer::initShaders() { prog->setUniformValue("tex_coeff_brdf", trCoeffBRDF); prog->setUniformValue("tex_env", trEnvironment); setUniformMaps(prog); + prog->setUniformValue("tex_shadows_cone", (int)tarShadowsCone); + prog->setUniformValue("tex_shadows_omni", (int)tarShadowsOmni); + prog->setUniformValue("tex_depths_cone", (int)tarDepthsCone); + prog->setUniformValue("tex_depths_omni", (int)tarDepthsOmni); } if (bindShader(srFinalPass, &prog)) { prog->setUniformValue("tex_g1", 0); @@ -345,12 +349,13 @@ void Renderer::renderLight(int first_wr_buff, bool clear_only) { }*/ fbo_out.setWriteBuffer(first_wr_buff + pass.second); glClearFramebuffer(back, false); + back = QColor(0, 0, 0, 0); if (clear_only) continue; setUniformCamera(prog, cam); setUniformViewCorners(prog, cam); prog->setUniformValue("lights_start", lights_start[pass.second]); prog->setUniformValue("lights_count", (int)cur_lights[pass.second].size()); - prog->setUniformValue("fog_color", view->fogColor()); + prog->setUniformValue("fog_color", color2vector(view->fogColor()) / 2.); prog->setUniformValue("fog_decay", qMax(view->fogDecay(), 0.001f)); prog->setUniformValue("fog_density", view->fogDensity()); prog->setUniformValue("view_mat", cam->viewMatrix().inverted().toGenericMatrix<3, 3>()); @@ -361,10 +366,6 @@ void Renderer::renderLight(int first_wr_buff, bool clear_only) { prog->setUniformValue("soft_shadows_enabled", view->soft_shadows); prog->setUniformValue("soft_shadows_samples", view->soft_shadows_samples); prog->setUniformValue("soft_shadows_quality", view->soft_shadows_quality); - prog->setUniformValue("tex_shadows_cone", (int)tarShadowsCone); - prog->setUniformValue("tex_shadows_omni", (int)tarShadowsOmni); - prog->setUniformValue("tex_depths_cone", (int)tarDepthsCone); - prog->setUniformValue("tex_depths_omni", (int)tarDepthsOmni); GLenum filter = view->softShadows() ? GL_NEAREST : GL_LINEAR; shadow_maps_cone.bind(view, tarShadowsCone); view->glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, filter); diff --git a/src/core/view/qglview.cpp b/src/core/view/qglview.cpp index 928fba2..c7fb625 100644 --- a/src/core/view/qglview.cpp +++ b/src/core/view/qglview.cpp @@ -103,7 +103,6 @@ QGLView::QGLView(): OpenGLWindow(), renderer_(this), mouse(this) { QGLView::~QGLView() { stop(); - scene_->clear(); delete scene_; delete default_camera; } diff --git a/src/qglview_test/qglview_window.cpp b/src/qglview_test/qglview_window.cpp index 3a4c431..3a0cfee 100644 --- a/src/qglview_test/qglview_window.cpp +++ b/src/qglview_test/qglview_window.cpp @@ -124,7 +124,6 @@ QGLViewWindow::QGLViewWindow(QWidget * parent): QMainWindow(parent), Ui::QGLView spinDOFDiaphragm->setValue(view->view()->feature(QGLView::qglDepthOfFieldDiaphragm).toDouble()); spinDOFSpeed->setValue(view->view()->feature(QGLView::qglDepthOfFieldAutoFocusSpeed).toDouble()); */ - view->view()->start(-1); startTimer(1000 / 60); connect(view->view(), SIGNAL(keyEvent(Qt::Key, Qt::KeyboardModifiers)), this, SLOT(view_keyEvent(Qt::Key, Qt::KeyboardModifiers))); @@ -140,6 +139,7 @@ QGLViewWindow::QGLViewWindow(QWidget * parent): QMainWindow(parent), Ui::QGLView auto * o = primitiveEditor->createCurrent(); o->calculateBoundingBox(); view->view()->focusOn(o->boundingBox()); + view->view()->start(-1); session.load();