Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2015-12-23 22:38:58 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2015-12-23 22:38:58 +0300
commit93c75bf99205504d5cec35829813af23b48d7cb0 (patch)
tree3b129045f444e66208409845bdb02c85e8de39e7
parenteb6a8e43214037a077aa198b5cfdf1d20a053aae (diff)
Fix T47051: cycles viewport textured shadeless draw bug.
-rw-r--r--source/blender/gpu/intern/gpu_basic_shader.c9
-rw-r--r--source/blender/gpu/intern/gpu_draw.c1
2 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/gpu/intern/gpu_basic_shader.c b/source/blender/gpu/intern/gpu_basic_shader.c
index 6b01ee85170..c441a44c17b 100644
--- a/source/blender/gpu/intern/gpu_basic_shader.c
+++ b/source/blender/gpu/intern/gpu_basic_shader.c
@@ -205,10 +205,15 @@ void GPU_basic_shader_bind(int options)
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
}
- if (options & GPU_SHADER_TEXTURE_2D)
+ if (options & GPU_SHADER_TEXTURE_2D) {
+ GLint env_mode = (options & (GPU_SHADER_USE_COLOR|GPU_SHADER_LIGHTING)) ? GL_MODULATE : GL_REPLACE;
glEnable(GL_TEXTURE_2D);
- else if (bound_options & GPU_SHADER_TEXTURE_2D)
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, env_mode);
+ }
+ else if (bound_options & GPU_SHADER_TEXTURE_2D) {
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glDisable(GL_TEXTURE_2D);
+ }
}
GPU_MATERIAL_STATE.bound_options = options;
diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c
index 05d11549656..27e428d7f69 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -2113,6 +2113,7 @@ void GPU_state_init(void)
glDisable(GL_STENCIL_TEST);
glDisable(GL_TEXTURE_1D);
glDisable(GL_TEXTURE_2D);
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
/* default disabled, enable should be local per function */
glDisableClientState(GL_VERTEX_ARRAY);