[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30525] trunk/blender/source/blender/ render/SConscript: Workaround #20324: clouds (and other) textures bump mapping generates black

Brecht Van Lommel brecht at blender.org
Tue Jul 20 12:22:49 CEST 2010


Revision: 30525
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30525
Author:   blendix
Date:     2010-07-20 12:22:49 +0200 (Tue, 20 Jul 2010)

Log Message:
-----------
Workaround #20324: clouds (and other) textures bump mapping generates black
faces. Only happens with scons/msvc and SSE enabled for raytracing. Why this
happens exactly I don't know, I've tried to look for errors in the code but
couldn't find any, the perlin noise code somehow is generating NaN values,
but it is getting sane inputs. I suspect this is due to the render module
being compiled with /arch:SSE and other parts not. For now I've made only
the render_raytrace module compile with SSE, which seems to solve the problem,
but is mostly a workaround.

Modified Paths:
--------------
    trunk/blender/source/blender/render/SConscript

Modified: trunk/blender/source/blender/render/SConscript
===================================================================
--- trunk/blender/source/blender/render/SConscript	2010-07-20 09:30:12 UTC (rev 30524)
+++ trunk/blender/source/blender/render/SConscript	2010-07-20 10:22:49 UTC (rev 30525)
@@ -8,36 +8,37 @@
 incs += ' extern/include ../blenkernel ../radiosity/extern/include ../imbuf'
 incs += ' ../include ../blenloader ../../../intern/smoke/extern'
 
-cflags = env['CCFLAGS']
-cxxflags = env['CXXFLAGS']
+cflags_raytrace = env['CCFLAGS']
+cxxflags_raytrace = env['CXXFLAGS']
 
 defs = []
+defs_raytrace = []
 
 if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
     if env['WITH_BF_RAYOPTIMIZATION']:
-        cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
-        cxxflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cxxflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
 
 if env['OURPLATFORM'] == 'win32-mingw':
     if env['WITH_BF_RAYOPTIMIZATION']:
-        cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
-        cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cxxflags_raytrace = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
 
 if env['OURPLATFORM'] == 'darwin':
     if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64') and env['WITH_BF_RAYOPTIMIZATION']:
-        cflags = env['CFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
-        cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cflags_raytrace = env['CFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cxxflags_raytrace = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
         
 if env['OURPLATFORM'] == 'linux2':
     if env['WITH_BF_RAYOPTIMIZATION']:
-        cflags = env['CCFLAGS'] +  env['BF_RAYOPTIMIZATION_SSE_FLAGS']
-        cxxflags = env['CXXFLAGS'] +  env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cflags_raytrace = env['CCFLAGS'] +  env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cxxflags_raytrace = env['CXXFLAGS'] +  env['BF_RAYOPTIMIZATION_SSE_FLAGS']
     incs += ' ../../../extern/binreloc/include'
 
 if env['OURPLATFORM'] == 'linuxcross':
     if env['WITH_BF_RAYOPTIMIZATION']:
-        cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
-        cxxflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
+        cxxflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS']
 
 if env['WITH_BF_QUICKTIME']:
     defs.append('WITH_QUICKTIME')
@@ -53,10 +54,12 @@
 # HACK: To fix problem with error 'MMX instruction set not enabled' from mmintrin.h
 #
 if env['OURPLATFORM'] == 'linuxcross':
-    defs.append('__MMX__')
+    defs.append('__SSE__')
+    defs_raytrace.append('__MMX__')
 
 if env['WITH_BF_RAYOPTIMIZATION']:
     defs.append('__SSE__')
+    defs_raytrace.append('__SSE__')
 
-env.BlenderLib ( libname = 'bf_render', sources = sources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags )
-env.BlenderLib ( libname = 'bf_render_raytrace', sources = raysources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags, cxx_compileflags=cxxflags )
+env.BlenderLib ( libname = 'bf_render', sources = sources, includes = Split(incs), defines=defs, libtype='core', priority=145 )
+env.BlenderLib ( libname = 'bf_render_raytrace', sources = raysources, includes = Split(incs), defines=defs_raytrace, libtype='core', priority=145, compileflags=cflags_raytrace, cxx_compileflags=cxxflags_raytrace )





More information about the Bf-blender-cvs mailing list