[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26421] trunk/blender/source/blender/gpu/ intern/gpu_extensions.c: Fix #19875: drawing smoke on graphics cards that do not support

Brecht Van Lommel brecht at blender.org
Sat Jan 30 10:24:51 CET 2010


Revision: 26421
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26421
Author:   blendix
Date:     2010-01-30 10:24:50 +0100 (Sat, 30 Jan 2010)

Log Message:
-----------
Fix #19875: drawing smoke on graphics cards that do not support
non-power-of-two textures lead to artifacts due to uninitialized
memory if the domain had a non-power-of-two size.

Modified Paths:
--------------
    trunk/blender/source/blender/gpu/intern/gpu_extensions.c

Modified: trunk/blender/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2010-01-30 09:18:59 UTC (rev 26420)
+++ trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2010-01-30 09:24:50 UTC (rev 26421)
@@ -372,6 +372,13 @@
 	GPU_print_error("3D glTexImage3D");
 
 	if (fpixels) {
+		if(!GPU_non_power_of_two_support() && (w != tex->w || h != tex->h || depth != tex->depth)) {
+			/* clear first to avoid unitialized pixels */
+			float *zero= MEM_callocN(sizeof(float)*tex->w*tex->h*tex->depth, "zero");
+			glTexSubImage3D(tex->target, 0, 0, 0, 0, tex->w, tex->h, tex->depth, format, type, zero);
+			MEM_freeN(zero);
+		}
+
 		glTexSubImage3D(tex->target, 0, 0, 0, 0, w, h, depth, format, type, fpixels);
 		GPU_print_error("3D glTexSubImage3D");
 	}





More information about the Bf-blender-cvs mailing list