[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42314] trunk/blender: Cycles

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Dec 1 17:33:28 CET 2011


Revision: 42314
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42314
Author:   blendix
Date:     2011-12-01 16:33:21 +0000 (Thu, 01 Dec 2011)
Log Message:
-----------
Cycles
* Compile all of cycles with -ffast-math again
* Add scons compilation of cuda binaries, tested on mac/linux.
* Add UI option for supported/experimental features, to make it
  more clear what is supported, opencl/subdivision is experimental.
* Remove cycles xml exporter, was just for testing.

Modified Paths:
--------------
    trunk/blender/SConstruct
    trunk/blender/build_files/scons/config/darwin-config.py
    trunk/blender/build_files/scons/config/linux-config.py
    trunk/blender/build_files/scons/tools/Blender.py
    trunk/blender/build_files/scons/tools/btools.py
    trunk/blender/intern/cycles/CMakeLists.txt
    trunk/blender/intern/cycles/SConscript
    trunk/blender/intern/cycles/blender/CMakeLists.txt
    trunk/blender/intern/cycles/blender/addon/__init__.py
    trunk/blender/intern/cycles/blender/addon/enums.py
    trunk/blender/intern/cycles/blender/addon/properties.py
    trunk/blender/intern/cycles/blender/addon/ui.py
    trunk/blender/intern/cycles/blender/addon/xml.py
    trunk/blender/intern/cycles/blender/blender_mesh.cpp
    trunk/blender/intern/cycles/blender/blender_sync.cpp
    trunk/blender/intern/cycles/blender/blender_sync.h
    trunk/blender/intern/cycles/device/device_cuda.cpp

Modified: trunk/blender/SConstruct
===================================================================
--- trunk/blender/SConstruct	2011-12-01 14:46:36 UTC (rev 42313)
+++ trunk/blender/SConstruct	2011-12-01 16:33:21 UTC (rev 42314)
@@ -581,6 +581,14 @@
             source.remove('CMakeLists.txt')
             source=['intern/cycles/doc/license/'+s for s in source]
             scriptinstall.append(env.Install(dir=dir,source=source))
+
+            # cuda binaries
+            if env['WITH_BF_CYCLES_CUDA_BINARIES']:
+                dir=os.path.join(env['BF_INSTALLDIR'], VERSION, 'scripts', 'addons','cycles', 'lib')
+                for arch in env['BF_CYCLES_CUDA_BINARIES_ARCH']:
+                    kernel_build_dir = os.path.join(B.root_build_dir, 'intern/cycles/kernel')
+                    cubin_file = os.path.join(kernel_build_dir, "kernel_%s.cubin" % arch)
+                    scriptinstall.append(env.Install(dir=dir,source=cubin_file))
     
     if env['WITH_BF_INTERNATIONAL']:
         internationalpaths=['release' + os.sep + 'datafiles']

Modified: trunk/blender/build_files/scons/config/darwin-config.py
===================================================================
--- trunk/blender/build_files/scons/config/darwin-config.py	2011-12-01 14:46:36 UTC (rev 42313)
+++ trunk/blender/build_files/scons/config/darwin-config.py	2011-12-01 16:33:21 UTC (rev 42314)
@@ -283,7 +283,7 @@
 #BF_EXPAT_LIB = 'expat'
 #BF_EXPAT_LIBPATH = '/usr/lib'
 
-#Cycles
+# Cycles
 WITH_BF_CYCLES = True
 
 WITH_BF_OIIO = True
@@ -298,6 +298,10 @@
 BF_BOOST_LIB = 'boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt'
 BF_BOOST_LIBPATH = BF_BOOST + '/lib'
 
+WITH_BF_CYCLES_CUDA_BINARIES = False
+BF_CYCLES_CUDA_NVCC = '/usr/local/cuda/bin/nvcc'
+BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_13', 'sm_20', 'sm_21']
+
 #Ray trace optimization
 if MACOSX_ARCHITECTURE == 'x86_64' or MACOSX_ARCHITECTURE == 'i386':
     WITH_BF_RAYOPTIMIZATION = True

Modified: trunk/blender/build_files/scons/config/linux-config.py
===================================================================
--- trunk/blender/build_files/scons/config/linux-config.py	2011-12-01 14:46:36 UTC (rev 42313)
+++ trunk/blender/build_files/scons/config/linux-config.py	2011-12-01 16:33:21 UTC (rev 42314)
@@ -219,6 +219,10 @@
 
 WITH_BF_CYCLES = WITH_BF_OIIO and WITH_BF_BOOST
 
+WITH_BF_CYCLES_CUDA_BINARIES = False
+BF_CYCLES_CUDA_NVCC = '/usr/local/cuda/bin/nvcc'
+BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_13', 'sm_20', 'sm_21']
+
 WITH_BF_OPENMP = True
 
 #Ray trace optimization

