[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52785] trunk/blender: Fix #33411: crash baking smoke with FFT high resolution.

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Dec 5 16:46:31 CET 2012


Revision: 52785
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52785
Author:   blendix
Date:     2012-12-05 15:46:31 +0000 (Wed, 05 Dec 2012)
Log Message:
-----------
Fix #33411: crash baking smoke with FFT high resolution.

CMake had FFTW disabled by default, and when FFTW was not enabled it lead to
uninitialized memory usage. Now it falls back to wavelet if there is no FFTW,
and I've enabled it by default in CMake. If it's not found on Linux it will get
disabled automatically.

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/intern/smoke/intern/WTURBULENCE.cpp

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2012-12-05 14:27:51 UTC (rev 52784)
+++ trunk/blender/CMakeLists.txt	2012-12-05 15:46:31 UTC (rev 52785)
@@ -127,7 +127,7 @@
 option(WITH_BUILDINFO     "Include extra build details (only disable for development & faster builds)" ON)
 option(WITH_IK_ITASC      "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
 option(WITH_IK_SOLVER     "Enable Legacy IK solver (only disable for development)" ON)
-option(WITH_FFTW3         "Enable FFTW3 support (Used for smoke and audio effects)" OFF)
+option(WITH_FFTW3         "Enable FFTW3 support (Used for smoke and audio effects)" ON)
 option(WITH_BULLET        "Enable Bullet (Physics Engine)" ON)
 option(WITH_GAMEENGINE    "Enable Game Engine" ON)
 option(WITH_PLAYER        "Build Player" OFF)
@@ -387,10 +387,6 @@
 endif()
 
 
-if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
-	message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
-endif()
-
 # may as well build python module without a UI
 if(WITH_PYTHON_MODULE)
 	set(WITH_HEADLESS ON)
@@ -1670,6 +1666,10 @@
 	endif()
 endif()
 
+if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
+	message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
+endif()
+
 if(WITH_CYCLES)
 	if(NOT WITH_OPENIMAGEIO)
 		message(FATAL_ERROR "Cycles reqires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")

Modified: trunk/blender/intern/smoke/intern/WTURBULENCE.cpp
===================================================================
--- trunk/blender/intern/smoke/intern/WTURBULENCE.cpp	2012-12-05 14:27:51 UTC (rev 52784)
+++ trunk/blender/intern/smoke/intern/WTURBULENCE.cpp	2012-12-05 15:46:31 UTC (rev 52785)
@@ -220,21 +220,25 @@
 {
 	if(type == (1<<1)) // FFT
 	{
+#ifdef WITH_FFTW3
 		// needs fft
-		#ifdef WITH_FFTW3
 		std::string noiseTileFilename = std::string("noise.fft");
 		generatTile_FFT(_noiseTile, noiseTileFilename);
-		#endif
+		return;
+#else
+		fprintf(stderr, "FFTW not enabled, falling back to wavelet noise.\n");
+#endif
 	}
-	else if(type == (1<<2)) // curl
+#if 0
+	if(type == (1<<2)) // curl
 	{
 		// TODO: not supported yet
+		return;
 	}
-	else // standard - wavelet
-	{
-		std::string noiseTileFilename = std::string("noise.wavelets");
-		generateTile_WAVELET(_noiseTile, noiseTileFilename);
-	}
+#endif
+
+	std::string noiseTileFilename = std::string("noise.wavelets");
+	generateTile_WAVELET(_noiseTile, noiseTileFilename);
 }
 
 // init direct access functions from blender




More information about the Bf-blender-cvs mailing list