This is an automated email from the git hooks/post-receive script. odyx pushed a commit to branch upstream/latest in repository colobot.
commit 08bf066f78a30902603418b3616f80da756152c4 Author: Tomasz Kapuściński <tomaszka...@gmail.com> Date: Wed May 27 21:58:32 2015 +0200 Added shadow color setting --- src/graphics/core/device.h | 3 +++ src/graphics/core/nulldevice.cpp | 4 ++++ src/graphics/core/nulldevice.h | 2 ++ src/graphics/opengl/gl33device.cpp | 15 +++++++++++++++ src/graphics/opengl/gl33device.h | 5 +++++ src/graphics/opengl/gldevice.cpp | 5 +++++ src/graphics/opengl/gldevice.h | 2 ++ .../opengl/shaders/fragment_shader_33_perpixel.glsl | 4 +++- .../opengl/shaders/fragment_shader_33_pervertex.glsl | 4 +++- 9 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/graphics/core/device.h b/src/graphics/core/device.h index f99127a..a7d10b5 100644 --- a/src/graphics/core/device.h +++ b/src/graphics/core/device.h @@ -387,6 +387,9 @@ public: //! Sets the shade model virtual void SetShadeModel(ShadeModel model) = 0; + //! Sets shadow color + virtual void SetShadowColor(float value) = 0; + //! Sets the current fill mode virtual void SetFillMode(FillMode mode) = 0; diff --git a/src/graphics/core/nulldevice.cpp b/src/graphics/core/nulldevice.cpp index acac78d..3fe45a0 100644 --- a/src/graphics/core/nulldevice.cpp +++ b/src/graphics/core/nulldevice.cpp @@ -342,6 +342,10 @@ ShadeModel CNullDevice::GetShadeModel() return SHADE_FLAT; } +void CNullDevice::SetShadowColor(float value) +{ +} + void CNullDevice::SetFillMode(FillMode mode) { } diff --git a/src/graphics/core/nulldevice.h b/src/graphics/core/nulldevice.h index 07abf3a..583747d 100644 --- a/src/graphics/core/nulldevice.h +++ b/src/graphics/core/nulldevice.h @@ -134,6 +134,8 @@ public: virtual void SetShadeModel(ShadeModel model); virtual ShadeModel GetShadeModel(); + + virtual void SetShadowColor(float value); virtual void SetFillMode(FillMode mode) ; virtual FillMode GetFillMode(); diff --git a/src/graphics/opengl/gl33device.cpp b/src/graphics/opengl/gl33device.cpp index 8930423..da05c0b 100644 --- a/src/graphics/opengl/gl33device.cpp +++ b/src/graphics/opengl/gl33device.cpp @@ -390,6 +390,8 @@ bool CGL33Device::Create() uni_AlphaTestEnabled = glGetUniformLocation(m_shaderProgram, "uni_AlphaTestEnabled"); uni_AlphaReference = glGetUniformLocation(m_shaderProgram, "uni_AlphaReference"); + uni_ShadowColor = glGetUniformLocation(m_shaderProgram, "uni_ShadowColor"); + uni_SmoothShading = glGetUniformLocation(m_shaderProgram, "uni_SmoothShading"); uni_LightingEnabled = glGetUniformLocation(m_shaderProgram, "uni_LightingEnabled"); @@ -445,6 +447,8 @@ bool CGL33Device::Create() glUniform2f(uni_FogRange, 100.0f, 200.0f); glUniform4f(uni_FogColor, 0.8f, 0.8f, 0.8f, 1.0f); + glUniform1f(uni_ShadowColor, 0.5f); + glUniform1i(uni_AlphaTestEnabled, 0); glUniform1f(uni_AlphaReference, 1.0f); @@ -1244,6 +1248,7 @@ void CGL33Device::DrawPrimitive(PrimitiveType type, const Vertex *vertices, int } else { + CLogger::GetInstance().Debug("Resizing dynamic buffer: %d->%d\n", info.size, size); glBufferData(GL_ARRAY_BUFFER, size, vs, GL_STREAM_DRAW); info.size = size; @@ -1295,6 +1300,7 @@ void CGL33Device::DrawPrimitive(PrimitiveType type, const VertexTex2 *vertices, } else { + CLogger::GetInstance().Debug("Resizing dynamic buffer: %d->%d\n", info.size, size); glBufferData(GL_ARRAY_BUFFER, size, vs, GL_STREAM_DRAW); info.size = size; @@ -1346,6 +1352,7 @@ void CGL33Device::DrawPrimitive(PrimitiveType type, const VertexCol *vertices, i } else { + CLogger::GetInstance().Debug("Resizing dynamic buffer: %d->%d\n", info.size, size); glBufferData(GL_ARRAY_BUFFER, size, vs, GL_STREAM_DRAW); info.size = size; @@ -1537,6 +1544,7 @@ void CGL33Device::UpdateStaticBuffer(unsigned int bufferId, PrimitiveType primit if (info.size < size) { + CLogger::GetInstance().Debug("Resizing static buffer: %d->%d\n", info.size, size); glBufferData(GL_ARRAY_BUFFER, size, vertices, GL_STATIC_DRAW); info.size = size; } @@ -1594,6 +1602,7 @@ void CGL33Device::UpdateStaticBuffer(unsigned int bufferId, PrimitiveType primit if (info.size < size) { + CLogger::GetInstance().Debug("Resizing static buffer: %d->%d\n", info.size, size); glBufferData(GL_ARRAY_BUFFER, size, vertices, GL_STATIC_DRAW); info.size = size; } @@ -1652,6 +1661,7 @@ void CGL33Device::UpdateStaticBuffer(unsigned int bufferId, PrimitiveType primit if (info.size < size) { + CLogger::GetInstance().Debug("Resizing static buffer: %d->%d\n", info.size, size); glBufferData(GL_ARRAY_BUFFER, size, vertices, GL_STATIC_DRAW); info.size = size; } @@ -1938,6 +1948,11 @@ void CGL33Device::SetShadeModel(ShadeModel model) glUniform1i(uni_SmoothShading, (model == SHADE_SMOOTH ? 1 : 0)); } +void CGL33Device::SetShadowColor(float value) +{ + glUniform1f(uni_ShadowColor, value); +} + void CGL33Device::SetFillMode(FillMode mode) { if (mode == FILL_POINT) glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); diff --git a/src/graphics/opengl/gl33device.h b/src/graphics/opengl/gl33device.h index 242c79d..2d0f8ab 100644 --- a/src/graphics/opengl/gl33device.h +++ b/src/graphics/opengl/gl33device.h @@ -131,6 +131,8 @@ public: virtual void SetShadeModel(ShadeModel model) OVERRIDE; + virtual void SetShadowColor(float value) OVERRIDE; + virtual void SetFillMode(FillMode mode) OVERRIDE; virtual void InitOffscreenBuffer(int width, int height) OVERRIDE; @@ -272,6 +274,9 @@ private: //! Alpha test reference value GLint uni_AlphaReference; + //! Shadow color + GLint uni_ShadowColor; + // Lighting parameters GLint uni_SmoothShading; //! true enables lighting diff --git a/src/graphics/opengl/gldevice.cpp b/src/graphics/opengl/gldevice.cpp index 811ae5b..f75d57e 100644 --- a/src/graphics/opengl/gldevice.cpp +++ b/src/graphics/opengl/gldevice.cpp @@ -1837,6 +1837,11 @@ void CGLDevice::SetShadeModel(ShadeModel model) else assert(false); } +void CGLDevice::SetShadowColor(float value) +{ + // doesn't do anything because it can't +} + void CGLDevice::SetFillMode(FillMode mode) { if (mode == FILL_POINT) glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); diff --git a/src/graphics/opengl/gldevice.h b/src/graphics/opengl/gldevice.h index 2ffefdf..fc71d09 100644 --- a/src/graphics/opengl/gldevice.h +++ b/src/graphics/opengl/gldevice.h @@ -154,6 +154,8 @@ public: virtual void SetShadeModel(ShadeModel model) OVERRIDE; + virtual void SetShadowColor(float value) OVERRIDE; + virtual void SetFillMode(FillMode mode) OVERRIDE; virtual void InitOffscreenBuffer(int width, int height) OVERRIDE; diff --git a/src/graphics/opengl/shaders/fragment_shader_33_perpixel.glsl b/src/graphics/opengl/shaders/fragment_shader_33_perpixel.glsl index ee5064a..9a09532 100644 --- a/src/graphics/opengl/shaders/fragment_shader_33_perpixel.glsl +++ b/src/graphics/opengl/shaders/fragment_shader_33_perpixel.glsl @@ -43,6 +43,8 @@ uniform bool uni_FogEnabled; uniform vec2 uni_FogRange; uniform vec4 uni_FogColor; +uniform float uni_ShadowColor; + uniform bool uni_AlphaTestEnabled; uniform float uni_AlphaReference; @@ -132,7 +134,7 @@ void main() if (uni_ShadowTextureEnabled) { - color = color * (0.35f + 0.65f * texture(uni_ShadowTexture, data.ShadowCoord.xyz)); + color = color * mix(uni_ShadowColor, 1.0f, texture(uni_ShadowTexture, data.ShadowCoord.xyz)); } if (uni_FogEnabled) diff --git a/src/graphics/opengl/shaders/fragment_shader_33_pervertex.glsl b/src/graphics/opengl/shaders/fragment_shader_33_pervertex.glsl index 40d4f34..e8a8724 100644 --- a/src/graphics/opengl/shaders/fragment_shader_33_pervertex.glsl +++ b/src/graphics/opengl/shaders/fragment_shader_33_pervertex.glsl @@ -32,6 +32,8 @@ uniform bool uni_FogEnabled; uniform vec2 uni_FogRange; uniform vec4 uni_FogColor; +uniform float uni_ShadowColor; + uniform bool uni_AlphaTestEnabled; uniform float uni_AlphaReference; @@ -63,7 +65,7 @@ void main() if (uni_ShadowTextureEnabled) { - color = color * (0.35f + 0.65f * texture(uni_ShadowTexture, data.ShadowCoord.xyz)); + color = color * mix(uni_ShadowColor, 1.0f, texture(uni_ShadowTexture, data.ShadowCoord.xyz)); } if (uni_FogEnabled) -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git _______________________________________________ Pkg-games-commits mailing list Pkg-games-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits