diff --git a/doc/python_api/examples/bpy.app.handlers.1.py b/doc/python_api/examples/bpy.app.handlers.1.py index a6591f6b83f..48fdb95d793 100644 --- a/doc/python_api/examples/bpy.app.handlers.1.py +++ b/doc/python_api/examples/bpy.app.handlers.1.py @@ -15,6 +15,6 @@ from bpy.app.handlers import persistent @persistent def load_handler(dummy): - print("Load Handler:", bpy.data.filepath) + print("Load Handler:", bpy.data.filepath) bpy.app.handlers.load_post.append(load_handler) diff --git a/doc/python_api/examples/bpy.app.handlers.py b/doc/python_api/examples/bpy.app.handlers.py index 7c176063b7c..57b209e15f0 100644 --- a/doc/python_api/examples/bpy.app.handlers.py +++ b/doc/python_api/examples/bpy.app.handlers.py @@ -6,7 +6,8 @@ This script shows the most simple example of adding a handler. import bpy -def my_handler(scene): - print("Frame Change", scene.frame_current) -bpy.app.handlers.frame_change_pre.append(my_handler) \ No newline at end of file +def my_handler(scene): + print("Frame Change", scene.frame_current) + +bpy.app.handlers.frame_change_pre.append(my_handler) diff --git a/extern/libmv/CMakeLists.txt b/extern/libmv/CMakeLists.txt index 41fc39c97ac..333791e28eb 100644 --- a/extern/libmv/CMakeLists.txt +++ b/extern/libmv/CMakeLists.txt @@ -25,8 +25,8 @@ set(INC . ../Eigen3 - ./third_party/ssba - ./third_party/ldl/Include + third_party/ssba + third_party/ldl/Include ../colamd/Include ) @@ -130,7 +130,7 @@ set(SRC third_party/msinttypes/inttypes.h ) -IF(WIN32) +if(WIN32) list(APPEND SRC third_party/glog/src/logging.cc third_party/glog/src/raw_logging.cc @@ -158,18 +158,23 @@ IF(WIN32) ) list(APPEND INC - ./third_party/glog/src/windows - ./third_party/msinttypes + third_party/glog/src/windows ) - IF(MSVC) + if(NOT MINGW) + list(APPEND INC + third_party/msinttypes + ) + endif() + + if(MSVC) set(MSVC_OFLAGS O1 O2 Ox) foreach(FLAG ) string(REPLACE "" "Od" CMAKE_CXX_FLAGS_RELEASE "") string(REPLACE "" "Od" CMAKE_C_FLAGS_RELWITHDEBINFO "") endforeach() - ENDIF(MSVC) -ELSE(WIN32) + endif() +else(WIN32) list(APPEND SRC third_party/glog/src/utilities.cc third_party/glog/src/symbolize.cc @@ -201,9 +206,9 @@ ELSE(WIN32) ) list(APPEND INC - ./third_party/glog/src + third_party/glog/src ) -ENDIF(WIN32) +endif() add_definitions(-DV3DLIB_ENABLE_SUITESPARSE -DGOOGLE_GLOG_DLL_DECL=) diff --git a/extern/libmv/SConscript b/extern/libmv/SConscript index 1ffc6233c1d..60705e913f7 100644 --- a/extern/libmv/SConscript +++ b/extern/libmv/SConscript @@ -30,7 +30,9 @@ incs += ' ' + env['BF_PNG_INC'] incs += ' ' + env['BF_ZLIB_INC'] if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): - incs += ' ./third_party/glog/src/windows ./third_party/glog/src/windows/glog ./third_party/msinttypes' + incs += ' ./third_party/glog/src/windows ./third_party/glog/src/windows/glog' + if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): + incs += ' ./third_party/msinttypes' src += ['./third_party/glog/src/logging.cc', './third_party/glog/src/raw_logging.cc', './third_party/glog/src/utilities.cc', './third_party/glog/src/vlog_is_on.cc'] src += ['./third_party/glog/src/windows/port.cc'] diff --git a/extern/libmv/bundle.sh b/extern/libmv/bundle.sh index c8df8ae7341..690f78df387 100755 --- a/extern/libmv/bundle.sh +++ b/extern/libmv/bundle.sh @@ -166,6 +166,16 @@ IF(WIN32) third_party/glog/src/windows/config.h ) + list(APPEND INC + ./third_party/glog/src/windows + ) + + IF(NOT MINGW) + list(APPEND INC + ./third_party/msinttypes + ) + ENDIF(MINGW) + list(APPEND INC ./third_party/glog/src/windows ./third_party/msinttypes @@ -219,7 +229,10 @@ incs += ' ' + env['BF_PNG_INC'] incs += ' ' + env['BF_ZLIB_INC'] if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): - incs += ' ./third_party/glog/src/windows ./third_party/glog/src/windows/glog ./third_party/msinttypes' + incs += ' ./third_party/glog/src/windows ./third_party/glog/src/windows/glog' + incs += ' ./third_party/glog/src/windows ./third_party/glog/src/windows/glog' + if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): + incs += ' ./third_party/msinttypes' ${win_src} src += ['./third_party/glog/src/logging.cc', './third_party/glog/src/raw_logging.cc', './third_party/glog/src/utilities.cc', './third_party/glog/src/vlog_is_on.cc'] src += ['./third_party/glog/src/windows/port.cc'] diff --git a/extern/libmv/libmv/multiview/euclidean_resection.cc b/extern/libmv/libmv/multiview/euclidean_resection.cc index 6d918a1a8bc..92862515d7e 100644 --- a/extern/libmv/libmv/multiview/euclidean_resection.cc +++ b/extern/libmv/libmv/multiview/euclidean_resection.cc @@ -32,6 +32,8 @@ namespace libmv { namespace euclidean_resection { +typedef unsigned int uint; + bool EuclideanResection(const Mat2X &x_camera, const Mat3X &X_world, Mat3 *R, Vec3 *t, diff --git a/extern/libmv/patches/mingw.patch b/extern/libmv/patches/mingw.patch index 0b08a483bea..029e7d7f979 100644 --- a/extern/libmv/patches/mingw.patch +++ b/extern/libmv/patches/mingw.patch @@ -1,3 +1,16 @@ +diff --git a/src/libmv/multiview/euclidean_resection.cc b/src/libmv/multiview/euclidean_resection.cc +index 6d918a1..9286251 100644 +--- a/src/libmv/multiview/euclidean_resection.cc ++++ b/src/libmv/multiview/euclidean_resection.cc +@@ -32,6 +32,8 @@ + namespace libmv { + namespace euclidean_resection { + ++typedef unsigned int uint; ++ + bool EuclideanResection(const Mat2X &x_camera, + const Mat3X &X_world, + Mat3 *R, Vec3 *t, diff --git a/src/libmv/numeric/numeric.h b/src/libmv/numeric/numeric.h index f39d126..21e0f06 100644 --- a/src/libmv/numeric/numeric.h @@ -11,3 +24,148 @@ index f39d126..21e0f06 100644 inline long lround(double d) { return (long)(d>0 ? d+0.5 : ceil(d-0.5)); } +diff --git a/src/third_party/glog/src/config.h b/src/third_party/glog/src/config.h +index ed8d56e..06ed686 100644 +--- a/src/third_party/glog/src/config.h ++++ b/src/third_party/glog/src/config.h +@@ -4,6 +4,8 @@ + /* Namespace for Google classes */ + #ifdef __APPLE__ + #include "config_mac.h" ++#elif __MINGW32__ ++ #include "windows/config.h" + #elif __GNUC__ + #include "config_linux.h" + #elif _MSC_VER +diff --git a/src/third_party/glog/src/utilities.h b/src/third_party/glog/src/utilities.h +index ee54f94..c4ae256 100644 +--- a/src/third_party/glog/src/utilities.h ++++ b/src/third_party/glog/src/utilities.h +@@ -101,7 +101,9 @@ + // correctly when GetStackTrace() is called with max_depth == 0. + // Some code may do that. + +-#if defined(HAVE_LIB_UNWIND) ++#if __MINGW32__ ++# undef STACKTRACE_H ++#elif defined(HAVE_LIB_UNWIND) + # define STACKTRACE_H "stacktrace_libunwind-inl.h" + #elif !defined(NO_FRAME_POINTER) + # if defined(__i386__) && __GNUC__ >= 2 +diff --git a/src/third_party/glog/src/windows/glog/logging.h b/src/third_party/glog/src/windows/glog/logging.h +index 7a6df74..4257375 100755 +--- a/src/third_party/glog/src/windows/glog/logging.h ++++ b/src/third_party/glog/src/windows/glog/logging.h +@@ -59,7 +59,7 @@ + + // Annoying stuff for windows -- makes sure clients can import these functions + #ifndef GOOGLE_GLOG_DLL_DECL +-# if defined(_WIN32) && !defined(__CYGWIN__) ++# if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__) + # define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) + # else + # define GOOGLE_GLOG_DLL_DECL +@@ -86,6 +86,15 @@ + #include + #endif + ++#ifdef __MINGW32__ ++# include ++# include ++# include // the normal place uint16_t is defined ++# include // the normal place u_int16_t is defined ++# include // a third place for uint16_t or u_int16_t ++# define _exit(x) exit(x) ++#endif ++ + namespace google { + + #if 0 // the C99 format +@@ -98,11 +107,16 @@ typedef int32_t int32; + typedef u_int32_t uint32; + typedef int64_t int64; + typedef u_int64_t uint64; +-#elif 1 // the windows (vc7) format ++#elif defined(_MSC_VER) + typedef __int32 int32; + typedef unsigned __int32 uint32; + typedef __int64 int64; + typedef unsigned __int64 uint64; ++#elif defined(__MINGW32__) ++typedef int32_t int32; ++typedef uint32_t uint32; ++typedef int64_t int64; ++typedef uint64_t uint64; + #else + #error Do not know how to define a 32-bit integer quantity on your system + #endif +diff --git a/src/third_party/glog/src/windows/port.h b/src/third_party/glog/src/windows/port.h +index d093bf5..d507812 100755 +--- a/src/third_party/glog/src/windows/port.h ++++ b/src/third_party/glog/src/windows/port.h +@@ -59,14 +59,16 @@ + * used by both C and C++ code, so we put all the C++ together. + */ + +-/* 4244: otherwise we get problems when substracting two size_t's to an int +- * 4251: it's complaining about a private struct I've chosen not to dllexport +- * 4355: we use this in a constructor, but we do it safely +- * 4715: for some reason VC++ stopped realizing you can't return after abort() +- * 4800: we know we're casting ints/char*'s to bools, and we're ok with that +- * 4996: Yes, we're ok using "unsafe" functions like fopen() and strerror() +- */ +-#pragma warning(disable:4244 4251 4355 4715 4800 4996) ++#if _MSC_VER ++ /* 4244: otherwise we get problems when substracting two size_t's to an int ++ * 4251: it's complaining about a private struct I've chosen not to dllexport ++ * 4355: we use this in a constructor, but we do it safely ++ * 4715: for some reason VC++ stopped realizing you can't return after abort() ++ * 4800: we know we're casting ints/char*'s to bools, and we're ok with that ++ * 4996: Yes, we're ok using "unsafe" functions like fopen() and strerror() ++ */ ++# pragma warning(disable:4244 4251 4355 4715 4800 4996) ++#endif + + /* file I/O */ + #define PATH_MAX 1024 +@@ -108,7 +110,9 @@ extern int snprintf(char *str, size_t size, + extern int safe_vsnprintf(char *str, size_t size, + const char *format, va_list ap); + #define vsnprintf(str, size, format, ap) safe_vsnprintf(str, size, format, ap) ++#if !defined(__MINGW32__) + #define va_copy(dst, src) (dst) = (src) ++#endif + + /* Windows doesn't support specifying the number of buckets as a + * hash_map constructor arg, so we leave this blank. +@@ -130,13 +134,30 @@ enum { PTHREAD_ONCE_INIT = 0 }; // important that this be 0! for SpinLock + #define pthread_equal(pthread_t_1, pthread_t_2) ((pthread_t_1)==(pthread_t_2)) + + inline struct tm* localtime_r(const time_t* timep, struct tm* result) { ++#if __MINGW32__ ++ struct tm *local_result; ++ local_result = localtime (timep); ++ ++ if (local_result == NULL || result == NULL) ++ return NULL; ++ ++ memcpy (result, local_result, sizeof (result)); ++ ++ return result; ++#else + localtime_s(result, timep); + return result; ++#endif + } + + inline char* strerror_r(int errnum, char* buf, size_t buflen) { ++#if __MINGW32__ ++ strncpy(buf, "Not implemented yet", buflen); ++ return buf; ++#else + strerror_s(buf, buflen, errnum); + return buf; ++#endif + } + + #ifndef __cplusplus diff --git a/extern/libmv/third_party/glog/src/config.h b/extern/libmv/third_party/glog/src/config.h index ed8d56e7799..06ed686f87c 100644 --- a/extern/libmv/third_party/glog/src/config.h +++ b/extern/libmv/third_party/glog/src/config.h @@ -4,6 +4,8 @@ /* Namespace for Google classes */ #ifdef __APPLE__ #include "config_mac.h" +#elif __MINGW32__ + #include "windows/config.h" #elif __GNUC__ #include "config_linux.h" #elif _MSC_VER diff --git a/extern/libmv/third_party/glog/src/utilities.h b/extern/libmv/third_party/glog/src/utilities.h index 2d4e99e595e..5c841a0b90b 100644 --- a/extern/libmv/third_party/glog/src/utilities.h +++ b/extern/libmv/third_party/glog/src/utilities.h @@ -101,7 +101,9 @@ // correctly when GetStackTrace() is called with max_depth == 0. // Some code may do that. -#if defined(HAVE_LIB_UNWIND) +#if __MINGW32__ +# undef STACKTRACE_H +#elif defined(HAVE_LIB_UNWIND) # define STACKTRACE_H "stacktrace_libunwind-inl.h" #elif !defined(NO_FRAME_POINTER) # if defined(__i386__) && __GNUC__ >= 2 diff --git a/extern/libmv/third_party/glog/src/windows/glog/logging.h b/extern/libmv/third_party/glog/src/windows/glog/logging.h index de51586f8e3..2f41681edbe 100644 --- a/extern/libmv/third_party/glog/src/windows/glog/logging.h +++ b/extern/libmv/third_party/glog/src/windows/glog/logging.h @@ -59,7 +59,7 @@ // Annoying stuff for windows -- makes sure clients can import these functions #ifndef GOOGLE_GLOG_DLL_DECL -# if defined(_WIN32) && !defined(__CYGWIN__) +# if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__) # define GOOGLE_GLOG_DLL_DECL __declspec(dllimport) # else # define GOOGLE_GLOG_DLL_DECL @@ -86,6 +86,15 @@ #include "third_party/gflags/gflags.h" #endif +#ifdef __MINGW32__ +# include +# include +# include // the normal place uint16_t is defined +# include // the normal place u_int16_t is defined +# include // a third place for uint16_t or u_int16_t +# define _exit(x) exit(x) +#endif + namespace google { #if 0 // the C99 format @@ -98,11 +107,16 @@ typedef int32_t int32; typedef u_int32_t uint32; typedef int64_t int64; typedef u_int64_t uint64; -#elif 1 // the windows (vc7) format +#elif defined(_MSC_VER) typedef __int32 int32; typedef unsigned __int32 uint32; typedef __int64 int64; typedef unsigned __int64 uint64; +#elif defined(__MINGW32__) +typedef int32_t int32; +typedef uint32_t uint32; +typedef int64_t int64; +typedef uint64_t uint64; #else #error Do not know how to define a 32-bit integer quantity on your system #endif diff --git a/extern/libmv/third_party/glog/src/windows/port.h b/extern/libmv/third_party/glog/src/windows/port.h index d093bf5d34c..d5078120009 100644 --- a/extern/libmv/third_party/glog/src/windows/port.h +++ b/extern/libmv/third_party/glog/src/windows/port.h @@ -59,14 +59,16 @@ * used by both C and C++ code, so we put all the C++ together. */ -/* 4244: otherwise we get problems when substracting two size_t's to an int - * 4251: it's complaining about a private struct I've chosen not to dllexport - * 4355: we use this in a constructor, but we do it safely - * 4715: for some reason VC++ stopped realizing you can't return after abort() - * 4800: we know we're casting ints/char*'s to bools, and we're ok with that - * 4996: Yes, we're ok using "unsafe" functions like fopen() and strerror() - */ -#pragma warning(disable:4244 4251 4355 4715 4800 4996) +#if _MSC_VER + /* 4244: otherwise we get problems when substracting two size_t's to an int + * 4251: it's complaining about a private struct I've chosen not to dllexport + * 4355: we use this in a constructor, but we do it safely + * 4715: for some reason VC++ stopped realizing you can't return after abort() + * 4800: we know we're casting ints/char*'s to bools, and we're ok with that + * 4996: Yes, we're ok using "unsafe" functions like fopen() and strerror() + */ +# pragma warning(disable:4244 4251 4355 4715 4800 4996) +#endif /* file I/O */ #define PATH_MAX 1024 @@ -108,7 +110,9 @@ extern int snprintf(char *str, size_t size, extern int safe_vsnprintf(char *str, size_t size, const char *format, va_list ap); #define vsnprintf(str, size, format, ap) safe_vsnprintf(str, size, format, ap) +#if !defined(__MINGW32__) #define va_copy(dst, src) (dst) = (src) +#endif /* Windows doesn't support specifying the number of buckets as a * hash_map constructor arg, so we leave this blank. @@ -130,13 +134,30 @@ enum { PTHREAD_ONCE_INIT = 0 }; // important that this be 0! for SpinLock #define pthread_equal(pthread_t_1, pthread_t_2) ((pthread_t_1)==(pthread_t_2)) inline struct tm* localtime_r(const time_t* timep, struct tm* result) { +#if __MINGW32__ + struct tm *local_result; + local_result = localtime (timep); + + if (local_result == NULL || result == NULL) + return NULL; + + memcpy (result, local_result, sizeof (result)); + + return result; +#else localtime_s(result, timep); return result; +#endif } inline char* strerror_r(int errnum, char* buf, size_t buflen) { +#if __MINGW32__ + strncpy(buf, "Not implemented yet", buflen); + return buf; +#else strerror_s(buf, buflen, errnum); return buf; +#endif } #ifndef __cplusplus diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index 2e558cf3e97..f1b032b5cc8 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -118,7 +118,7 @@ static ShaderNode *add_node(BL::BlendData b_data, ShaderGraph *graph, BL::Node * case BL::ShaderNode::type_COMBRGB: break; case BL::ShaderNode::type_CURVE_RGB: break; case BL::ShaderNode::type_CURVE_VEC: break; - case BL::ShaderNode::type_GEOM: break; + case BL::ShaderNode::type_GEOMETRY: break; case BL::ShaderNode::type_HUE_SAT: break; case BL::ShaderNode::type_INVERT: break; case BL::ShaderNode::type_MATERIAL: break; @@ -218,10 +218,6 @@ static ShaderNode *add_node(BL::BlendData b_data, ShaderGraph *graph, BL::Node * node = new HoldoutNode(); break; } - case BL::ShaderNode::type_BSDF_ANISOTROPIC: { - node = new WardBsdfNode(); - break; - } case BL::ShaderNode::type_BSDF_DIFFUSE: { node = new DiffuseBsdfNode(); break; @@ -285,7 +281,7 @@ static ShaderNode *add_node(BL::BlendData b_data, ShaderGraph *graph, BL::Node * node = new TransparentVolumeNode(); break; } - case BL::ShaderNode::type_GEOMETRY: { + case BL::ShaderNode::type_NEW_GEOMETRY: { node = new GeometryNode(); break; } diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py index 382a47cb4e6..d01b706cc37 100644 --- a/release/scripts/modules/bpy/ops.py +++ b/release/scripts/modules/bpy/ops.py @@ -208,7 +208,7 @@ class BPyOpsSubModOp(object): return "# %s\n%s" % (descr, as_string) def __str__(self): # used for print(...) - return "" % \ - (self.module, self.func, id(self)) + return ("" % + (self.module, self.func, id(self))) ops_fake_module = BPyOps() diff --git a/release/scripts/modules/bpyml_ui.py b/release/scripts/modules/bpyml_ui.py index f4b6de23dbb..4828b3649d3 100644 --- a/release/scripts/modules/bpyml_ui.py +++ b/release/scripts/modules/bpyml_ui.py @@ -25,9 +25,11 @@ from bpyml import TAG, ARGS, CHILDREN _uilayout_rna = _bpy.types.UILayout.bl_rna -_uilayout_tags = ["ui"] + \ - _uilayout_rna.properties.keys() + \ +_uilayout_tags = ( + ["ui"] + + _uilayout_rna.properties.keys() + _uilayout_rna.functions.keys() + ) # these need to be imported directly # >>> from bpyml_ui.locals import * diff --git a/release/scripts/startup/bl_operators/clip.py b/release/scripts/startup/bl_operators/clip.py index d085b7ea105..55592621112 100644 --- a/release/scripts/startup/bl_operators/clip.py +++ b/release/scripts/startup/bl_operators/clip.py @@ -155,7 +155,8 @@ class CLIP_OT_delete_proxy(Operator): self._rmproxy(d + '_undistorted') self._rmproxy(os.path.join(absproxy, 'proxy_' + str(x) + '.avi')) - tc = ('free_run.blen_tc', 'interp_free_run.blen_tc', \ + tc = ('free_run.blen_tc', + 'interp_free_run.blen_tc', 'record_run.blen_tc') for x in tc: @@ -280,10 +281,10 @@ class CLIP_OT_constraint_to_fcurve(Operator): efra = max(efra, track.markers[-1].frame) if sfra is None or efra is None: - return + return # Store object matrices - for x in range(sfra, efra+1): + for x in range(sfra, efra + 1): scene.frame_set(x) matrices.append(ob.matrix_world.copy()) @@ -291,7 +292,7 @@ class CLIP_OT_constraint_to_fcurve(Operator): # Apply matrices on object and insert keyframes i = 0 - for x in range(sfra, efra+1): + for x in range(sfra, efra + 1): scene.frame_set(x) ob.matrix_world = matrices[i] diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py index 490ee230220..a062ac6f4c5 100644 --- a/release/scripts/startup/bl_operators/object_quick_effects.py +++ b/release/scripts/startup/bl_operators/object_quick_effects.py @@ -105,8 +105,7 @@ class QuickFur(Operator): psys.settings.child_type = 'INTERPOLATED' obj.data.materials.append(mat) - obj.particle_systems[-1].settings.material = \ - len(obj.data.materials) + psys.settings.material = len(obj.data.materials) return {'FINISHED'} diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py index 66d0d72efc1..17e353ff238 100644 --- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py +++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py @@ -212,8 +212,11 @@ def islandIntersectUvIsland(source, target, SourceOffset): # Edge intersect test for ed in edgeLoopsSource: for seg in edgeLoopsTarget: - i = geometry.intersect_line_line_2d(\ - seg[0], seg[1], SourceOffset+ed[0], SourceOffset+ed[1]) + i = geometry.intersect_line_line_2d(seg[0], + seg[1], + SourceOffset+ed[0], + SourceOffset+ed[1], + ) if i: return 1 # LINE INTERSECTION @@ -773,15 +776,16 @@ def main_consts(): global ROTMAT_2D_POS_45D global RotMatStepRotation - ROTMAT_2D_POS_90D = Matrix.Rotation( radians(90.0), 2) - ROTMAT_2D_POS_45D = Matrix.Rotation( radians(45.0), 2) + ROTMAT_2D_POS_90D = Matrix.Rotation(radians(90.0), 2) + ROTMAT_2D_POS_45D = Matrix.Rotation(radians(45.0), 2) RotMatStepRotation = [] rot_angle = 22.5 #45.0/2 while rot_angle > 0.1: - RotMatStepRotation.append([\ - Matrix.Rotation( radians(rot_angle), 2),\ - Matrix.Rotation( radians(-rot_angle), 2)]) + RotMatStepRotation.append([ + Matrix.Rotation(radians(+rot_angle), 2), + Matrix.Rotation(radians(-rot_angle), 2), + ]) rot_angle = rot_angle/2.0 diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py index 0abbf281754..1a0fb0ef4ac 100644 --- a/release/scripts/startup/bl_ui/properties_data_camera.py +++ b/release/scripts/startup/bl_ui/properties_data_camera.py @@ -108,6 +108,7 @@ class DATA_PT_lens(CameraButtonsPanel, Panel): col.prop(cam, "clip_start", text="Start") col.prop(cam, "clip_end", text="End") + class DATA_PT_camera(CameraButtonsPanel, Panel): bl_label = "Camera" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -120,8 +121,8 @@ class DATA_PT_camera(CameraButtonsPanel, Panel): row = layout.row(align=True) row.menu("CAMERA_MT_presets", text=bpy.types.CAMERA_MT_presets.bl_label) - row.operator("camera.preset_add", text="", icon="ZOOMIN") - row.operator("camera.preset_add", text="", icon="ZOOMOUT").remove_active = True + row.operator("camera.preset_add", text="", icon='ZOOMIN') + row.operator("camera.preset_add", text="", icon='ZOOMOUT').remove_active = True layout.label(text="Sensor:") @@ -137,6 +138,7 @@ class DATA_PT_camera(CameraButtonsPanel, Panel): col = split.column(align=True) col.prop(cam, "sensor_fit", text="") + class DATA_PT_camera_dof(CameraButtonsPanel, Panel): bl_label = "Depth of Field" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -156,6 +158,7 @@ class DATA_PT_camera_dof(CameraButtonsPanel, Panel): col.active = cam.dof_object is None col.prop(cam, "dof_distance", text="Distance") + class DATA_PT_camera_display(CameraButtonsPanel, Panel): bl_label = "Display" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} diff --git a/release/scripts/startup/bl_ui/properties_data_lamp.py b/release/scripts/startup/bl_ui/properties_data_lamp.py index 4ff180f74fb..974924be46c 100644 --- a/release/scripts/startup/bl_ui/properties_data_lamp.py +++ b/release/scripts/startup/bl_ui/properties_data_lamp.py @@ -134,8 +134,8 @@ class DATA_PT_sunsky(DataButtonsPanel, Panel): row = layout.row(align=True) row.prop(lamp, "use_sky") row.menu("LAMP_MT_sunsky_presets", text=bpy.types.LAMP_MT_sunsky_presets.bl_label) - row.operator("lamp.sunsky_preset_add", text="", icon="ZOOMIN") - row.operator("lamp.sunsky_preset_add", text="", icon="ZOOMOUT").remove_active = True + row.operator("lamp.sunsky_preset_add", text="", icon='ZOOMIN') + row.operator("lamp.sunsky_preset_add", text="", icon='ZOOMOUT').remove_active = True row = layout.row() row.active = lamp.use_sky or lamp.use_atmosphere diff --git a/release/scripts/startup/bl_ui/properties_game.py b/release/scripts/startup/bl_ui/properties_game.py index 0d104571e4b..ba9bb4a624d 100644 --- a/release/scripts/startup/bl_ui/properties_game.py +++ b/release/scripts/startup/bl_ui/properties_game.py @@ -315,11 +315,9 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, Panel): split = layout.split() - if dome_type == 'FISHEYE' or \ - dome_type == 'TRUNCATED_REAR' or \ - dome_type == 'TRUNCATED_FRONT': - + if dome_type in {'FISHEYE', 'TRUNCATED_REAR', 'TRUNCATED_FRONT'}: col = split.column() + col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True) col.prop(gs, "dome_angle", slider=True) @@ -336,6 +334,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, Panel): else: # cube map col = split.column() + col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True) col = split.column() diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py index 62cb735fda9..f5a95016baa 100644 --- a/release/scripts/startup/bl_ui/properties_material.py +++ b/release/scripts/startup/bl_ui/properties_material.py @@ -124,7 +124,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel): split.template_ID(ob, "active_material", new="material.new") row = split.row() if mat: - row.prop(mat, "use_nodes", icon="NODETREE", text="") + row.prop(mat, "use_nodes", icon='NODETREE', text="") if slot: row.prop(slot, "link", text="") @@ -501,8 +501,8 @@ class MATERIAL_PT_sss(MaterialButtonsPanel, Panel): row = layout.row().split() sub = row.row(align=True).split(percentage=0.75) sub.menu("MATERIAL_MT_sss_presets", text=bpy.types.MATERIAL_MT_sss_presets.bl_label) - sub.operator("material.sss_preset_add", text="", icon="ZOOMIN") - sub.operator("material.sss_preset_add", text="", icon="ZOOMOUT").remove_active = True + sub.operator("material.sss_preset_add", text="", icon='ZOOMIN') + sub.operator("material.sss_preset_add", text="", icon='ZOOMOUT').remove_active = True split = layout.split() diff --git a/release/scripts/startup/bl_ui/properties_object.py b/release/scripts/startup/bl_ui/properties_object.py index a359d58b59e..36b8129ad8a 100644 --- a/release/scripts/startup/bl_ui/properties_object.py +++ b/release/scripts/startup/bl_ui/properties_object.py @@ -267,12 +267,12 @@ class OBJECT_PT_relations_extras(ObjectButtonsPanel, Panel): ob = context.object split = layout.split() - + col = split.column() col.label(text="Tracking Axes:") col.prop(ob, "track_axis", text="Axis") col.prop(ob, "up_axis", text="Up Axis") - + col = split.column() col.prop(ob, "use_slow_parent") row = col.row() diff --git a/release/scripts/startup/bl_ui/properties_physics_cloth.py b/release/scripts/startup/bl_ui/properties_physics_cloth.py index c66a0563754..afb3c000980 100644 --- a/release/scripts/startup/bl_ui/properties_physics_cloth.py +++ b/release/scripts/startup/bl_ui/properties_physics_cloth.py @@ -73,8 +73,8 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel): col.label(text="Presets:") sub = col.row(align=True) sub.menu("CLOTH_MT_presets", text=bpy.types.CLOTH_MT_presets.bl_label) - sub.operator("cloth.preset_add", text="", icon="ZOOMIN") - sub.operator("cloth.preset_add", text="", icon="ZOOMOUT").remove_active = True + sub.operator("cloth.preset_add", text="", icon='ZOOMIN') + sub.operator("cloth.preset_add", text="", icon='ZOOMOUT').remove_active = True col.label(text="Quality:") col.prop(cloth, "quality", text="Steps", slider=True) diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index efb760c0b43..ce65350e69b 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -206,7 +206,7 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel): col = split.column() if scene.use_gravity: - col.label(text="Use Scene Gravity", icon="SCENE_DATA") + col.label(text="Use Scene Gravity", icon='SCENE_DATA') sub = col.column() sub.enabled = False sub.prop(fluid, "gravity", text="") @@ -215,7 +215,7 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel): col.prop(fluid, "gravity", text="") if scene.unit_settings.system != 'NONE': - col.label(text="Use Scene Size Units", icon="SCENE_DATA") + col.label(text="Use Scene Size Units", icon='SCENE_DATA') sub = col.column() sub.enabled = False sub.prop(fluid, "simulation_scale", text="Metres") diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index 815f0a77570..145ae292e11 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -186,8 +186,8 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel): row = layout.row(align=True) row.menu("RENDER_MT_presets", text=bpy.types.RENDER_MT_presets.bl_label) - row.operator("render.preset_add", text="", icon="ZOOMIN") - row.operator("render.preset_add", text="", icon="ZOOMOUT").remove_active = True + row.operator("render.preset_add", text="", icon='ZOOMIN') + row.operator("render.preset_add", text="", icon='ZOOMOUT').remove_active = True split = layout.split() diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py index 09209017823..55fc641f5ae 100644 --- a/release/scripts/startup/bl_ui/space_clip.py +++ b/release/scripts/startup/bl_ui/space_clip.py @@ -312,10 +312,10 @@ class CLIP_PT_track(Panel): row = layout.row(align=True) label = bpy.types.CLIP_MT_track_color_presets.bl_label row.menu('CLIP_MT_track_color_presets', text=label) - row.menu('CLIP_MT_track_color_specials', text="", icon="DOWNARROW_HLT") - row.operator("clip.track_color_preset_add", text="", icon="ZOOMIN") + row.menu('CLIP_MT_track_color_specials', text="", icon='DOWNARROW_HLT') + row.operator("clip.track_color_preset_add", text="", icon='ZOOMIN') props = row.operator("clip.track_color_preset_add", - text="", icon="ZOOMOUT") + text="", icon='ZOOMOUT') props.remove_active = True row = layout.row() @@ -349,8 +349,8 @@ class CLIP_PT_tracking_camera(Panel): row = layout.row(align=True) label = bpy.types.CLIP_MT_camera_presets.bl_label row.menu('CLIP_MT_camera_presets', text=label) - row.operator("clip.camera_preset_add", text="", icon="ZOOMIN") - props = row.operator("clip.camera_preset_add", text="", icon="ZOOMOUT") + row.operator("clip.camera_preset_add", text="", icon='ZOOMIN') + props = row.operator("clip.camera_preset_add", text="", icon='ZOOMOUT') props.remove_active = True row = layout.row(align=True) @@ -441,11 +441,11 @@ class CLIP_PT_track_settings(Panel): active = clip.tracking.tracks.active if active: - layout.prop(active, "tracker") - if active.tracker == "KLT": - layout.prop(active, "pyramid_levels") - if active.tracker == "SAD": - layout.prop(active, "correlation_min") + layout.prop(active, "tracker") + if active.tracker == 'KLT': + layout.prop(active, "pyramid_levels") + elif active.tracker == 'SAD': + layout.prop(active, "correlation_min") layout.prop(settings, "frames_adjust") layout.prop(settings, "speed") @@ -489,7 +489,7 @@ class CLIP_PT_stabilization(Panel): sub.operator("clip.stabilize_2d_remove", icon='ZOOMOUT', text="") sub.menu('CLIP_MT_stabilize_2d_specials', text="", - icon="DOWNARROW_HLT") + icon='DOWNARROW_HLT') layout.prop(stab, "influence_location") @@ -757,8 +757,8 @@ class CLIP_MT_reconstruction(Menu): layout.operator("clip.set_origin") layout.operator("clip.set_floor") - layout.operator("clip.set_axis", text="Set X Asix").axis = "X" - layout.operator("clip.set_axis", text="Set Y Asix").axis = "Y" + layout.operator("clip.set_axis", text="Set X Axis").axis = "X" + layout.operator("clip.set_axis", text="Set Y Axis").axis = "Y" layout.operator("clip.set_scale") diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py index 50db989a2e2..170ba3ccd0e 100644 --- a/release/scripts/startup/bl_ui/space_image.py +++ b/release/scripts/startup/bl_ui/space_image.py @@ -61,7 +61,7 @@ class IMAGE_MT_view(Menu): layout.separator() - ratios = [[1, 8], [1, 4], [1, 2], [1, 1], [2, 1], [4, 1], [8, 1]] + ratios = ((1, 8), (1, 4), (1, 2), (1, 1), (2, 1), (4, 1), (8, 1)) for a, b in ratios: layout.operator("image.view_zoom_ratio", text="Zoom" + " %d:%d" % (a, b)).ratio = a / b @@ -746,12 +746,12 @@ class IMAGE_PT_paint_curve(BrushButtonsPanel, Panel): layout.template_curve_mapping(brush, "curve") row = layout.row(align=True) - row.operator("brush.curve_preset", icon="SMOOTHCURVE", text="").shape = 'SMOOTH' - row.operator("brush.curve_preset", icon="SPHERECURVE", text="").shape = 'ROUND' - row.operator("brush.curve_preset", icon="ROOTCURVE", text="").shape = 'ROOT' - row.operator("brush.curve_preset", icon="SHARPCURVE", text="").shape = 'SHARP' - row.operator("brush.curve_preset", icon="LINCURVE", text="").shape = 'LINE' - row.operator("brush.curve_preset", icon="NOCURVE", text="").shape = 'MAX' + row.operator("brush.curve_preset", icon='SMOOTHCURVE', text="").shape = 'SMOOTH' + row.operator("brush.curve_preset", icon='SPHERECURVE', text="").shape = 'ROUND' + row.operator("brush.curve_preset", icon='ROOTCURVE', text="").shape = 'ROOT' + row.operator("brush.curve_preset", icon='SHARPCURVE', text="").shape = 'SHARP' + row.operator("brush.curve_preset", icon='LINCURVE', text="").shape = 'LINE' + row.operator("brush.curve_preset", icon='NOCURVE', text="").shape = 'MAX' if __name__ == "__main__": # only for live edit. bpy.utils.register_module(__name__) diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index c6c4a8f3335..a2ede26ecc6 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -967,10 +967,10 @@ class USERPREF_PT_addons(Panel): continue # check if addon should be visible with current filters - if (filter == "All") or \ - (filter == info["category"]) or \ - (filter == "Enabled" and is_enabled) or \ - (filter == "Disabled" and not is_enabled): + if ((filter == "All") or + (filter == info["category"]) or + (filter == "Enabled" and is_enabled) or + (filter == "Disabled" and not is_enabled)): if search and search not in info["name"].lower(): if info["author"]: diff --git a/release/scripts/startup/bl_ui/space_userpref_keymap.py b/release/scripts/startup/bl_ui/space_userpref_keymap.py index 5e5ce462da9..d738e806320 100644 --- a/release/scripts/startup/bl_ui/space_userpref_keymap.py +++ b/release/scripts/startup/bl_ui/space_userpref_keymap.py @@ -223,7 +223,7 @@ class InputKeyMapPanel: col = layout.column() row = col.row() - row.label(text=km.name, icon="DOT") + row.label(text=km.name, icon='DOT') row.label() row.label() @@ -265,13 +265,13 @@ class InputKeyMapPanel: if not text: text = "Blender (default)" row.menu("USERPREF_MT_keyconfigs", text=text) - row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMIN") - row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMOUT").remove_active = True + row.operator("wm.keyconfig_preset_add", text="", icon='ZOOMIN') + row.operator("wm.keyconfig_preset_add", text="", icon='ZOOMOUT').remove_active = True #~ layout.context_pointer_set("keyconfig", wm.keyconfigs.active) #~ row.operator("wm.keyconfig_remove", text="", icon='X') - row.prop(context.space_data, "filter_text", icon="VIEWZOOM") + row.prop(context.space_data, "filter_text", icon='VIEWZOOM') col.separator() diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 9edb1ea1197..2d3be2015d7 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -1536,7 +1536,7 @@ class VIEW3D_MT_edit_mesh_select_mode(Menu): class VIEW3D_MT_edit_mesh_extrude(Menu): bl_label = "Extrude" - _extrude_funcs = { \ + _extrude_funcs = { "VERT": lambda layout: layout.operator("mesh.extrude_vertices_move", text="Vertices Only"), "EDGE": lambda layout: layout.operator("mesh.extrude_edges_move", text="Edges Only"), "FACE": lambda layout: layout.operator("mesh.extrude_faces_move", text="Individual Faces"), diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 332577a7902..5bcdbc1efe8 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -172,7 +172,7 @@ class VIEW3D_PT_tools_meshedit(View3DPanel, Panel): class VIEW3D_PT_tools_meshedit_options(View3DPanel, Panel): bl_context = "mesh_edit" bl_label = "Mesh Options" - + @classmethod def poll(cls, context): return context.active_object @@ -912,12 +912,12 @@ class VIEW3D_PT_tools_brush_curve(PaintPanel, Panel): layout.template_curve_mapping(brush, "curve", brush=True) row = layout.row(align=True) - row.operator("brush.curve_preset", icon="SMOOTHCURVE", text="").shape = 'SMOOTH' - row.operator("brush.curve_preset", icon="SPHERECURVE", text="").shape = 'ROUND' - row.operator("brush.curve_preset", icon="ROOTCURVE", text="").shape = 'ROOT' - row.operator("brush.curve_preset", icon="SHARPCURVE", text="").shape = 'SHARP' - row.operator("brush.curve_preset", icon="LINCURVE", text="").shape = 'LINE' - row.operator("brush.curve_preset", icon="NOCURVE", text="").shape = 'MAX' + row.operator("brush.curve_preset", icon='SMOOTHCURVE', text="").shape = 'SMOOTH' + row.operator("brush.curve_preset", icon='SPHERECURVE', text="").shape = 'ROUND' + row.operator("brush.curve_preset", icon='ROOTCURVE', text="").shape = 'ROOT' + row.operator("brush.curve_preset", icon='SHARPCURVE', text="").shape = 'SHARP' + row.operator("brush.curve_preset", icon='LINCURVE', text="").shape = 'LINE' + row.operator("brush.curve_preset", icon='NOCURVE', text="").shape = 'MAX' class VIEW3D_PT_sculpt_options(PaintPanel, Panel): diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 7033a2e0cce..ac56cd02eb0 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -42,7 +42,7 @@ extern "C" { * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ #define BLENDER_VERSION 260 -#define BLENDER_SUBVERSION 1 +#define BLENDER_SUBVERSION 2 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index 5f6bbec78f6..580f78d3063 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -245,6 +245,7 @@ typedef struct bNodeType { struct bNodeTreeExec; typedef void (*bNodeTreeCallback)(void *calldata, struct ID *owner_id, struct bNodeTree *ntree); +typedef void (*bNodeClassCallback)(void *calldata, int nclass, const char *name); typedef struct bNodeTreeType { int type; /* type identifier */ @@ -256,6 +257,7 @@ typedef struct bNodeTreeType void (*free_cache)(struct bNodeTree *ntree); void (*free_node_cache)(struct bNodeTree *ntree, struct bNode *node); void (*foreach_nodetree)(struct Main *main, void *calldata, bNodeTreeCallback func); /* iteration over all node trees */ + void (*foreach_nodeclass)(struct Scene *scene, void *calldata, bNodeClassCallback func); /* iteration over all node classes */ /* calls allowing threaded composite */ void (*localize)(struct bNodeTree *localtree, struct bNodeTree *ntree); @@ -440,7 +442,7 @@ struct ShadeResult; #define SH_NODE_RGBTOBW 105 #define SH_NODE_TEXTURE 106 #define SH_NODE_NORMAL 107 -#define SH_NODE_GEOM 108 +#define SH_NODE_GEOMETRY 108 #define SH_NODE_MAPPING 109 #define SH_NODE_CURVE_VEC 110 #define SH_NODE_CURVE_RGB 111 @@ -470,7 +472,7 @@ struct ShadeResult; #define SH_NODE_BSDF_TRANSPARENT 138 #define SH_NODE_BSDF_VELVET 139 #define SH_NODE_EMISSION 140 -#define SH_NODE_GEOMETRY 141 +#define SH_NODE_NEW_GEOMETRY 141 #define SH_NODE_LIGHT_PATH 142 #define SH_NODE_TEX_IMAGE 143 #define SH_NODE_TEX_SKY 145 diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index df4e247bc93..c21806b4bc1 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -370,7 +370,9 @@ if(WITH_GAMEENGINE) endif() if(WITH_LIBMV) - list(APPEND INC ../../../extern/libmv) + list(APPEND INC + ../../../extern/libmv + ) add_definitions(-DWITH_LIBMV) endif() diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index e3bfdd54ab1..540d757f0c9 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -191,15 +191,13 @@ static ImBuf *movieclip_load_sequence_file(MovieClip *clip, MovieClipUser *user, { struct ImBuf *ibuf; char name[FILE_MAX]; - int loadflag /*, size */ /* UNUSED */, undistort; + int loadflag, use_proxy= 0; - /* size= rendersize_to_number(user->render_size); */ - - undistort= user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT; - - if((flag&MCLIP_USE_PROXY) && user->render_size != MCLIP_PROXY_RENDER_SIZE_FULL) + use_proxy= (flag&MCLIP_USE_PROXY) && user->render_size != MCLIP_PROXY_RENDER_SIZE_FULL; + if(use_proxy) { + int undistort= user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT; get_proxy_fname(clip, user->render_size, undistort, framenr, name); - else + } else get_sequence_fname(clip, framenr, name); loadflag= IB_rect|IB_multilayer; @@ -318,7 +316,7 @@ static ImBuf *get_imbuf_cache(MovieClip *clip, MovieClipUser *user, int flag) if(clip->cache) { MovieClipImBufCacheKey key; - key.framenr= user?user->framenr:clip->lastframe; + key.framenr= user->framenr; if(flag&MCLIP_USE_PROXY) { key.proxy= rendersize_to_proxy(user, flag); @@ -346,7 +344,7 @@ static void put_imbuf_cache(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, i moviecache_hashcmp, moviecache_keydata); } - key.framenr= user?user->framenr:clip->lastframe; + key.framenr= user->framenr; if(flag&MCLIP_USE_PROXY) { key.proxy= rendersize_to_proxy(user, flag); @@ -478,9 +476,6 @@ static void real_ibuf_size(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, in static int need_undistorted_cache(MovieClipUser *user, int flag) { - if (!user) - return 0; - /* only full undistorted render can be used as on-fly undistorting image */ if(flag&MCLIP_USE_PROXY) { if(user->render_size != MCLIP_PROXY_RENDER_SIZE_FULL || (user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT)==0) @@ -495,7 +490,7 @@ static ImBuf *get_undistorted_cache(MovieClip *clip, MovieClipUser *user) { MovieClipCache *cache= clip->cache; MovieTrackingCamera *camera= &clip->tracking.camera; - int framenr= user?user->framenr:clip->lastframe; + int framenr= user->framenr; /* no cache or no cached undistorted image */ if(!clip->cache || !clip->cache->undistibuf) @@ -517,7 +512,7 @@ static ImBuf *get_undistorted_cache(MovieClip *clip, MovieClipUser *user) return cache->undistibuf; } -static ImBuf *get_undistorted_ibuf(MovieClip *clip, struct MovieDistortion *distoriton, ImBuf *ibuf) +static ImBuf *get_undistorted_ibuf(MovieClip *clip, struct MovieDistortion *distortion, ImBuf *ibuf) { ImBuf *undistibuf; @@ -525,12 +520,12 @@ static ImBuf *get_undistorted_ibuf(MovieClip *clip, struct MovieDistortion *dist otherwise, undistorted proxy can be darker than it should */ imb_freerectfloatImBuf(ibuf); - if(distoriton) - undistibuf= BKE_tracking_distortion_exec(distoriton, &clip->tracking, ibuf, ibuf->x, ibuf->y, 0.0f, 1); + if(distortion) + undistibuf= BKE_tracking_distortion_exec(distortion, &clip->tracking, ibuf, ibuf->x, ibuf->y, 0.0f, 1); else undistibuf= BKE_tracking_undistort(&clip->tracking, ibuf, ibuf->x, ibuf->y, 0.0f); - if(undistibuf->userflags|= IB_RECT_INVALID) { + if(undistibuf->userflags&IB_RECT_INVALID) { ibuf->userflags&= ~IB_RECT_INVALID; IMB_rect_from_float(undistibuf); } @@ -547,7 +542,7 @@ static ImBuf *put_undistorted_cache(MovieClip *clip, MovieClipUser *user, ImBuf copy_v2_v2(cache->principal, camera->principal); copy_v3_v3(&cache->k1, &camera->k1); - cache->undist_framenr= user?user->framenr:clip->lastframe; + cache->undist_framenr= user->framenr; if(cache->undistibuf) IMB_freeImBuf(cache->undistibuf); @@ -568,7 +563,7 @@ static ImBuf *put_undistorted_cache(MovieClip *clip, MovieClipUser *user, ImBuf ImBuf *BKE_movieclip_get_ibuf(MovieClip *clip, MovieClipUser *user) { ImBuf *ibuf= NULL; - int framenr= user?user->framenr:clip->lastframe; + int framenr= user->framenr; int cache_undistorted= 0; /* cache isn't threadsafe itself and also loading of movies @@ -586,11 +581,11 @@ ImBuf *BKE_movieclip_get_ibuf(MovieClip *clip, MovieClipUser *user) ibuf= get_imbuf_cache(clip, user, clip->flag); if(!ibuf) { - int use_sequence= 1; + int use_sequence= 0; /* undistorted proxies for movies should be read as image sequence */ - use_sequence&= user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT; - use_sequence&= user->render_size!=MCLIP_PROXY_RENDER_SIZE_FULL; + use_sequence= (user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT) && + (user->render_size!=MCLIP_PROXY_RENDER_SIZE_FULL); if(clip->source==MCLIP_SRC_SEQUENCE || use_sequence) ibuf= movieclip_load_sequence_file(clip, user, framenr, clip->flag); @@ -622,7 +617,7 @@ ImBuf *BKE_movieclip_get_ibuf(MovieClip *clip, MovieClipUser *user) ImBuf *BKE_movieclip_get_ibuf_flag(MovieClip *clip, MovieClipUser *user, int flag) { ImBuf *ibuf= NULL; - int framenr= user?user->framenr:clip->lastframe; + int framenr= user->framenr; int cache_undistorted= 0; /* cache isn't threadsafe itself and also loading of movies @@ -668,7 +663,7 @@ ImBuf *BKE_movieclip_get_ibuf_flag(MovieClip *clip, MovieClipUser *user, int fla ImBuf *BKE_movieclip_get_stable_ibuf(MovieClip *clip, MovieClipUser *user, float loc[2], float *scale, float *angle) { ImBuf *ibuf, *stableibuf= NULL; - int framenr= user?user->framenr:clip->lastframe; + int framenr= user->framenr; ibuf= BKE_movieclip_get_ibuf(clip, user); @@ -749,7 +744,7 @@ int BKE_movieclip_has_frame(MovieClip *clip, MovieClipUser *user) void BKE_movieclip_get_size(MovieClip *clip, MovieClipUser *user, int *width, int *height) { - if(!user || user->framenr==clip->lastframe) { + if(user->framenr==clip->lastframe) { *width= clip->lastsize[0]; *height= clip->lastsize[1]; } else { diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index ffe59b4f1ba..fa023d8fb43 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -1907,20 +1907,18 @@ static void registerShaderNodes(ListBase *ntypelist) register_node_type_sh_bsdf_diffuse(ntypelist); register_node_type_sh_bsdf_glossy(ntypelist); register_node_type_sh_bsdf_glass(ntypelist); - //register_node_type_sh_bsdf_anisotropic(ntypelist); register_node_type_sh_bsdf_translucent(ntypelist); register_node_type_sh_bsdf_transparent(ntypelist); register_node_type_sh_bsdf_velvet(ntypelist); register_node_type_sh_emission(ntypelist); register_node_type_sh_holdout(ntypelist); - register_node_type_sh_volume_transparent(ntypelist); - register_node_type_sh_volume_isotropic(ntypelist); + //register_node_type_sh_volume_transparent(ntypelist); + //register_node_type_sh_volume_isotropic(ntypelist); register_node_type_sh_mix_shader(ntypelist); register_node_type_sh_add_shader(ntypelist); register_node_type_sh_output_lamp(ntypelist); register_node_type_sh_output_material(ntypelist); - //register_node_type_sh_output_texture(ntypelist); register_node_type_sh_output_world(ntypelist); register_node_type_sh_tex_image(ntypelist); diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 3e88fb7d65e..cb12230615e 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -3176,7 +3176,7 @@ static int collision_response(ParticleData *pa, ParticleCollision *col, BVHTreeR mul_v3_fl(v1_tan, 1.0f - 0.01f * frict); /* surface_velocity is opposite to cm velocity */ - mul_v3_v3fl(vr_tan, v1_tan, -1.0f); + negate_v3_v3(vr_tan, v1_tan); /* get back to global coordinates */ add_v3_v3(v1_tan, vc_tan); diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index b0f597ba477..d756e4f9099 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2167,6 +2167,14 @@ static void ntree_tmp_cycles_version_patch(bNodeTree *ntree) } } } + else if(node->type == SH_NODE_MIX_RGB) { + bNodeSocket *sock = node->inputs.first; + + sock=sock->next; + strcpy(sock->name, "Color1"); + sock=sock->next; + strcpy(sock->name, "Color2"); + } else { for(sock=node->inputs.first; sock; sock=sock->next) { if(strcmp(sock->name, "Closure1") == 0) diff --git a/source/blender/editors/armature/reeb.c b/source/blender/editors/armature/reeb.c index 0b214e48b6a..ce4092b2b84 100644 --- a/source/blender/editors/armature/reeb.c +++ b/source/blender/editors/armature/reeb.c @@ -3684,7 +3684,7 @@ void REEB_draw() if (G.scene->toolsettings->skgen_options & SKGEN_DISP_INDEX) { - interp_v3_v3v3(vec, arc->head->p, arc->tail->p, 0.5f); + mid_v3_v3v3(vec, arc->head->p, arc->tail->p); s += sprintf(s, "%i (%i-%i-%i) ", i, arc->symmetry_level, arc->symmetry_flag, arc->symmetry_group); if (G.scene->toolsettings->skgen_options & SKGEN_DISP_WEIGHT) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 677ec0ae9bd..db71d055c86 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -77,6 +77,10 @@ typedef struct uiLayout uiLayout; /* Defines */ +/* names */ +#define UI_MAX_DRAW_STR 400 +#define UI_MAX_NAME_STR 128 + /* uiBlock->dt */ #define UI_EMBOSS 0 /* use widget style for drawing */ #define UI_EMBOSSN 1 /* Nothing, only icon and/or text */ @@ -131,11 +135,11 @@ typedef struct uiLayout uiLayout; #define UI_ICON_LEFT 128 #define UI_ICON_SUBMENU 256 #define UI_ICON_PREVIEW 512 - /* control for button type block */ -#define UI_MAKE_TOP 1024 -#define UI_MAKE_DOWN 2048 -#define UI_MAKE_LEFT 4096 -#define UI_MAKE_RIGHT 8192 + +#define UI_BUT_NODE_LINK 1024 +#define UI_BUT_NODE_ACTIVE 2048 +#define UI_FLAG_UNUSED 4096 +#define UI_FLAG_UNUSED2 8192 /* button align flag, for drawing groups together */ #define UI_BUT_ALIGN (UI_BUT_ALIGN_TOP|UI_BUT_ALIGN_LEFT|UI_BUT_ALIGN_RIGHT|UI_BUT_ALIGN_DOWN) @@ -159,8 +163,6 @@ typedef struct uiLayout uiLayout; #define UI_BUT_VEC_SIZE_LOCK (1<<30) /* used to flag if color hsv-circle should keep luminance */ #define UI_BUT_COLOR_CUBIC (1<<31) /* cubic saturation for the color wheel */ -#define UI_BUT_NODE_LINK (1<<30) /* node link drawing hint for pulldowns */ -#define UI_BUT_NODE_ACTIVE (1<<31) /* node link drawing hint for pulldowns */ #define UI_PANEL_WIDTH 340 #define UI_COMPACT_PANEL_WIDTH 160 diff --git a/source/blender/editors/interface/CMakeLists.txt b/source/blender/editors/interface/CMakeLists.txt index 7e48d369fda..8ba86673f87 100644 --- a/source/blender/editors/interface/CMakeLists.txt +++ b/source/blender/editors/interface/CMakeLists.txt @@ -45,7 +45,6 @@ set(SRC interface_icons.c interface_layout.c interface_ops.c - interface_node.c interface_panel.c interface_regions.c interface_style.c diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 0f253c7175f..3bdac42411a 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -97,11 +97,6 @@ typedef enum { } uiWidgetTypeEnum; - - -#define UI_MAX_DRAW_STR 400 -#define UI_MAX_NAME_STR 128 - /* panel limits */ #define UI_PANEL_MINX 100 #define UI_PANEL_MINY 70 diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index edbd5c5684e..34b62155314 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1533,15 +1533,6 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut if(ELEM(but->type, BLOCK, PULLDOWN)) block->xofs = -2; /* for proper alignment */ - /* only used for automatic toolbox, so can set the shift flag */ - if(but->flag & UI_MAKE_TOP) { - block->direction= UI_TOP|UI_SHIFT_FLIPPED; - uiBlockFlipOrder(block); - } - if(but->flag & UI_MAKE_DOWN) block->direction= UI_DOWN|UI_SHIFT_FLIPPED; - if(but->flag & UI_MAKE_LEFT) block->direction |= UI_LEFT; - if(but->flag & UI_MAKE_RIGHT) block->direction |= UI_RIGHT; - ui_block_position(window, butregion, but, block); } else { diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 6268cbc7475..a3d71674a03 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -2609,9 +2609,6 @@ void uiTemplateReportsBanner(uiLayout *layout, bContext *C) uiBlockSetEmboss(block, UI_EMBOSS); uiDefBut(block, LABEL, 0, report->message, UI_UNIT_X+10, 0, UI_UNIT_X+width, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, ""); - - /* XXX linking hack */ - uiTemplateNodeView(NULL, NULL, NULL, NULL, NULL); } /********************************* Keymap *************************************/ diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 3f5344d3214..0abe7a04a97 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1183,7 +1183,6 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB widget_draw_icon(but, ICON_DOT, dualset?1.0f:0.25f, rect); } else if(but->type==MENU && (but->flag & UI_BUT_NODE_LINK)) { - /* node link hacking */ int tmp = rect->xmin; rect->xmin = rect->xmax - (rect->ymax - rect->ymin) - 1; widget_draw_icon(but, ICON_LAYER_USED, 1.0f, rect); @@ -2546,28 +2545,19 @@ static void widget_menunodebut(uiWidgetColors *wcol, rcti *rect, int UNUSED(stat { /* silly node link button hacks */ uiWidgetBase wtb; - unsigned char tmp[4]; - unsigned char tmp2[4]; + uiWidgetColors wcol_backup= *wcol; widget_init(&wtb); /* half rounded */ round_box_edges(&wtb, roundboxalign, rect, 4.0f); - memcpy(tmp, wcol->inner, sizeof(char)*4); - memcpy(tmp2, wcol->outline, sizeof(char)*4); - wcol->inner[0] += 15; - wcol->inner[1] += 15; - wcol->inner[2] += 15; - wcol->outline[0] += 15; - wcol->outline[1] += 15; - wcol->outline[2] += 15; + wcol->inner[0] += 15; wcol->inner[1] += 15; wcol->inner[2] += 15; + wcol->outline[0] += 15; wcol->outline[1] += 15; wcol->outline[2] += 15; /* decoration */ widgetbase_draw(&wtb, wcol); - - memcpy(wcol->inner, tmp, sizeof(char)*4); - memcpy(wcol->outline, tmp2, sizeof(char)*4); + *wcol= wcol_backup; } static void widget_pulldownbut(uiWidgetColors *wcol, rcti *rect, int state, int UNUSED(roundboxalign)) diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c index e5bf053aa1c..6f2289388f5 100644 --- a/source/blender/editors/space_clip/tracking_ops.c +++ b/source/blender/editors/space_clip/tracking_ops.c @@ -1537,7 +1537,7 @@ static int solve_camera_exec(bContext *C, wmOperator *op) } /* could fail if footage uses images with different sizes */ - BKE_movieclip_get_size(clip, NULL, &width, &height); + BKE_movieclip_get_size(clip, &sc->user, &width, &height); error= BKE_tracking_solve_reconstruction(tracking, width, height); @@ -1546,6 +1546,9 @@ static int solve_camera_exec(bContext *C, wmOperator *op) else BKE_reportf(op->reports, RPT_INFO, "Average reprojection error %.3f", error); + if(scene->clip) + id_us_min(&clip->id); + scene->clip= clip; id_us_plus(&clip->id); diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index e817565c509..c29553a9c87 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -84,7 +84,7 @@ Image *ED_space_image(SpaceImage *sima) /* called to assign images to UV faces */ void ED_space_image_set(bContext *C, SpaceImage *sima, Scene *scene, Object *obedit, Image *ima) { - ED_uvedit_assign_image(G.main, scene, obedit, ima, sima->image); + ED_uvedit_assign_image(CTX_data_main(C), scene, obedit, ima, sima->image); /* change the space ima after because uvedit_face_visible uses the space ima * to check if the face is displayed in UV-localview */ diff --git a/source/blender/editors/space_node/CMakeLists.txt b/source/blender/editors/space_node/CMakeLists.txt index 70cfac0d5d6..31b02803f0a 100644 --- a/source/blender/editors/space_node/CMakeLists.txt +++ b/source/blender/editors/space_node/CMakeLists.txt @@ -49,6 +49,7 @@ set(SRC node_ops.c node_select.c node_state.c + node_templates.c space_node.c node_intern.h diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index e6a219f4685..4394b4b1920 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -1125,7 +1125,7 @@ static void node_shader_set_butfunc(bNodeType *ntype) case SH_NODE_VECT_MATH: ntype->uifunc= node_shader_buts_vect_math; break; - case SH_NODE_GEOM: + case SH_NODE_GEOMETRY: ntype->uifunc= node_shader_buts_geometry; break; case SH_NODE_ATTRIBUTE: diff --git a/source/blender/editors/space_node/node_buttons.c b/source/blender/editors/space_node/node_buttons.c index 3886c709196..15e5719be37 100644 --- a/source/blender/editors/space_node/node_buttons.c +++ b/source/blender/editors/space_node/node_buttons.c @@ -45,6 +45,7 @@ #include "BLI_utildefines.h" #include "BKE_context.h" +#include "BKE_global.h" #include "BKE_node.h" #include "BKE_screen.h" @@ -122,6 +123,34 @@ static void active_node_panel(const bContext *C, Panel *pa) node->typeinfo->uifunc(layout, (bContext *)C, &ptr); } +static int node_sockets_poll(const bContext *C, PanelType *UNUSED(pt)) +{ + SpaceNode *snode= CTX_wm_space_node(C); + + return (snode && snode->nodetree && G.rt == 777); +} + +static void node_sockets_panel(const bContext *C, Panel *pa) +{ + SpaceNode *snode= CTX_wm_space_node(C); + bNodeTree *ntree= (snode) ? snode->edittree : NULL; + bNode *node = (ntree) ? nodeGetActive(ntree) : NULL; + bNodeSocket *sock; + uiLayout *layout= pa->layout, *split; + char name[UI_MAX_NAME_STR]; + + if(ELEM(NULL, ntree, node)) + return; + + for(sock=node->inputs.first; sock; sock=sock->next) { + BLI_snprintf(name, sizeof(name), "%s:", sock->name); + + split = uiLayoutSplit(layout, 0.35f, 0); + uiItemL(split, name, ICON_NONE); + uiTemplateNodeLink(split, ntree, node, sock); + } +} + /* ******************* node buttons registration ************** */ void node_buttons_register(ARegionType *art) @@ -134,6 +163,14 @@ void node_buttons_register(ARegionType *art) pt->draw= active_node_panel; pt->poll= active_node_poll; BLI_addtail(&art->paneltypes, pt); + + pt= MEM_callocN(sizeof(PanelType), "spacetype node panel node sockets"); + strcpy(pt->idname, "NODE_PT_sockets"); + strcpy(pt->label, "Sockets"); + pt->draw= node_sockets_panel; + pt->poll= node_sockets_poll; + pt->flag |= PNL_DEFAULT_CLOSED; + BLI_addtail(&art->paneltypes, pt); pt= MEM_callocN(sizeof(PanelType), "spacetype node panel gpencil"); strcpy(pt->idname, "NODE_PT_gpencil"); diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index b632fd81eeb..68657205d60 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -2255,9 +2255,7 @@ bNode *node_add_node(SpaceNode *snode, Main *bmain, Scene *scene, bNodeTemplate node->id = &scene->id; } else if(ELEM3(node->type, CMP_NODE_MOVIECLIP, CMP_NODE_MOVIEDISTORTION, CMP_NODE_STABILIZE2D)) { - if(G.main->movieclip.first == G.main->movieclip.last) { - node->id= G.main->movieclip.first; - } + node->id = (ID *)scene->clip; } ntreeCompositForceHidden(snode->edittree, scene); diff --git a/source/blender/editors/space_node/node_header.c b/source/blender/editors/space_node/node_header.c index 42b5dafa3e1..6dd5eeba832 100644 --- a/source/blender/editors/space_node/node_header.c +++ b/source/blender/editors/space_node/node_header.c @@ -226,52 +226,24 @@ static void node_add_menu(bContext *C, uiLayout *layout, void *arg_nodeclass) } } +static void node_menu_add_foreach_cb(void *calldata, int nclass, const char *name) +{ + uiLayout *layout= calldata; + uiItemMenuF(layout, name, 0, node_add_menu, SET_INT_IN_POINTER(nclass)); +} + static void node_menu_add(const bContext *C, Menu *menu) { Scene *scene= CTX_data_scene(C); SpaceNode *snode= CTX_wm_space_node(C); uiLayout *layout= menu->layout; + bNodeTreeType *ntreetype= ntreeGetType(snode->treetype); if(!snode->nodetree) uiLayoutSetActive(layout, 0); - - if(snode->treetype==NTREE_SHADER) { - uiItemMenuF(layout, IFACE_("Input"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT)); - uiItemMenuF(layout, IFACE_("Output"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT)); - if(scene_use_new_shading_nodes(scene)) { - uiItemMenuF(layout, IFACE_("Shader"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_SHADER)); - uiItemMenuF(layout, IFACE_("Texture"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_TEXTURE)); - } - uiItemMenuF(layout, IFACE_("Color"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR)); - uiItemMenuF(layout, IFACE_("Vector"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR)); - uiItemMenuF(layout, IFACE_("Convertor"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR)); - uiItemMenuF(layout, IFACE_("Group"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP)); - //uiItemMenuF(layout, IFACE_("Dynamic"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_DYNAMIC)); - uiItemMenuF(layout, IFACE_("Layout"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT)); - } - else if(snode->treetype==NTREE_COMPOSIT) { - uiItemMenuF(layout, IFACE_("Input"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT)); - uiItemMenuF(layout, IFACE_("Output"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT)); - uiItemMenuF(layout, IFACE_("Color"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR)); - uiItemMenuF(layout, IFACE_("Vector"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR)); - uiItemMenuF(layout, IFACE_("Filter"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_FILTER)); - uiItemMenuF(layout, IFACE_("Convertor"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR)); - uiItemMenuF(layout, IFACE_("Matte"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_MATTE)); - uiItemMenuF(layout, IFACE_("Distort"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT)); - uiItemMenuF(layout, IFACE_("Group"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP)); - uiItemMenuF(layout, IFACE_("Layout"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT)); - } - else if(snode->treetype==NTREE_TEXTURE) { - uiItemMenuF(layout, IFACE_("Input"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT)); - uiItemMenuF(layout, IFACE_("Output"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT)); - uiItemMenuF(layout, IFACE_("Color"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR)); - uiItemMenuF(layout, IFACE_("Patterns"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_PATTERN)); - uiItemMenuF(layout, IFACE_("Textures"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_TEXTURE)); - uiItemMenuF(layout, IFACE_("Convertor"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR)); - uiItemMenuF(layout, IFACE_("Distort"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT)); - uiItemMenuF(layout, IFACE_("Group"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP)); - uiItemMenuF(layout, IFACE_("Layout"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT)); - } + + if(ntreetype && ntreetype->foreach_nodeclass) + ntreetype->foreach_nodeclass(scene, layout, node_menu_add_foreach_cb); } void node_menus_register(void) diff --git a/source/blender/editors/interface/interface_node.c b/source/blender/editors/space_node/node_templates.c similarity index 69% rename from source/blender/editors/interface/interface_node.c rename to source/blender/editors/space_node/node_templates.c index 982f33bd600..5aa15cc68d6 100644 --- a/source/blender/editors/interface/interface_node.c +++ b/source/blender/editors/space_node/node_templates.c @@ -53,27 +53,14 @@ #include "WM_types.h" #include "UI_interface.h" -#include "interface_intern.h" +#include "UI_resources.h" +#include "../interface/interface_intern.h" #include "ED_node.h" -/************************* Node Link Menu **************************/ +/************************* Node Socket Manipulation **************************/ -#define UI_NODE_LINK_ADD 0 -#define UI_NODE_LINK_DISCONNECT -1 -#define UI_NODE_LINK_REMOVE -2 - -typedef struct NodeLinkArg { - bNodeTree *ntree; - bNode *node; - bNodeSocket *sock; - - bNodeTree *ngroup; - int type; - int output; -} NodeLinkArg; - -static void ui_node_tag_recursive(bNode *node) +static void node_tag_recursive(bNode *node) { bNodeSocket *input; @@ -84,10 +71,10 @@ static void ui_node_tag_recursive(bNode *node) for(input=node->inputs.first; input; input=input->next) if(input->link) - ui_node_tag_recursive(input->link->fromnode); + node_tag_recursive(input->link->fromnode); } -static void ui_node_clear_recursive(bNode *node) +static void node_clear_recursive(bNode *node) { bNodeSocket *input; @@ -98,10 +85,10 @@ static void ui_node_clear_recursive(bNode *node) for(input=node->inputs.first; input; input=input->next) if(input->link) - ui_node_clear_recursive(input->link->fromnode); + node_clear_recursive(input->link->fromnode); } -static void ui_node_remove_linked(bNodeTree *ntree, bNode *rem_node) +static void node_remove_linked(bNodeTree *ntree, bNode *rem_node) { bNode *node, *next; bNodeSocket *sock; @@ -113,14 +100,14 @@ static void ui_node_remove_linked(bNodeTree *ntree, bNode *rem_node) for(node=ntree->nodes.first; node; node=node->next) node->flag &= ~NODE_TEST; - ui_node_tag_recursive(rem_node); + node_tag_recursive(rem_node); /* clear tags on nodes that are still used by other nodes */ for(node=ntree->nodes.first; node; node=node->next) if(!(node->flag & NODE_TEST)) for(sock=node->inputs.first; sock; sock=sock->next) if(sock->link && sock->link->fromnode != rem_node) - ui_node_clear_recursive(sock->link->fromnode); + node_clear_recursive(sock->link->fromnode); /* remove nodes */ for(node=ntree->nodes.first; node; node=next) { @@ -132,8 +119,157 @@ static void ui_node_remove_linked(bNodeTree *ntree, bNode *rem_node) nodeFreeNode(ntree, node); } } - - //node_tree_verify_groups(ntree); +} + +/* disconnect socket from the node it is connected to */ +static void node_socket_disconnect(Main *bmain, bNodeTree *ntree, bNode *node_to, bNodeSocket *sock_to) +{ + if(!sock_to->link) + return; + + nodeRemLink(ntree, sock_to->link); + + nodeUpdate(ntree, node_to); + ntreeUpdateTree(ntree); + + ED_node_generic_update(bmain, ntree, node_to); +} + +/* remove all nodes connected to this socket, if they aren't connected to other nodes */ +static void node_socket_remove(Main *bmain, bNodeTree *ntree, bNode *node_to, bNodeSocket *sock_to) +{ + if(!sock_to->link) + return; + + node_remove_linked(ntree, sock_to->link->fromnode); + + nodeUpdate(ntree, node_to); + ntreeUpdateTree(ntree); + + ED_node_generic_update(bmain, ntree, node_to); +} + +/* add new node connected to this socket, or replace an existing one */ +static void node_socket_add_replace(Main *bmain, bNodeTree *ntree, bNode *node_to, bNodeSocket *sock_to, bNodeTemplate *ntemp, int sock_num) +{ + bNode *node_from; + bNodeSocket *sock_from; + bNode *node_prev = NULL; + + /* unlink existing node */ + if(sock_to->link) { + node_prev = sock_to->link->fromnode; + nodeRemLink(ntree, sock_to->link); + } + + /* find existing node that we can use */ + for(node_from=ntree->nodes.first; node_from; node_from=node_from->next) + if(node_from->type == ntemp->type) + break; + + if(node_from) + if(!(node_from->inputs.first == NULL && !(node_from->typeinfo->flag & NODE_OPTIONS))) + node_from = NULL; + + if(node_prev && node_prev->type == ntemp->type && + (ntemp->type != NODE_GROUP || node_prev->id == &ntemp->ngroup->id)) { + /* keep the previous node if it's the same type */ + node_from = node_prev; + } + else if(!node_from) { + node_from= nodeAddNode(ntree, ntemp); + node_from->locx = node_to->locx - (node_from->typeinfo->width + 50); + node_from->locy = node_to->locy; + + if(node_from->id) + id_us_plus(node_from->id); + } + + nodeSetActive(ntree, node_from); + + /* add link */ + sock_from = BLI_findlink(&node_from->outputs, sock_num); + nodeAddLink(ntree, node_from, sock_from, node_to, sock_to); + + /* copy input sockets from previous node */ + if(node_prev && node_from != node_prev) { + bNodeSocket *sock_prev, *sock_from; + + for(sock_prev=node_prev->inputs.first; sock_prev; sock_prev=sock_prev->next) { + for(sock_from=node_from->inputs.first; sock_from; sock_from=sock_from->next) { + if(strcmp(sock_prev->name, sock_from->name) == 0 && sock_prev->type == sock_from->type) { + bNodeLink *link = sock_prev->link; + + if(link && link->fromnode) { + nodeAddLink(ntree, link->fromnode, link->fromsock, node_from, sock_from); + nodeRemLink(ntree, link); + } + + if(sock_prev->default_value) { + if(sock_from->default_value) + MEM_freeN(sock_from->default_value); + + sock_from->default_value = MEM_dupallocN(sock_prev->default_value); + } + } + } + } + + /* also preserve mapping for texture nodes */ + if(node_from->typeinfo->nclass == NODE_CLASS_TEXTURE && + node_prev->typeinfo->nclass == NODE_CLASS_TEXTURE) + memcpy(node_from->storage, node_prev->storage, sizeof(NodeTexBase)); + + /* remove node */ + node_remove_linked(ntree, node_prev); + } + + nodeUpdate(ntree, node_from); + nodeUpdate(ntree, node_to); + ntreeUpdateTree(ntree); + + ED_node_generic_update(bmain, ntree, node_to); +} + +/****************************** Node Link Menu *******************************/ + +#define UI_NODE_LINK_ADD 0 +#define UI_NODE_LINK_DISCONNECT -1 +#define UI_NODE_LINK_REMOVE -2 + +typedef struct NodeLinkArg { + Main *bmain; + Scene *scene; + bNodeTree *ntree; + bNode *node; + bNodeSocket *sock; + + bNodeTree *ngroup; + int type; + int output; + + uiLayout *layout; +} NodeLinkArg; + +static void ui_node_link(bContext *UNUSED(C), void *arg_p, void *event_p) +{ + NodeLinkArg *arg = (NodeLinkArg*)arg_p; + Main *bmain = arg->bmain; + bNode *node_to = arg->node; + bNodeSocket *sock_to = arg->sock; + bNodeTree *ntree = arg->ntree; + int event = GET_INT_FROM_POINTER(event_p); + bNodeTemplate ntemp; + + ntemp.type = arg->type; + ntemp.ngroup = arg->ngroup; + + if(event == UI_NODE_LINK_DISCONNECT) + node_socket_disconnect(bmain, ntree, node_to, sock_to); + else if(event == UI_NODE_LINK_REMOVE) + node_socket_remove(bmain, ntree, node_to, sock_to); + else + node_socket_add_replace(bmain, ntree, node_to, sock_to, &ntemp, arg->output); } static void ui_node_sock_name(bNodeSocket *sock, char name[UI_MAX_NAME_STR]) @@ -160,128 +296,17 @@ static void ui_node_sock_name(bNodeSocket *sock, char name[UI_MAX_NAME_STR]) BLI_strncpy(name, "Default", UI_MAX_NAME_STR); } -static void ui_node_link(bContext *C, void *arg_p, void *event_p) -{ - NodeLinkArg *arg = (NodeLinkArg*)arg_p; - bNode *node_to = arg->node; - bNodeSocket *sock_to = arg->sock; - bNodeTree *ntree = arg->ntree; - bNode *node_from; - bNodeSocket *sock_from; - int event = GET_INT_FROM_POINTER(event_p); - - if(event == UI_NODE_LINK_DISCONNECT) { - /* disconnect */ - if(sock_to->link) - nodeRemLink(ntree, sock_to->link); - } - else if(event == UI_NODE_LINK_REMOVE) { - /* remove */ - if(sock_to->link) - ui_node_remove_linked(ntree, sock_to->link->fromnode); - } - else { - bNode *node_prev = NULL; - - /* unlink existing node */ - if(sock_to->link) { - node_prev = sock_to->link->fromnode; - nodeRemLink(ntree, sock_to->link); - } - - /* find existing node that we can use */ - for(node_from=ntree->nodes.first; node_from; node_from=node_from->next) - if(node_from->type == arg->type) - break; - - if(node_from) - if(!(node_from->inputs.first == NULL && !(node_from->typeinfo->flag & NODE_OPTIONS))) - node_from = NULL; - - if(node_prev && node_prev->type == arg->type && - (arg->type != NODE_GROUP || node_prev->id == &arg->ngroup->id)) { - /* keep the previous node if it's the same type */ - node_from = node_prev; - } - else if(!node_from) { - bNodeTemplate ntemp; - - /* add new node */ - if(arg->ngroup) { - ntemp.type = NODE_GROUP; - ntemp.ngroup = arg->ngroup; - } - else - ntemp.type = arg->type; - - node_from= nodeAddNode(ntree, &ntemp); - node_from->locx = node_to->locx - (node_from->typeinfo->width + 50); - node_from->locy = node_to->locy; - - if(node_from->id) - id_us_plus(node_from->id); - } - - nodeSetActive(ntree, node_from); - - /* add link */ - sock_from = BLI_findlink(&node_from->outputs, arg->output); - nodeAddLink(ntree, node_from, sock_from, node_to, sock_to); - - /* copy input sockets from previous node */ - if(node_prev && node_from != node_prev) { - bNodeSocket *sock_prev, *sock_from; - - for(sock_prev=node_prev->inputs.first; sock_prev; sock_prev=sock_prev->next) { - for(sock_from=node_from->inputs.first; sock_from; sock_from=sock_from->next) { - if(strcmp(sock_prev->name, sock_from->name) == 0 && sock_prev->type == sock_from->type) { - bNodeLink *link = sock_prev->link; - - if(link && link->fromnode) { - nodeAddLink(ntree, link->fromnode, link->fromsock, node_from, sock_from); - nodeRemLink(ntree, link); - } - - if(sock_prev->default_value) { - if(sock_from->default_value) - MEM_freeN(sock_from->default_value); - - sock_from->default_value = MEM_dupallocN(sock_prev->default_value); - } - } - } - } - - /* also preserve mapping for texture nodes */ - if(node_from->typeinfo->nclass == NODE_CLASS_TEXTURE && - node_prev->typeinfo->nclass == NODE_CLASS_TEXTURE) - memcpy(node_from->storage, node_prev->storage, sizeof(NodeTexBase)); - - /* remove node */ - ui_node_remove_linked(ntree, node_prev); - } - - nodeUpdate(ntree, node_from); - } - - nodeUpdate(ntree, node_to); - ntreeUpdateTree(ntree); - - ED_node_generic_update(CTX_data_main(C), ntree, node_to); -} - static int ui_compatible_sockets(int typeA, int typeB) { - if(typeA == SOCK_SHADER || typeB == SOCK_SHADER) - return (typeA == typeB); - return (typeA == typeB); } -static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, const char *cname, int nclass, int compatibility) +static void ui_node_menu_column(NodeLinkArg *arg, int nclass, const char *cname) { + Main *bmain = arg->bmain; bNodeTree *ntree = arg->ntree; bNodeSocket *sock = arg->sock; + uiLayout *layout = arg->layout; uiLayout *column = NULL; uiBlock *block = uiLayoutGetBlock(layout); uiBut *but; @@ -289,6 +314,14 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, bNodeTree *ngroup; NodeLinkArg *argN; int first = 1; + int compatibility= 0; + + if(ntree->type == NTREE_SHADER) { + if(scene_use_new_shading_nodes(arg->scene)) + compatibility= NODE_NEW_SHADING; + else + compatibility= NODE_OLD_SHADING; + } if(nclass == NODE_CLASS_GROUP) { for(ngroup=bmain->nodetree.first; ngroup; ngroup=ngroup->id.next) { @@ -311,7 +344,7 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, column= uiLayoutColumn(layout, 0); uiBlockSetCurLayout(block, column); - uiItemL(column, cname, ICON_NONE); + uiItemL(column, cname, ICON_NODE); but= block->buttons.last; but->flag= UI_TEXT_LEFT; @@ -320,7 +353,7 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, if(num > 1) { if(j == 0) { - uiItemL(column, ngroup->id.name+2, ICON_NONE); + uiItemL(column, ngroup->id.name+2, ICON_NODE); but= block->buttons.last; but->flag= UI_TEXT_LEFT; } @@ -367,7 +400,7 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, column= uiLayoutColumn(layout, 0); uiBlockSetCurLayout(block, column); - uiItemL(column, cname, ICON_NONE); + uiItemL(column, cname, ICON_NODE); but= block->buttons.last; but->flag= UI_TEXT_LEFT; @@ -376,7 +409,7 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, if(num > 1) { if(j == 0) { - uiItemL(column, ntype->name, ICON_NONE); + uiItemL(column, ntype->name, ICON_NODE); but= block->buttons.last; but->flag= UI_TEXT_LEFT; } @@ -399,6 +432,14 @@ static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, } } +static void node_menu_column_foreach_cb(void *calldata, int nclass, const char *name) +{ + NodeLinkArg *arg = (NodeLinkArg*)calldata; + + if(!ELEM(nclass, NODE_CLASS_GROUP, NODE_CLASS_LAYOUT)) + ui_node_menu_column(arg, nclass, name); +} + static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_p) { Main *bmain= CTX_data_main(C); @@ -408,25 +449,17 @@ static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_ uiLayout *split, *column; NodeLinkArg *arg = (NodeLinkArg*)but->func_argN; bNodeSocket *sock = arg->sock; - int compatibility= 0; + bNodeTreeType *ntreetype= ntreeGetType(arg->ntree->type); - if(arg->ntree->type == NTREE_SHADER) { - if(scene_use_new_shading_nodes(scene)) - compatibility= NODE_NEW_SHADING; - else - compatibility= NODE_OLD_SHADING; - } - uiBlockSetCurLayout(block, layout); split= uiLayoutSplit(layout, 0, 0); - ui_node_menu_column(bmain, arg, split, "Input", NODE_CLASS_INPUT, compatibility); - ui_node_menu_column(bmain, arg, split, "Output", NODE_CLASS_OUTPUT, compatibility); - ui_node_menu_column(bmain, arg, split, "Shader", NODE_CLASS_SHADER, compatibility); - ui_node_menu_column(bmain, arg, split, "Texture", NODE_CLASS_TEXTURE, compatibility); - ui_node_menu_column(bmain, arg, split, "Color", NODE_CLASS_OP_COLOR, compatibility); - ui_node_menu_column(bmain, arg, split, "Vector", NODE_CLASS_OP_VECTOR, compatibility); - ui_node_menu_column(bmain, arg, split, "Convertor", NODE_CLASS_CONVERTOR, compatibility); + arg->bmain= bmain; + arg->scene= scene; + arg->layout= split; + + if(ntreetype && ntreetype->foreach_nodeclass) + ntreetype->foreach_nodeclass(scene, arg, node_menu_column_foreach_cb); column= uiLayoutColumn(split, 0); uiBlockSetCurLayout(block, column); @@ -445,7 +478,7 @@ static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_ uiButSetNFunc(but, ui_node_link, MEM_dupallocN(arg), SET_INT_IN_POINTER(UI_NODE_LINK_DISCONNECT)); } - ui_node_menu_column(bmain, arg, column, "Group", NODE_CLASS_GROUP, compatibility); + ui_node_menu_column(arg, NODE_CLASS_GROUP, IFACE_("Group")); } void uiTemplateNodeLink(uiLayout *layout, bNodeTree *ntree, bNode *node, bNodeSocket *sock) @@ -481,7 +514,7 @@ void uiTemplateNodeLink(uiLayout *layout, bNodeTree *ntree, bNode *node, bNodeSo but->flag |= UI_BUT_NODE_ACTIVE; } -/************************* Node Tree Layout **************************/ +/**************************** Node Tree Layout *******************************/ static void ui_node_draw_input(uiLayout *layout, bContext *C, bNodeTree *ntree, bNode *node, bNodeSocket *input, int depth); @@ -518,6 +551,9 @@ static void ui_node_draw_input(uiLayout *layout, bContext *C, bNodeTree *ntree, char label[UI_MAX_NAME_STR]; int indent = (depth > 1)? 2*(depth - 1): 0; + if(input->flag & SOCK_UNAVAIL) + return; + /* to avoid eternal loops on cyclic dependencies */ node->flag |= NODE_TEST; lnode = (input->link)? input->link->fromnode: NULL; @@ -552,6 +588,8 @@ static void ui_node_draw_input(uiLayout *layout, bContext *C, bNodeTree *ntree, } uiItemL(row, label, ICON_NONE); + bt= block->buttons.last; + bt->flag= UI_TEXT_LEFT; if(lnode) { /* input linked to a node */ diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index fed671ade20..8e592ad9f68 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -2563,7 +2563,7 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E copy_v3_v3(v1, eed->v1->co); copy_v3_v3(v2, eed->v2->co); - interp_v3_v3v3(vmid, v1, v2, 0.5f); + mid_v3_v3v3(vmid, v1, v2); if(do_global) { mul_mat3_m4_v3(ob->obmat, v1); diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 5c8e170dfc7..8e20f331698 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -2233,7 +2233,6 @@ CustomDataMask ED_view3d_datamask(Scene *scene, View3D *v3d) mask |= CD_MASK_MTFACE | CD_MASK_MCOL; if(scene_use_new_shading_nodes(scene)) { - /* todo: use orco in textured draw mode */ if(v3d->drawtype == OB_MATERIAL) mask |= CD_MASK_ORCO; } diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index 012e08f98cb..7cd9c07c00c 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -781,7 +781,7 @@ static void bundle_midpoint(Scene *scene, Object *ob, float vec[3]) } if(ok) { - interp_v3_v3v3(vec, min, max, 0.5); + mid_v3_v3v3(vec, min, max); } } diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 13d686508de..95daa11d97f 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -513,7 +513,7 @@ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) {NUM_MODAL_INCREMENT_UP, "INCREMENT_UP", 0, "Numinput Increment Up", ""}, {NUM_MODAL_INCREMENT_DOWN, "INCREMENT_DOWN", 0, "Numinput Increment Down", ""}, {TFM_MODAL_PROPSIZE_UP, "PROPORTIONAL_SIZE_UP", 0, "Increase Proportional Influence", ""}, - {TFM_MODAL_PROPSIZE_DOWN, "PROPORTIONAL_SIZE_DOWN", 0, "Decrease Poportional Influence", ""}, + {TFM_MODAL_PROPSIZE_DOWN, "PROPORTIONAL_SIZE_DOWN", 0, "Decrease Proportional Influence", ""}, {TFM_MODAL_AUTOIK_LEN_INC, "AUTOIK_CHAIN_LEN_UP", 0, "Increase Max AutoIK Chain Length", ""}, {TFM_MODAL_AUTOIK_LEN_DEC, "AUTOIK_CHAIN_LEN_DOWN", 0, "Decrease Max AutoIK Chain Length", ""}, {0, NULL, 0, NULL, NULL}}; diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 53e379a2d27..0e053e68496 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -619,6 +619,65 @@ static void recalcData_nla(TransInfo *t) } } +/* helper for recalcData() - for Image Editor transforms */ +static void recalcData_image(TransInfo *t) +{ + if (t->obedit && t->obedit->type == OB_MESH) { + SpaceImage *sima= t->sa->spacedata.first; + + flushTransUVs(t); + if(sima->flag & SI_LIVE_UNWRAP) + ED_uvedit_live_unwrap_re_solve(); + + DAG_id_tag_update(t->obedit->data, 0); + } +} + +/* helper for recalcData() - for Movie Clip transforms */ +static void recalcData_clip(TransInfo *t) +{ + SpaceClip *sc= t->sa->spacedata.first; + MovieClip *clip= ED_space_clip(sc); + MovieTrackingTrack *track; + + if(t->state == TRANS_CANCEL) { + track= clip->tracking.tracks.first; + while(track) { + if(TRACK_VIEW_SELECTED(sc, track)) { + MovieTrackingMarker *marker= BKE_tracking_ensure_marker(track, sc->user.framenr); + + marker->flag= track->transflag; + } + + track= track->next; + } + } + + flushTransTracking(t); + + track= clip->tracking.tracks.first; + while(track) { + if(TRACK_VIEW_SELECTED(sc, track)) { + if (t->mode == TFM_TRANSLATION) { + if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) + BKE_tracking_clamp_track(track, CLAMP_PAT_POS); + if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH)) + BKE_tracking_clamp_track(track, CLAMP_SEARCH_POS); + } + else if (t->mode == TFM_RESIZE) { + if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) + BKE_tracking_clamp_track(track, CLAMP_PAT_DIM); + if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH)) + BKE_tracking_clamp_track(track, CLAMP_SEARCH_DIM); + } + } + + track= track->next; + } + + DAG_id_tag_update(&clip->id, 0); +} + /* helper for recalcData() - for 3d-view transforms */ static void recalcData_view3d(TransInfo *t) { @@ -853,60 +912,13 @@ void recalcData(TransInfo *t) recalcData_nla(t); } else if (t->spacetype == SPACE_IMAGE) { - if (t->obedit && t->obedit->type == OB_MESH) { - SpaceImage *sima= t->sa->spacedata.first; - - flushTransUVs(t); - if(sima->flag & SI_LIVE_UNWRAP) - ED_uvedit_live_unwrap_re_solve(); - - DAG_id_tag_update(t->obedit->data, 0); - } + recalcData_image(t); } else if (t->spacetype == SPACE_VIEW3D) { recalcData_view3d(t); } else if (t->spacetype == SPACE_CLIP) { - SpaceClip *sc= t->sa->spacedata.first; - MovieClip *clip= ED_space_clip(sc); - MovieTrackingTrack *track; - - if(t->state == TRANS_CANCEL) { - track= clip->tracking.tracks.first; - while(track) { - if(TRACK_VIEW_SELECTED(sc, track)) { - MovieTrackingMarker *marker= BKE_tracking_ensure_marker(track, sc->user.framenr); - - marker->flag= track->transflag; - } - - track= track->next; - } - } - - flushTransTracking(t); - - track= clip->tracking.tracks.first; - while(track) { - if(TRACK_VIEW_SELECTED(sc, track)) { - if (t->mode == TFM_TRANSLATION) { - if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) - BKE_tracking_clamp_track(track, CLAMP_PAT_POS); - if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH)) - BKE_tracking_clamp_track(track, CLAMP_SEARCH_POS); - } - else if (t->mode == TFM_RESIZE) { - if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) - BKE_tracking_clamp_track(track, CLAMP_PAT_DIM); - if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH)) - BKE_tracking_clamp_track(track, CLAMP_SEARCH_DIM); - } - } - - track= track->next; - } - - DAG_id_tag_update(&clip->id, 0); + recalcData_clip(t); } } diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c index 3adb9a3791f..09b79e51648 100644 --- a/source/blender/imbuf/intern/anim_movie.c +++ b/source/blender/imbuf/intern/anim_movie.c @@ -890,7 +890,7 @@ static int ffmpeg_seek_by_byte(AVFormatContext *pFormatCtx) static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position, IMB_Timecode_Type tc) { - int64_t pts_to_search = 0; + unsigned long long pts_to_search = 0; double frame_rate; double pts_time_base; long long st_time; diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 7991a903bbb..8e60fe984e6 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -30,7 +30,8 @@ #define MODSTACK_DEBUG 1 -/* WARNING ALERT! TYPEDEF VALUES ARE WRITTEN IN FILES! SO DO NOT CHANGE! */ +/* WARNING ALERT! TYPEDEF VALUES ARE WRITTEN IN FILES! SO DO NOT CHANGE! + * (ONLY ADD NEW ITEMS AT THE END) */ typedef enum ModifierType { eModifierType_None = 0, diff --git a/source/blender/makesrna/intern/rna_movieclip.c b/source/blender/makesrna/intern/rna_movieclip.c index afdf3cd9c46..ad53a96b817 100644 --- a/source/blender/makesrna/intern/rna_movieclip.c +++ b/source/blender/makesrna/intern/rna_movieclip.c @@ -66,24 +66,6 @@ static void rna_MovieClip_size_get(PointerRNA *ptr, int *values) values[1]= clip->lastsize[1]; } -static void rna_MovieClip_resolution_get(PointerRNA *ptr, float *values) -{ - MovieClip *clip= (MovieClip*)ptr->id.data; - ImBuf *ibuf; - - ibuf= BKE_movieclip_get_ibuf(clip, NULL); - if (ibuf) { - values[0]= ibuf->ppm[0]; - values[1]= ibuf->ppm[1]; - - IMB_freeImBuf(ibuf); - } - else { - values[0]= 0; - values[1]= 0; - } -} - #else static void rna_def_movieclip_proxy(BlenderRNA *brna) @@ -235,10 +217,6 @@ static void rna_def_movieclip(BlenderRNA *brna) RNA_def_property_int_funcs(prop, "rna_MovieClip_size_get" , NULL, NULL); RNA_def_property_clear_flag(prop, PROP_EDITABLE); - prop= RNA_def_float_vector(srna, "resolution" , 2 , NULL , 0, 0, "Resolution" , "X/Y pixels per meter" , 0 , 0); - RNA_def_property_float_funcs(prop, "rna_MovieClip_resolution_get", NULL, NULL); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - prop= RNA_def_property(srna, "display_aspect", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "aspx"); RNA_def_property_array(prop, 2); diff --git a/source/blender/makesrna/intern/rna_nodetree_types.h b/source/blender/makesrna/intern/rna_nodetree_types.h index b09854e94c6..78be14ebf7e 100644 --- a/source/blender/makesrna/intern/rna_nodetree_types.h +++ b/source/blender/makesrna/intern/rna_nodetree_types.h @@ -40,7 +40,7 @@ DefNode( ShaderNode, SH_NODE_VALTORGB, def_colorramp, "VALTO DefNode( ShaderNode, SH_NODE_RGBTOBW, 0, "RGBTOBW", RGBToBW, "RGB to BW", "" ) DefNode( ShaderNode, SH_NODE_TEXTURE, def_texture, "TEXTURE", Texture, "Texture", "" ) DefNode( ShaderNode, SH_NODE_NORMAL, 0, "NORMAL", Normal, "Normal", "" ) -DefNode( ShaderNode, SH_NODE_GEOM, def_sh_geometry, "GEOM", Geom, "Geometry", "" ) +DefNode( ShaderNode, SH_NODE_GEOMETRY, def_sh_geometry, "GEOMETRY", Geometry, "Geometry", "" ) DefNode( ShaderNode, SH_NODE_MAPPING, def_sh_mapping, "MAPPING", Mapping, "Mapping", "" ) DefNode( ShaderNode, SH_NODE_CURVE_VEC, def_vector_curve, "CURVE_VEC", VectorCurve, "Vector Curve", "" ) DefNode( ShaderNode, SH_NODE_CURVE_RGB, def_rgb_curve, "CURVE_RGB", RGBCurve, "RGB Curve", "" ) @@ -53,40 +53,38 @@ DefNode( ShaderNode, SH_NODE_INVERT, 0, "INVER DefNode( ShaderNode, SH_NODE_SEPRGB, 0, "SEPRGB", SeparateRGB, "Separate RGB", "" ) DefNode( ShaderNode, SH_NODE_COMBRGB, 0, "COMBRGB", CombineRGB, "Combine RGB", "" ) DefNode( ShaderNode, SH_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation", "" ) -DefNode( ShaderNode, SH_NODE_OUTPUT_MATERIAL, 0, "OUTPUT_MATERIAL",OutputMaterial, "Material Output", "" ) -DefNode( ShaderNode, SH_NODE_OUTPUT_LAMP, 0, "OUTPUT_LAMP", OutputLamp, "Lamp Output", "" ) -//DefNode( ShaderNode, SH_NODE_OUTPUT_TEXTURE, 0, "OUTPUT_TEXTURE", OutputTexture, "Texture Output", "" ) -DefNode( ShaderNode, SH_NODE_OUTPUT_WORLD, 0, "OUTPUT_WORLD", OutputWorld, "World Output", "" ) -DefNode( ShaderNode, SH_NODE_FRESNEL, 0, "FRESNEL", Fresnel, "Fresnel", "" ) -DefNode( ShaderNode, SH_NODE_LAYER_WEIGHT, 0, "LAYER_WEIGHT", LayerWeight, "LayerWeight", "" ) -DefNode( ShaderNode, SH_NODE_MIX_SHADER, 0, "MIX_SHADER", MixShader, "Mix Shader", "" ) -DefNode( ShaderNode, SH_NODE_ADD_SHADER, 0, "ADD_SHADER", AddShader, "Add Shader", "" ) -DefNode( ShaderNode, SH_NODE_ATTRIBUTE, def_sh_attribute, "ATTRIBUTE", Attribute, "Attribute", "") -DefNode( ShaderNode, SH_NODE_BACKGROUND, 0, "BACKGROUND", Background, "Background", "") -DefNode( ShaderNode, SH_NODE_HOLDOUT, 0, "HOLDOUT", Holdout, "Holdout", "") -DefNode( ShaderNode, SH_NODE_BSDF_ANISOTROPIC, 0, "BSDF_ANISOTROPIC", BsdfAnisotropic, "Bsdf Anisotropic", "") -DefNode( ShaderNode, SH_NODE_BSDF_DIFFUSE, 0, "BSDF_DIFFUSE", BsdfDiffuse, "Diffuse Bsdf", "") -DefNode( ShaderNode, SH_NODE_BSDF_GLOSSY, def_glossy, "BSDF_GLOSSY", BsdfGlossy, "Glossy Bsdf", "") -DefNode( ShaderNode, SH_NODE_BSDF_GLASS, def_glossy, "BSDF_GLASS", BsdfGlass, "Glass Bsdf", "") -DefNode( ShaderNode, SH_NODE_BSDF_TRANSLUCENT, 0, "BSDF_TRANSLUCENT", BsdfTranslucent, "Translucent Bsdf", "") -DefNode( ShaderNode, SH_NODE_BSDF_TRANSPARENT, 0, "BSDF_TRANSPARENT", BsdfTransparent, "Transparent Bsdf", "") -DefNode( ShaderNode, SH_NODE_BSDF_VELVET, 0, "BSDF_VELVET", BsdfVelvet, "Velvet Bsdf", "") -DefNode( ShaderNode, SH_NODE_VOLUME_TRANSPARENT, 0, "VOLUME_TRANSPARENT", VolumeTransparent, "Transparent Volume", "") -DefNode( ShaderNode, SH_NODE_VOLUME_ISOTROPIC, 0, "VOLUME_ISOTROPIC", VolumeIsotropic, "Isotropic Volume", "") -DefNode( ShaderNode, SH_NODE_EMISSION, 0, "EMISSION", Emission, "Emission", "") -DefNode( ShaderNode, SH_NODE_GEOMETRY, 0, "GEOMETRY", Geometry, "Geometry", "") -DefNode( ShaderNode, SH_NODE_LIGHT_PATH, 0, "LIGHT_PATH", Light_path, "Light_path", "") -DefNode( ShaderNode, SH_NODE_TEX_IMAGE, def_sh_tex_image, "TEX_IMAGE", TexImage, "Image Texture", "") -DefNode( ShaderNode, SH_NODE_TEX_ENVIRONMENT, def_sh_tex_environment, "TEX_ENVIRONMENT", TexEnvironment, "Environment Texture", "") -DefNode( ShaderNode, SH_NODE_TEX_SKY, def_sh_tex_sky, "TEX_SKY", TexSky, "Sky Texture", "") -DefNode( ShaderNode, SH_NODE_TEX_GRADIENT, def_sh_tex_gradient, "TEX_GRADIENT", TexGradient, "Gradient Texture", "") -DefNode( ShaderNode, SH_NODE_TEX_NOISE, def_sh_tex_noise, "TEX_NOISE", TexNoise, "Noise Texture", "") -DefNode( ShaderNode, SH_NODE_TEX_MAGIC, def_sh_tex_magic, "TEX_MAGIC", TexMagic, "Magic Texture", "") -DefNode( ShaderNode, SH_NODE_TEX_WAVE, def_sh_tex_wave, "TEX_WAVE", TexWave, "Wave Texture", "") -DefNode( ShaderNode, SH_NODE_TEX_MUSGRAVE, def_sh_tex_musgrave, "TEX_MUSGRAVE", TexMusgrave, "Musgrave Texture", "") -DefNode( ShaderNode, SH_NODE_TEX_VORONOI, def_sh_tex_voronoi, "TEX_VORONOI", TexVoronoi, "Voronoi Texture", "") -DefNode( ShaderNode, SH_NODE_TEX_COORD, 0, "TEX_COORD", TexCoord, "Texture Coordinate", "") +DefNode( ShaderNode, SH_NODE_OUTPUT_MATERIAL, 0, "OUTPUT_MATERIAL", OutputMaterial, "Material Output", "" ) +DefNode( ShaderNode, SH_NODE_OUTPUT_LAMP, 0, "OUTPUT_LAMP", OutputLamp, "Lamp Output", "" ) +DefNode( ShaderNode, SH_NODE_OUTPUT_WORLD, 0, "OUTPUT_WORLD", OutputWorld, "World Output", "" ) +DefNode( ShaderNode, SH_NODE_FRESNEL, 0, "FRESNEL", Fresnel, "Fresnel", "" ) +DefNode( ShaderNode, SH_NODE_LAYER_WEIGHT, 0, "LAYER_WEIGHT", LayerWeight, "LayerWeight", "" ) +DefNode( ShaderNode, SH_NODE_MIX_SHADER, 0, "MIX_SHADER", MixShader, "Mix Shader", "" ) +DefNode( ShaderNode, SH_NODE_ADD_SHADER, 0, "ADD_SHADER", AddShader, "Add Shader", "" ) +DefNode( ShaderNode, SH_NODE_ATTRIBUTE, def_sh_attribute, "ATTRIBUTE", Attribute, "Attribute", "" ) +DefNode( ShaderNode, SH_NODE_BACKGROUND, 0, "BACKGROUND", Background, "Background", "" ) +DefNode( ShaderNode, SH_NODE_HOLDOUT, 0, "HOLDOUT", Holdout, "Holdout", "" ) +DefNode( ShaderNode, SH_NODE_BSDF_DIFFUSE, 0, "BSDF_DIFFUSE", BsdfDiffuse, "Diffuse Bsdf", "" ) +DefNode( ShaderNode, SH_NODE_BSDF_GLOSSY, def_glossy, "BSDF_GLOSSY", BsdfGlossy, "Glossy Bsdf", "" ) +DefNode( ShaderNode, SH_NODE_BSDF_GLASS, def_glossy, "BSDF_GLASS", BsdfGlass, "Glass Bsdf", "" ) +DefNode( ShaderNode, SH_NODE_BSDF_TRANSLUCENT, 0, "BSDF_TRANSLUCENT", BsdfTranslucent, "Translucent Bsdf", "" ) +DefNode( ShaderNode, SH_NODE_BSDF_TRANSPARENT, 0, "BSDF_TRANSPARENT", BsdfTransparent, "Transparent Bsdf", "" ) +DefNode( ShaderNode, SH_NODE_BSDF_VELVET, 0, "BSDF_VELVET", BsdfVelvet, "Velvet Bsdf", "" ) +DefNode( ShaderNode, SH_NODE_VOLUME_TRANSPARENT, 0, "VOLUME_TRANSPARENT", VolumeTransparent,"Transparent Volume","" ) +DefNode( ShaderNode, SH_NODE_VOLUME_ISOTROPIC, 0, "VOLUME_ISOTROPIC", VolumeIsotropic, "Isotropic Volume", "" ) +DefNode( ShaderNode, SH_NODE_EMISSION, 0, "EMISSION", Emission, "Emission", "" ) +DefNode( ShaderNode, SH_NODE_NEW_GEOMETRY, 0, "NEW_GEOMETRY", NewGeometry, "Geometry", "" ) +DefNode( ShaderNode, SH_NODE_LIGHT_PATH, 0, "LIGHT_PATH", Light_path, "Light_path", "" ) +DefNode( ShaderNode, SH_NODE_TEX_IMAGE, def_sh_tex_image, "TEX_IMAGE", TexImage, "Image Texture", "" ) +DefNode( ShaderNode, SH_NODE_TEX_ENVIRONMENT, def_sh_tex_environment, "TEX_ENVIRONMENT", TexEnvironment, "Environment Texture","" ) +DefNode( ShaderNode, SH_NODE_TEX_SKY, def_sh_tex_sky, "TEX_SKY", TexSky, "Sky Texture", "" ) +DefNode( ShaderNode, SH_NODE_TEX_GRADIENT, def_sh_tex_gradient, "TEX_GRADIENT", TexGradient, "Gradient Texture", "" ) +DefNode( ShaderNode, SH_NODE_TEX_NOISE, def_sh_tex_noise, "TEX_NOISE", TexNoise, "Noise Texture", "" ) +DefNode( ShaderNode, SH_NODE_TEX_MAGIC, def_sh_tex_magic, "TEX_MAGIC", TexMagic, "Magic Texture", "" ) +DefNode( ShaderNode, SH_NODE_TEX_WAVE, def_sh_tex_wave, "TEX_WAVE", TexWave, "Wave Texture", "" ) +DefNode( ShaderNode, SH_NODE_TEX_MUSGRAVE, def_sh_tex_musgrave, "TEX_MUSGRAVE", TexMusgrave, "Musgrave Texture", "" ) +DefNode( ShaderNode, SH_NODE_TEX_VORONOI, def_sh_tex_voronoi, "TEX_VORONOI", TexVoronoi, "Voronoi Texture", "" ) +DefNode( ShaderNode, SH_NODE_TEX_COORD, 0, "TEX_COORD", TexCoord, "Texture Coordinate","") DefNode( CompositorNode, CMP_NODE_VIEWER, 0, "VIEWER", Viewer, "Viewer", "" ) DefNode( CompositorNode, CMP_NODE_RGB, 0, "RGB", RGB, "RGB", "" ) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index b1d4654f76b..ca325747d8e 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -76,7 +76,7 @@ EnumPropertyItem proportional_falloff_items[] ={ {PROP_ROOT, "ROOT", ICON_ROOTCURVE, "Root", "Root falloff"}, {PROP_SHARP, "SHARP", ICON_SHARPCURVE, "Sharp", "Sharp falloff"}, {PROP_LIN, "LINEAR", ICON_LINCURVE, "Linear", "Linear falloff"}, - {PROP_CONST, "CONSTANT", ICON_NOCURVE, "Constant", "Consant falloff"}, + {PROP_CONST, "CONSTANT", ICON_NOCURVE, "Constant", "Constant falloff"}, {PROP_RANDOM, "RANDOM", ICON_RNDCURVE, "Random", "Random falloff"}, {0, NULL, 0, NULL, NULL}}; diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c index f72fd3d465c..2c6384c75d8 100644 --- a/source/blender/makesrna/intern/rna_tracking.c +++ b/source/blender/makesrna/intern/rna_tracking.c @@ -125,13 +125,6 @@ static void rna_tracking_trackerPyramid_update(Main *UNUSED(bmain), Scene *UNUSE BKE_tracking_clamp_track(track, CLAMP_PYRAMID_LEVELS); } -static int rna_tracking_markers_length(PointerRNA *ptr) -{ - MovieTrackingTrack *track= (MovieTrackingTrack *)ptr->data; - - return track->markersnr; -} - static float rna_trackingCamera_focal_mm_get(PointerRNA *ptr) { MovieClip *clip= (MovieClip*)ptr->id.data; @@ -249,7 +242,7 @@ static void rna_def_trackingSettings(BlenderRNA *brna) prop= RNA_def_property(srna, "frames_limit", PROP_INT, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_int_sdna(prop, NULL, "frames_limit"); - RNA_def_property_range(prop, 0, INT_MAX); + RNA_def_property_range(prop, 0, SHRT_MAX); RNA_def_property_ui_text(prop, "Frames Limit", "Amount of frames to be tracked during single tracking operation"); /* adjust frames */ @@ -425,7 +418,7 @@ static void rna_def_trackingTrack(BlenderRNA *brna) static EnumPropertyItem tracker_items[] = { {TRACKER_SAD, "SAD", 0, "SAD", "Sum of Absolute Differences tracker"}, - {TRACKER_KLT, "KLT", 0, "KLT", "Kanade–Lucas–Tomasi racker"}, + {TRACKER_KLT, "KLT", 0, "KLT", "Kanade–Lucas–Tomasi tracker"}, {0, NULL, 0, NULL, NULL}}; rna_def_trackingMarker(brna); @@ -499,7 +492,6 @@ static void rna_def_trackingTrack(BlenderRNA *brna) prop= RNA_def_property(srna, "markers", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "MovieTrackingMarker"); RNA_def_property_collection_sdna(prop, NULL, "markers", "markersnr"); - RNA_def_property_collection_funcs(prop, NULL, NULL, NULL, NULL, "rna_tracking_markers_length", NULL, NULL, NULL); RNA_def_property_ui_text(prop, "Markers", "Collection of markers in track"); /* ** channels ** */ diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt index 484b58abe12..557b00d66b8 100644 --- a/source/blender/nodes/CMakeLists.txt +++ b/source/blender/nodes/CMakeLists.txt @@ -130,7 +130,6 @@ set(SRC shader/nodes/node_shader_vectMath.c shader/nodes/node_shader_attribute.c shader/nodes/node_shader_background.c - shader/nodes/node_shader_bsdf_anisotropic.c shader/nodes/node_shader_bsdf_diffuse.c shader/nodes/node_shader_bsdf_glossy.c shader/nodes/node_shader_bsdf_glass.c @@ -149,7 +148,6 @@ set(SRC shader/nodes/node_shader_add_shader.c shader/nodes/node_shader_output_lamp.c shader/nodes/node_shader_output_material.c - shader/nodes/node_shader_output_texture.c shader/nodes/node_shader_output_world.c shader/nodes/node_shader_tex_gradient.c shader/nodes/node_shader_tex_coord.c @@ -161,7 +159,6 @@ set(SRC shader/nodes/node_shader_tex_sky.c shader/nodes/node_shader_tex_voronoi.c shader/nodes/node_shader_tex_wave.c - shader/nodes/node_shader_noise.h shader/node_shader_tree.c shader/node_shader_util.c diff --git a/source/blender/nodes/NOD_shader.h b/source/blender/nodes/NOD_shader.h index 52d5f2f5e9c..996660fcb8b 100644 --- a/source/blender/nodes/NOD_shader.h +++ b/source/blender/nodes/NOD_shader.h @@ -82,7 +82,6 @@ void register_node_type_sh_background(ListBase *lb); void register_node_type_sh_bsdf_diffuse(ListBase *lb); void register_node_type_sh_bsdf_glossy(ListBase *lb); void register_node_type_sh_bsdf_glass(ListBase *lb); -void register_node_type_sh_bsdf_anisotropic(ListBase *lb); void register_node_type_sh_bsdf_translucent(ListBase *lb); void register_node_type_sh_bsdf_transparent(ListBase *lb); void register_node_type_sh_bsdf_velvet(ListBase *lb); @@ -95,7 +94,6 @@ void register_node_type_sh_add_shader(ListBase *lb); void register_node_type_sh_output_lamp(ListBase *lb); void register_node_type_sh_output_material(ListBase *lb); -void register_node_type_sh_output_texture(ListBase *lb); void register_node_type_sh_output_world(ListBase *lb); void register_node_type_sh_tex_image(ListBase *lb); diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c index d3f4a5b2999..06f88002a70 100644 --- a/source/blender/nodes/composite/node_composite_tree.c +++ b/source/blender/nodes/composite/node_composite_tree.c @@ -68,6 +68,20 @@ static void foreach_nodetree(Main *main, void *calldata, bNodeTreeCallback func) } } +static void foreach_nodeclass(Scene *UNUSED(scene), void *calldata, bNodeClassCallback func) +{ + func(calldata, NODE_CLASS_INPUT, "Input"); + func(calldata, NODE_CLASS_OUTPUT, "Output"); + func(calldata, NODE_CLASS_OP_COLOR, "Color"); + func(calldata, NODE_CLASS_OP_VECTOR, "Vector"); + func(calldata, NODE_CLASS_OP_FILTER, "Filter"); + func(calldata, NODE_CLASS_CONVERTOR, "Convertor"); + func(calldata, NODE_CLASS_MATTE, "Matte"); + func(calldata, NODE_CLASS_DISTORT, "Distort"); + func(calldata, NODE_CLASS_GROUP, "Group"); + func(calldata, NODE_CLASS_LAYOUT, "Layout"); +} + static void free_node_cache(bNodeTree *UNUSED(ntree), bNode *node) { bNodeSocket *sock; @@ -207,6 +221,7 @@ bNodeTreeType ntreeType_Composite = { /* free_cache */ free_cache, /* free_node_cache */ free_node_cache, /* foreach_nodetree */ foreach_nodetree, + /* foreach_nodeclass */ foreach_nodeclass, /* localize */ localize, /* local_sync */ local_sync, /* local_merge */ local_merge, diff --git a/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c b/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c index 439616377a1..8411de39353 100644 --- a/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c +++ b/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c @@ -45,7 +45,7 @@ static bNodeSocketTemplate cmp_node_moviedistortion_out[]= { { -1, 0, "" } }; -static void exec(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) +static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out) { if(in[0]->data) { if(node->id) { @@ -57,14 +57,18 @@ static void exec(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack ** ibuf= IMB_allocImBuf(cbuf->x, cbuf->y, 32, 0); if(ibuf) { + RenderData *rd= data; ImBuf *obuf; MovieTracking *tracking= &clip->tracking; int width, height; float overscan= 0.0f; + MovieClipUser user= {0}; + + BKE_movieclip_user_set_frame(&user, rd->cfra); ibuf->rect_float= cbuf->rect; - BKE_movieclip_get_size(clip, NULL, &width, &height); + BKE_movieclip_get_size(clip, &user, &width, &height); if(!node->storage) node->storage= BKE_tracking_distortion_create(); diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index a5dbfdc930e..e116944e688 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -35,6 +35,7 @@ #include "DNA_lamp_types.h" #include "DNA_material_types.h" #include "DNA_node_types.h" +#include "DNA_scene_types.h" #include "DNA_world_types.h" #include "BLI_listbase.h" @@ -45,6 +46,7 @@ #include "BKE_global.h" #include "BKE_main.h" #include "BKE_node.h" +#include "BKE_scene.h" #include "BKE_utildefines.h" #include "GPU_material.h" @@ -74,6 +76,23 @@ static void foreach_nodetree(Main *main, void *calldata, bNodeTreeCallback func) func(calldata, &wo->id, wo->nodetree); } +static void foreach_nodeclass(Scene *scene, void *calldata, bNodeClassCallback func) +{ + func(calldata, NODE_CLASS_INPUT, "Input"); + func(calldata, NODE_CLASS_OUTPUT, "Output"); + + if(scene_use_new_shading_nodes(scene)) { + func(calldata, NODE_CLASS_SHADER, "Shader"); + func(calldata, NODE_CLASS_TEXTURE, "Texture"); + } + + func(calldata, NODE_CLASS_OP_COLOR, "Color"); + func(calldata, NODE_CLASS_OP_VECTOR, "Vector"); + func(calldata, NODE_CLASS_CONVERTOR, "Convertor"); + func(calldata, NODE_CLASS_GROUP, "Group"); + func(calldata, NODE_CLASS_LAYOUT, "Layout"); +} + static void local_sync(bNodeTree *localtree, bNodeTree *ntree) { bNode *lnode; @@ -108,6 +127,7 @@ bNodeTreeType ntreeType_Shader = { /* free_cache */ NULL, /* free_node_cache */ NULL, /* foreach_nodetree */ foreach_nodetree, + /* foreach_nodeclass */ foreach_nodeclass, /* localize */ NULL, /* local_sync */ local_sync, /* local_merge */ NULL, @@ -209,7 +229,6 @@ void ntreeShaderEndExecTree(bNodeTreeExec *exec, int use_tree_data) void ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr) { ShaderCallData scd; - float co[3] = {0.0f, 0.0f, 0.0f}; /* @note: preserve material from ShadeInput for material id, nodetree execs change it fix for bug "[#28012] Mat ID messy with shader nodes" @@ -219,10 +238,8 @@ void ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr) bNodeTreeExec *exec = ntree->execdata; /* convert caller data to struct */ - memset(&scd, 0, sizeof(scd)); scd.shi= shi; scd.shr= shr; - scd.co= co; /* each material node has own local shaderesult, with optional copying */ memset(shr, 0, sizeof(ShadeResult)); diff --git a/source/blender/nodes/shader/node_shader_util.c b/source/blender/nodes/shader/node_shader_util.c index 537fa64309e..dcfdb97f91a 100644 --- a/source/blender/nodes/shader/node_shader_util.c +++ b/source/blender/nodes/shader/node_shader_util.c @@ -325,7 +325,5 @@ void node_shader_gpu_tex_mapping(GPUMaterial *mat, bNode *node, GPUNodeStack *in GPU_link(mat, "mapping", in[0].link, tmat, tmin, tmax, tdomin, tdomax, &in[0].link); } - else - printf("skip mapping!\n"); } diff --git a/source/blender/nodes/shader/node_shader_util.h b/source/blender/nodes/shader/node_shader_util.h index 19976ada3ec..369defe490f 100644 --- a/source/blender/nodes/shader/node_shader_util.h +++ b/source/blender/nodes/shader/node_shader_util.h @@ -73,7 +73,6 @@ #include "IMB_imbuf.h" #include "RE_pipeline.h" -#include "RE_render_ext.h" #include "RE_shader_ext.h" #include "GPU_material.h" @@ -83,10 +82,6 @@ typedef struct ShaderCallData { ShadeInput *shi; /* from render pipe */ ShadeResult *shr; /* from render pipe */ - - TexResult *texres; - float *co; - float *dxt, *dyt; } ShaderCallData; /* output socket defines */ diff --git a/source/blender/nodes/shader/nodes/node_shader_add_shader.c b/source/blender/nodes/shader/nodes/node_shader_add_shader.c index 1cee889d601..d715971e618 100644 --- a/source/blender/nodes/shader/nodes/node_shader_add_shader.c +++ b/source/blender/nodes/shader/nodes/node_shader_add_shader.c @@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_add_shader_out[]= { { -1, 0, "" } }; -static void node_shader_exec_add_shader(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_add_shader(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_add_shader", in, out); @@ -62,7 +58,7 @@ void register_node_type_sh_add_shader(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_add_shader); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_add_shader); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_attribute.c b/source/blender/nodes/shader/nodes/node_shader_attribute.c index 57f8aed474c..4b238f72117 100644 --- a/source/blender/nodes/shader/nodes/node_shader_attribute.c +++ b/source/blender/nodes/shader/nodes/node_shader_attribute.c @@ -38,10 +38,6 @@ static bNodeSocketTemplate sh_node_attribute_out[]= { { -1, 0, "" } }; -static void node_shader_exec_attribute(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static void node_shader_init_attribute(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp)) { NodeShaderAttribute *attr = MEM_callocN(sizeof(NodeShaderAttribute), "NodeShaderAttribute"); @@ -59,7 +55,7 @@ void register_node_type_sh_attribute(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_attribute); node_type_storage(&ntype, "NodeShaderAttribute", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_attribute); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, NULL); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_background.c b/source/blender/nodes/shader/nodes/node_shader_background.c index 55f77e66af9..b2bd837d66b 100644 --- a/source/blender/nodes/shader/nodes/node_shader_background.c +++ b/source/blender/nodes/shader/nodes/node_shader_background.c @@ -42,11 +42,6 @@ static bNodeSocketTemplate sh_node_background_out[]= { { -1, 0, "" } }; -static void node_shader_exec_background(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - - /* node type definition */ void register_node_type_sh_background(ListBase *lb) { @@ -58,7 +53,7 @@ void register_node_type_sh_background(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_background); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, NULL); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c index ef590dd7361..c71696b351c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c @@ -43,10 +43,6 @@ static bNodeSocketTemplate sh_node_bsdf_anisotropic_out[]= { { -1, 0, "" } }; -static void node_shader_exec_bsdf_anisotropic(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_bsdf_anisotropic(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_bsdf_anisotropic", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION)); @@ -63,7 +59,7 @@ void register_node_type_sh_bsdf_anisotropic(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_bsdf_anisotropic); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_bsdf_anisotropic); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c index 47f53ae4aa1..737f77d923e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c @@ -41,10 +41,6 @@ static bNodeSocketTemplate sh_node_bsdf_diffuse_out[]= { { -1, 0, "" } }; -static void node_shader_exec_bsdf_diffuse(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_bsdf_diffuse(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_bsdf_diffuse", in, out, GPU_builtin(GPU_VIEW_NORMAL)); @@ -61,7 +57,7 @@ void register_node_type_sh_bsdf_diffuse(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_bsdf_diffuse); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_bsdf_diffuse); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c index b8237e0e276..1bb62fead6d 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c @@ -43,10 +43,6 @@ static bNodeSocketTemplate sh_node_bsdf_glass_out[]= { { -1, 0, "" } }; -static void node_shader_exec_bsdf_glass(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_bsdf_glass(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_bsdf_glass", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION)); @@ -63,7 +59,7 @@ void register_node_type_sh_bsdf_glass(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_bsdf_glass); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_bsdf_glass); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c index c8f9acfa206..2338a8a3cd2 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c @@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_bsdf_glossy_out[]= { { -1, 0, "" } }; -static void node_shader_exec_bsdf_glossy(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_bsdf_glossy(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { /* todo: is incoming vector normalized? */ @@ -63,7 +59,7 @@ void register_node_type_sh_bsdf_glossy(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_bsdf_glossy); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_bsdf_glossy); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c index 4ea41b379a1..2836714f477 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c @@ -41,10 +41,6 @@ static bNodeSocketTemplate sh_node_bsdf_translucent_out[]= { { -1, 0, "" } }; -static void node_shader_exec_bsdf_translucent(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_bsdf_translucent(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_bsdf_translucent", in, out, GPU_builtin(GPU_VIEW_NORMAL)); @@ -61,7 +57,7 @@ void register_node_type_sh_bsdf_translucent(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_bsdf_translucent); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_bsdf_translucent); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c index fceb54a3369..5352bd9be30 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c @@ -41,10 +41,6 @@ static bNodeSocketTemplate sh_node_bsdf_transparent_out[]= { { -1, 0, "" } }; -static void node_shader_exec_bsdf_transparent(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_bsdf_transparent(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_bsdf_transparent", in, out); @@ -61,7 +57,7 @@ void register_node_type_sh_bsdf_transparent(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_bsdf_transparent); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_bsdf_transparent); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c index cc7eb626655..dfcf3b68d67 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c @@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_bsdf_velvet_out[]= { { -1, 0, "" } }; -static void node_shader_exec_bsdf_velvet(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_bsdf_velvet(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_bsdf_velvet", in, out, GPU_builtin(GPU_VIEW_NORMAL)); @@ -62,7 +58,7 @@ void register_node_type_sh_bsdf_velvet(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_bsdf_velvet); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_bsdf_velvet); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_emission.c b/source/blender/nodes/shader/nodes/node_shader_emission.c index 78644d5317d..6ef82890559 100644 --- a/source/blender/nodes/shader/nodes/node_shader_emission.c +++ b/source/blender/nodes/shader/nodes/node_shader_emission.c @@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_emission_out[]= { { -1, 0, "" } }; -static void node_shader_exec_emission(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_emission(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_emission", in, out, GPU_builtin(GPU_VIEW_NORMAL)); @@ -62,7 +58,7 @@ void register_node_type_sh_emission(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_emission); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_emission); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_fresnel.c b/source/blender/nodes/shader/nodes/node_shader_fresnel.c index e93eac06eca..c5d55c9a1c8 100644 --- a/source/blender/nodes/shader/nodes/node_shader_fresnel.c +++ b/source/blender/nodes/shader/nodes/node_shader_fresnel.c @@ -40,10 +40,6 @@ static bNodeSocketTemplate sh_node_fresnel_out[]= { { -1, 0, "" } }; -static void node_shader_exec_fresnel(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_fresnel(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { /* todo: is incoming vector normalized? */ @@ -61,7 +57,7 @@ void register_node_type_sh_fresnel(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_fresnel); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_fresnel); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_geom.c b/source/blender/nodes/shader/nodes/node_shader_geom.c index caa427117e6..bc367dc9de5 100644 --- a/source/blender/nodes/shader/nodes/node_shader_geom.c +++ b/source/blender/nodes/shader/nodes/node_shader_geom.c @@ -138,7 +138,7 @@ void register_node_type_sh_geom(ListBase *lb) { static bNodeType ntype; - node_type_base(&ntype, SH_NODE_GEOM, "Geometry", NODE_CLASS_INPUT, NODE_OPTIONS); + node_type_base(&ntype, SH_NODE_GEOMETRY, "Geometry", NODE_CLASS_INPUT, NODE_OPTIONS); node_type_compatibility(&ntype, NODE_OLD_SHADING); node_type_compatibility(&ntype, NODE_OLD_SHADING); node_type_socket_templates(&ntype, NULL, sh_node_geom_out); diff --git a/source/blender/nodes/shader/nodes/node_shader_geometry.c b/source/blender/nodes/shader/nodes/node_shader_geometry.c index f077d700a74..63f6ba3928f 100644 --- a/source/blender/nodes/shader/nodes/node_shader_geometry.c +++ b/source/blender/nodes/shader/nodes/node_shader_geometry.c @@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_geometry_out[]= { { -1, 0, "" } }; -static void node_shader_exec_geometry(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_geometry(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_geometry", in, out, @@ -58,13 +54,13 @@ void register_node_type_sh_geometry(ListBase *lb) { static bNodeType ntype; - node_type_base(&ntype, SH_NODE_GEOMETRY, "Geometry", NODE_CLASS_INPUT, 0); + node_type_base(&ntype, SH_NODE_NEW_GEOMETRY, "Geometry", NODE_CLASS_INPUT, 0); node_type_compatibility(&ntype, NODE_NEW_SHADING); node_type_socket_templates(&ntype, NULL, sh_node_geometry_out); node_type_size(&ntype, 120, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_geometry); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_geometry); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_holdout.c b/source/blender/nodes/shader/nodes/node_shader_holdout.c index 170116aa833..747519c861e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_holdout.c +++ b/source/blender/nodes/shader/nodes/node_shader_holdout.c @@ -40,10 +40,6 @@ static bNodeSocketTemplate sh_node_holdout_out[]= { { -1, 0, "" } }; -static void node_shader_exec_holdout(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - /* node type definition */ void register_node_type_sh_holdout(ListBase *lb) @@ -56,7 +52,7 @@ void register_node_type_sh_holdout(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_holdout); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, NULL); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_layer_weight.c b/source/blender/nodes/shader/nodes/node_shader_layer_weight.c index 79e5728fab6..16b58e18761 100644 --- a/source/blender/nodes/shader/nodes/node_shader_layer_weight.c +++ b/source/blender/nodes/shader/nodes/node_shader_layer_weight.c @@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_layer_weight_out[]= { { -1, 0, "" } }; -static void node_shader_exec_layer_weight(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_layer_weight(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out)) { return 0; @@ -62,7 +58,7 @@ void register_node_type_sh_layer_weight(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_layer_weight); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_layer_weight); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_light_path.c b/source/blender/nodes/shader/nodes/node_shader_light_path.c index 0055257dda2..d399a0bddd4 100644 --- a/source/blender/nodes/shader/nodes/node_shader_light_path.c +++ b/source/blender/nodes/shader/nodes/node_shader_light_path.c @@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_light_path_out[]= { { -1, 0, "" } }; -static void node_shader_exec_light_path(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_light_path(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_light_path", in, out); @@ -62,7 +58,7 @@ void register_node_type_sh_light_path(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_light_path); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_light_path); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_mixRgb.c b/source/blender/nodes/shader/nodes/node_shader_mixRgb.c index 2652145feb5..5d7ec9a23ab 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mixRgb.c +++ b/source/blender/nodes/shader/nodes/node_shader_mixRgb.c @@ -35,8 +35,8 @@ /* **************** MIX RGB ******************** */ static bNodeSocketTemplate sh_node_mix_rgb_in[]= { { SOCK_FLOAT, 1, "Fac", 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, - { SOCK_RGBA, 1, "Color", 0.5f, 0.5f, 0.5f, 1.0f}, - { SOCK_RGBA, 1, "Color", 0.5f, 0.5f, 0.5f, 1.0f}, + { SOCK_RGBA, 1, "Color1", 0.5f, 0.5f, 0.5f, 1.0f}, + { SOCK_RGBA, 1, "Color2", 0.5f, 0.5f, 0.5f, 1.0f}, { -1, 0, "" } }; static bNodeSocketTemplate sh_node_mix_rgb_out[]= { diff --git a/source/blender/nodes/shader/nodes/node_shader_mix_shader.c b/source/blender/nodes/shader/nodes/node_shader_mix_shader.c index a41a95a0fa4..5ce2a03f464 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mix_shader.c +++ b/source/blender/nodes/shader/nodes/node_shader_mix_shader.c @@ -43,10 +43,6 @@ static bNodeSocketTemplate sh_node_mix_shader_out[]= { { -1, 0, "" } }; -static void node_shader_exec_mix_shader(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_mix_shader(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { return GPU_stack_link(mat, "node_mix_shader", in, out); @@ -63,7 +59,7 @@ void register_node_type_sh_mix_shader(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_mix_shader); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_mix_shader); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_output_lamp.c b/source/blender/nodes/shader/nodes/node_shader_output_lamp.c index 33b6c49a356..2c954d1cf8f 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_lamp.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_lamp.c @@ -36,10 +36,6 @@ static bNodeSocketTemplate sh_node_output_lamp_in[]= { { -1, 0, "" } }; -static void node_shader_exec_output_lamp(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - /* node type definition */ void register_node_type_sh_output_lamp(ListBase *lb) { @@ -51,7 +47,7 @@ void register_node_type_sh_output_lamp(ListBase *lb) node_type_size(&ntype, 120, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_output_lamp); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, NULL); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_output_material.c b/source/blender/nodes/shader/nodes/node_shader_output_material.c index 8d12380ca67..0059489fcc7 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_material.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_material.c @@ -38,10 +38,6 @@ static bNodeSocketTemplate sh_node_output_material_in[]= { { -1, 0, "" } }; -static void node_shader_exec_output_material(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_output_material(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { GPUNodeLink *outlink; @@ -64,7 +60,7 @@ void register_node_type_sh_output_material(ListBase *lb) node_type_size(&ntype, 120, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_output_material); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_output_material); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_output_texture.c b/source/blender/nodes/shader/nodes/node_shader_output_texture.c deleted file mode 100644 index d436b23fb61..00000000000 --- a/source/blender/nodes/shader/nodes/node_shader_output_texture.c +++ /dev/null @@ -1,76 +0,0 @@ -/** - * $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $ - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2005 Blender Foundation. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include "../node_shader_util.h" - -/* **************** OUTPUT ******************** */ - -static bNodeSocketTemplate sh_node_output_texture_in[]= { - { SOCK_RGBA, 1, "Color", 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, - { -1, 0, "" } -}; - -static void node_shader_exec_output_texture(void *data, bNode *node, bNodeStack **in, bNodeStack **UNUSED(out)) -{ - if(data && (node->flag & NODE_DO_OUTPUT)) { - ShaderCallData *scd= (ShaderCallData*)data; - TexResult *texres = scd->texres; - float col[4]; - - if(!texres) - return; - - nodestack_get_vec(col, SOCK_RGBA, in[0]); - - texres->tr= col[0]; - texres->tg= col[1]; - texres->tb= col[2]; - texres->ta= 1.0f; - - texres->tin= rgb_to_grayscale(col); - } -} - -/* node type definition */ -void register_node_type_sh_output_texture(ListBase *lb) -{ - static bNodeType ntype; - - node_type_base(&ntype, SH_NODE_OUTPUT_TEXTURE, "Texture Output", NODE_CLASS_OUTPUT, 0); - node_type_compatibility(&ntype, NODE_NEW_SHADING); - node_type_socket_templates(&ntype, sh_node_output_texture_in, NULL); - node_type_size(&ntype, 120, 60, 200); - node_type_init(&ntype, NULL); - node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_output_texture); - node_type_gpu(&ntype, NULL); - - nodeRegisterType(lb, &ntype); -}; - diff --git a/source/blender/nodes/shader/nodes/node_shader_output_world.c b/source/blender/nodes/shader/nodes/node_shader_output_world.c index 72cc5c0fe1a..20bb3ab8f58 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_world.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_world.c @@ -37,10 +37,6 @@ static bNodeSocketTemplate sh_node_output_world_in[]= { { -1, 0, "" } }; -static void node_shader_exec_output_world(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - /* node type definition */ void register_node_type_sh_output_world(ListBase *lb) { @@ -52,7 +48,7 @@ void register_node_type_sh_output_world(ListBase *lb) node_type_size(&ntype, 120, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_output_world); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, NULL); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_coord.c b/source/blender/nodes/shader/nodes/node_shader_tex_coord.c index 0239a64110d..a33e5599d77 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_coord.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_coord.c @@ -43,10 +43,6 @@ static bNodeSocketTemplate sh_node_tex_coord_out[]= { { -1, 0, "" } }; -static void node_shader_exec_tex_coord(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_tex_coord(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { GPUNodeLink *orco = GPU_attribute(CD_ORCO, ""); @@ -68,7 +64,7 @@ void register_node_type_sh_tex_coord(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_tex_coord); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_coord); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_environment.c b/source/blender/nodes/shader/nodes/node_shader_tex_environment.c index 3c0a1a22e5a..f9ab16ae84a 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_environment.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_environment.c @@ -51,37 +51,6 @@ static void node_shader_init_tex_environment(bNodeTree *UNUSED(ntree), bNode* no node->storage = tex; } -static void node_shader_exec_tex_environment(void *data, bNode *node, bNodeStack **in, bNodeStack **out) -{ - Image *ima= (Image*)node->id; - ShaderCallData *scd= (ShaderCallData*)data; - NodeTexEnvironment *tex= (NodeTexEnvironment*)node->storage; - bNodeSocket *vecsock = node->inputs.first; - float vec[3]; - - if(vecsock->link) - nodestack_get_vec(vec, SOCK_VECTOR, in[0]); - else - copy_v3_v3(vec, scd->co); - - if(ima) { - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); - - if(ibuf) { - float u= (atan2f(vec[1], vec[0]) + (float)M_PI)/(2*M_PI); - float v= atan2f(vec[2], hypotf(vec[0], vec[1]))/M_PI + 0.5f; - float rgb[4]; - - ibuf_sample(ibuf, u, v, 0.0f, 0.0f, rgb); - - if(tex->color_space == SHD_COLORSPACE_SRGB) - srgb_to_linearrgb_v3_v3(out[0]->vec, rgb); - else - copy_v3_v3(out[0]->vec, rgb); - } - } -} - static int node_shader_gpu_tex_environment(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { Image *ima= (Image*)node->id; @@ -112,7 +81,7 @@ void register_node_type_sh_tex_environment(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_tex_environment); node_type_storage(&ntype, "NodeTexEnvironment", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_tex_environment); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_environment); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c b/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c index 71269ba85b6..076759fa75f 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c @@ -29,44 +29,6 @@ #include "../node_shader_util.h" -static float gradient(float p[3], int type) -{ - float x, y; - - x= p[0]; - y= p[1]; - - if(type == SHD_BLEND_LINEAR) { - return (1.0f + x)/2.0f; - } - else if(type == SHD_BLEND_QUADRATIC) { - float r = MAX2((1.0f + x)/2.0f, 0.0f); - return r*r; - } - else if(type == SHD_BLEND_EASING) { - float r = MIN2(MAX2((1.0f + x)/2.0f, 0.0f), 1.0f); - float t = r*r; - - return (3.0f*t - 2.0f*t*r); - } - else if(type == SHD_BLEND_DIAGONAL) { - return (2.0f + x + y)/4.0f; - } - else if(type == SHD_BLEND_RADIAL) { - return atan2(y, x)/(2.0f*(float)M_PI) + 0.5f; - } - else { - float r = MAX2(1.0f - sqrtf(x*x + y*y + p[2]*p[2]), 0.0f); - - if(type == SHD_BLEND_QUADRATIC_SPHERE) - return r*r; - else if(type == SHD_BLEND_SPHERICAL) - return r; - } - - return 0.0f; -} - /* **************** BLEND ******************** */ static bNodeSocketTemplate sh_node_tex_gradient_in[]= { @@ -90,27 +52,6 @@ static void node_shader_init_tex_gradient(bNodeTree *UNUSED(ntree), bNode* node, node->storage = tex; } -static void node_shader_exec_tex_gradient(void *data, bNode *node, bNodeStack **in, bNodeStack **out) -{ - ShaderCallData *scd= (ShaderCallData*)data; - NodeTexGradient *tex= (NodeTexGradient*)node->storage; - bNodeSocket *vecsock = node->inputs.first; - float vec[3], fac; - - if(vecsock->link) - nodestack_get_vec(vec, SOCK_VECTOR, in[0]); - else - copy_v3_v3(vec, scd->co); - - fac= gradient(vec, tex->gradient_type); - CLAMP(fac, 0.0f, 1.0f); - - out[0]->vec[0]= fac; - out[0]->vec[1]= fac; - out[0]->vec[2]= fac; - out[1]->vec[0]= fac; -} - static int node_shader_gpu_tex_gradient(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { if(!in[0].link) @@ -132,7 +73,7 @@ void register_node_type_sh_tex_gradient(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_tex_gradient); node_type_storage(&ntype, "NodeTexGradient", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_tex_gradient); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_gradient); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_image.c b/source/blender/nodes/shader/nodes/node_shader_tex_image.c index 562884a9ed9..a7b0925d001 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_image.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_image.c @@ -51,35 +51,6 @@ static void node_shader_init_tex_image(bNodeTree *UNUSED(ntree), bNode* node, bN node->storage = tex; } -static void node_shader_exec_tex_image(void *data, bNode *node, bNodeStack **in, bNodeStack **out) -{ - Image *ima= (Image*)node->id; - ShaderCallData *scd= (ShaderCallData*)data; - NodeTexImage *tex= (NodeTexImage*)node->storage; - bNodeSocket *vecsock = node->inputs.first; - float vec[3]; - - if(vecsock->link) - nodestack_get_vec(vec, SOCK_VECTOR, in[0]); - else - copy_v3_v3(vec, scd->co); - - if(ima) { - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); - - if(ibuf) { - float rgb[4]; - - ibuf_sample(ibuf, vec[0], vec[1], 0.0f, 0.0f, rgb); - - if(tex->color_space == SHD_COLORSPACE_SRGB) - srgb_to_linearrgb_v3_v3(out[0]->vec, rgb); - else - copy_v3_v3(out[0]->vec, rgb); - } - } -} - static int node_shader_gpu_tex_image(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { Image *ima= (Image*)node->id; @@ -110,7 +81,7 @@ void register_node_type_sh_tex_image(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_tex_image); node_type_storage(&ntype, "NodeTexImage", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_tex_image); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_image); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_magic.c b/source/blender/nodes/shader/nodes/node_shader_tex_magic.c index 278f141f769..00327311da4 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_magic.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_magic.c @@ -29,77 +29,6 @@ #include "../node_shader_util.h" -static void magic(float rgb[3], float p[3], int n, float distortion) -{ - float x = sinf((p[0] + p[1] + p[2])*5.0f); - float y = cosf((-p[0] + p[1] - p[2])*5.0f); - float z = -cosf((-p[0] - p[1] + p[2])*5.0f); - - if(n > 0) { - x *= distortion; - y *= distortion; - z *= distortion; - y = -cosf(x-y+z); - y *= distortion; - - if(n > 1) { - x= cosf(x-y-z); - x *= distortion; - - if(n > 2) { - z= sinf(-x-y-z); - z *= distortion; - - if(n > 3) { - x= -cosf(-x+y-z); - x *= distortion; - - if(n > 4) { - y= -sinf(-x+y+z); - y *= distortion; - - if(n > 5) { - y= -cosf(-x+y+z); - y *= distortion; - - if(n > 6) { - x= cosf(x+y+z); - x *= distortion; - - if(n > 7) { - z= sinf(x+y-z); - z *= distortion; - - if(n > 8) { - x= -cosf(-x-y+z); - x *= distortion; - - if(n > 9) { - y= -sinf(x-y+z); - y *= distortion; - } - } - } - } - } - } - } - } - } - } - - if(distortion != 0.0f) { - distortion *= 2.0f; - x /= distortion; - y /= distortion; - z /= distortion; - } - - rgb[0]= 0.5f - x; - rgb[1]= 0.5f - y; - rgb[2]= 0.5f - z; -} - /* **************** OUTPUT ******************** */ static bNodeSocketTemplate sh_node_tex_magic_in[]= { @@ -125,24 +54,6 @@ static void node_shader_init_tex_magic(bNodeTree *UNUSED(ntree), bNode* node, bN node->storage = tex; } -static void node_shader_exec_tex_magic(void *data, bNode *node, bNodeStack **in, bNodeStack **out) -{ - ShaderCallData *scd= (ShaderCallData*)data; - NodeTexMagic *tex= (NodeTexMagic*)node->storage; - bNodeSocket *vecsock = node->inputs.first; - float vec[3], distortion; - - if(vecsock->link) - nodestack_get_vec(vec, SOCK_VECTOR, in[0]); - else - copy_v3_v3(vec, scd->co); - - nodestack_get_vec(&distortion, SOCK_FLOAT, in[1]); - - magic(out[0]->vec, vec, tex->depth, distortion); - out[1]->vec[0] = (out[0]->vec[0] + out[0]->vec[1] + out[0]->vec[2])*(1.0f/3.0f); -} - static int node_shader_gpu_tex_magic(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { NodeTexMagic *tex = (NodeTexMagic*)node->storage; @@ -167,7 +78,7 @@ void register_node_type_sh_tex_magic(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_tex_magic); node_type_storage(&ntype, "NodeTexMagic", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_tex_magic); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_magic); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c b/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c index cb5a8d7da0b..45fa6338bfa 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c @@ -28,191 +28,6 @@ */ #include "../node_shader_util.h" -#include "node_shader_noise.h" - -/* Musgrave fBm - * - * H: fractal increment parameter - * lacunarity: gap between successive frequencies - * detail: number of frequencies in the fBm - * - * from "Texturing and Modelling: A procedural approach" - */ - -static float noise_musgrave_fBm(float p[3], int basis, float H, float lacunarity, float detail) -{ - float rmd; - float value = 0.0f; - float pwr = 1.0f; - float pwHL = pow(lacunarity, -H); - int i; - - for(i = 0; i < (int)detail; i++) { - value += noise_basis(p, basis) * pwr; - pwr *= pwHL; - mul_v3_fl(p, lacunarity); - } - - rmd = detail - floor(detail); - if(rmd != 0.0f) - value += rmd * noise_basis(p, basis) * pwr; - - return value; -} - -/* Musgrave Multifractal - * - * H: highest fractal dimension - * lacunarity: gap between successive frequencies - * detail: number of frequencies in the fBm - */ - -static float noise_musgrave_multi_fractal(float p[3], int basis, float H, float lacunarity, float detail) -{ - float rmd; - float value = 1.0f; - float pwr = 1.0f; - float pwHL = pow(lacunarity, -H); - int i; - - for(i = 0; i < (int)detail; i++) { - value *= (pwr * noise_basis(p, basis) + 1.0f); - pwr *= pwHL; - mul_v3_fl(p, lacunarity); - } - - rmd = detail - floor(detail); - if(rmd != 0.0f) - value *= (rmd * pwr * noise_basis(p, basis) + 1.0f); /* correct? */ - - return value; -} - -/* Musgrave Heterogeneous Terrain - * - * H: fractal dimension of the roughest area - * lacunarity: gap between successive frequencies - * detail: number of frequencies in the fBm - * offset: raises the terrain from `sea level' - */ - -static float noise_musgrave_hetero_terrain(float p[3], int basis, float H, float lacunarity, float detail, float offset) -{ - float value, increment, rmd; - float pwHL = pow(lacunarity, -H); - float pwr = pwHL; - int i; - - /* first unscaled octave of function; later detail are scaled */ - value = offset + noise_basis(p, basis); - mul_v3_fl(p, lacunarity); - - for(i = 1; i < (int)detail; i++) { - increment = (noise_basis(p, basis) + offset) * pwr * value; - value += increment; - pwr *= pwHL; - mul_v3_fl(p, lacunarity); - } - - rmd = detail - floor(detail); - if(rmd != 0.0f) { - increment = (noise_basis(p, basis) + offset) * pwr * value; - value += rmd * increment; - } - - return value; -} - -/* Hybrid Additive/Multiplicative Multifractal Terrain - * - * H: fractal dimension of the roughest area - * lacunarity: gap between successive frequencies - * detail: number of frequencies in the fBm - * offset: raises the terrain from `sea level' - */ - -static float noise_musgrave_hybrid_multi_fractal(float p[3], int basis, float H, float lacunarity, float detail, float offset, float gain) -{ - float result, signal, weight, rmd; - float pwHL = pow(lacunarity, -H); - float pwr = pwHL; - int i; - - result = noise_basis(p, basis) + offset; - weight = gain * result; - mul_v3_fl(p, lacunarity); - - for(i = 1; (weight > 0.001f) && (i < (int)detail); i++) { - if(weight > 1.0f) - weight = 1.0f; - - signal = (noise_basis(p, basis) + offset) * pwr; - pwr *= pwHL; - result += weight * signal; - weight *= gain * signal; - mul_v3_fl(p, lacunarity); - } - - rmd = detail - floor(detail); - if(rmd != 0.0f) - result += rmd * ((noise_basis(p, basis) + offset) * pwr); - - return result; -} - -/* Ridged Multifractal Terrain - * - * H: fractal dimension of the roughest area - * lacunarity: gap between successive frequencies - * detail: number of frequencies in the fBm - * offset: raises the terrain from `sea level' - */ - -static float noise_musgrave_ridged_multi_fractal(float p[3], int basis, float H, float lacunarity, float detail, float offset, float gain) -{ - float result, signal, weight; - float pwHL = pow(lacunarity, -H); - float pwr = pwHL; - int i; - - signal = offset - fabsf(noise_basis(p, basis)); - signal *= signal; - result = signal; - weight = 1.0f; - - for(i = 1; i < (int)detail; i++) { - mul_v3_fl(p, lacunarity); - weight = CLAMPIS(signal * gain, 0.0f, 1.0f); - signal = offset - fabsf(noise_basis(p, basis)); - signal *= signal; - signal *= weight; - result += signal * pwr; - pwr *= pwHL; - } - - return result; -} - -static float musgrave(int type, float dimension, float lacunarity, float detail, float offset, float intensity, float gain, float scale, float vec[3]) -{ - float p[3]; - int basis = SHD_NOISE_PERLIN; - - mul_v3_v3fl(p, vec, scale); - - if(type == SHD_MUSGRAVE_MULTIFRACTAL) - return intensity*noise_musgrave_multi_fractal(p, basis, dimension, lacunarity, detail); - else if(type == SHD_MUSGRAVE_FBM) - return intensity*noise_musgrave_fBm(p, basis, dimension, lacunarity, detail); - else if(type == SHD_MUSGRAVE_HYBRID_MULTIFRACTAL) - return intensity*noise_musgrave_hybrid_multi_fractal(p, basis, dimension, lacunarity, detail, offset, gain); - else if(type == SHD_MUSGRAVE_RIDGED_MULTIFRACTAL) - return intensity*noise_musgrave_ridged_multi_fractal(p, basis, dimension, lacunarity, detail, offset, gain); - else if(type == SHD_MUSGRAVE_HETERO_TERRAIN) - return intensity*noise_musgrave_hetero_terrain(p, basis, dimension, lacunarity, detail, offset); - - return 0.0f; -} /* **************** MUSGRAVE ******************** */ @@ -243,32 +58,6 @@ static void node_shader_init_tex_musgrave(bNodeTree *UNUSED(ntree), bNode* node, node->storage = tex; } -static void node_shader_exec_tex_musgrave(void *data, bNode *node, bNodeStack **in, bNodeStack **out) -{ - ShaderCallData *scd= (ShaderCallData*)data; - NodeTexMusgrave *tex= (NodeTexMusgrave*)node->storage; - bNodeSocket *vecsock = node->inputs.first; - float vec[3], fac, scale, dimension, lacunarity, detail, offset, gain; - - if(vecsock->link) - nodestack_get_vec(vec, SOCK_VECTOR, in[0]); - else - copy_v3_v3(vec, scd->co); - - nodestack_get_vec(&scale, SOCK_FLOAT, in[1]); - nodestack_get_vec(&detail, SOCK_FLOAT, in[2]); - nodestack_get_vec(&dimension, SOCK_FLOAT, in[3]); - nodestack_get_vec(&lacunarity, SOCK_FLOAT, in[4]); - nodestack_get_vec(&offset, SOCK_FLOAT, in[5]); - nodestack_get_vec(&gain, SOCK_FLOAT, in[6]); - - fac= musgrave(tex->musgrave_type, dimension, lacunarity, detail, offset, 1.0f, gain, scale, vec); - out[0]->vec[0]= fac; - out[0]->vec[1]= fac; - out[0]->vec[2]= fac; - out[1]->vec[0]= fac; -} - static int node_shader_gpu_tex_musgrave(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { if(!in[0].link) @@ -290,7 +79,7 @@ void register_node_type_sh_tex_musgrave(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_tex_musgrave); node_type_storage(&ntype, "NodeTexMusgrave", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_tex_musgrave); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_musgrave); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_noise.c b/source/blender/nodes/shader/nodes/node_shader_tex_noise.c index 8cde640f8b2..6c27384a24d 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_noise.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_noise.c @@ -28,43 +28,6 @@ */ #include "../node_shader_util.h" -#include "node_shader_noise.h" - -static float noise_texture(float scale, float detail, float distortion, float vec[3], float color[3]) -{ - float p[3], pg[3], pb[3]; - int basis= SHD_NOISE_PERLIN; - - mul_v3_v3fl(p, vec, scale); - - if(distortion != 0.0f) { - float r[3], p_offset[3], p_noffset[3]; - float offset[3] = {13.5f, 13.5f, 13.5f}; - - add_v3_v3v3(p_offset, p, offset); - sub_v3_v3v3(p_noffset, p, offset); - - r[0] = noise_basis(p_offset, basis) * distortion; - r[1] = noise_basis(p, basis) * distortion; - r[2] = noise_basis(p_noffset, basis) * distortion; - - add_v3_v3(p, r); - } - - pg[0]= p[1]; - pg[1]= p[0]; - pg[2]= p[2]; - - pb[0]= p[1]; - pb[1]= p[2]; - pb[2]= p[0]; - - color[0]= noise_turbulence(p, basis, detail, 0); - color[1]= noise_turbulence(pg, basis, detail, 0); - color[2]= noise_turbulence(pb, basis, detail, 0); - - return color[0]; -} /* **************** NOISE ******************** */ @@ -91,24 +54,6 @@ static void node_shader_init_tex_noise(bNodeTree *UNUSED(ntree), bNode* node, bN node->storage = tex; } -static void node_shader_exec_tex_noise(void *data, bNode *node, bNodeStack **in, bNodeStack **out) -{ - ShaderCallData *scd= (ShaderCallData*)data; - bNodeSocket *vecsock = node->inputs.first; - float vec[3], scale, detail, distortion; - - if(vecsock->link) - nodestack_get_vec(vec, SOCK_VECTOR, in[0]); - else - copy_v3_v3(vec, scd->co); - - nodestack_get_vec(&scale, SOCK_FLOAT, in[1]); - nodestack_get_vec(&detail, SOCK_FLOAT, in[2]); - nodestack_get_vec(&distortion, SOCK_FLOAT, in[3]); - - out[1]->vec[0]= noise_texture(scale, detail, distortion, vec, out[0]->vec); -} - static int node_shader_gpu_tex_noise(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { if(!in[0].link) @@ -130,7 +75,7 @@ void register_node_type_sh_tex_noise(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_tex_noise); node_type_storage(&ntype, "NodeTexNoise", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_tex_noise); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_noise); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_sky.c b/source/blender/nodes/shader/nodes/node_shader_tex_sky.c index 6fb1f4f51cf..3ab5e61196c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_sky.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_sky.c @@ -54,10 +54,6 @@ static void node_shader_init_tex_sky(bNodeTree *UNUSED(ntree), bNode* node, bNod node->storage = tex; } -static void node_shader_exec_tex_sky(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_tex_sky(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { if(!in[0].link) @@ -79,7 +75,7 @@ void register_node_type_sh_tex_sky(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_tex_sky); node_type_storage(&ntype, "NodeTexSky", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_tex_sky); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_sky); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c b/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c index 4045a25de88..c32063c8b2d 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c @@ -28,31 +28,6 @@ */ #include "../node_shader_util.h" -#include "node_shader_noise.h" - -static float voronoi_tex(int coloring, float scale, float vec[3], float color[3]) -{ - float da[4]; - float pa[4][3]; - float fac; - float p[3]; - - /* compute distance and point coordinate of 4 nearest neighbours */ - mul_v3_v3fl(p, vec, scale); - voronoi_generic(p, SHD_VORONOI_DISTANCE_SQUARED, 1.0f, da, pa); - - /* output */ - if(coloring == SHD_VORONOI_INTENSITY) { - fac = fabsf(da[0]); - color[0]= color[1]= color[2]= fac; - } - else { - cellnoise_color(color, pa[0]); - fac= (color[0] + color[1] + color[2])*(1.0f/3.0f); - } - - return fac; -} /* **************** VORONOI ******************** */ @@ -78,23 +53,6 @@ static void node_shader_init_tex_voronoi(bNodeTree *UNUSED(ntree), bNode* node, node->storage = tex; } -static void node_shader_exec_tex_voronoi(void *data, bNode *node, bNodeStack **in, bNodeStack **out) -{ - ShaderCallData *scd= (ShaderCallData*)data; - NodeTexVoronoi *tex= (NodeTexVoronoi*)node->storage; - bNodeSocket *vecsock = node->inputs.first; - float vec[3], scale; - - if(vecsock->link) - nodestack_get_vec(vec, SOCK_VECTOR, in[0]); - else - copy_v3_v3(vec, scd->co); - - nodestack_get_vec(&scale, SOCK_FLOAT, in[1]); - - out[1]->vec[0]= voronoi_tex(tex->coloring, scale, vec, out[0]->vec); -} - static int node_shader_gpu_tex_voronoi(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { if(!in[0].link) @@ -116,7 +74,7 @@ void register_node_type_sh_tex_voronoi(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_tex_voronoi); node_type_storage(&ntype, "NodeTexVoronoi", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_tex_voronoi); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_voronoi); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_wave.c b/source/blender/nodes/shader/nodes/node_shader_tex_wave.c index a911f615b79..3574975c7b8 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_wave.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_wave.c @@ -28,27 +28,6 @@ */ #include "../node_shader_util.h" -#include "node_shader_noise.h" - -static float wave(float vec[3], float scale, int type, float distortion, float detail) -{ - float p[3], w, n; - - mul_v3_v3fl(p, vec, scale); - - if(type == SHD_WAVE_BANDS) - n= (p[0] + p[1] + p[2])*10.0f; - else /* if(type == SHD_WAVE_RINGS) */ - n= len_v3(p)*20.0f; - - w = noise_wave(SHD_WAVE_SINE, n); - - /* XXX size compare! */ - if(distortion != 0.0f) - w += distortion * noise_turbulence(p, SHD_NOISE_PERLIN, detail, 0); - - return w; -} /* **************** WAVE ******************** */ @@ -77,29 +56,6 @@ static void node_shader_init_tex_wave(bNodeTree *UNUSED(ntree), bNode* node, bNo node->storage = tex; } -static void node_shader_exec_tex_wave(void *data, bNode *node, bNodeStack **in, bNodeStack **out) -{ - ShaderCallData *scd= (ShaderCallData*)data; - NodeTexWave *tex= (NodeTexWave*)node->storage; - bNodeSocket *vecsock = node->inputs.first; - float vec[3], scale, detail, distortion, fac; - - if(vecsock->link) - nodestack_get_vec(vec, SOCK_VECTOR, in[0]); - else - copy_v3_v3(vec, scd->co); - - nodestack_get_vec(&scale, SOCK_FLOAT, in[1]); - nodestack_get_vec(&detail, SOCK_FLOAT, in[1]); - nodestack_get_vec(&distortion, SOCK_FLOAT, in[2]); - - fac= wave(vec, scale, tex->wave_type, distortion, detail); - out[0]->vec[0]= fac; - out[0]->vec[1]= fac; - out[0]->vec[2]= fac; - out[1]->vec[0]= fac; -} - static int node_shader_gpu_tex_wave(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { if(!in[0].link) @@ -121,7 +77,7 @@ void register_node_type_sh_tex_wave(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, node_shader_init_tex_wave); node_type_storage(&ntype, "NodeTexWave", node_free_standard_storage, node_copy_standard_storage); - node_type_exec(&ntype, node_shader_exec_tex_wave); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_tex_wave); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_texture.c b/source/blender/nodes/shader/nodes/node_shader_texture.c index 42460e141e2..dbf9fdbdb7e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_texture.c +++ b/source/blender/nodes/shader/nodes/node_shader_texture.c @@ -36,7 +36,7 @@ /* **************** TEXTURE ******************** */ static bNodeSocketTemplate sh_node_texture_in[]= { - { SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE}, /* no limit */ + { SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, /* no limit */ { -1, 0, "" } }; static bNodeSocketTemplate sh_node_texture_out[]= { diff --git a/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c b/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c index bc27478f309..9f4c1447f65 100644 --- a/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c +++ b/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c @@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_volume_isotropic_out[]= { { -1, 0, "" } }; -static void node_shader_exec_volume_isotropic(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_volume_isotropic(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out)) { return 0; @@ -62,7 +58,7 @@ void register_node_type_sh_volume_isotropic(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_volume_isotropic); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_volume_isotropic); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c b/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c index d931736d15a..910933bb5fa 100644 --- a/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c +++ b/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c @@ -42,10 +42,6 @@ static bNodeSocketTemplate sh_node_volume_transparent_out[]= { { -1, 0, "" } }; -static void node_shader_exec_volume_transparent(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **UNUSED(in), bNodeStack **UNUSED(out)) -{ -} - static int node_shader_gpu_volume_transparent(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out)) { return 0; @@ -62,7 +58,7 @@ void register_node_type_sh_volume_transparent(ListBase *lb) node_type_size(&ntype, 150, 60, 200); node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); - node_type_exec(&ntype, node_shader_exec_volume_transparent); + node_type_exec(&ntype, NULL); node_type_gpu(&ntype, node_shader_gpu_volume_transparent); nodeRegisterType(lb, &ntype); diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c index 5e5d44540dc..84bb53e2215 100644 --- a/source/blender/nodes/texture/node_texture_tree.c +++ b/source/blender/nodes/texture/node_texture_tree.c @@ -62,6 +62,19 @@ static void foreach_nodetree(Main *main, void *calldata, bNodeTreeCallback func) } } +static void foreach_nodeclass(Scene *UNUSED(scene), void *calldata, bNodeClassCallback func) +{ + func(calldata, NODE_CLASS_INPUT, "Input"); + func(calldata, NODE_CLASS_OUTPUT, "Output"); + func(calldata, NODE_CLASS_OP_COLOR, "Color"); + func(calldata, NODE_CLASS_PATTERN, "Patterns"); + func(calldata, NODE_CLASS_TEXTURE, "Textures"); + func(calldata, NODE_CLASS_CONVERTOR, "Convertor"); + func(calldata, NODE_CLASS_DISTORT, "Distort"); + func(calldata, NODE_CLASS_GROUP, "Group"); + func(calldata, NODE_CLASS_LAYOUT, "Layout"); +} + static void local_sync(bNodeTree *localtree, bNodeTree *ntree) { bNode *lnode; @@ -91,6 +104,7 @@ bNodeTreeType ntreeType_Texture = { /* free_cache */ NULL, /* free_node_cache */ NULL, /* foreach_nodetree */ foreach_nodetree, + /* foreach_nodeclass */ foreach_nodeclass, /* localize */ NULL, /* local_sync */ local_sync, /* local_merge */ NULL, diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c index 7434425d24b..0984c9e784f 100644 --- a/source/blender/render/intern/source/occlusion.c +++ b/source/blender/render/intern/source/occlusion.c @@ -321,7 +321,7 @@ static void occ_face(const OccFace *face, float co[3], float normal[3], float *a if(co) { if(vlr->v4) - interp_v3_v3v3(co, vlr->v1->co, vlr->v3->co, 0.5f); + mid_v3_v3v3(co, vlr->v1->co, vlr->v3->co); else cent_tri_v3(co, vlr->v1->co, vlr->v2->co, vlr->v3->co); @@ -1623,7 +1623,7 @@ static void *exec_strandsurface_sample(void *data) if(face[3]) { co4= mesh->co[face[3]]; - interp_v3_v3v3(co, co1, co3, 0.5f); + mid_v3_v3v3(co, co1, co3); normal_quad_v3( n,co1, co2, co3, co4); } else { diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index cfeb2709ae3..bf31f82483e 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -66,6 +66,7 @@ struct MCol; struct MenuType; struct Mesh; struct ModifierData; +struct MovieClip; struct MultiresModifierData; struct NodeBlurData; struct Nurb; @@ -80,6 +81,7 @@ struct ScrArea; struct SculptSession; struct ShadeInput; struct ShadeResult; +struct SpaceClip; struct SpaceImage; struct SpaceNode; struct Tex;