From 72f38900bb5546107492f6503fa142fc70b3e145 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Fri, 12 Sep 2014 17:31:03 -0700 Subject: [PATCH] Fix for blending on models. --- interface/resources/shaders/model.vert | 2 +- interface/resources/shaders/model_normal_map.vert | 2 +- interface/resources/shaders/skin_model.vert | 2 +- interface/resources/shaders/skin_model_normal_map.vert | 2 +- interface/src/renderer/Model.cpp | 5 ++++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/interface/resources/shaders/model.vert b/interface/resources/shaders/model.vert index 4e7de7723d..091526fda3 100644 --- a/interface/resources/shaders/model.vert +++ b/interface/resources/shaders/model.vert @@ -19,7 +19,7 @@ void main(void) { normal = normalize(gl_ModelViewMatrix * vec4(gl_Normal, 0.0)); // pass along the vertex color - gl_FrontColor = gl_Color; + gl_FrontColor = vec4(gl_Color.rgb, 0.0); // and the texture coordinates gl_TexCoord[0] = gl_MultiTexCoord0; diff --git a/interface/resources/shaders/model_normal_map.vert b/interface/resources/shaders/model_normal_map.vert index add76d5588..e65f2e70c4 100644 --- a/interface/resources/shaders/model_normal_map.vert +++ b/interface/resources/shaders/model_normal_map.vert @@ -26,7 +26,7 @@ void main(void) { interpolatedTangent = gl_ModelViewMatrix * vec4(tangent, 0.0); // pass along the vertex color - gl_FrontColor = gl_Color; + gl_FrontColor = vec4(gl_Color.rgb, 0.0); // and the texture coordinates gl_TexCoord[0] = gl_MultiTexCoord0; diff --git a/interface/resources/shaders/skin_model.vert b/interface/resources/shaders/skin_model.vert index 4c2c3456d6..754467a449 100644 --- a/interface/resources/shaders/skin_model.vert +++ b/interface/resources/shaders/skin_model.vert @@ -35,7 +35,7 @@ void main(void) { normal = normalize(gl_ModelViewMatrix * normal); // pass along the vertex color - gl_FrontColor = vec4(1.0, 1.0, 1.0, 1.0); + gl_FrontColor = vec4(gl_Color.rgb, 0.0); // and the texture coordinates gl_TexCoord[0] = gl_MultiTexCoord0; diff --git a/interface/resources/shaders/skin_model_normal_map.vert b/interface/resources/shaders/skin_model_normal_map.vert index 87622936af..06b0a6359c 100644 --- a/interface/resources/shaders/skin_model_normal_map.vert +++ b/interface/resources/shaders/skin_model_normal_map.vert @@ -43,7 +43,7 @@ void main(void) { interpolatedTangent = gl_ModelViewMatrix * interpolatedTangent; // pass along the vertex color - gl_FrontColor = vec4(1.0, 1.0, 1.0, 1.0); + gl_FrontColor = vec4(gl_Color.rgb, 0.0); // and the texture coordinates gl_TexCoord[0] = gl_MultiTexCoord0; diff --git a/interface/src/renderer/Model.cpp b/interface/src/renderer/Model.cpp index 54971a3742..4e841c4abd 100644 --- a/interface/src/renderer/Model.cpp +++ b/interface/src/renderer/Model.cpp @@ -428,8 +428,9 @@ bool Model::render(float alpha, RenderMode mode) { // render opaque meshes with alpha testing + glDisable(GL_BLEND); glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GREATER, 0.5f * alpha); + glAlphaFunc(GL_EQUAL, 0.0f); Application::getInstance()->getTextureCache()->setPrimaryDrawBuffers( mode == DEFAULT_RENDER_MODE || mode == DIFFUSE_RENDER_MODE, @@ -452,6 +453,8 @@ bool Model::render(float alpha, RenderMode mode) { glCullFace(GL_BACK); } + glEnable(GL_BLEND); + // deactivate vertex arrays after drawing glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_VERTEX_ARRAY);