From da376e0237517543aa21740ee2363234ee1c20ae Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Wed, 27 Apr 2011 11:58:34 +0000 Subject: Cycles render engine, initial commit. This is the engine itself, blender modifications and build instructions will follow later. Cycles uses code from some great open source projects, many thanks them: * BVH building and traversal code from NVidia's "Understanding the Efficiency of Ray Traversal on GPUs": http://code.google.com/p/understanding-the-efficiency-of-ray-traversal-on-gpus/ * Open Shading Language for a large part of the shading system: http://code.google.com/p/openshadinglanguage/ * Blender for procedural textures and a few other nodes. * Approximate Catmull Clark subdivision from NVidia Mesh tools: http://code.google.com/p/nvidia-mesh-tools/ * Sobol direction vectors from: http://web.maths.unsw.edu.au/~fkuo/sobol/ * Film response functions from: http://www.cs.columbia.edu/CAVE/software/softlib/dorf.php --- intern/cycles/cmake/create_dmg.py | 14 +++ intern/cycles/cmake/external_libs.cmake | 210 ++++++++++++++++++++++++++++++++ intern/cycles/cmake/platforms.cmake | 27 ++++ 3 files changed, 251 insertions(+) create mode 100755 intern/cycles/cmake/create_dmg.py create mode 100644 intern/cycles/cmake/external_libs.cmake create mode 100644 intern/cycles/cmake/platforms.cmake (limited to 'intern/cycles/cmake') diff --git a/intern/cycles/cmake/create_dmg.py b/intern/cycles/cmake/create_dmg.py new file mode 100755 index 00000000000..bba7f8d3509 --- /dev/null +++ b/intern/cycles/cmake/create_dmg.py @@ -0,0 +1,14 @@ +#!/usr/bin/python + +import os +import string +import sys + +name = string.replace(sys.argv[1], ".zip", "") + +os.system("rm -f %s.dmg" % (name)) +os.system("mkdir -p /tmp/cycles_dmg") +os.system("rm /tmp/cycles_dmg/*") +os.system("cp %s.zip /tmp/cycles_dmg/" % (name)) +os.system("/usr/bin/hdiutil create -fs HFS+ -srcfolder /tmp/cycles_dmg -volname %s %s.dmg" % (name, name)) + diff --git a/intern/cycles/cmake/external_libs.cmake b/intern/cycles/cmake/external_libs.cmake new file mode 100644 index 00000000000..6f6f00ed6bc --- /dev/null +++ b/intern/cycles/cmake/external_libs.cmake @@ -0,0 +1,210 @@ +########################################################################### +# Boost setup + +MESSAGE(STATUS "BOOST_PATH ${BOOST_PATH}") +SET(BOOST_ROOT ${BOOST_PATH}) + +SET(Boost_ADDITIONAL_VERSIONS "1.45" "1.44" + "1.43" "1.43.0" "1.42" "1.42.0" + "1.41" "1.41.0" "1.40" "1.40.0" + "1.39" "1.39.0" "1.38" "1.38.0" + "1.37" "1.37.0" "1.34.1" "1_34_1") +IF(LINKSTATIC) + SET(Boost_USE_STATIC_LIBS ON) +ENDIF() + +SET(Boost_USE_MULTITHREADED ON) + +FIND_PACKAGE(Boost 1.34 REQUIRED COMPONENTS filesystem regex system serialization thread) + +MESSAGE(STATUS "Boost found ${Boost_FOUND}") +MESSAGE(STATUS "Boost version ${Boost_VERSION}") +MESSAGE(STATUS "Boost include dirs ${Boost_INCLUDE_DIRS}") +MESSAGE(STATUS "Boost library dirs ${Boost_LIBRARY_DIRS}") +MESSAGE(STATUS "Boost libraries ${Boost_LIBRARIES}") + +INCLUDE_DIRECTORIES("${Boost_INCLUDE_DIRS}") +LINK_DIRECTORIES("${Boost_LIBRARY_DIRS}") + +IF(WITH_NETWORK) + ADD_DEFINITIONS(-DWITH_NETWORK) +ENDIF() + +IF(WITH_MULTI) + ADD_DEFINITIONS(-DWITH_MULTI) +ENDIF() + +########################################################################### +# OpenImageIO + +MESSAGE(STATUS "OIIO_PATH = ${OIIO_PATH}") + +FIND_LIBRARY(OPENIMAGEIO_LIBRARY NAMES OpenImageIO PATHS ${OIIO_PATH}/lib) +FIND_PATH(OPENIMAGEIO_INCLUDES OpenImageIO/imageio.h ${OIIO_PATH}/include) +FIND_PROGRAM(OPENIMAGEIO_IDIFF NAMES idiff PATHS ${OIIO_PATH}/bin) + +IF(OPENIMAGEIO_INCLUDES AND OPENIMAGEIO_LIBRARY) + SET(OPENIMAGEIO_FOUND TRUE) + MESSAGE(STATUS "OpenImageIO includes = ${OPENIMAGEIO_INCLUDES}") + MESSAGE(STATUS "OpenImageIO library = ${OPENIMAGEIO_LIBRARY}") +ELSE() + MESSAGE(STATUS "OpenImageIO not found") +ENDIF() + +ADD_DEFINITIONS(-DWITH_OIIO) +INCLUDE_DIRECTORIES(${OPENIMAGEIO_INCLUDES} ${OPENIMAGEIO_INCLUDES}/OpenImageIO) + +########################################################################### +# OpenGL + +FIND_PACKAGE(OpenGL) +MESSAGE(STATUS "OPENGL_FOUND=${OPENGL_FOUND}") + +INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) + +########################################################################### +# GLUT + +SET(GLUT_ROOT_PATH ${GLUT_PATH}) + +FIND_PACKAGE(GLUT) +MESSAGE(STATUS "GLUT_FOUND=${GLUT_FOUND}") + +INCLUDE_DIRECTORIES(${GLUT_INCLUDE_DIR}) + +########################################################################### +# GLEW + +SET(GLEW_VERSION 1.5.1) +FIND_LIBRARY(GLEW_LIBRARIES NAMES GLEW PATHS ${GLEW_PATH}/lib) +FIND_PATH(GLEW_INCLUDES NAMES glew.h PATH_SUFFIXES GL PATHS ${GLEW_PATH}/include) + +IF(GLEW_INCLUDES AND GLEW_LIBRARIES) + MESSAGE(STATUS "GLEW includes = ${GLEW_INCLUDES}") + MESSAGE(STATUS "GLEW library = ${GLEW_LIBRARIES}") +ELSE() + MESSAGE(STATUS "GLEW not found") +ENDIF() + +INCLUDE_DIRECTORIES("${GLEW_INCLUDES}") + +########################################################################### +# OpenShadingLanguage + +IF(WITH_OSL) + + MESSAGE(STATUS "OSL_PATH = ${OSL_PATH}") + + FIND_LIBRARY(OSL_LIBRARIES NAMES oslexec oslcomp oslquery PATHS ${OSL_PATH}/lib) + FIND_PATH(OSL_INCLUDES OSL/oslclosure.h ${OSL_PATH}/include) + FIND_PROGRAM(OSL_COMPILER NAMES oslc PATHS ${OSL_PATH}/bin) + + IF(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER) + SET(OSL_FOUND TRUE) + MESSAGE(STATUS "OSL includes = ${OSL_INCLUDES}") + MESSAGE(STATUS "OSL library = ${OSL_LIBRARIES}") + MESSAGE(STATUS "OSL compiler = ${OSL_COMPILER}") + ELSE() + MESSAGE(STATUS "OSL not found") + ENDIF() + + ADD_DEFINITIONS(-DWITH_OSL) + INCLUDE_DIRECTORIES(${OSL_INCLUDES} ${OSL_INCLUDES}/OSL ${OSL_INCLUDES}/../../../src/liboslexec) + +ENDIF() + +########################################################################### +# Partio + +IF(WITH_PARTIO) + + MESSAGE(STATUS "PARTIO_PATH = ${PARTIO_PATH}") + + FIND_LIBRARY(PARTIO_LIBRARIES NAMES partio PATHS ${PARTIO_PATH}/lib) + FIND_PATH(PARTIO_INCLUDES Partio.h ${PARTIO_PATH}/include) + + FIND_PACKAGE(ZLIB) + + IF(PARTIO_INCLUDES AND PARTIO_LIBRARIES AND ZLIB_LIBRARIES) + LIST(APPEND PARTIO_LIBRARIES ${ZLIB_LIBRARIES}) + SET(PARTIO_FOUND TRUE) + MESSAGE(STATUS "PARTIO includes = ${PARTIO_INCLUDES}") + MESSAGE(STATUS "PARTIO library = ${PARTIO_LIBRARIES}") + ELSE() + MESSAGE(STATUS "PARTIO not found") + ENDIF() + + ADD_DEFINITIONS(-DWITH_PARTIO) + INCLUDE_DIRECTORIES(${PARTIO_INCLUDES}) + +ENDIF() + +########################################################################### +# Python + +IF(WITH_BLENDER) + + FIND_PATH(PYTHON_INCLUDE_DIRS Python.h PATHS ${PYTHON_PATH} ${PYTHON_PATH}/include ${PYTHON_PATH}/include/python3.1 ${PYTHON_PATH}/include/python3.2 NO_DEFAULT_PATH) + IF(WIN32) + FIND_LIBRARY(PYTHON_LIBRARIES NAMES python31 PATHS ${PYTHON_PATH}/lib) + ENDIF() + +ENDIF() + +########################################################################### +# Blender + +IF(WITH_BLENDER) + FIND_PATH(BLENDER_INCLUDE_DIRS RNA_blender.h PATHS ${BLENDER_PATH}/include) + IF(WIN32) + SET(BLENDER_LIBRARIES ${BLENDER_PATH}/bin/Release/blender.lib) + ENDIF() +ENDIF() + +########################################################################### +# CUDA + +IF(WITH_CUDA) + + FIND_LIBRARY(CUDA_LIBRARIES NAMES cuda PATHS ${CUDA_PATH}/lib ${CUDA_PATH}/lib/Win32 NO_DEFAULT_PATH) + FIND_PATH(CUDA_INCLUDES cuda.h ${CUDA_PATH}/include NO_DEFAULT_PATH) + FIND_PROGRAM(CUDA_NVCC NAMES nvcc PATHS ${CUDA_PATH}/bin NO_DEFAULT_PATH) + + IF(CUDA_INCLUDES AND CUDA_LIBRARIES AND CUDA_NVCC) + MESSAGE(STATUS "CUDA includes = ${CUDA_INCLUDES}") + MESSAGE(STATUS "CUDA library = ${CUDA_LIBRARIES}") + MESSAGE(STATUS "CUDA nvcc = ${CUDA_NVCC}") + ELSE() + MESSAGE(STATUS "CUDA not found") + ENDIF() + + ADD_DEFINITIONS(-DWITH_CUDA) + INCLUDE_DIRECTORIES(${CUDA_INCLUDES}) + +ENDIF() + +########################################################################### +# OpenCL + +IF(WITH_OPENCL) + + IF(APPLE) + SET(OPENCL_INCLUDES "/System/Library/Frameworks/OpenCL.framework/Headers") + SET(OPENCL_LIBRARIES "-framework OpenCL") + ENDIF() + + IF(WIN32) + SET(OPENCL_INCLUDES "") + SET(OPENCL_LIRBARIES "OpenCL") + ENDIF() + + IF(UNIX AND NOT APPLE) + SET(OPENCL_INCLUDES ${OPENCL_PATH}) + SET(OPENCL_LIRBARIES "OpenCL") + ENDIF() + + ADD_DEFINITIONS(-DWITH_OPENCL) + INCLUDE_DIRECTORIES(${OPENCL_INCLUDES}) + +ENDIF() + diff --git a/intern/cycles/cmake/platforms.cmake b/intern/cycles/cmake/platforms.cmake new file mode 100644 index 00000000000..ebc4b01edbc --- /dev/null +++ b/intern/cycles/cmake/platforms.cmake @@ -0,0 +1,27 @@ + +# Platform specific build flags + +SET(GCC_WARNING_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-long-long") # -pedantic +SET(GCC_OPTIM_FLAGS "-ffast-math -fPIC -msse -msse2 -msse3 -mtune=native") + +IF(APPLE) + SET(CMAKE_CXX_FLAGS "${GCC_WARNING_FLAGS} ${GCC_OPTIM_FLAGS}") + SET(RTTI_DISABLE_FLAGS "-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID") + SET(PYTHON_MODULE_FLAGS "-undefined dynamic_lookup") +ENDIF(APPLE) + +IF(WIN32) + SET(CMAKE_CXX_FLAGS "-D_CRT_SECURE_NO_WARNINGS /EHsc /fp:fast") + SET(RTTI_DISABLE_FLAGS "/GR- -DBOOST_NO_RTTI -DBOOST_NO_TYPEID") + SET(PYTHON_MODULE_FLAGS "-DLL") +ENDIF(WIN32) + +IF(UNIX AND NOT APPLE) + SET(CMAKE_CXX_FLAGS "${GCC_WARNING_FLAGS} ${GCC_OPTIM_FLAGS}") + SET(RTTI_DISABLE_FLAGS "-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID") + SET(PYTHON_MODULE_FLAGS "-fPIC") +ENDIF(UNIX AND NOT APPLE) + +ADD_DEFINITIONS(-DCCL_NAMESPACE_BEGIN=namespace\ ccl\ {) +ADD_DEFINITIONS(-DCCL_NAMESPACE_END=}) + -- cgit v1.2.3