Modified: trunk/blender/build_files/scons/tools/Blender.py
===================================================================
--- trunk/blender/build_files/scons/tools/Blender.py	2011-12-01 14:46:36 UTC (rev 42313)
+++ trunk/blender/build_files/scons/tools/Blender.py	2011-12-01 16:33:21 UTC (rev 42314)
@@ -291,7 +291,7 @@
 
     syslibs += Split(lenv['BF_JPEG_LIB'])
     syslibs += Split(lenv['BF_PNG_LIB'])
-	
+
     syslibs += lenv['LLIBS']
 
     return syslibs
@@ -588,6 +588,8 @@
             commands.getoutput(cmd)
             cmd = 'mkdir %s/kernel' % (cinstalldir)
             commands.getoutput(cmd)
+            cmd = 'mkdir %s/lib' % (cinstalldir)
+            commands.getoutput(cmd)
             cmd = 'cp -R %s/blender/addon/*.py %s/' % (croot, cinstalldir)
             commands.getoutput(cmd)
             cmd = 'cp -R %s/doc/license %s/license' % (croot, cinstalldir)
@@ -596,6 +598,8 @@
             commands.getoutput(cmd)
             cmd = 'cp -R %s/kernel/svm %s/util/util_color.h %s/util/util_math.h %s/util/util_transform.h %s/util/util_types.h %s/kernel/' % (croot, croot, croot, croot, croot, cinstalldir)
             commands.getoutput(cmd)
+            cmd = 'cp -R %s/../intern/cycles/kernel/*.cubin %s/lib/' % (builddir, cinstalldir)
+            commands.getoutput(cmd)
 
     if env['WITH_OSX_STATICPYTHON']:
         cmd = 'mkdir %s/%s.app/Contents/MacOS/%s/python/'%(installdir,binary, VERSION)

Modified: trunk/blender/build_files/scons/tools/btools.py
===================================================================
--- trunk/blender/build_files/scons/tools/btools.py	2011-12-01 14:46:36 UTC (rev 42313)
+++ trunk/blender/build_files/scons/tools/btools.py	2011-12-01 16:33:21 UTC (rev 42314)
@@ -157,7 +157,7 @@
             'WITH_BF_JEMALLOC', 'WITH_BF_STATICJEMALLOC', 'BF_JEMALLOC', 'BF_JEMALLOC_INC', 'BF_JEMALLOC_LIBPATH', 'BF_JEMALLOC_LIB', 'BF_JEMALLOC_LIB_STATIC',
             'BUILDBOT_BRANCH',
             'WITH_BF_3DMOUSE', 'WITH_BF_STATIC3DMOUSE', 'BF_3DMOUSE', 'BF_3DMOUSE_INC', 'BF_3DMOUSE_LIB', 'BF_3DMOUSE_LIBPATH', 'BF_3DMOUSE_LIB_STATIC',
-            'WITH_BF_CYCLES', 'WITH_BF_CYCLES_BINARIES' 'BF_CYCLES_BINARIES_ARCH',
+            'WITH_BF_CYCLES', 'WITH_BF_CYCLES_CUDA_BINARIES' 'BF_CYCLES_CUDA_NVCC', 'BF_CYCLES_CUDA_NVCC',
             'WITH_BF_OIIO', 'WITH_BF_STATICOIIO', 'BF_OIIO', 'BF_OIIO_INC', 'BF_OIIO_LIB', 'BF_OIIO_LIB_STATIC', 'BF_OIIO_LIBPATH',
             'WITH_BF_BOOST', 'WITH_BF_STATICBOOST', 'BF_BOOST', 'BF_BOOST_INC', 'BF_BOOST_LIB', 'BF_BOOST_LIB_STATIC', 'BF_BOOST_LIBPATH'
             ]
