[Bf-blender-cvs] [f1040d7] master: Disable depth buffer writes while rendering smoke in the viewport.

Alexander Gavrilov noreply at git.blender.org
Mon Aug 8 12:50:41 CEST 2016


Commit: f1040d7d9444ff6b0354b656e8265672f6600372
Author: Alexander Gavrilov
Date:   Mon Aug 8 13:48:03 2016 +0300
Branches: master
https://developer.blender.org/rBf1040d7d9444ff6b0354b656e8265672f6600372

Disable depth buffer writes while rendering smoke in the viewport.

Depth buffer values are used by the viewport pan and zoom code to
adjust response scaling factors between mouse and viewport movement.
Letting smoke write to the buffer confuses it and causes the camera
to get stuck and move very slowly inside smoke domains, because it
thinks it is very close to an object.

===================================================================

M	source/blender/editors/space_view3d/drawvolume.c

===================================================================

diff --git a/source/blender/editors/space_view3d/drawvolume.c b/source/blender/editors/space_view3d/drawvolume.c
index e93d840..8dbc278 100644
--- a/source/blender/editors/space_view3d/drawvolume.c
+++ b/source/blender/editors/space_view3d/drawvolume.c
@@ -379,11 +379,13 @@ void draw_smoke_volume(SmokeDomainSettings *sds, Object *ob,
 
 	/* setup buffer and draw */
 
-	int gl_depth = 0, gl_blend = 0;
+	int gl_depth = 0, gl_blend = 0, gl_depth_write = 0;
 	glGetBooleanv(GL_BLEND, (GLboolean *)&gl_blend);
 	glGetBooleanv(GL_DEPTH_TEST, (GLboolean *)&gl_depth);
+	glGetBooleanv(GL_DEPTH_WRITEMASK, (GLboolean *)&gl_depth_write);
 
 	glEnable(GL_DEPTH_TEST);
+	glDepthMask(GL_FALSE);
 	glEnable(GL_BLEND);
 	glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
 
@@ -422,6 +424,8 @@ void draw_smoke_volume(SmokeDomainSettings *sds, Object *ob,
 
 	GPU_shader_unbind();
 
+	glDepthMask(gl_depth_write);
+
 	if (!gl_blend) {
 		glDisable(GL_BLEND);
 	}




More information about the Bf-blender-cvs mailing list