Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2016-10-02 19:53:01 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2016-10-02 19:53:01 +0300
commitc50ccc847613bbe02bea64cee3f744b449da170c (patch)
treeb4c4bf7ff6de61687691997eb077c28eef0420c7 /source
parentba30b852f317494ad1c2f308295ee28a665e283a (diff)
parent3f9b69287d287af09c801a5203be07287128b2a0 (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/library_query.c14
-rw-r--r--source/blender/blenkernel/intern/sequencer.c8
-rw-r--r--source/blender/blenloader/intern/readfile.c31
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.h6
-rw-r--r--source/blender/editors/space_file/fsmenu.c3
-rw-r--r--source/blender/editors/transform/transform_snap_object.c3
-rw-r--r--source/blender/gpu/intern/gpu_material.c2
-rw-r--r--source/blender/gpu/shaders/gpu_shader_material.glsl2
-rw-r--r--source/blender/modifiers/intern/MOD_normal_edit.c84
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp2
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp3
11 files changed, 93 insertions, 65 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");
}
}
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp
index cf77ebfbeb9..316871e6025 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp
@@ -171,7 +171,7 @@ void RAS_StorageVA::TexCoordPtr(const RAS_TexVert *tv)
glVertexAttribPointerARB(unit, 4, GL_FLOAT, GL_FALSE, sizeof(RAS_TexVert), tv->getTangent());
break;
case RAS_IRasterizer::RAS_TEXCO_VCOL:
- glVertexAttribPointerARB(unit, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof(RAS_TexVert), tv->getRGBA());
+ glVertexAttribPointerARB(unit, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(RAS_TexVert), tv->getRGBA());
break;
default:
break;
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp
index cad5b5a508e..114defb60a5 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp
@@ -149,6 +149,9 @@ void VBO::Draw(int texco_num, RAS_IRasterizer::TexCoGen* texco, int attrib_num,
glVertexAttribPointerARB(unit, 4, GL_FLOAT, GL_FALSE, this->stride, this->tangent_offset);
glEnableVertexAttribArrayARB(unit);
break;
+ case RAS_IRasterizer::RAS_TEXCO_VCOL:
+ glVertexAttribPointerARB(unit, 4, GL_UNSIGNED_BYTE, GL_TRUE, this->stride, this->color_offset);
+ glEnableVertexAttribArrayARB(unit);
default:
break;
}