Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Wed, 24 May 2017 11:16:54 +0000 (21:16 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 24 May 2017 11:17:05 +0000 (21:17 +1000)
CMakeLists.txt
intern/cycles/kernel/svm/svm_closure.h
source/blender/alembic/intern/abc_archive.cc
source/blender/alembic/intern/abc_curves.cc
source/blender/alembic/intern/abc_exporter.cc
source/blender/alembic/intern/abc_mesh.cc
source/blender/alembic/intern/abc_points.cc
source/blender/blenkernel/intern/DerivedMesh.c

index ab38d5222ac3f2a82ddca5b476c1025e2b8322c5..22d46391dab6acc5c7084e1124d57497ced1ca34 100644 (file)
@@ -229,7 +229,7 @@ mark_as_advanced(BUILDINFO_OVERRIDE_TIME)
 
 option(WITH_IK_ITASC      "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
 option(WITH_IK_SOLVER     "Enable Legacy IK solver (only disable for development)" ON)
-option(WITH_FFTW3         "Enable FFTW3 support (Used for smoke and audio effects)" ${_init_FFTW3})
+option(WITH_FFTW3         "Enable FFTW3 support (Used for smoke, ocean sim, and audio effects)" ${_init_FFTW3})
 option(WITH_BULLET        "Enable Bullet (Physics Engine)" ON)
 option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" )
 mark_as_advanced(WITH_SYSTEM_BULLET)
index 0e1aedf2918f9d584761eb1153e8a12ce045b624..4a0bbb25c1d08924b747807abe4e29ad2796415d 100644 (file)
@@ -150,6 +150,11 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
                         * getting lower and lower */
                        if(path_flag & PATH_RAY_DIFFUSE_ANCESTOR) {
                                subsurface = 0.0f;
+
+                               /* need to set the base color in this case such that the
+                                * rays get the correctly mixed color after transmitting
+                                * the object */
+                               base_color = albedo;
                        }
 
                        /* diffuse */
index 194a8224c62b8be1d3e632569dc556e6e9019da4..ff14cf15124a41947081ebf8864ff40ffccbdeca 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "abc_archive.h"
 
+#include "BKE_blender_version.h"
+
 #ifdef WIN32
 #  include "utfconv.h"
 #endif
@@ -143,6 +145,7 @@ static OArchive create_archive(std::ostream *ostream,
 {
        md.set(Alembic::Abc::kApplicationNameKey, "Blender");
        md.set(Alembic::Abc::kUserDescriptionKey, scene_name);
+       md.set("blender_version", versionstr);
 
        time_t raw_time;
        time(&raw_time);
index f54abd6563ece5009c0591252dab58399c2c7683..f73fe957fea8a7a278ed4f75a1f8998a6c62d537 100644 (file)
@@ -220,7 +220,7 @@ bool AbcCurveReader::accepts_object_type(const Alembic::AbcCoreAbstract::ObjectH
                return false;
        }
 
-       if (ob->type != OB_EMPTY) {
+       if (ob->type != OB_CURVE) {
                *err_str = "Object type mismatch, Alembic object path points to Curves.";
                return false;
        }
index 2c2d0b598e92b8683d0ca3540bbdb7d4b2d9952b..d974509d0aebe4dbace191db9940d9efb6bb5389 100644 (file)
@@ -585,7 +585,7 @@ void AbcExporter::createShapeWriter(Base *ob_base, Object *dupliObParent)
                {
                        Mesh *me = static_cast<Mesh *>(ob->data);
 
-                       if (!me || me->totvert == 0) {
+                       if (!me) {
                                return;
                        }
 
index 15a72cf4453abc94cb6ce549f0b143144b8509f6..e398ebf0afbe4c2a95a5369babc64d4029461fac 100644 (file)
@@ -354,7 +354,7 @@ bool AbcMeshWriter::isAnimated() const
                md = md->next;
        }
 
-       return false;
+       return me->adt != NULL;
 }
 
 void AbcMeshWriter::do_write()
index 3a2ca8a1b47adf3a0f7a931d6ddd233e6c09215b..80567cd6bf0ac81b43629827322a385717880698 100644 (file)
@@ -160,7 +160,7 @@ bool AbcPointsReader::accepts_object_type(const Alembic::AbcCoreAbstract::Object
                return false;
        }
 
-       if (ob->type != OB_EMPTY) {
+       if (ob->type != OB_MESH) {
                *err_str = "Object type mismatch, Alembic object path points to Points.";
                return false;
        }
index 454c1586ef36d4d9ab68cbfc0a313718fd87f68e..150a919bf6b794496d38870c73e7746b574b31d9 100644 (file)
@@ -3461,7 +3461,7 @@ void DM_calc_loop_tangents(
                                 * have to check this is valid...
                                 */
                                mesh2tangent->precomputedLoopNormals = dm->getLoopDataArray(dm, CD_NORMAL);
-                               mesh2tangent->precomputedFaceNormals = CustomData_get_layer(&dm->faceData, CD_NORMAL);
+                               mesh2tangent->precomputedFaceNormals = CustomData_get_layer(&dm->polyData, CD_NORMAL);
 
                                mesh2tangent->orco = NULL;
                                mesh2tangent->mloopuv = CustomData_get_layer_named(&dm->loopData, CD_MLOOPUV, dm->loopData.layers[index].name);