diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-04-03 07:33:46 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-04-03 07:38:31 +0300 |
commit | faa177c0c8e17bff13881f411375a9aa5e03406a (patch) | |
tree | 90c4cba51a8984280df20bf10674df9819933bc1 /src | |
parent | e2ea7fdba364264802174532122f7486a2924db0 (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.cpp | 6 | ||||
-rw-r--r-- | src/datavis3d/engine/shaders/fragmentShader | 3 | ||||
-rw-r--r-- | src/datavis3d/engine/shaders/fragmentShaderAmbient | 6 | ||||
-rw-r--r-- | src/datavis3d/engine/shaders/fragmentShaderColorOnY | 3 | ||||
-rw-r--r-- | src/datavis3d/utils/shaderhelper.cpp | 8 | ||||
-rw-r--r-- | src/datavis3d/utils/shaderhelper_p.h | 6 |
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; }; |