@@ -544,7 +544,9 @@
 
     localopts.AddVariables(
         (BoolVariable('WITH_BF_CYCLES', 'Build with the Cycles engine', True)),
-        (BoolVariable('WITH_BF_CYCLES_BINARIES', 'Build with precompiled CUDA binaries', False)),
+        (BoolVariable('WITH_BF_CYCLES_CUDA_BINARIES', 'Build with precompiled CUDA binaries', False)),
+        ('BF_CYCLES_CUDA_NVCC', 'CUDA nvcc compiler path', ''),
+        ('BF_CYCLES_CUDA_BINARIES_ARCH', 'CUDA architectures to compile binaries for', []),
 
         (BoolVariable('WITH_BF_OIIO', 'Build with OpenImageIO', False)),
         (BoolVariable('WITH_BF_STATICOIIO', 'Staticly link to OpenImageIO', False)),

Modified: trunk/blender/intern/cycles/CMakeLists.txt
===================================================================
--- trunk/blender/intern/cycles/CMakeLists.txt	2011-12-01 14:46:36 UTC (rev 42313)
+++ trunk/blender/intern/cycles/CMakeLists.txt	2011-12-01 16:33:21 UTC (rev 42314)
@@ -10,12 +10,14 @@
 
 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
 	set(WITH_CYCLES_OPTIMIZED_KERNEL ON)
+endif()
 
-	if(WIN32 AND MSVC)
-		set(CYCLES_OPTIMIZED_KERNEL_FLAGS "/arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast")
-	elseif(CMAKE_COMPILER_IS_GNUCC)
-		set(CYCLES_OPTIMIZED_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3")
-	endif()
+if(WIN32 AND MSVC)
+	set(CYCLES_OPTIMIZED_KERNEL_FLAGS "/arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast -D_CRT_SECURE_NO_WARNINGS")
+elseif(CMAKE_COMPILER_IS_GNUCC)
+	set(CYCLES_OPTIMIZED_KERNEL_FLAGS "-ffast-math -msse -msse2 -msse3")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffast-math")
 endif()
 
 # for OSL, not needed yet

Modified: trunk/blender/intern/cycles/SConscript
===================================================================
--- trunk/blender/intern/cycles/SConscript	2011-12-01 14:46:36 UTC (rev 42313)
+++ trunk/blender/intern/cycles/SConscript	2011-12-01 16:33:21 UTC (rev 42314)
@@ -14,6 +14,7 @@
 
 incs = [] 
 defs = []
+cxxflags = []
 
 defs.append('CCL_NAMESPACE_BEGIN=namespace ccl {')
 defs.append('CCL_NAMESPACE_END=}')
@@ -22,7 +23,7 @@
 defs.append('WITH_MULTI')
 defs.append('WITH_CUDA')
 
-if env['WITH_BF_CYCLES_BINARIES']:
+if env['WITH_BF_CYCLES_CUDA_BINARIES']:
     defs.append('WITH_CUDA_BINARIES')
 
 incs.extend('. bvh render device kernel kernel/osl kernel/svm util subd'.split())
@@ -33,12 +34,17 @@
 incs.append(cycles['BF_BOOST_INC'])
 incs.append(cycles['BF_PYTHON_INC'])
 
+if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
+    cxxflags.append('-D_CRT_SECURE_NO_WARNINGS /fp:fast'.split())
+else:
+    cxxflags.append('-ffast-math'.split())
+
 # optimized kernel
 if env['WITH_BF_RAYOPTIMIZATION']:
     optim_cxxflags = []
 
     if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
-        optim_cxxflags.append('/Ox /Ot /arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /EHsc /fp:fast'.split())
+        optim_cxxflags.append('/arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /fp:fast'.split())
     else:
         optim_cxxflags.append('-ffast-math -msse -msse2 -msse3'.split())
     
@@ -48,5 +54,10 @@
     cycles_optim = cycles.Clone()
     cycles_optim.BlenderLib('bf_intern_cycles_optimized', optim_sources, incs, optim_defs, libtype=['intern'], priority=[0], compileflags=[None], cxx_compileflags=optim_cxxflags)
 
-cycles.BlenderLib('bf_intern_cycles', sources, incs, defs, libtype=['intern'], priority=[0], compileflags=[None])
+cycles.BlenderLib('bf_intern_cycles', sources, incs, defs, libtype=['intern'], priority=[0], compileflags=[None], cxx_compileflags=cxxflags)
 
+# cuda kernel binaries
+if env['WITH_BF_CYCLES_CUDA_BINARIES']:
+    kernel_binaries = SConscript(['kernel/SConscript'])
+    cycles.Depends("device/device_cuda.o", kernel_binaries)
+

Modified: trunk/blender/intern/cycles/blender/CMakeLists.txt
===================================================================
--- trunk/blender/intern/cycles/blender/CMakeLists.txt	2011-12-01 14:46:36 UTC (rev 42313)
+++ trunk/blender/intern/cycles/blender/CMakeLists.txt	2011-12-01 16:33:21 UTC (rev 42314)
@@ -39,7 +39,6 @@
 	addon/presets.py
 	addon/properties.py
 	addon/ui.py
-	addon/xml.py
 )
 
 blender_add_lib(bf_intern_cycles "${SRC}" "${INC}" "${INC_SYS}")

Modified: trunk/blender/intern/cycles/blender/addon/__init__.py
===================================================================
--- trunk/blender/intern/cycles/blender/addon/__init__.py	2011-12-01 14:46:36 UTC (rev 42313)
+++ trunk/blender/intern/cycles/blender/addon/__init__.py	2011-12-01 16:33:21 UTC (rev 42314)
@@ -33,7 +33,7 @@
     "category": "Render"}
 
 import bpy
-from . import ui, properties, xml, engine, presets
+from . import ui, properties, engine, presets
 
 
 class CyclesRender(bpy.types.RenderEngine):
@@ -77,13 +77,11 @@
 def register():
     properties.register()
     ui.register()
-    xml.register()
     presets.register()
     bpy.utils.register_module(__name__)
 
 
 def unregister():
-    xml.unregister()
     ui.unregister()
     properties.unregister()
     presets.unregister()

Modified: trunk/blender/intern/cycles/blender/addon/enums.py
===================================================================
--- trunk/blender/intern/cycles/blender/addon/enums.py	2011-12-01 14:46:36 UTC (rev 42313)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list