diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-01-19 09:21:15 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-01-19 09:21:15 +0300 |
commit | c850320b35863edc35f0b0acd1c75ed48bb71542 (patch) | |
tree | c3de2f92410308c0ece880a901864727b5731fc3 | |
parent | 4d3d002b653c5b28320ada6b9d7f1e8c80bf944c (diff) | |
parent | 7a24e0d175827824d139f7627de2a5af34d687fb (diff) |
Merge branch 'master' into blender2.8
19 files changed, 66 insertions, 45 deletions
diff --git a/intern/cycles/kernel/kernel_path_state.h b/intern/cycles/kernel/kernel_path_state.h index 505eed117e0..2ae866bb051 100644 --- a/intern/cycles/kernel/kernel_path_state.h +++ b/intern/cycles/kernel/kernel_path_state.h @@ -202,7 +202,7 @@ ccl_device_inline float path_state_continuation_probability(KernelGlobals *kg, #endif } - /* Probalistic termination: use sqrt() to roughly match typical view + /* Probabilistic termination: use sqrt() to roughly match typical view * transform and do path termination a bit later on average. */ return min(sqrtf(max3(fabs(throughput)) * state->branch_factor), 1.0f); } diff --git a/intern/cycles/kernel/kernel_random.h b/intern/cycles/kernel/kernel_random.h index 7a96806edac..efb9048beb8 100644 --- a/intern/cycles/kernel/kernel_random.h +++ b/intern/cycles/kernel/kernel_random.h @@ -20,7 +20,7 @@ CCL_NAMESPACE_BEGIN /* Pseudo random numbers, uncomment this for debugging correlations. Only run - * this single threaded on a CPU for repeatable resutls. */ + * this single threaded on a CPU for repeatable results. */ //#define __DEBUG_CORRELATION__ diff --git a/intern/cycles/render/scene.cpp b/intern/cycles/render/scene.cpp index 09a69265de8..e34601a36a9 100644 --- a/intern/cycles/render/scene.cpp +++ b/intern/cycles/render/scene.cpp @@ -214,6 +214,11 @@ void Scene::device_update(Device *device_, Progress& progress) if(progress.get_cancel() || device->have_error()) return; + progress.set_status("Updating Particle Systems"); + particle_system_manager->device_update(device, &dscene, this, progress); + + if(progress.get_cancel() || device->have_error()) return; + progress.set_status("Updating Meshes"); mesh_manager->device_update(device, &dscene, this, progress); @@ -249,11 +254,6 @@ void Scene::device_update(Device *device_, Progress& progress) if(progress.get_cancel() || device->have_error()) return; - progress.set_status("Updating Particle Systems"); - particle_system_manager->device_update(device, &dscene, this, progress); - - if(progress.get_cancel() || device->have_error()) return; - progress.set_status("Updating Integrator"); integrator->device_update(device, &dscene, this); diff --git a/source/blender/blenkernel/BKE_world.h b/source/blender/blenkernel/BKE_world.h index b69c14535c6..b45d7a7e6ec 100644 --- a/source/blender/blenkernel/BKE_world.h +++ b/source/blender/blenkernel/BKE_world.h @@ -38,7 +38,7 @@ struct World; void BKE_world_free(struct World *sc); void BKE_world_init(struct World *wrld); -struct World *BKE_world_add(struct Main *bmian, const char *name); +struct World *BKE_world_add(struct Main *bmain, const char *name); void BKE_world_copy_data(struct Main *bmain, struct World *wrld_dst, const struct World *wrld_src, const int flag); struct World *BKE_world_copy(struct Main *bmain, const struct World *wrld); struct World *BKE_world_localize(struct World *wrld); diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 380ab6fcc1e..2a27bad0fb5 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -2628,6 +2628,9 @@ void BKE_curve_bevelList_free(ListBase *bev) if (bl->segbevcount != NULL) { MEM_freeN(bl->segbevcount); } + if (bl->bevpoints != NULL) { + MEM_freeN(bl->bevpoints); + } MEM_freeN(bl); } diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index b204a448e7f..5e2cd89a750 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -2803,7 +2803,9 @@ void psys_cache_edit_paths(const EvaluationContext *eval_ctx, Scene *scene, Obje /* frs_sec = (psys || edit->pid.flag & PTCACHE_VEL_PER_SEC) ? 25.0f : 1.0f; */ /* UNUSED */ - if (pset->brushtype == PE_BRUSH_WEIGHT) { + const bool use_weight = (pset->brushtype == PE_BRUSH_WEIGHT) && (psys != NULL) && (psys->particles != NULL); + + if (use_weight) { ; /* use weight painting colors now... */ } else { @@ -2833,10 +2835,11 @@ void psys_cache_edit_paths(const EvaluationContext *eval_ctx, Scene *scene, Obje /* should init_particle_interpolation set this ? */ - if (pset->brushtype == PE_BRUSH_WEIGHT) { + if (use_weight) { pind.hkey[0] = NULL; /* pa != NULL since the weight brush is only available for hair */ - pind.hkey[1] = pa->hair; + pind.hkey[0] = pa->hair; + pind.hkey[1] = pa->hair + 1; } @@ -2893,13 +2896,27 @@ void psys_cache_edit_paths(const EvaluationContext *eval_ctx, Scene *scene, Obje } /* selection coloring in edit mode */ - if (pset->brushtype == PE_BRUSH_WEIGHT) { - float t2; - + if (use_weight) { if (k == 0) { weight_to_rgb(ca->col, pind.hkey[1]->weight); } else { + /* warning: copied from 'do_particle_interpolation' (without 'mvert' array stepping) */ + float real_t; + if (result.time < 0.0f) { + real_t = -result.time; + } + else { + real_t = pind.hkey[0]->time + t * (pind.hkey[0][pa->totkey - 1].time - pind.hkey[0]->time); + } + + while (pind.hkey[1]->time < real_t) { + pind.hkey[1]++; + } + pind.hkey[0] = pind.hkey[1] - 1; + /* end copy */ + + float w1[3], w2[3]; keytime = (t - (*pind.ekey[0]->time)) / ((*pind.ekey[1]->time) - (*pind.ekey[0]->time)); @@ -2908,13 +2925,6 @@ void psys_cache_edit_paths(const EvaluationContext *eval_ctx, Scene *scene, Obje interp_v3_v3v3(ca->col, w1, w2, keytime); } - - /* at the moment this is only used for weight painting. - * will need to move out of this check if its used elsewhere. */ - t2 = birthtime + ((float)k / (float)segments) * (dietime - birthtime); - - while (pind.hkey[1]->time < t2) pind.hkey[1]++; - pind.hkey[0] = pind.hkey[1] - 1; } else { if ((ekey + (pind.ekey[0] - point->keys))->flag & PEK_SELECT) { diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index a47ff451a6b..16e9844241d 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -1172,6 +1172,10 @@ Scene *BKE_scene_find_from_collection(const Main *bmain, const SceneCollection * #ifdef DURIAN_CAMERA_SWITCH Object *BKE_scene_camera_switch_find(Scene *scene) { + if (scene->r.mode & R_NO_CAMERA_SWITCH) { + return NULL; + } + TimeMarker *m; int cfra = scene->r.cfra; int frame = -(MAXFRAME + 1); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index ee11a9806f3..1b8939db185 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3203,11 +3203,12 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq int scemode; int cfra; float subframe; + #ifdef DURIAN_CAMERA_SWITCH - ListBase markers; + int mode; #endif } orig_data; - + /* Old info: * Hack! This function can be called from do_render_seq(), in that case * the seq->scene can already have a Render initialized with same name, @@ -3271,7 +3272,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq orig_data.cfra = scene->r.cfra; orig_data.subframe = scene->r.subframe; #ifdef DURIAN_CAMERA_SWITCH - orig_data.markers = scene->markers; + orig_data.mode = scene->r.mode; #endif BKE_scene_frame_set(scene, frame); @@ -3294,10 +3295,10 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq /* prevent eternal loop */ scene->r.scemode &= ~R_DOSEQ; - + #ifdef DURIAN_CAMERA_SWITCH /* stooping to new low's in hackyness :( */ - BLI_listbase_clear(&scene->markers); + scene->r.mode |= R_NO_CAMERA_SWITCH; #endif is_frame_update = (orig_data.cfra != scene->r.cfra) || (orig_data.subframe != scene->r.subframe); @@ -3426,7 +3427,7 @@ finally: #ifdef DURIAN_CAMERA_SWITCH /* stooping to new low's in hackyness :( */ - scene->markers = orig_data.markers; + scene->r.mode &= ~(orig_data.mode & R_NO_CAMERA_SWITCH); #endif return ibuf; diff --git a/source/blender/blenlib/intern/bitmap_draw_2d.c b/source/blender/blenlib/intern/bitmap_draw_2d.c index e77e8cf40d0..fefd4b4587c 100644 --- a/source/blender/blenlib/intern/bitmap_draw_2d.c +++ b/source/blender/blenlib/intern/bitmap_draw_2d.c @@ -162,7 +162,7 @@ static int draw_poly_v2i_n__span_y_sort(const void *a_p, const void *b_p, void * } /** - * Draws a filled polyon with support for self intersections. + * Draws a filled polygon with support for self intersections. * * \param callback: Takes the x, y coords and x-span (\a x_end is not inclusive), * note that \a x_end will always be greater than \a x, so we can use: diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 1cd82a8cd49..87f8b568023 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10316,7 +10316,7 @@ static void give_base_to_objects( if (flag & FILE_AUTOSELECT) { /* Note that link_object_postprocess() already checks for FILE_AUTOSELECT flag, - * but it will miss objects from non-instanciated groups... */ + * but it will miss objects from non-instantiated groups... */ if (base->flag & BASE_SELECTABLED) { base->flag |= BASE_SELECTED; BKE_scene_object_base_flag_sync_from_base(base); diff --git a/source/blender/bmesh/tools/bmesh_bevel.c b/source/blender/bmesh/tools/bmesh_bevel.c index a1fb13ecdfb..99384be0299 100644 --- a/source/blender/bmesh/tools/bmesh_bevel.c +++ b/source/blender/bmesh/tools/bmesh_bevel.c @@ -3198,7 +3198,7 @@ static void bevel_build_rings(BevelParams *bp, BMesh *bm, BevVert *bv) /* If we make a poly out of verts around bv, snapping to rep frep, will uv poly have zero area? * The uv poly is made by snapping all outside-of-frep vertices to the closest edge in frep. - * Assume that this funciton is called when the only inside-of-frep vertex is vm->boundstart. + * Assume that this function is called when the only inside-of-frep vertex is vm->boundstart. * The poly will have zero area if the distance of that first vertex to some edge e is zero, and all * the other vertices snap to e or snap to an edge at a point that is essentially on e too. */ static bool is_bad_uv_poly(BevVert *bv, BMFace *frep) diff --git a/source/blender/editors/armature/pose_select.c b/source/blender/editors/armature/pose_select.c index f808f09f1f4..9bc678cd9e6 100644 --- a/source/blender/editors/armature/pose_select.c +++ b/source/blender/editors/armature/pose_select.c @@ -156,7 +156,7 @@ bool ED_do_pose_selectbuffer( * always give predictable behavior in weight paint mode - campbell */ if ((ob_act == NULL) || ((ob_act != ob) && (ob_act->mode & OB_MODE_WEIGHT_PAINT) == 0)) { /* when we are entering into posemode via toggle-select, - * frop another active object - always select the bone. */ + * from another active object - always select the bone. */ if (!extend && !deselect && toggle) { /* re-select below */ nearBone->flag &= ~BONE_SELECTED; diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 1d6aefcb48c..2e3091268a9 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -721,7 +721,7 @@ void ED_preview_draw(const bContext *C, void *idp, void *parentp, void *slotp, r if (ok) *rect = newrect; - /* start a new preview render job if signalled through sbuts->preview, + /* start a new preview render job if signaled through sbuts->preview, * if no render result was found and no preview render job is running, * or if the job is running and the size of preview changed */ if ((sbuts != NULL && sbuts->preview) || diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 5a69deb82a7..2cc5c7f8d68 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -1152,9 +1152,10 @@ static int image_cmp_frame(const void *a, const void *b) } /** - * \brief Return the start (offset) and the length of the sequence of continuous frames in the list of frames - * \param frames [in] the list of frame numbers, as a side-effect the list is sorted - * \param ofs [out] offest, the first frame number in the sequence + * Return the start (offset) and the length of the sequence of continuous frames in the list of frames + * + * \param frames: [in] the list of frame numbers, as a side-effect the list is sorted. + * \param ofs: [out] offset the first frame number in the sequence. * \return the number of contiguous frames in the sequence */ static int image_sequence_get_len(ListBase *frames, int *ofs) diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c index fcbb0986e09..e13177a862a 100644 --- a/source/blender/editors/space_outliner/outliner_select.c +++ b/source/blender/editors/space_outliner/outliner_select.c @@ -97,8 +97,8 @@ static eOLDrawState tree_element_active_renderlayer( /** * Select object tree: - * CTRL+LMB: Select/Deselect object and all cildren - * CTRL+SHIFT+LMB: Add/Remove object and all children + * CTRL+LMB: Select/Deselect object and all children. + * CTRL+SHIFT+LMB: Add/Remove object and all children. */ static void do_outliner_object_select_recursive(ViewLayer *view_layer, Object *ob_parent, bool select) { diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 4d910588975..671ad1bc954 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -1732,7 +1732,8 @@ typedef struct Scene { #define R_BORDER 0x0200 #define R_PANORAMA 0x0400 /* deprecated as scene option, still used in renderer */ #define R_CROP 0x0800 -/*#define R_COSMO 0x1000 deprecated */ + /* Disable camera switching: runtime (DURIAN_CAMERA_SWITCH) */ +#define R_NO_CAMERA_SWITCH 0x1000 #define R_ODDFIELD 0x2000 #define R_MBLUR 0x4000 /* unified was here */ diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 86d65c6e7db..b8dbc69f352 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -792,7 +792,7 @@ FunctionRNA *RNA_struct_find_function(StructRNA *srna, const char *identifier) } return NULL; - /* funcitonal but slow */ + /* functional but slow */ #else PointerRNA tptr; PropertyRNA *iterprop; diff --git a/source/blender/python/mathutils/mathutils_Matrix.c b/source/blender/python/mathutils/mathutils_Matrix.c index 2578b19d5ec..924e46a8c00 100644 --- a/source/blender/python/mathutils/mathutils_Matrix.c +++ b/source/blender/python/mathutils/mathutils_Matrix.c @@ -1641,9 +1641,9 @@ static PyObject *Matrix_rotate(MatrixObject *self, PyObject *value) PyDoc_STRVAR(Matrix_decompose_doc, ".. method:: decompose()\n" "\n" -" Return the translation, rotation and scale components of this matrix.\n" +" Return the translation, rotation, and scale components of this matrix.\n" "\n" -" :return: trans, rot, scale triple.\n" +" :return: tuple of translation, rotation, and scale\n" " :rtype: (:class:`Vector`, :class:`Quaternion`, :class:`Vector`)" ); static PyObject *Matrix_decompose(MatrixObject *self) @@ -1680,7 +1680,8 @@ static PyObject *Matrix_decompose(MatrixObject *self) PyDoc_STRVAR(Matrix_lerp_doc, ".. function:: lerp(other, factor)\n" "\n" -" Returns the interpolation of two matrices.\n" +" Returns the interpolation of two matrices. Uses polar decomposition, see" +" \"Matrix Animation and Polar Decomposition\", Shoemake and Duff, 1992.\n" "\n" " :arg other: value to interpolate with.\n" " :type other: :class:`Matrix`\n" diff --git a/tests/gtests/blenlib/BLI_string_utf8_test.cc b/tests/gtests/blenlib/BLI_string_utf8_test.cc index 95d73b4242f..30dbccc97fe 100644 --- a/tests/gtests/blenlib/BLI_string_utf8_test.cc +++ b/tests/gtests/blenlib/BLI_string_utf8_test.cc @@ -89,7 +89,7 @@ const char *utf8_invalid_tests[][3] = { // 3 Malformed sequences // 3.1 Unexpected continuation bytes -// Each unexpected continuation byte should be separately signalled as a malformed sequence of its own. +// Each unexpected continuation byte should be separately signaled as a malformed sequence of its own. {"3.1.1 First continuation byte 0x80: \"\x80\" |", "3.1.1 First continuation byte 0x80: \"\" |", "\x01"}, {"3.1.2 Last continuation byte 0xbf: \"\xbf\" |", @@ -130,7 +130,7 @@ const char *utf8_invalid_tests[][3] = { {"3.2.4 \"\xfc \xfd \" |", "3.2.4 \" \" |", "\x02"}, // 3.3 Sequences with last continuation byte missing -// All bytes of an incomplete sequence should be signalled as a single malformed sequence, +// All bytes of an incomplete sequence should be signaled as a single malformed sequence, // i.e., you should see only a single replacement character in each of the next 10 tests. // (Characters as in section 2) {"3.3.1 2-byte sequence with last byte missing (U+0000): \"\xc0\" |", @@ -154,7 +154,7 @@ const char *utf8_invalid_tests[][3] = { {"3.3.10 6-byte sequence with last byte missing (U-7FFFFFFF): \"\xfd\xbf\xbf\xbf\xbf\" |", "3.3.10 6-byte sequence with last byte missing (U-7FFFFFFF): \"\" |", "\x05"}, // 3.4 Concatenation of incomplete sequences -// All the 10 sequences of 3.3 concatenated, you should see 10 malformed sequences being signalled: +// All the 10 sequences of 3.3 concatenated, you should see 10 malformed sequences being signaled: {"3.4 \"\xc0\xe0\x80\xf0\x80\x80\xf8\x80\x80\x80\xfc\x80\x80\x80\x80" "\xdf\xef\xbf\xf7\xbf\xbf\xfb\xbf\xbf\xbf\xfd\xbf\xbf\xbf\xbf\"" " |", |