diff options
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/library_query.c | 14 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/sequencer.c | 8 | ||||
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 31 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.h | 6 | ||||
-rw-r--r-- | source/blender/editors/space_file/fsmenu.c | 3 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.c | 3 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_material.c | 2 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_material.glsl | 2 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_normal_edit.c | 84 |
9 files changed, 89 insertions, 64 deletions
diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c index 772ba2d9c80..66aa8e3f498 100644 --- a/source/blender/blenkernel/intern/library_query.c +++ b/source/blender/blenkernel/intern/library_query.c @@ -368,6 +368,10 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u CALLBACK_INVOKE(base->object, IDWALK_USER); } + for (TimeMarker *marker = scene->markers.first; marker; marker = marker->next) { + CALLBACK_INVOKE(marker->camera, IDWALK_NOP); + } + if (toolsett) { CALLBACK_INVOKE(toolsett->skgen_template, IDWALK_NOP); @@ -776,6 +780,15 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u } break; } + case ID_AC: + { + bAction *act = (bAction *) id; + + for (TimeMarker *marker = act->markers.first; marker; marker = marker->next) { + CALLBACK_INVOKE(marker->camera, IDWALK_NOP); + } + break; + } /* Nothing needed for those... */ case ID_IM: @@ -783,7 +796,6 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u case ID_TXT: case ID_SO: case ID_AR: - case ID_AC: case ID_GD: case ID_WM: case ID_PAL: diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index c240aa27343..65d751a8a72 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3447,7 +3447,13 @@ static ImBuf *do_render_strip_uncached( state->scene_parents = &scene_parent; /* end check */ - ibuf = do_render_strip_seqbase(context, state, seq, nr, use_preprocess); + /* Use the Scene Seq's scene for the context when rendering the scene's sequences + * (necessary for Multicam Selector among others). + */ + SeqRenderData local_context = *context; + local_context.scene = seq->scene; + + ibuf = do_render_strip_seqbase(&local_context, state, seq, nr, use_preprocess); /* step back in the list */ state->scene_parents = state->scene_parents->next; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index a476b18eaac..4e1eb41c7cf 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2509,6 +2509,12 @@ static void lib_link_action(FileData *fd, Main *main) // >>> XXX deprecated - old animation system lib_link_fcurves(fd, &act->id, &act->curves); + + for (TimeMarker *marker = act->markers.first; marker; marker = marker->next) { + if (marker->camera) { + marker->camera = newlibadr(fd, act->id.lib, marker->camera); + } + } } } } @@ -5226,7 +5232,6 @@ static void lib_link_scene(FileData *fd, Main *main) Base *base, *next; Sequence *seq; SceneRenderLayer *srl; - TimeMarker *marker; FreestyleModuleConfig *fmc; FreestyleLineSet *fls; @@ -5325,15 +5330,11 @@ static void lib_link_scene(FileData *fd, Main *main) } SEQ_END -#ifdef DURIAN_CAMERA_SWITCH - for (marker = sce->markers.first; marker; marker = marker->next) { + for (TimeMarker *marker = sce->markers.first; marker; marker = marker->next) { if (marker->camera) { marker->camera = newlibadr(fd, sce->id.lib, marker->camera); } } -#else - (void)marker; -#endif BKE_sequencer_update_muting(sce->ed); BKE_sequencer_update_sound_bounds_all(sce); @@ -8461,6 +8462,12 @@ static void expand_action(FileData *fd, Main *mainvar, bAction *act) /* F-Curves in Action */ expand_fcurves(fd, mainvar, &act->curves); + + for (TimeMarker *marker = act->markers.first; marker; marker = marker->next) { + if (marker->camera) { + expand_doit(fd, mainvar, marker->camera); + } + } } static void expand_keyingsets(FileData *fd, Main *mainvar, ListBase *list) @@ -9035,17 +9042,11 @@ static void expand_scene(FileData *fd, Main *mainvar, Scene *sce) expand_doit(fd, mainvar, sce->rigidbody_world->constraints); } -#ifdef DURIAN_CAMERA_SWITCH - { - TimeMarker *marker; - - for (marker = sce->markers.first; marker; marker = marker->next) { - if (marker->camera) { - expand_doit(fd, mainvar, marker->camera); - } + for (TimeMarker *marker = sce->markers.first; marker; marker = marker->next) { + if (marker->camera) { + expand_doit(fd, mainvar, marker->camera); } } -#endif expand_doit(fd, mainvar, sce->clip); } diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.h b/source/blender/depsgraph/intern/builder/deg_builder_relations.h index 7874dc052f0..ac6e6f8f095 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h @@ -370,10 +370,12 @@ void DepsgraphRelationBuilder::add_node_handle_relation( } else { if (!op_from) { - /* XXX TODO handle as error or report if needed */ + fprintf(stderr, "add_node_handle_relation(%d, %s) - Could not find op_from (%s)\n", + type, description, key_from.identifier().c_str()); } if (!op_to) { - /* XXX TODO handle as error or report if needed */ + fprintf(stderr, "add_node_handle_relation(%d, %s) - Could not find op_to (%s)\n", + type, description, key_from.identifier().c_str()); } } } diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index e71c05d19c5..72034b4f828 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -559,6 +559,9 @@ void fsmenu_read_system(struct FSMenu *fsmenu, int read_bookmarks) if (pathString == NULL || !CFStringGetCString(pathString, line, sizeof(line), kCFStringEncodingUTF8)) continue; + /* Add end slash for consistency with other platforms */ + BLI_add_slash(line); + /* Exclude "all my files" as it makes no sense in blender fileselector */ /* Exclude "airdrop" if wlan not active as it would show "" ) */ if (!strstr(line, "myDocuments.cannedSearch") && (*line != '\0')) { diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c index 1b0f5862a44..c8ccb3772c5 100644 --- a/source/blender/editors/transform/transform_snap_object.c +++ b/source/blender/editors/transform/transform_snap_object.c @@ -294,7 +294,7 @@ static void copy_vert_no(const BVHTreeFromMeshType *meshdata, const int index, f case SNAP_MESH: { BVHTreeFromMesh *data = meshdata->userdata; - const MVert *vert = data->vert; + const MVert *vert = data->vert + index; normal_short_to_float_v3(r_no, vert->no); break; } @@ -1302,6 +1302,7 @@ static bool snapDerivedMesh( } } } + /* SCE_SNAP_MODE_VERTEX or SCE_SNAP_MODE_EDGE */ else { const ARegion *ar = sctx->v3d_data.ar; diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index 440cfc0c814..3e8f0baf7b0 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -779,7 +779,7 @@ static void shade_light_textures(GPUMaterial *mat, GPULamp *lamp, GPUNodeLink ** for (int i = 0; i < MAX_MTEX; ++i) { MTex *mtex = lamp->la->mtex[i]; - if (mtex && mtex->tex->type & TEX_IMAGE && mtex->tex->ima) { + if (mtex && mtex->tex && (mtex->tex->type & TEX_IMAGE) && mtex->tex->ima) { mat->dynproperty |= DYN_LAMP_PERSMAT; float one = 1.0f; diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 119bfb61fec..67da8201f66 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -2705,7 +2705,7 @@ void node_geometry( parametric = vec3(0.0); backfacing = (gl_FrontFacing) ? 0.0 : 1.0; - pointiness = 0.0; + pointiness = 0.5; } void node_tex_coord( diff --git a/source/blender/modifiers/intern/MOD_normal_edit.c b/source/blender/modifiers/intern/MOD_normal_edit.c index ceb7dc02699..454c97451a8 100644 --- a/source/blender/modifiers/intern/MOD_normal_edit.c +++ b/source/blender/modifiers/intern/MOD_normal_edit.c @@ -188,7 +188,7 @@ static bool polygons_check_flip( } static void normalEditModifier_do_radial( - NormalEditModifierData *smd, Object *ob, DerivedMesh *dm, + NormalEditModifierData *enmd, Object *ob, DerivedMesh *dm, short (*clnors)[2], float (*loopnors)[3], float (*polynors)[3], const short mix_mode, const float mix_factor, const float mix_limit, MDeformVert *dvert, const int defgrp_index, const bool use_invert_vgroup, @@ -203,7 +203,7 @@ static void normalEditModifier_do_radial( BLI_bitmap *done_verts = BLI_BITMAP_NEW((size_t)num_verts, __func__); - generate_vert_coordinates(dm, ob, smd->target, smd->offset, num_verts, cos, size); + generate_vert_coordinates(dm, ob, enmd->target, enmd->offset, num_verts, cos, size); /** * size gives us our spheroid coefficients ``(A, B, C)``. @@ -287,14 +287,14 @@ static void normalEditModifier_do_radial( } static void normalEditModifier_do_directional( - NormalEditModifierData *smd, Object *ob, DerivedMesh *dm, + NormalEditModifierData *enmd, Object *ob, DerivedMesh *dm, short (*clnors)[2], float (*loopnors)[3], float (*polynors)[3], const short mix_mode, const float mix_factor, const float mix_limit, MDeformVert *dvert, const int defgrp_index, const bool use_invert_vgroup, MVert *mvert, const int num_verts, MEdge *medge, const int num_edges, MLoop *mloop, const int num_loops, MPoly *mpoly, const int num_polys) { - const bool use_parallel_normals = (smd->flag & MOD_NORMALEDIT_USE_DIRECTION_PARALLEL) != 0; + const bool use_parallel_normals = (enmd->flag & MOD_NORMALEDIT_USE_DIRECTION_PARALLEL) != 0; float (*cos)[3] = MEM_mallocN(sizeof(*cos) * num_verts, __func__); float (*nos)[3] = MEM_mallocN(sizeof(*nos) * num_loops, __func__); @@ -309,14 +309,14 @@ static void normalEditModifier_do_directional( float mat[4][4]; invert_m4_m4(mat, ob->obmat); - mul_m4_m4m4(mat, mat, smd->target->obmat); + mul_m4_m4m4(mat, mat, enmd->target->obmat); copy_v3_v3(target_co, mat[3]); } if (use_parallel_normals) { float no[3]; - sub_v3_v3v3(no, target_co, smd->offset); + sub_v3_v3v3(no, target_co, enmd->offset); normalize_v3(no); for (i = num_loops; i--; ) { @@ -362,19 +362,19 @@ static void normalEditModifier_do_directional( MEM_freeN(nos); } -static bool is_valid_target(NormalEditModifierData *smd) +static bool is_valid_target(NormalEditModifierData *enmd) { - if (smd->mode == MOD_NORMALEDIT_MODE_RADIAL) { + if (enmd->mode == MOD_NORMALEDIT_MODE_RADIAL) { return true; } - else if ((smd->mode == MOD_NORMALEDIT_MODE_DIRECTIONAL) && smd->target) { + else if ((enmd->mode == MOD_NORMALEDIT_MODE_DIRECTIONAL) && enmd->target) { return true; } - modifier_setError((ModifierData *)smd, "Invalid target settings"); + modifier_setError((ModifierData *)enmd, "Invalid target settings"); return false; } -static DerivedMesh *normalEditModifier_do(NormalEditModifierData *smd, Object *ob, DerivedMesh *dm) +static DerivedMesh *normalEditModifier_do(NormalEditModifierData *enmd, Object *ob, DerivedMesh *dm) { Mesh *me = ob->data; @@ -387,11 +387,11 @@ static DerivedMesh *normalEditModifier_do(NormalEditModifierData *smd, Object *o MLoop *mloop; MPoly *mpoly; - const bool use_invert_vgroup = ((smd->flag & MOD_NORMALEDIT_INVERT_VGROUP) != 0); - const bool use_current_clnors = !((smd->mix_mode == MOD_NORMALEDIT_MIX_COPY) && - (smd->mix_factor == 1.0f) && - (smd->defgrp_name[0] == '\0') && - (smd->mix_limit == (float)M_PI)); + const bool use_invert_vgroup = ((enmd->flag & MOD_NORMALEDIT_INVERT_VGROUP) != 0); + const bool use_current_clnors = !((enmd->mix_mode == MOD_NORMALEDIT_MIX_COPY) && + (enmd->mix_factor == 1.0f) && + (enmd->defgrp_name[0] == '\0') && + (enmd->mix_limit == (float)M_PI)); int defgrp_index; MDeformVert *dvert; @@ -403,12 +403,12 @@ static DerivedMesh *normalEditModifier_do(NormalEditModifierData *smd, Object *o bool free_polynors = false; /* Do not run that modifier at all if autosmooth is disabled! */ - if (!is_valid_target(smd) || !num_loops) { + if (!is_valid_target(enmd) || !num_loops) { return dm; } if (!(me->flag & ME_AUTOSMOOTH)) { - modifier_setError((ModifierData *)smd, "Enable 'Auto Smooth' option in mesh settings"); + modifier_setError((ModifierData *)enmd, "Enable 'Auto Smooth' option in mesh settings"); return dm; } @@ -441,18 +441,18 @@ static DerivedMesh *normalEditModifier_do(NormalEditModifierData *smd, Object *o free_polynors = true; } - modifier_get_vgroup(ob, dm, smd->defgrp_name, &dvert, &defgrp_index); + modifier_get_vgroup(ob, dm, enmd->defgrp_name, &dvert, &defgrp_index); - if (smd->mode == MOD_NORMALEDIT_MODE_RADIAL) { + if (enmd->mode == MOD_NORMALEDIT_MODE_RADIAL) { normalEditModifier_do_radial( - smd, ob, dm, clnors, loopnors, polynors, - smd->mix_mode, smd->mix_factor, smd->mix_limit, dvert, defgrp_index, use_invert_vgroup, + enmd, ob, dm, clnors, loopnors, polynors, + enmd->mix_mode, enmd->mix_factor, enmd->mix_limit, dvert, defgrp_index, use_invert_vgroup, mvert, num_verts, medge, num_edges, mloop, num_loops, mpoly, num_polys); } - else if (smd->mode == MOD_NORMALEDIT_MODE_DIRECTIONAL) { + else if (enmd->mode == MOD_NORMALEDIT_MODE_DIRECTIONAL) { normalEditModifier_do_directional( - smd, ob, dm, clnors, loopnors, polynors, - smd->mix_mode, smd->mix_factor, smd->mix_limit, dvert, defgrp_index, use_invert_vgroup, + enmd, ob, dm, clnors, loopnors, polynors, + enmd->mix_mode, enmd->mix_factor, enmd->mix_limit, dvert, defgrp_index, use_invert_vgroup, mvert, num_verts, medge, num_edges, mloop, num_loops, mpoly, num_polys); } @@ -465,13 +465,13 @@ static DerivedMesh *normalEditModifier_do(NormalEditModifierData *smd, Object *o static void initData(ModifierData *md) { - NormalEditModifierData *smd = (NormalEditModifierData *)md; + NormalEditModifierData *enmd = (NormalEditModifierData *)md; - smd->mode = MOD_NORMALEDIT_MODE_RADIAL; + enmd->mode = MOD_NORMALEDIT_MODE_RADIAL; - smd->mix_mode = MOD_NORMALEDIT_MIX_COPY; - smd->mix_factor = 1.0f; - smd->mix_limit = M_PI; + enmd->mix_mode = MOD_NORMALEDIT_MIX_COPY; + enmd->mix_factor = 1.0f; + enmd->mix_limit = M_PI; } static void copyData(ModifierData *md, ModifierData *target) @@ -481,11 +481,11 @@ static void copyData(ModifierData *md, ModifierData *target) static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md) { - NormalEditModifierData *smd = (NormalEditModifierData *)md; + NormalEditModifierData *enmd = (NormalEditModifierData *)md; CustomDataMask dataMask = CD_CUSTOMLOOPNORMAL; /* Ask for vertexgroups if we need them. */ - if (smd->defgrp_name[0]) { + if (enmd->defgrp_name[0]) { dataMask |= (CD_MASK_MDEFORMVERT); } @@ -499,16 +499,16 @@ static bool dependsOnNormals(ModifierData *UNUSED(md)) static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk, void *userData) { - NormalEditModifierData *smd = (NormalEditModifierData *) md; + NormalEditModifierData *enmd = (NormalEditModifierData *) md; - walk(userData, ob, &smd->target, IDWALK_NOP); + walk(userData, ob, &enmd->target, IDWALK_NOP); } static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams)) { - NormalEditModifierData *smd = (NormalEditModifierData *)md; + NormalEditModifierData *enmd = (NormalEditModifierData *)md; - return !is_valid_target(smd); + return !is_valid_target(enmd); } static void updateDepgraph(ModifierData *md, DagForest *forest, @@ -516,10 +516,10 @@ static void updateDepgraph(ModifierData *md, DagForest *forest, struct Scene *UNUSED(scene), Object *UNUSED(ob), DagNode *obNode) { - NormalEditModifierData *smd = (NormalEditModifierData *) md; + NormalEditModifierData *enmd = (NormalEditModifierData *) md; - if (smd->target) { - DagNode *Node = dag_get_node(forest, smd->target); + if (enmd->target) { + DagNode *Node = dag_get_node(forest, enmd->target); dag_add_relation(forest, Node, obNode, DAG_RL_OB_DATA, "NormalEdit Modifier"); } @@ -531,9 +531,9 @@ static void updateDepsgraph(ModifierData *md, Object *UNUSED(ob), struct DepsNodeHandle *node) { - NormalEditModifierData *smd = (NormalEditModifierData *) md; - if (smd->target) { - DEG_add_object_relation(node, smd->target, DEG_OB_COMP_GEOMETRY, "NormalEdit Modifier"); + NormalEditModifierData *enmd = (NormalEditModifierData *) md; + if (enmd->target) { + DEG_add_object_relation(node, enmd->target, DEG_OB_COMP_TRANSFORM, "NormalEdit Modifier"); } } |