From f5863752e282053982b5850ad199b5a4a8ade552 Mon Sep 17 00:00:00 2001 From: Anakin Date: Tue, 17 Jan 2017 18:03:47 +0100 Subject: [PATCH] fixed the light problem, very basic light at the moment, needs a lot of work: - custom position, - custom intensities, - calculate at better positions, others: - adjust zoom speed --- QtMeshViewer/Header/OglViewerWidget.h | 2 +- QtMeshViewer/Resources/fshader.glsl | 5 +++-- QtMeshViewer/Source/OglViewerWidget.cpp | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/QtMeshViewer/Header/OglViewerWidget.h b/QtMeshViewer/Header/OglViewerWidget.h index b356aee..1da2235 100644 --- a/QtMeshViewer/Header/OglViewerWidget.h +++ b/QtMeshViewer/Header/OglViewerWidget.h @@ -39,7 +39,7 @@ private: struct { QVector3D position = { 1,1,1 }; - QVector3D intensities = { 1,1,1 }; + QVector3D intensities = { 1,0.25,0.25 }; } m_light; QOpenGLShaderProgram m_program; diff --git a/QtMeshViewer/Resources/fshader.glsl b/QtMeshViewer/Resources/fshader.glsl index 68efc1d..285ec20 100644 --- a/QtMeshViewer/Resources/fshader.glsl +++ b/QtMeshViewer/Resources/fshader.glsl @@ -4,8 +4,9 @@ precision mediump int; precision mediump float; #endif -uniform mat3 n_matrix; +//uniform mat3 n_matrix; uniform sampler2D texture; +uniform mat4 norm_matrix; uniform mat4 m_matrix; uniform struct Light { @@ -21,7 +22,7 @@ varying vec3 v_normal; void main() { - mat3 normalMatrix = transpose(inverse(mat3(m_matrix))); + mat3 n_matrix = transpose(inverse(mat3(norm_matrix * m_matrix))); vec3 normal = normalize(n_matrix * v_normal); vec3 surfaceToLight = light.position - v_position; diff --git a/QtMeshViewer/Source/OglViewerWidget.cpp b/QtMeshViewer/Source/OglViewerWidget.cpp index da922fd..7406f68 100644 --- a/QtMeshViewer/Source/OglViewerWidget.cpp +++ b/QtMeshViewer/Source/OglViewerWidget.cpp @@ -179,7 +179,8 @@ void OglViewerWidget::initializeGL() { initializeOpenGLFunctions(); - glClearColor(0.5000f, 0.8000f, 1.0000f, 0.0000f); + //glClearColor(0.5000f, 0.8000f, 1.0000f, 0.0000f); + glClearColor(0.02f, 0.01f, 0.01f, 0.0000f); initShaders();