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:
authorCampbell Barton <ideasman42@gmail.com>2010-07-26 05:59:50 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-07-26 05:59:50 +0400
commitad99c6644abbf773b04a6b21d4cf848404488500 (patch)
tree4d4b91f3602b662e0e32f3f411b98a2541a41871 /source/blender/editors
parente4a7087982b827edfa6652091a4bc7e2a32b6778 (diff)
bugfix [#21388] Auto depth + Z Transparency artifacts
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index a59a68f86cf..a23a4952b49 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -1729,8 +1729,12 @@ void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *))
if (v3d->afterdraw.first) {
View3DAfter *v3da, *next;
int num = 0;
+ int mask_orig;
v3d->xray= TRUE;
+ /* transp materials can change the depth mask, see #21388 */
+ glGetIntegerv(GL_DEPTH_WRITEMASK, &mask_orig);
+
glDepthFunc(GL_ALWAYS); /* always write into the depth bufer, overwriting front z values */
for(v3da= v3d->afterdraw.first; v3da; v3da= next) {
next= v3da->next;
@@ -1757,6 +1761,8 @@ void draw_depth(Scene *scene, ARegion *ar, View3D *v3d, int (* func)(void *))
}
v3d->xray= FALSE;
v3d->transp= FALSE;
+
+ glDepthMask(mask_orig);
}
if(rv3d->rflag & RV3D_CLIPPING)