summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-04-03 07:33:46 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-04-03 07:38:31 +0300
commitfaa177c0c8e17bff13881f411375a9aa5e03406a (patch)
tree90c4cba51a8984280df20bf10674df9819933bc1 /src
parente2ea7fdba364264802174532122f7486a2924db0 (diff)
Ambient color strength added to shaders
Change-Id: I44e2e6dc32a52aabc725de5b23a4e5d065ac0068 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/datavis3d/engine/q3dbars.cpp6
-rw-r--r--src/datavis3d/engine/shaders/fragmentShader3
-rw-r--r--src/datavis3d/engine/shaders/fragmentShaderAmbient6
-rw-r--r--src/datavis3d/engine/shaders/fragmentShaderColorOnY3
-rw-r--r--src/datavis3d/utils/shaderhelper.cpp8
-rw-r--r--src/datavis3d/utils/shaderhelper_p.h6
6 files changed, 23 insertions, 9 deletions
diff --git a/src/datavis3d/engine/q3dbars.cpp b/src/datavis3d/engine/q3dbars.cpp
index 336183d0..6f3a3f8a 100644
--- a/src/datavis3d/engine/q3dbars.cpp
+++ b/src/datavis3d/engine/q3dbars.cpp
@@ -526,6 +526,12 @@ void Q3DBars::drawScene()
lightStrength = d_ptr->m_highlightLightStrength;
break;
}
+ case Q3DBarsPrivate::None:
+ {
+ // Current bar is not selected, nor on a row or column
+ // do nothing
+ break;
+ }
}
}
diff --git a/src/datavis3d/engine/shaders/fragmentShader b/src/datavis3d/engine/shaders/fragmentShader
index ca747160..e8e2e223 100644
--- a/src/datavis3d/engine/shaders/fragmentShader
+++ b/src/datavis3d/engine/shaders/fragmentShader
@@ -7,9 +7,10 @@ varying highp vec3 lightDirection_cmr;
uniform highp vec3 lightPosition_wrld;
uniform highp vec3 color_mdl;
uniform highp float lightStrength;
+uniform highp float ambientStrength;
void main() {
highp vec3 materialDiffuseColor = color_mdl;
- highp vec3 materialAmbientColor = vec3(0.2, 0.2, 0.2) * materialDiffuseColor;
+ highp vec3 materialAmbientColor = vec3(ambientStrength, ambientStrength, ambientStrength) * materialDiffuseColor;
highp vec3 materialSpecularColor = vec3(1.0, 1.0, 1.0);
highp float distance = length(lightPosition_wrld - position_wrld);
highp vec3 n = normalize(normal_cmr);
diff --git a/src/datavis3d/engine/shaders/fragmentShaderAmbient b/src/datavis3d/engine/shaders/fragmentShaderAmbient
index 7f077902..ccaa07e4 100644
--- a/src/datavis3d/engine/shaders/fragmentShaderAmbient
+++ b/src/datavis3d/engine/shaders/fragmentShaderAmbient
@@ -1,5 +1,3 @@
-varying highp vec2 UV;
-varying highp vec2 coords_mdl;
varying highp vec3 position_wrld;
varying highp vec3 normal_cmr;
varying highp vec3 eyeDirection_cmr;
@@ -10,7 +8,6 @@ void main() {
highp vec3 lightColor = vec3(1.0, 1.0, 1.0);
highp float lightPower = 10.0;
highp vec3 materialAmbientColor = vec3(0.5, 0.5, 0.5) * color_mdl;
- //highp vec3 materialDiffuseColor = vec3(0.1, 0.1, 0.1) * color_mdl;
highp vec3 materialSpecularColor = vec3(0.3, 0.3, 0.3) * color_mdl;
highp float distance = length(lightPosition_wrld - position_wrld);
highp vec3 n = normalize(normal_cmr);
@@ -25,8 +22,7 @@ void main() {
if (cosAlpha > 1.0) { cosAlpha = 1.0; }
gl_FragColor.rgb =
materialAmbientColor +
- //materialDiffuseColor * lightColor * lightPower * cosTheta / (distance * distance) +
materialSpecularColor * lightColor * lightPower * (cosAlpha * cosAlpha * cosAlpha * cosAlpha * cosAlpha) / (distance * distance);
- gl_FragColor.a = 1.0;
+ gl_FragColor.a = 1.0;
}
diff --git a/src/datavis3d/engine/shaders/fragmentShaderColorOnY b/src/datavis3d/engine/shaders/fragmentShaderColorOnY
index a2e2e221..a7a30155 100644
--- a/src/datavis3d/engine/shaders/fragmentShaderColorOnY
+++ b/src/datavis3d/engine/shaders/fragmentShaderColorOnY
@@ -6,9 +6,10 @@ varying highp vec2 coords_mdl;
uniform highp vec3 lightPosition_wrld;
uniform highp vec3 color_mdl;
uniform highp float lightStrength;
+uniform highp float ambientStrength;
void main() {
highp vec3 materialDiffuseColor = vec3(coords_mdl.y * color_mdl.x, coords_mdl.y * color_mdl.y, coords_mdl.y * color_mdl.z);
- highp vec3 materialAmbientColor = vec3(0.2, 0.2, 0.2) * materialDiffuseColor;
+ highp vec3 materialAmbientColor = vec3(ambientStrength, ambientStrength, ambientStrength) * materialDiffuseColor;
highp vec3 materialSpecularColor = vec3(1.0, 1.0, 1.0);
highp float distance = length(lightPosition_wrld - position_wrld);
highp vec3 n = normalize(normal_cmr);
diff --git a/src/datavis3d/utils/shaderhelper.cpp b/src/datavis3d/utils/shaderhelper.cpp
index 8193692f..4ec4f9a8 100644
--- a/src/datavis3d/utils/shaderhelper.cpp
+++ b/src/datavis3d/utils/shaderhelper.cpp
@@ -93,6 +93,7 @@ void ShaderHelper::initialize()
m_invTransModelMatrixUniform = m_program->uniformLocation("itM");
m_lightPositionUniform = m_program->uniformLocation("lightPosition_wrld");
m_lightStrengthUniform = m_program->uniformLocation("lightStrength");
+ m_ambientStrengthUniform = m_program->uniformLocation("ambientStrength");
m_colorUniform = m_program->uniformLocation("color_mdl");
m_positionAttr = m_program->attributeLocation("vertexPosition_mdl");
@@ -174,6 +175,13 @@ GLuint ShaderHelper::lightS()
return m_lightStrengthUniform;
}
+GLuint ShaderHelper::ambientS()
+{
+ if (!m_initialized)
+ qFatal("Shader not initialized");
+ return m_ambientStrengthUniform;
+}
+
GLuint ShaderHelper::color()
{
if (!m_initialized)
diff --git a/src/datavis3d/utils/shaderhelper_p.h b/src/datavis3d/utils/shaderhelper_p.h
index f937bfbd..ccca0d0b 100644
--- a/src/datavis3d/utils/shaderhelper_p.h
+++ b/src/datavis3d/utils/shaderhelper_p.h
@@ -76,6 +76,7 @@ class ShaderHelper
GLuint nModel();
GLuint lightP();
GLuint lightS();
+ GLuint ambientS();
GLuint color();
GLuint posAtt();
@@ -103,9 +104,10 @@ class ShaderHelper
GLuint m_mvpMatrixUniform;
GLuint m_lightPositionUniform;
GLuint m_lightStrengthUniform;
+ GLuint m_ambientStrengthUniform;
- GLuint m_texture;
- GLuint m_depthTexture;
+ //GLuint m_texture; // currently unused
+ //GLuint m_depthTexture; // currently unused
GLboolean m_initialized;
};