[Bf-blender-cvs] [584ab40] depsgraph_refactor: Depsgraph: Add proper relations to the boolean modifier
Commit: 584ab40404437d3501a079c8219aa4a76acfc59c Author: Sergey Sharybin Date: Fri Dec 5 13:22:48 2014 +0500 Branches: depsgraph_refactor https://developer.blender.org/rB584ab40404437d3501a079c8219aa4a76acfc59c Depsgraph: Add proper relations to the boolean modifier This allows to get rid of some hardcoded relations between transform and geometry components in the depsgraph itself. === M source/blender/depsgraph/intern/depsgraph_build_relations.cpp M source/blender/modifiers/intern/MOD_boolean.c === diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp index 593a4e2..e674efc 100644 --- a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp +++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp @@ -326,11 +326,6 @@ void DepsgraphRelationBuilder::build_object(Scene *scene, Object *ob) ComponentKey transform_key(ob-id, DEPSNODE_TYPE_TRANSFORM); add_relation(adt_key, local_transform_key, DEPSREL_TYPE_OPERATION, Object Animation); } - - /* TODO(sergey): This is a temp solution for now only. */ - ComponentKey transform_key(ob-id, DEPSNODE_TYPE_TRANSFORM); - ComponentKey geometry_key(ob-id, DEPSNODE_TYPE_GEOMETRY); - add_relation(transform_key, geometry_key, DEPSREL_TYPE_COMPONENT_ORDER, Object Transform); } void DepsgraphRelationBuilder::build_object_parent(Object *ob) @@ -1049,11 +1044,6 @@ void DepsgraphRelationBuilder::build_rig(Scene *scene, Object *ob) add_relation(transforms_key, final_transforms_key, DEPSREL_TYPE_TRANSFORM, Bone Final Transforms); } } - - /* TODO(sergey): do we really need this relation? */ - ComponentKey pose_eval_key(ob-id, DEPSNODE_TYPE_EVAL_POSE); - OperationKey geom_ubereval_key(ob-id, DEPSNODE_TYPE_GEOMETRY, Object Data UberEval); - add_relation(pose_eval_key, geom_ubereval_key, DEPSREL_TYPE_OPERATION, Pose `relation); } /* Shapekeys */ diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index aa5ddd4..f4d3bc7 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -88,6 +88,21 @@ static void updateDepgraph(ModifierData *md, DagForest *forest, } } +static void updateDepsgraph(ModifierData *md, +struct Scene *UNUSED(scene), +Object *ob, +struct DepsNodeHandle *node) +{ + BooleanModifierData *bmd = (BooleanModifierData *) md; + + if (bmd-object != NULL) { + DEG_add_object_relation(node, bmd-object, DEG_OB_COMP_TRANSFORM, Boolean Modifier); + DEG_add_object_relation(node, bmd-object, DEG_OB_COMP_GEOMETRY, Boolean Modifier); + } + /* We need own transformation as well. */ + DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, Boolean Modifier); +} + #ifdef WITH_MOD_BOOLEAN static DerivedMesh *get_quick_derivedMesh(DerivedMesh *derivedData, DerivedMesh *dm, int operation) { @@ -192,7 +207,7 @@ ModifierTypeInfo modifierType_Boolean = { /* freeData */ NULL, /* isDisabled */isDisabled, /* updateDepgraph */updateDepgraph, - /* updateDepsgraph */ NULL, + /* updateDepsgraph */ updateDepsgraph, /* dependsOnTime */ NULL, /* dependsOnNormals */ NULL, /* foreachObjectLink */ foreachObjectLink, ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [8d9c0cf4f] hair_immediate_fixes: Merge branch 'gooseberry' into hair_immediate_fixes
Commit: 8d9c0cf4faf407d78abc9a02693859c5a8c8dd6d Author: Lukas Tönne Date: Fri Dec 5 10:08:14 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB8d9c0cf4faf407d78abc9a02693859c5a8c8dd6d Merge branch 'gooseberry' into hair_immediate_fixes Conflicts: source/blender/makesdna/DNA_brush_types.h === === diff --cc source/blender/editors/screen/screen_context.c index f45ecd7,ce9c608..25146bf --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@@ -64,8 -67,11 +67,11 @@@ const char *screen_context_dir[] = visible_pose_bones, selected_pose_bones, active_bone, active_pose_bone, active_base, active_object, object, edit_object, sculpt_object, vertex_paint_object, weight_paint_object, - image_paint_object, particle_edit_object, + image_paint_object, particle_edit_object, hair_edit_object, sequences, selected_sequences, selected_editable_sequences, /* sequencer */ + gpencil_data, gpencil_data_owner, /* grease pencil data */ + visible_gpencil_layers, editable_gpencil_layers, editable_gpencil_strokes, + active_gpencil_layer, active_gpencil_frame, active_operator, NULL}; diff --cc source/blender/makesdna/DNA_brush_types.h index 23dd8e7,2fce2be..1349408 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@@ -101,9 -102,7 +101,9 @@@ typedef struct Brush char vertexpaint_tool; /* active vertex/weight paint blend mode (poorly named) */ char imagepaint_tool; /* active image paint tool */ char mask_tool; /* enum BrushMaskTool, only used if sculpt_tool is SCULPT_TOOL_MASK */ + char hair_tool; /* active hair tool */ + char pad2[3]; - + float autosmooth_factor; float crease_pinch_factor; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [cb2f1eb] wiggly-widgets: Merge branch 'master' into wiggly-widgets
Commit: cb2f1eb3eba0d502b72cb233ecf77b05db554227 Author: Antony Riakiotakis Date: Fri Dec 5 11:45:40 2014 +0100 Branches: wiggly-widgets https://developer.blender.org/rBcb2f1eb3eba0d502b72cb233ecf77b05db554227 Merge branch 'master' into wiggly-widgets === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [8abeeaf] wiggly-widgets: Rename Cage to RectTransform, add DNA for struct that will be used for interaction with the widget.
Commit: 8abeeafcb6fd7eb9ef0769d3c062f344cf48847d Author: Antony Riakiotakis Date: Fri Dec 5 12:55:33 2014 +0100 Branches: wiggly-widgets https://developer.blender.org/rB8abeeafcb6fd7eb9ef0769d3c062f344cf48847d Rename Cage to RectTransform, add DNA for struct that will be used for interaction with the widget. === M source/blender/CMakeLists.txt M source/blender/editors/object/object_lamp.c M source/blender/editors/space_node/space_node.c M source/blender/editors/space_view3d/space_view3d.c A source/blender/makesdna/DNA_widget_types.h M source/blender/makesdna/intern/makesdna.c M source/blender/makesrna/intern/rna_wm.c M source/blender/windowmanager/WM_api.h M source/blender/windowmanager/intern/wm_generic_widgets.c === diff --git a/source/blender/CMakeLists.txt b/source/blender/CMakeLists.txt index 0d30952..8aeba13 100644 --- a/source/blender/CMakeLists.txt +++ b/source/blender/CMakeLists.txt @@ -86,6 +86,7 @@ set(SRC_DNA_INC ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_view2d_types.h ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_view3d_types.h ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_windowmanager_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_widget_types.h ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_world_types.h ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_movieclip_types.h ${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_tracking_types.h diff --git a/source/blender/editors/object/object_lamp.c b/source/blender/editors/object/object_lamp.c index 435f7a2..4da2634 100644 --- a/source/blender/editors/object/object_lamp.c +++ b/source/blender/editors/object/object_lamp.c @@ -223,7 +223,7 @@ void WIDGETGROUP_lamp_draw(struct wmWidgetGroup *wgroup, const struct bContext * PointerRNA ptr; float dir[3]; - widget = WIDGET_arrow_new(wgroup, UI_ARROW_STYLE_INVERTED, NULL); + widget = WIDGET_arrow_new(wgroup, WIDGET_ARROW_STYLE_INVERTED, NULL); WIDGET_arrow_set_color(widget, color_lamp); diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 3841c23..ffc8d28 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -859,7 +859,7 @@ static void WIDGETGROUP_node_transform_update(struct wmWidgetGroup *wgroup, cons ima = BKE_image_verify_viewer(IMA_TYPE_COMPOSITE, Viewer Node); ibuf = BKE_image_acquire_ibuf(ima, NULL, lock); if (ibuf) { - wmWidget *cage = WIDGET_cage_new(wgroup, 0, NULL); + wmWidget *cage = WIDGET_rect_transform_new(wgroup, WIDGET_RECT_TRANSFORM_STYLE_TRANSLATE | WIDGET_RECT_TRANSFORM_STYLE_SCALE_UNIFORM, NULL); SpaceNode *snode = CTX_wm_space_node(C); ARegion *ar = CTX_wm_region(C); @@ -875,7 +875,7 @@ static void WIDGETGROUP_node_transform_update(struct wmWidgetGroup *wgroup, cons RNA_pointer_create(snode-id, RNA_SpaceNodeEditor, snode, nodeptr); - WIDGET_cage_bounds_set(cage, xsize, ysize); + WIDGET_rect_transform_bounds_set(cage, xsize, ysize); WM_widget_set_origin(cage, origin); WM_widget_property(cage, nodeptr, backdrop_x); } diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 3c894e9..3e2558d 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -722,7 +722,7 @@ static void WIDGETGROUP_camera_draw(struct wmWidgetGroup *wgroup, const struct b PointerRNA cameraptr; float dir[3]; - widget = WIDGET_arrow_new(wgroup, UI_ARROW_STYLE_CROSS, NULL); + widget = WIDGET_arrow_new(wgroup, WIDGET_ARROW_STYLE_CROSS, NULL); WM_widget_set_draw_on_hover_only(widget, true); WM_widget_set_3d_scale(widget, false); WIDGET_arrow_set_color(widget, color_camera); @@ -766,7 +766,7 @@ static void WIDGETGROUP_shapekey_draw(struct wmWidgetGroup *wgroup, const struct PointerRNA shapeptr; float dir[3]; - widget = WIDGET_arrow_new(wgroup, UI_ARROW_STYLE_NORMAL, NULL); + widget = WIDGET_arrow_new(wgroup, WIDGET_ARROW_STYLE_NORMAL, NULL); WM_widget_set_3d_scale(widget, false); WIDGET_arrow_set_color(widget, color_shape); RNA_pointer_create(key-id, RNA_ShapeKey, kb, shapeptr); diff --git a/source/blender/makesdna/DNA_widget_types.h b/source/blender/makesdna/DNA_widget_types.h new file mode 100644 index 000..3a869fc --- /dev/null +++ b/source/blender/makesdna/DNA_widget_types.h @@ -0,0 +1,44 @@ +/* + * * BEGIN GPL LICENSE BLOCK * + * + * This program is free software; you can
[Bf-blender-cvs] [09dca83] hair_immediate_fixes: Generic raycast method for generating mesh surface samples.
Commit: 09dca835f750cb32b97b2ca6e4c62ce2cbc8c51c Author: Lukas Tönne Date: Sun Nov 30 15:52:05 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB09dca835f750cb32b97b2ca6e4c62ce2cbc8c51c Generic raycast method for generating mesh surface samples. Conflicts: source/blender/blenkernel/intern/mesh_sample.c === M source/blender/blenkernel/BKE_mesh_sample.h M source/blender/blenkernel/intern/mesh_sample.c M source/blender/blenlib/BLI_math_geom.h M source/blender/blenlib/intern/math_geom.c === diff --git a/source/blender/blenkernel/BKE_mesh_sample.h b/source/blender/blenkernel/BKE_mesh_sample.h index e407d66..fe52404 100644 --- a/source/blender/blenkernel/BKE_mesh_sample.h +++ b/source/blender/blenkernel/BKE_mesh_sample.h @@ -50,7 +50,10 @@ typedef struct MSurfaceSampleStorage { void BKE_mesh_sample_storage_array(struct MSurfaceSampleStorage *storage, struct MSurfaceSample *samples, int capacity); void BKE_mesh_sample_storage_release(struct MSurfaceSampleStorage *storage); -void BKE_mesh_sample_generate_random(MSurfaceSampleStorage *dst, struct DerivedMesh *dm, unsigned int seed, int totsample); +void BKE_mesh_sample_generate_random(struct MSurfaceSampleStorage *dst, struct DerivedMesh *dm, unsigned int seed, int totsample); + +typedef bool (*MeshSampleRayCallback)(void *userdata, float ray_start[3], float ray_end[3]); +void BKE_mesh_sample_generate_raycast(struct MSurfaceSampleStorage *dst, struct DerivedMesh *dm, MeshSampleRayCallback ray_cb, void *userdata); /* Utilities */ diff --git a/source/blender/blenkernel/intern/mesh_sample.c b/source/blender/blenkernel/intern/mesh_sample.c index 65995a6..7dbbe88 100644 --- a/source/blender/blenkernel/intern/mesh_sample.c +++ b/source/blender/blenkernel/intern/mesh_sample.c @@ -34,6 +34,7 @@ #include BLI_math.h #include BLI_rand.h +#include BKE_bvhutils.h #include BKE_mesh_sample.h #include BKE_customdata.h #include BKE_DerivedMesh.h @@ -99,6 +100,31 @@ bool BKE_mesh_sample_shapekey(Key *key, KeyBlock *kb, const MSurfaceSample *samp } +/* Sampling Utilities */ + +BLI_INLINE void mesh_sample_weights_from_loc(MSurfaceSample *sample, DerivedMesh *dm, int face_index, const float loc[3]) +{ + MFace *face = dm-getTessFaceArray(dm)[face_index]; + unsigned int index[4] = { face-v1, face-v2, face-v3, face-v4 }; + MVert *mverts = dm-getVertArray(dm); + + float *v1 = mverts[face-v1].co; + float *v2 = mverts[face-v2].co; + float *v3 = mverts[face-v3].co; + float *v4 = face-v4 ? mverts[face-v4].co : NULL; + float w[4]; + int tri[3]; + + interp_weights_face_v3_index(tri, w, v1, v2, v3, v4, loc); + + sample-orig_verts[0] = index[tri[0]]; + sample-orig_verts[1] = index[tri[1]]; + sample-orig_verts[2] = index[tri[2]]; + sample-orig_weights[0] = w[tri[0]]; + sample-orig_weights[1] = w[tri[1]]; + sample-orig_weights[2] = w[tri[2]]; +} + /* Sampling */ static bool mesh_sample_store_array_sample(void *vdata, int capacity, int index, const MSurfaceSample *sample) @@ -174,6 +200,57 @@ void BKE_mesh_sample_generate_random(MSurfaceSampleStorage *dst, DerivedMesh *dm BLI_rng_free(rng); } + +static bool sample_bvh_raycast(MSurfaceSample *sample, DerivedMesh *dm, BVHTreeFromMesh *bvhdata, const float ray_start[3], const float ray_end[3]) +{ + BVHTreeRayHit hit; + float ray_normal[3], dist; + + sub_v3_v3v3(ray_normal, ray_end, ray_start); + dist = normalize_v3(ray_normal); + + hit.index = -1; + hit.dist = dist; + + if (BLI_bvhtree_ray_cast(bvhdata-tree, ray_start, ray_normal, 0.0f, +hit, bvhdata-raycast_callback, bvhdata) = 0) { + + mesh_sample_weights_from_loc(sample, dm, hit.index, hit.co); + + return true; + } + else + return false; +} + +void BKE_mesh_sample_generate_raycast(MSurfaceSampleStorage *dst, DerivedMesh *dm, MeshSampleRayCallback ray_cb, void *userdata) +{ + BVHTreeFromMesh bvhdata; + float ray_start[3], ray_end[3]; + int i; + + DM_ensure_tessface(dm); + + memset(bvhdata, 0, sizeof(BVHTreeFromMesh)); + bvhtree_from_mesh_faces(bvhdata, dm, 0.0f, 4, 6); + + if (bvhdata.tree) { + i = 0; + while (ray_cb(userdata, ray_start, ray_end)) { + MSurfaceSample sample; + + sample_bvh_raycast(sample, dm, bvhdata, ray_start, ray_end); + + if (!dst-store_sample(dst-data, dst-capacity, i, sample)) + break; +
[Bf-blender-cvs] [671f0b2] hair_immediate_fixes: Better feedback about valid sample from mesh sampling methods.
Commit: 671f0b2f6eddcfbf290daf88c6034a057a5723c5 Author: Lukas Tönne Date: Mon Dec 1 14:41:02 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB671f0b2f6eddcfbf290daf88c6034a057a5723c5 Better feedback about valid sample from mesh sampling methods. Conflicts: source/blender/editors/object/object_shapekey.c === M source/blender/blenkernel/BKE_mesh_sample.h M source/blender/blenkernel/intern/mesh_sample.c === diff --git a/source/blender/blenkernel/BKE_mesh_sample.h b/source/blender/blenkernel/BKE_mesh_sample.h index 181900b..e43b162 100644 --- a/source/blender/blenkernel/BKE_mesh_sample.h +++ b/source/blender/blenkernel/BKE_mesh_sample.h @@ -51,10 +51,10 @@ void BKE_mesh_sample_storage_single(struct MSurfaceSampleStorage *storage, struc void BKE_mesh_sample_storage_array(struct MSurfaceSampleStorage *storage, struct MSurfaceSample *samples, int capacity); void BKE_mesh_sample_storage_release(struct MSurfaceSampleStorage *storage); -void BKE_mesh_sample_generate_random(struct MSurfaceSampleStorage *dst, struct DerivedMesh *dm, unsigned int seed, int totsample); +int BKE_mesh_sample_generate_random(struct MSurfaceSampleStorage *dst, struct DerivedMesh *dm, unsigned int seed, int totsample); typedef bool (*MeshSampleRayCallback)(void *userdata, float ray_start[3], float ray_end[3]); -void BKE_mesh_sample_generate_raycast(struct MSurfaceSampleStorage *dst, struct DerivedMesh *dm, MeshSampleRayCallback ray_cb, void *userdata); +int BKE_mesh_sample_generate_raycast(struct MSurfaceSampleStorage *dst, struct DerivedMesh *dm, MeshSampleRayCallback ray_cb, void *userdata, int totsample); /* Utilities */ diff --git a/source/blender/blenkernel/intern/mesh_sample.c b/source/blender/blenkernel/intern/mesh_sample.c index 664dfea..cd568e4 100644 --- a/source/blender/blenkernel/intern/mesh_sample.c +++ b/source/blender/blenkernel/intern/mesh_sample.c @@ -161,14 +161,14 @@ void BKE_mesh_sample_storage_release(MSurfaceSampleStorage *storage) } -void BKE_mesh_sample_generate_random(MSurfaceSampleStorage *dst, DerivedMesh *dm, unsigned int seed, int totsample) +int BKE_mesh_sample_generate_random(MSurfaceSampleStorage *dst, DerivedMesh *dm, unsigned int seed, int totsample) { MFace *mfaces; int totfaces; RNG *rng; MFace *mface; float a, b; - int i; + int i, stored = 0; rng = BLI_rng_new(seed); @@ -202,11 +202,15 @@ void BKE_mesh_sample_generate_random(MSurfaceSampleStorage *dst, DerivedMesh *dm sample.orig_weights[1] = a; sample.orig_weights[2] = b; - if (!dst-store_sample(dst-data, dst-capacity, i, sample)) + if (dst-store_sample(dst-data, dst-capacity, i, sample)) + ++stored; + else break; } BLI_rng_free(rng); + + return stored; } @@ -232,11 +236,11 @@ static bool sample_bvh_raycast(MSurfaceSample *sample, DerivedMesh *dm, BVHTreeF return false; } -void BKE_mesh_sample_generate_raycast(MSurfaceSampleStorage *dst, DerivedMesh *dm, MeshSampleRayCallback ray_cb, void *userdata) +int BKE_mesh_sample_generate_raycast(MSurfaceSampleStorage *dst, DerivedMesh *dm, MeshSampleRayCallback ray_cb, void *userdata, int totsample) { BVHTreeFromMesh bvhdata; float ray_start[3], ray_end[3]; - int i; + int i, stored = 0; DM_ensure_tessface(dm); @@ -244,20 +248,22 @@ void BKE_mesh_sample_generate_raycast(MSurfaceSampleStorage *dst, DerivedMesh *d bvhtree_from_mesh_faces(bvhdata, dm, 0.0f, 4, 6); if (bvhdata.tree) { - i = 0; - while (ray_cb(userdata, ray_start, ray_end)) { - MSurfaceSample sample; - - sample_bvh_raycast(sample, dm, bvhdata, ray_start, ray_end); - - if (!dst-store_sample(dst-data, dst-capacity, i, sample)) - break; - - ++i; + for (i = 0; i totsample; ++i) { + if (ray_cb(userdata, ray_start, ray_end)) { + MSurfaceSample sample; + if (sample_bvh_raycast(sample, dm, bvhdata, ray_start, ray_end)) { + if (dst-store_sample(dst-data, dst-capacity, i, sample)) + ++stored; + else + break; + } + } } }
[Bf-blender-cvs] [5730fba] hair_immediate_fixes: New mesh sample evaluation function for shape key data.
Commit: 5730fba94e26af5f9c8a59857755a3a66c42747d Author: Lukas Tönne Date: Sun Nov 30 10:58:16 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB5730fba94e26af5f9c8a59857755a3a66c42747d New mesh sample evaluation function for shape key data. === M source/blender/blenkernel/BKE_mesh_sample.h M source/blender/blenkernel/intern/mesh_sample.c === diff --git a/source/blender/blenkernel/BKE_mesh_sample.h b/source/blender/blenkernel/BKE_mesh_sample.h index bc125af..e407d66 100644 --- a/source/blender/blenkernel/BKE_mesh_sample.h +++ b/source/blender/blenkernel/BKE_mesh_sample.h @@ -26,12 +26,15 @@ */ struct DerivedMesh; +struct Key; +struct KeyBlock; struct MSurfaceSample; /* Evaluate */ bool BKE_mesh_sample_eval(struct DerivedMesh *dm, const struct MSurfaceSample *sample, float loc[3], float nor[3]); +bool BKE_mesh_sample_shapekey(struct Key *key, struct KeyBlock *kb, const struct MSurfaceSample *sample, float loc[3]); /* Sampling */ diff --git a/source/blender/blenkernel/intern/mesh_sample.c b/source/blender/blenkernel/intern/mesh_sample.c index 7300dbe..65995a6 100644 --- a/source/blender/blenkernel/intern/mesh_sample.c +++ b/source/blender/blenkernel/intern/mesh_sample.c @@ -26,6 +26,7 @@ #include MEM_guardedalloc.h +#include DNA_key_types.h #include DNA_mesh_types.h #include DNA_meshdata_types.h @@ -76,6 +77,27 @@ bool BKE_mesh_sample_eval(DerivedMesh *dm, const MSurfaceSample *sample, float l return true; } +bool BKE_mesh_sample_shapekey(Key *key, KeyBlock *kb, const MSurfaceSample *sample, float loc[3]) +{ + float *v1, *v2, *v3; + + BLI_assert(key-elemsize == 3 * sizeof(float)); + BLI_assert(sample-orig_verts[0] (unsigned int)kb-totelem); + BLI_assert(sample-orig_verts[1] (unsigned int)kb-totelem); + BLI_assert(sample-orig_verts[2] (unsigned int)kb-totelem); + + v1 = (float *)kb-data + sample-orig_verts[0] * 3; + v2 = (float *)kb-data + sample-orig_verts[1] * 3; + v3 = (float *)kb-data + sample-orig_verts[2] * 3; + + madd_v3_v3fl(loc, v1, sample-orig_weights[0]); + madd_v3_v3fl(loc, v2, sample-orig_weights[1]); + madd_v3_v3fl(loc, v3, sample-orig_weights[2]); + + /* TODO use optional vgroup weights to determine if a shapeky actually affects the sample */ + return true; +} + /* Sampling */ ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [23d8ffb] hair_immediate_fixes: Fix for uninitialized return value.
Commit: 23d8ffbc736859f549f4f085ce977225d12e638e Author: Lukas Tönne Date: Mon Dec 1 14:42:18 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB23d8ffbc736859f549f4f085ce977225d12e638e Fix for uninitialized return value. === M source/blender/blenkernel/intern/mesh_sample.c === diff --git a/source/blender/blenkernel/intern/mesh_sample.c b/source/blender/blenkernel/intern/mesh_sample.c index cd568e4..b4c5903 100644 --- a/source/blender/blenkernel/intern/mesh_sample.c +++ b/source/blender/blenkernel/intern/mesh_sample.c @@ -91,6 +91,7 @@ bool BKE_mesh_sample_shapekey(Key *key, KeyBlock *kb, const MSurfaceSample *samp v2 = (float *)kb-data + sample-orig_verts[1] * 3; v3 = (float *)kb-data + sample-orig_verts[2] * 3; + zero_v3(loc); madd_v3_v3fl(loc, v1, sample-orig_weights[0]); madd_v3_v3fl(loc, v2, sample-orig_weights[1]); madd_v3_v3fl(loc, v3, sample-orig_weights[2]); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [7f913b1] hair_immediate_fixes: New simple storage method for single sample values.
Commit: 7f913b1d1aa51e0b4cc078eb7ded82804ce77e11 Author: Lukas Tönne Date: Mon Dec 1 14:38:03 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB7f913b1d1aa51e0b4cc078eb7ded82804ce77e11 New simple storage method for single sample values. === M source/blender/blenkernel/BKE_mesh_sample.h M source/blender/blenkernel/intern/mesh_sample.c === diff --git a/source/blender/blenkernel/BKE_mesh_sample.h b/source/blender/blenkernel/BKE_mesh_sample.h index fe52404..181900b 100644 --- a/source/blender/blenkernel/BKE_mesh_sample.h +++ b/source/blender/blenkernel/BKE_mesh_sample.h @@ -47,6 +47,7 @@ typedef struct MSurfaceSampleStorage { int free_data; } MSurfaceSampleStorage; +void BKE_mesh_sample_storage_single(struct MSurfaceSampleStorage *storage, struct MSurfaceSample *sample); void BKE_mesh_sample_storage_array(struct MSurfaceSampleStorage *storage, struct MSurfaceSample *samples, int capacity); void BKE_mesh_sample_storage_release(struct MSurfaceSampleStorage *storage); diff --git a/source/blender/blenkernel/intern/mesh_sample.c b/source/blender/blenkernel/intern/mesh_sample.c index 7dbbe88..664dfea 100644 --- a/source/blender/blenkernel/intern/mesh_sample.c +++ b/source/blender/blenkernel/intern/mesh_sample.c @@ -137,6 +137,15 @@ static bool mesh_sample_store_array_sample(void *vdata, int capacity, int index, return true; } +void BKE_mesh_sample_storage_single(MSurfaceSampleStorage *storage, MSurfaceSample *sample) +{ + /* handled as just a special array case with capacity = 1 */ + storage-store_sample = mesh_sample_store_array_sample; + storage-capacity = 1; + storage-data = sample; + storage-free_data = false; +} + void BKE_mesh_sample_storage_array(MSurfaceSampleStorage *storage, MSurfaceSample *samples, int capacity) { storage-store_sample = mesh_sample_store_array_sample; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [68c879f] hair_immediate_fixes: Basic Add tool for creating new strands in hair edit mode.
Commit: 68c879fefcf8676c8e6174d723d8d2381f40c877 Author: Lukas Tönne Date: Fri Dec 5 14:42:22 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB68c879fefcf8676c8e6174d723d8d2381f40c877 Basic Add tool for creating new strands in hair edit mode. === M source/blender/blenkernel/BKE_edithair.h M source/blender/blenkernel/BKE_mesh_sample.h M source/blender/blenkernel/intern/edithair.c M source/blender/blenkernel/intern/mesh_sample.c M source/blender/bmesh/intern/bmesh_strands.c M source/blender/bmesh/intern/bmesh_strands.h M source/blender/bmesh/intern/bmesh_strands_conv.c M source/blender/bmesh/intern/bmesh_strands_conv.h M source/blender/editors/hair/hair_edit.c M source/blender/editors/hair/hair_intern.h M source/blender/editors/hair/hair_stroke.c === diff --git a/source/blender/blenkernel/BKE_edithair.h b/source/blender/blenkernel/BKE_edithair.h index 070f8df..7d39ff6 100644 --- a/source/blender/blenkernel/BKE_edithair.h +++ b/source/blender/blenkernel/BKE_edithair.h @@ -54,11 +54,18 @@ typedef struct BMEditStrands { struct Object *ob; struct DerivedMesh *root_dm; + int flag; + unsigned int vertex_glbuf; unsigned int elem_glbuf; unsigned int dot_glbuf; } BMEditStrands; +/* BMEditStrands-flag */ +typedef enum BMEditStrandsFlag { + BM_STRANDS_DIRTY_SEGLEN = 1, +} BMEditStrandsFlag; + struct BMEditStrands *BKE_editstrands_create(struct BMesh *bm, struct DerivedMesh *root_dm); struct BMEditStrands *BKE_editstrands_copy(struct BMEditStrands *es); struct BMEditStrands *BKE_editstrands_from_object(struct Object *ob); @@ -67,9 +74,8 @@ void BKE_editstrands_free(struct BMEditStrands *es); /* === constraints === */ -void BKE_editstrands_calc_segment_lengths(struct BMesh *bm); - void BKE_editstrands_solve_constraints(struct BMEditStrands *es); +void BKE_editstrands_ensure(struct BMEditStrands *es); /* === particle conversion === */ diff --git a/source/blender/blenkernel/BKE_mesh_sample.h b/source/blender/blenkernel/BKE_mesh_sample.h index e43b162..6b48955 100644 --- a/source/blender/blenkernel/BKE_mesh_sample.h +++ b/source/blender/blenkernel/BKE_mesh_sample.h @@ -33,7 +33,7 @@ struct MSurfaceSample; /* Evaluate */ -bool BKE_mesh_sample_eval(struct DerivedMesh *dm, const struct MSurfaceSample *sample, float loc[3], float nor[3]); +bool BKE_mesh_sample_eval(struct DerivedMesh *dm, const struct MSurfaceSample *sample, float loc[3], float nor[3], float tang[3]); bool BKE_mesh_sample_shapekey(struct Key *key, struct KeyBlock *kb, const struct MSurfaceSample *sample, float loc[3]); diff --git a/source/blender/blenkernel/intern/edithair.c b/source/blender/blenkernel/intern/edithair.c index e1064d9..2da64f1 100644 --- a/source/blender/blenkernel/intern/edithair.c +++ b/source/blender/blenkernel/intern/edithair.c @@ -101,7 +101,7 @@ void BKE_editstrands_free(BMEditStrands *es) /* === constraints === */ -void BKE_editstrands_calc_segment_lengths(BMesh *bm) +static void editstrands_calc_segment_lengths(BMesh *bm) { BMVert *root, *v, *vprev; BMIter iter, iter_strand; @@ -128,10 +128,10 @@ static void editstrands_apply_root_locations(BMesh *bm, DerivedMesh *root_dm) BM_ITER_STRANDS(root, iter, bm, BM_STRANDS_OF_MESH) { MSurfaceSample root_sample; - float loc[3], nor[3]; + float loc[3], nor[3], tang[3]; BM_elem_meshsample_data_named_get(bm-vdata, root, CD_MSURFACE_SAMPLE, CD_HAIR_ROOT_LOCATION, root_sample); - if (BKE_mesh_sample_eval(root_dm, root_sample, loc, nor)) { + if (BKE_mesh_sample_eval(root_dm, root_sample, loc, nor, tang)) { copy_v3_v3(root-co, loc); } } @@ -167,10 +167,23 @@ static void editstrands_solve_segment_lengths(BMesh *bm) void BKE_editstrands_solve_constraints(BMEditStrands *es) { + BKE_editstrands_ensure(es); + editstrands_apply_root_locations(es-bm, es-root_dm); editstrands_solve_segment_lengths(es-bm); } +void BKE_editstrands_ensure(BMEditStrands *es) +{ + BM_strands_cd_flag_ensure(es-bm, 0); + + if (es-flag BM_STRANDS_DIRTY_SEGLEN) { + editstrands_calc_segment_lengths(es-bm); + + es-flag = ~BM_STRANDS_DIRTY_SEGLEN; + } +} + /* === particle conversion === */ @@ -188,7 +201,7 @@ BMesh *BKE_particles_to_bmesh(Object *ob, ParticleSystem *psys) BM_strands_bm_from_psys(bm, ob, psys, psmd-dm, true, psys-shapenr); - BKE_editstrands_calc_segment_lengths(bm); + editstrands_calc_segment_lengths(bm);
[Bf-blender-cvs] [529b845] hair_immediate_fixes: Fixed lib-linking for hair edit settings brush and object pointers.
Commit: 529b8453abf56adba0afc60c429896002a696ef3 Author: Lukas Tönne Date: Fri Dec 5 14:48:37 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB529b8453abf56adba0afc60c429896002a696ef3 Fixed lib-linking for hair edit settings brush and object pointers. === M source/blender/blenloader/intern/readfile.c === diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 46ad346..21c4f04 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -5265,6 +5265,14 @@ static void lib_link_scene(FileData *fd, Main *main) sce-toolsettings-particle.shape_object = newlibadr(fd, sce-id.lib, sce-toolsettings-particle.shape_object); + { + HairEditSettings *hair_edit = sce-toolsettings-hair_edit; + if (hair_edit-brush) + hair_edit-brush = newlibadr(fd, sce-id.lib, hair_edit-brush); + if (hair_edit-shape_object) + hair_edit-shape_object = newlibadr(fd, sce-id.lib, hair_edit-shape_object); + } + for (base = sce-base.first; base; base = next) { next = base-next; @@ -5502,7 +5510,8 @@ static void direct_link_scene(FileData *fd, Scene *sce) sce-toolsettings-particle.paintcursor = NULL; sce-toolsettings-particle.scene = NULL; sce-toolsettings-particle.object = NULL; - + sce-toolsettings-hair_edit.paint_cursor = NULL; + /* in rare cases this is needed, see [#33806] */ if (sce-toolsettings-vpaint) { sce-toolsettings-vpaint-vpaint_prev = NULL; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [b0f5313] wiggly-widgets: Hook up the new DNA data to the node edtior. Now the backdrop supports 2D interaction (scale still pending)
Commit: b0f53133c1bd1c39b206bd5858d174b91272bb99 Author: Antony Riakiotakis Date: Fri Dec 5 15:18:49 2014 +0100 Branches: wiggly-widgets https://developer.blender.org/rBb0f53133c1bd1c39b206bd5858d174b91272bb99 Hook up the new DNA data to the node edtior. Now the backdrop supports 2D interaction (scale still pending) === M source/blender/blenkernel/BKE_blender.h M source/blender/blenloader/intern/versioning_260.c M source/blender/blenloader/intern/versioning_270.c M source/blender/editors/space_node/drawnode.c M source/blender/editors/space_node/node_edit.c M source/blender/editors/space_node/node_view.c M source/blender/editors/space_node/space_node.c M source/blender/makesdna/DNA_space_types.h M source/blender/makesdna/DNA_widget_types.h M source/blender/makesrna/RNA_access.h M source/blender/makesrna/intern/rna_space.c M source/blender/makesrna/intern/rna_wm.c M source/blender/windowmanager/WM_api.h M source/blender/windowmanager/intern/wm_generic_widgets.c === diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 4c333c8..8cd4e25 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 272 -#define BLENDER_SUBVERSION 2 +#define BLENDER_SUBVERSION 3 /* 262 was the last editmesh release but it has compatibility code for bmesh data */ #define BLENDER_MINVERSION 270 #define BLENDER_MINSUBVERSION 5 diff --git a/source/blender/blenloader/intern/versioning_260.c b/source/blender/blenloader/intern/versioning_260.c index 7e5127a..28d70fc 100644 --- a/source/blender/blenloader/intern/versioning_260.c +++ b/source/blender/blenloader/intern/versioning_260.c @@ -2285,7 +2285,6 @@ void blo_do_versions_260(FileData *fd, Library *UNUSED(lib), Main *main) if (!MAIN_VERSION_ATLEAST(main, 268, 4)) { - bScreen *sc; Object *ob; for (ob = main-object.first; ob; ob = ob-id.next) { @@ -2315,26 +2314,6 @@ void blo_do_versions_260(FileData *fd, Library *UNUSED(lib), Main *main) } } - /* -* FIX some files have a zoom level of 0, and was checked during the drawing of the node space -* -* We moved this check to the do versions to be sure the value makes any sense. -*/ - for (sc = main-screen.first; sc; sc = sc-id.next) { - ScrArea *sa; - for (sa = sc-areabase.first; sa; sa = sa-next) { - SpaceLink *sl; - for (sl = sa-spacedata.first; sl; sl = sl-next) { - if (sl-spacetype == SPACE_NODE) { - SpaceNode *snode = (SpaceNode *)sl; - if (snode-zoom 0.02f) { - snode-zoom = 1.0; - } - } - } - } - } - for (ob = main-object.first; ob; ob = ob-id.next) { bSensor *sens; bTouchSensor *ts; diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c index 372a0b0..f2718f5 100644 --- a/source/blender/blenloader/intern/versioning_270.c +++ b/source/blender/blenloader/intern/versioning_270.c @@ -435,4 +435,21 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main) } } } + + if (!MAIN_VERSION_ATLEAST(main, 272, 3)) { + bScreen *sc; + for (sc = main-screen.first; sc; sc = sc-id.next) { + ScrArea *sa; + for (sa = sc-areabase.first; sa; sa = sa-next) { + SpaceLink *sl; + for (sl = sa-spacedata.first; sl; sl = sl-next) { + if (sl-spacetype == SPACE_NODE) { + SpaceNode *snode = (SpaceNode *)sl; + snode-backdrop.scalex = 1.0; + snode-backdrop.scalex = 1.0; + } + } + } + } + } } diff --git a/source/blender/editors/space_node/drawnode.c
[Bf-blender-cvs] [82fd88a] hair_immediate_fixes: Fix for hair-to-particle export: need to set weight=1.0 for hair roots, since the particle system uses this for pinning them to the mesh.
Commit: 82fd88acf6f4754c88b89fe73f7ddb24a15e805a Author: Lukas Tönne Date: Fri Dec 5 16:00:03 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB82fd88acf6f4754c88b89fe73f7ddb24a15e805a Fix for hair-to-particle export: need to set weight=1.0 for hair roots, since the particle system uses this for pinning them to the mesh. === M source/blender/bmesh/intern/bmesh_strands_conv.c === diff --git a/source/blender/bmesh/intern/bmesh_strands_conv.c b/source/blender/bmesh/intern/bmesh_strands_conv.c index b23dbbd..79871a5 100644 --- a/source/blender/bmesh/intern/bmesh_strands_conv.c +++ b/source/blender/bmesh/intern/bmesh_strands_conv.c @@ -473,9 +473,16 @@ static void make_particle_hair(BMesh *bm, BMVert *root, Object *ob, ParticleSyst } mul_v3_m4v3(hkey-co, inv_hairmat, v-co); + mul_v3_m4v3(hkey-world_co, ob-obmat, v-co); hkey-time = totkey 0 ? (float)k / (float)(totkey - 1) : 0.0f; - hkey-weight = BM_elem_float_data_named_get(bm-vdata, v, CD_PROP_FLT, CD_HAIR_WEIGHT); + if (k == 0) { + /* weight 1.0 is used for pinning hair roots in particles */ + hkey-weight = 1.0f; + } + else { + hkey-weight = BM_elem_float_data_named_get(bm-vdata, v, CD_PROP_FLT, CD_HAIR_WEIGHT); + } ++hkey; ++k; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [e1e984e] master: Fix T42807, variance shadow map broken afterFBO changes.
Commit: e1e984e437fc8fdf4a0fa1f8ec8fb64748c4ea28 Author: Antony Riakiotakis Date: Fri Dec 5 16:01:08 2014 +0100 Branches: master https://developer.blender.org/rBe1e984e437fc8fdf4a0fa1f8ec8fb64748c4ea28 Fix T42807, variance shadow map broken afterFBO changes. This code was a bit do-it-yourself instead of relying on the API. Should be OK now. === M source/blender/gpu/intern/gpu_extensions.c === diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index a65b916..e386869 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -1098,6 +1098,10 @@ void GPU_framebuffer_blur(GPUFrameBuffer *fb, GPUTexture *tex, GPUFrameBuffer *b /* We do the bind ourselves rather than using GPU_framebuffer_texture_bind() to avoid * pushing unnecessary matrices onto the OpenGL stack. */ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, blurfb-object); + glDrawBuffer(GL_COLOR_ATTACHMENT0); + + /* avoid warnings from texture binding */ + GG.currentfb = blurfb-object; GPU_shader_bind(blur_shader); GPU_shader_uniform_vector(blur_shader, scale_uniform, 2, 1, (float *)scaleh); @@ -1127,6 +1131,10 @@ void GPU_framebuffer_blur(GPUFrameBuffer *fb, GPUTexture *tex, GPUFrameBuffer *b /* Blurring vertically */ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb-object); + glDrawBuffer(GL_COLOR_ATTACHMENT0); + + GG.currentfb = fb-object; + glViewport(0, 0, GPU_texture_opengl_width(tex), GPU_texture_opengl_height(tex)); GPU_shader_uniform_vector(blur_shader, scale_uniform, 2, 1, (float *)scalev); GPU_shader_uniform_texture(blur_shader, texture_source_uniform, blurtex); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [e7644d3] hair_immediate_fixes: Fix scons build files for new hair edit code parts.
Commit: e7644d3d0fd71736434bcb34a457bfafc95ff698 Author: Lukas Tönne Date: Fri Dec 5 16:18:57 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rBe7644d3d0fd71736434bcb34a457bfafc95ff698 Fix scons build files for new hair edit code parts. === M SConstruct M source/blender/editors/hair/SConscript === diff --git a/SConstruct b/SConstruct index bdfa9dc..c3e1df6 100644 --- a/SConstruct +++ b/SConstruct @@ -794,6 +794,13 @@ if B.targets != ['cudakernels']: data_to_c_simple(release/datafiles/brushicons/fill.png) data_to_c_simple(release/datafiles/brushicons/flatten.png) data_to_c_simple(release/datafiles/brushicons/grab.png) +data_to_c_simple(release/datafiles/brushicons/hairadd.png) +data_to_c_simple(release/datafiles/brushicons/haircomb.png) +data_to_c_simple(release/datafiles/brushicons/haircut.png) +data_to_c_simple(release/datafiles/brushicons/hairlength.png) +data_to_c_simple(release/datafiles/brushicons/hairpuff.png) +data_to_c_simple(release/datafiles/brushicons/hairsmooth.png) +data_to_c_simple(release/datafiles/brushicons/hairweight.png) data_to_c_simple(release/datafiles/brushicons/inflate.png) data_to_c_simple(release/datafiles/brushicons/layer.png) data_to_c_simple(release/datafiles/brushicons/lighten.png) diff --git a/source/blender/editors/hair/SConscript b/source/blender/editors/hair/SConscript index ac8eaa3..2e715a0 100644 --- a/source/blender/editors/hair/SConscript +++ b/source/blender/editors/hair/SConscript @@ -31,18 +31,22 @@ sources = env.Glob('*.c') incs = [ '#/intern/guardedalloc', +env['BF_GLEW_INC'], +'#/intern/glew-mx', '../include', +'../sculpt_paint', '../../blenfont', '../../blenkernel', '../../blenlib', '../../bmesh', +'../../gpu', '../../makesdna', '../../makesrna', '../../windowmanager', ] incs = ' '.join(incs) -defs = [] +defs = ['BF_GL_DEFINITIONS'] if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [251f1e0] hair_immediate_fixes: MSVC compiler cannot handle standard C code.
Commit: 251f1e084b8f7f0b741c2aabf7ca0d62a721f352 Author: Lukas Tönne Date: Fri Dec 5 16:37:25 2014 +0100 Branches: hair_immediate_fixes https://developer.blender.org/rB251f1e084b8f7f0b741c2aabf7ca0d62a721f352 MSVC compiler cannot handle standard C code. === M source/blender/editors/physics/particle_edit.c === diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 2c3280a..98559bb 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -4086,8 +4086,10 @@ static bool shape_cut_test_point(PEData *data, ParticleCacheKey *key) { BVHTreeFromMesh *shape_bvh = data-shape_bvh; const float dir[3] = {1.0f, 0.0f, 0.0f}; - PointInsideBVH userdata = { data-shape_bvh, 0 }; + PointInsideBVH userdata; + userdata.bvhdata = data-shape_bvh; + userdata.num_hits = 0; BLI_bvhtree_ray_cast_all(shape_bvh-tree, key-co, dir, 0.0f, point_inside_bvh_cb, userdata); /* for any point inside a watertight mesh the number of hits is uneven */ ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [787743b] wiggly-widgets: Add back an extra paramater to the intersection function to determine the highlighted part of the widget.
Commit: 787743b1edd1b8ee4cca5f394fc32a946249a318 Author: Antony Riakiotakis Date: Fri Dec 5 16:42:39 2014 +0100 Branches: wiggly-widgets https://developer.blender.org/rB787743b1edd1b8ee4cca5f394fc32a946249a318 Add back an extra paramater to the intersection function to determine the highlighted part of the widget. === M source/blender/windowmanager/WM_api.h M source/blender/windowmanager/intern/wm_event_system.c M source/blender/windowmanager/intern/wm_widgets.c M source/blender/windowmanager/wm.h M source/blender/windowmanager/wm_event_system.h === diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index c637868..b3aba29 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -482,7 +482,6 @@ struct wmWidget *WM_widget_new(void (*draw)(struct wmWidget *, const struct bCon void WM_widget_property(struct wmWidget *, struct PointerRNA *ptr, const char *propname); void WM_widget_operator(struct wmWidget *, -int (*initialize_op)(struct bContext *, const struct wmEvent *, struct wmWidget *, struct PointerRNA *), const char *opname, const char *propname); void WM_widgets_draw(const struct bContext *C, struct ARegion *ar); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index fc216b8..a33f0ef 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -2005,6 +2005,7 @@ static int wm_handlers_do_intern(bContext *C, wmEvent *event, ListBase *handlers } else if (handler-widgetmap) { struct wmWidgetMap *wmap = handler-widgetmap; + unsigned char part; wmWidget *widget = wm_widgetmap_get_active_widget(wmap); switch (event-type) { @@ -2014,12 +2015,12 @@ static int wm_handlers_do_intern(bContext *C, wmEvent *event, ListBase *handlers action |= WM_HANDLER_BREAK; } else if (wm_widgetmap_is_3d(wmap)) { - widget = wm_widget_find_highlighted_3D(wmap, C, event); - wm_widgetmap_set_highlighted_widget(wmap, C, widget); + widget = wm_widget_find_highlighted_3D(wmap, C, event, part); + wm_widgetmap_set_highlighted_widget(wmap, C, widget, part); } else { - widget = wm_widget_find_highlighted(wmap, C, event); - wm_widgetmap_set_highlighted_widget(wmap, C, widget); + widget = wm_widget_find_highlighted(wmap, C, event, part); + wm_widgetmap_set_highlighted_widget(wmap, C, widget, part); } break; diff --git a/source/blender/windowmanager/intern/wm_widgets.c b/source/blender/windowmanager/intern/wm_widgets.c index e7bd4e4..613b753 100644 --- a/source/blender/windowmanager/intern/wm_widgets.c +++ b/source/blender/windowmanager/intern/wm_widgets.c @@ -78,7 +78,6 @@ typedef struct wmWidgetMap { /* highlighted widget for this map. We redraw the widgetmap when this changes */ wmWidget *highlighted_widget; - /* active widget for this map. User has clicked and is currently this widget */ wmWidget *active_widget; } wmWidgetMap; @@ -181,24 +180,32 @@ void WM_widget_property(struct wmWidget *widget, struct PointerRNA *ptr, const c } void WM_widget_operator(struct wmWidget *widget, -int (*initialize_op)(struct bContext *, const struct wmEvent *, struct wmWidget *, struct PointerRNA *), const char *opname, const char *propname) { - widget-initialize_op = initialize_op; - widget-opname = opname; - widget-propname = propname; - - if (widget-bind_to_prop) - widget-bind_to_prop(widget); + wmOperatorType *ot = WM_operatortype_find(opname, 0); + + if (ot) { + widget-opname = opname; +
[Bf-blender-cvs] [0a7eb30] wiggly-widgets: Cleanup leftover code.
Commit: 0a7eb30cee25eabd32d372d10c08dcde2437384a Author: Antony Riakiotakis Date: Fri Dec 5 15:59:53 2014 +0100 Branches: wiggly-widgets https://developer.blender.org/rB0a7eb30cee25eabd32d372d10c08dcde2437384a Cleanup leftover code. === M source/blender/blenloader/intern/versioning_270.c === diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c index f2718f5..0011b68 100644 --- a/source/blender/blenloader/intern/versioning_270.c +++ b/source/blender/blenloader/intern/versioning_270.c @@ -446,7 +446,6 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main) if (sl-spacetype == SPACE_NODE) { SpaceNode *snode = (SpaceNode *)sl; snode-backdrop.scalex = 1.0; - snode-backdrop.scalex = 1.0; } } } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [276286a] asset-experiments: Merge branch 'master' into asset-experiments
Commit: 276286aa8549bdb349ead4fd48c60343afa6c29d Author: Bastien Montagne Date: Fri Dec 5 12:45:31 2014 +0100 Branches: asset-experiments https://developer.blender.org/rB276286aa8549bdb349ead4fd48c60343afa6c29d Merge branch 'master' into asset-experiments === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [b3e2cba] asset-experiments: Merge branch 'master' into asset-experiments
Commit: b3e2cbac79b322a856a082521f76bfba66dbe162 Author: Bastien Montagne Date: Fri Dec 5 16:47:05 2014 +0100 Branches: asset-experiments https://developer.blender.org/rBb3e2cbac79b322a856a082521f76bfba66dbe162 Merge branch 'master' into asset-experiments === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [9939e78] asset-experiments: Reworked 'flat' mode, added it outside of blendfiles (libraries).
Commit: 9939e783a92b9a056a1b74bfb2b2900769fcb8d1 Author: Bastien Montagne Date: Fri Dec 5 16:43:57 2014 +0100 Branches: asset-experiments https://developer.blender.org/rB9939e783a92b9a056a1b74bfb2b2900769fcb8d1 Reworked 'flat' mode, added it outside of blendfiles (libraries). Note this is WIP, it 'breaks' load/append/etc. operators to some points, and many other 'details' that need to be addressed. === M release/scripts/startup/bl_ui/space_filebrowser.py M source/blender/editors/space_file/file_ops.c M source/blender/editors/space_file/filelist.c M source/blender/editors/space_file/filelist.h M source/blender/editors/space_file/filesel.c M source/blender/editors/space_file/space_file.c M source/blender/makesdna/DNA_space_types.h M source/blender/makesrna/intern/rna_space.c === diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py index 794c8ba..cd4f237 100644 --- a/release/scripts/startup/bl_ui/space_filebrowser.py +++ b/release/scripts/startup/bl_ui/space_filebrowser.py @@ -56,6 +56,7 @@ class FILEBROWSER_HT_header(Header): layout.prop(params, sort_method, expand=True, text=) layout.prop(params, show_hidden) +layout.prop(params, use_flat_view) layout.prop(params, use_filter, text=, icon='FILTER') row = layout.row(align=True) diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 6912970..df3f989 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -859,7 +859,7 @@ int file_parent_exec(bContext *C, wmOperator *UNUSED(unused)) if (BLI_parent_dir(sfile-params-dir)) { BLI_cleanup_dir(G.main-name, sfile-params-dir); /* if not browsing in .blend file, we still want to check whether the path is a directory */ - if (ELEM(sfile-params-type, FILE_LOADLIB, FILE_ASSET)) { + if (sfile-params-type == FILE_LOADLIB) { char tdir[FILE_MAX], tgroup[FILE_MAX]; if (BLO_is_a_library(sfile-params-dir, tdir, tgroup)) { file_change_dir(C, 0); @@ -1334,7 +1334,7 @@ void file_filename_enter_handle(bContext *C, void *UNUSED(arg_unused), void *arg UI_textbutton_activate_but(C, but); WM_event_add_notifier(C, NC_SPACE | ND_SPACE_FILE_PARAMS, NULL); } - else if (ELEM(sfile-params-type, FILE_LOADLIB, FILE_ASSET)) { + else if (sfile-params-type == FILE_LOADLIB) { char tdir[FILE_MAX], tgroup[FILE_MAX]; BLI_add_slash(filepath); if (BLO_is_a_library(filepath, tdir, tgroup)) { diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 3339b39..ecfdff9 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -126,8 +126,15 @@ typedef struct FileList { void (*readf)(struct FileList *); bool (*filterf)(struct direntry *file, const char *dir, FileListFilter *filter); + bool use_recursion; + short recursion_level; } FileList; +#define FILELIST_MAX_RECURSION 3 + +#define FILENAME_IS_BREADCRUMBS(_n) \ + (((_n)[0] == '.' (_n)[1] == '\0') || ((_n)[0] == '.' (_n)[1] == '.' (_n)[2] == '\0')) + typedef struct FolderList { struct FolderList *next, *prev; char *foldername; @@ -410,7 +417,6 @@ ListBase *folderlist_duplicate(ListBase *folderlist) static void filelist_read_main(struct FileList *filelist); static void filelist_read_library(struct FileList *filelist); -static void filelist_read_library_flat(struct FileList *filelist); static void filelist_read_dir(struct FileList *filelist); static void filelist_from_library(struct FileList *filelist, const bool add_parent, const bool use_filter); @@ -426,9 +432,6 @@ static bool is_hidden_file(const char *filename, const bool hide_dot) if (filename[0] == '.' filename[1] != '.' filename[1] != 0) { is_hidden = true; /* ignore .file */ } - else if (((filename[0] == '.') (filename[1] == 0))) { - is_hidden = true; /* ignore . */ - } else { int len = strlen(filename); if ((len 0) (filename[len - 1] == '~')) { @@ -436,64 +439,48 @@ static bool is_hidden_file(const char *filename, const bool hide_dot)
[Bf-blender-cvs] [d4c9ff8] wiggly-widgets: Add facemaps panel to the supported cycles panels
Commit: d4c9ff8a21c983bb99fb015382f52a36d7a6e70f Author: Antony Riakiotakis Date: Fri Dec 5 17:59:27 2014 +0100 Branches: wiggly-widgets https://developer.blender.org/rBd4c9ff8a21c983bb99fb015382f52a36d7a6e70f Add facemaps panel to the supported cycles panels === M intern/cycles/blender/addon/ui.py === diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index 9b1e20d..babc732 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -1412,6 +1412,7 @@ def get_panels(): DATA_PT_curve_texture_space, DATA_PT_mball_texture_space, DATA_PT_vertex_groups, +DATA_PT_face_maps, DATA_PT_shape_keys, DATA_PT_uv_texture, DATA_PT_vertex_colors, ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [716890e] master: Cycles: Early output from Scene::device_update when device error occurs
Commit: 716890e864b3730386a526703f4401a697de047a Author: Sergey Sharybin Date: Fri Dec 5 21:00:05 2014 +0500 Branches: master https://developer.blender.org/rB716890e864b3730386a526703f4401a697de047a Cycles: Early output from Scene::device_update when device error occurs This way for example we wouldn't wait a fortune while BVH is building after GPU run out of memory when loading images just to see the render failure message. === M intern/cycles/render/scene.cpp === diff --git a/intern/cycles/render/scene.cpp b/intern/cycles/render/scene.cpp index 3662c29..ccb03ea 100644 --- a/intern/cycles/render/scene.cpp +++ b/intern/cycles/render/scene.cpp @@ -153,81 +153,83 @@ void Scene::device_update(Device *device_, Progress progress) progress.set_status(Updating Shaders); shader_manager-device_update(device, dscene, this, progress); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Images); image_manager-device_update(device, dscene, progress); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Background); background-device_update(device, dscene, this); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Objects); object_manager-device_update(device, dscene, this, progress); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Meshes); mesh_manager-device_update(device, dscene, this, progress); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Objects Flags); object_manager-device_update_flags(device, dscene, this, progress); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Hair Systems); curve_system_manager-device_update(device, dscene, this, progress); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Lookup Tables); lookup_tables-device_update(device, dscene); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; /* TODO(sergey): Make sure camera is not needed above. */ progress.set_status(Updating Camera); camera-device_update(device, dscene, this); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Lights); light_manager-device_update(device, dscene, this, progress); - if(progress.get_cancel()) return; + 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()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Film); film-device_update(device, dscene, this); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Integrator); integrator-device_update(device, dscene, this); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Lookup Tables); lookup_tables-device_update(device, dscene); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; progress.set_status(Updating Baking); bake_manager-device_update(device, dscene, this, progress); - if(progress.get_cancel()) return; + if(progress.get_cancel() || device-have_error()) return; - progress.set_status(Updating Device, Writing constant memory); - device-const_copy_to(__data, dscene.data, sizeof(dscene.data)); + if(device-have_error() == false) { + progress.set_status(Updating Device, Writing constant memory); + device-const_copy_to(__data, dscene.data, sizeof(dscene.data)); + } } Scene::MotionType Scene::need_motion(bool advanced_shading) ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [0493879] master: Cycles: Report error via the new engine API
Commit: 049387940111ffec0a30cc614e32c75defeacb64 Author: Sergey Sharybin Date: Fri Dec 5 22:00:39 2014 +0500 Branches: master https://developer.blender.org/rB049387940111ffec0a30cc614e32c75defeacb64 Cycles: Report error via the new engine API This way CUDA errors are visible in the image info line, which makes things to behave the same across viewport and final rendering. That's right, we've got error reported via reports and info line now. This is based on the feedback from our gooseberry team. === M intern/cycles/blender/blender_session.cpp === diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 39085ff..79ab254 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -875,6 +875,7 @@ void BlenderSession::update_status_progress() * For until then, 1 5 means RPT_ERROR. */ b_engine.report(1 5, error.c_str()); + b_engine.error_set(error.c_str()); last_error = error; } } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [ecc03c8] master: Render API: Add RenderEngine.error_set() function
Commit: ecc03c8ed0ca196f4c249ec25f331938a1a0405a Author: Sergey Sharybin Date: Fri Dec 5 21:56:29 2014 +0500 Branches: master https://developer.blender.org/rBecc03c8ed0ca196f4c249ec25f331938a1a0405a Render API: Add RenderEngine.error_set() function This function sets an error message which would be displayed after rendering is over and info space lost the link to the engine. === M source/blender/editors/render/render_internal.c M source/blender/makesrna/intern/rna_render.c M source/blender/render/extern/include/RE_engine.h M source/blender/render/extern/include/RE_pipeline.h M source/blender/render/intern/source/external_engine.c M source/blender/render/intern/source/render_result.c === diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 9d5eed3..fcc90fa 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -340,7 +340,11 @@ static void render_freejob(void *rjv) } /* str is IMA_MAX_RENDER_TEXT in size */ -static void make_renderinfo_string(RenderStats *rs, Scene *scene, bool v3d_override, char *str) +static void make_renderinfo_string(const RenderStats *rs, + const Scene *scene, + const bool v3d_override, + const char *error, + char *str) { char info_time_str[32]; // used to be extern to header_info.c uintptr_t mem_in_use, mmap_in_use, peak_memory; @@ -413,8 +417,12 @@ static void make_renderinfo_string(RenderStats *rs, Scene *scene, bool v3d_overr spos += sprintf(spos, IFACE_(| Full Sample %d ), rs-curfsa); /* extra info */ - if (rs-infostr rs-infostr[0]) + if (rs-infostr rs-infostr[0]) { spos += sprintf(spos, | %s , rs-infostr); + } + else if (error error[0]) { + spos += sprintf(spos, | %s , error); + } /* very weak... but 512 characters is quite safe */ if (spos = str + IMA_MAX_RENDER_TEXT) @@ -435,7 +443,8 @@ static void image_renderinfo_cb(void *rjv, RenderStats *rs) if (rr-text == NULL) rr-text = MEM_callocN(IMA_MAX_RENDER_TEXT, rendertext); - make_renderinfo_string(rs, rj-scene, rj-v3d_override, rr-text); + make_renderinfo_string(rs, rj-scene, rj-v3d_override, + rr-error, rr-text); } RE_ReleaseResult(rj-re); @@ -1118,7 +1127,7 @@ static void render_view3d_renderinfo_cb(void *rjp, RenderStats *rs) *rp-stop = 1; } else { - make_renderinfo_string(rs, rp-scene, false, rp-engine-text); + make_renderinfo_string(rs, rp-scene, false, NULL, rp-engine-text); /* make jobs timer to send notifier */ *(rp-do_update) = true; diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index 5d4ec06..6db9c8e 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -519,6 +519,11 @@ static void rna_def_render_engine(BlenderRNA *brna) prop = RNA_def_string(func, message, NULL, 0, Report Message, ); RNA_def_property_flag(prop, PROP_REQUIRED); + func = RNA_def_function(srna, error_set, RE_engine_set_error_message); + RNA_def_function_ui_description(func, Set error message displaying after the render is finished); + prop = RNA_def_string(func, message, NULL, 0, Report Message, ); + RNA_def_property_flag(prop, PROP_REQUIRED); + func = RNA_def_function(srna, bind_display_space_shader, engine_bind_display_space_shader); RNA_def_function_ui_description(func, Bind GLSL fragment shader that converts linear colors to display space colors using scene color management settings); prop = RNA_def_pointer(func, scene, Scene, , ); diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index 4b0473f..5edf970 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -144,6 +144,7 @@ void RE_engine_update_stats(RenderEngine *engine, const char *stats, const char void RE_engine_update_progress(RenderEngine *engine, float progress); void RE_engine_update_memory_stats(RenderEngine *engine, float mem_used, float mem_peak); void RE_engine_report(RenderEngine *engine, int type, const char *msg); +void RE_engine_set_error_message(RenderEngine *engine, const char *msg); int RE_engine_render(struct Render *re, int do_all); diff --git
[Bf-blender-cvs] [bd0b9ed] master: Cycles: Add dedicated Progress::set_error() call
Commit: bd0b9ed0c0436cda050f139b9d30bd3d0648d09a Author: Sergey Sharybin Date: Fri Dec 5 21:17:48 2014 +0500 Branches: master https://developer.blender.org/rBbd0b9ed0c0436cda050f139b9d30bd3d0648d09a Cycles: Add dedicated Progress::set_error() call Currently it acts the same as set_cancel(), but this way we're able to distinguish situations when rendering was aborted by user demand (for example pressing Esc in standalone renderer) or if something went horribly wrong (for example out of VRAM error). === M intern/cycles/render/session.cpp M intern/cycles/util/util_progress.h === diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index 9fcd9fa..c03a3dd 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -251,7 +251,7 @@ void Session::run_gpu() update_scene(); if(!device-error_message().empty()) - progress.set_cancel(device-error_message()); + progress.set_error(device-error_message()); if(progress.get_cancel()) break; @@ -292,7 +292,7 @@ void Session::run_gpu() } if(!device-error_message().empty()) - progress.set_cancel(device-error_message()); + progress.set_error(device-error_message()); tiles_written = update_progressive_refine(progress.get_cancel()); @@ -540,7 +540,7 @@ void Session::run_cpu() update_scene(); if(!device-error_message().empty()) - progress.set_cancel(device-error_message()); + progress.set_error(device-error_message()); if(progress.get_cancel()) break; @@ -558,7 +558,7 @@ void Session::run_cpu() need_tonemap = true; if(!device-error_message().empty()) - progress.set_cancel(device-error_message()); + progress.set_error(device-error_message()); } device-task_wait(); @@ -580,7 +580,7 @@ void Session::run_cpu() } if(!device-error_message().empty()) - progress.set_cancel(device-error_message()); + progress.set_error(device-error_message()); tiles_written = update_progressive_refine(progress.get_cancel()); } @@ -604,7 +604,7 @@ void Session::load_kernels() if(message.empty()) message = Failed loading render kernel, see console for errors; - progress.set_cancel(message); + progress.set_error(message); progress.set_status(Error, message); progress.set_update(); return; diff --git a/intern/cycles/util/util_progress.h b/intern/cycles/util/util_progress.h index e721a3f..238fb97 100644 --- a/intern/cycles/util/util_progress.h +++ b/intern/cycles/util/util_progress.h @@ -46,6 +46,8 @@ public: update_cb = NULL; cancel = false; cancel_message = ; + error = false; + error_message = ; cancel_cb = NULL; } @@ -79,6 +81,8 @@ public: sync_substatus = ; cancel = false; cancel_message = ; + error = false; + error_message = ; } /* cancel */ @@ -108,6 +112,28 @@ public: cancel_cb = function; } + /* error */ + void set_error(const string error_message_) + { + thread_scoped_lock lock(progress_mutex); + error_message = error_message_; + error = true; + /* If error happens we also stop rendering. */ + cancel_message = error_message_; + cancel = true; + } + + bool get_error() + { + return error; + } + + string get_error_message() + { + thread_scoped_lock lock(progress_mutex); + return error_message; + } + /* tile and timing information */ void set_start_time(double start_time_) @@ -259,6 +285,9 @@ protected: volatile bool cancel; string cancel_message; + + volatile bool error; + string error_message; }; CCL_NAMESPACE_END ___ Bf-blender-cvs mailing list
[Bf-blender-cvs] [0b67102] master: Cycles: Code cleanup, whitespace
Commit: 0b67102bd6be56edfefb66e2047b448fac0a152d Author: Sergey Sharybin Date: Fri Dec 5 19:28:09 2014 +0500 Branches: master https://developer.blender.org/rB0b67102bd6be56edfefb66e2047b448fac0a152d Cycles: Code cleanup, whitespace === M intern/cycles/blender/blender_session.cpp === diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 57ffea4..66d63d6 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -826,10 +826,8 @@ void BlenderSession::update_status_progress() get_status(status, substatus); get_progress(progress, total_time); - - if(background) { - if(progress0) + if(progress 0) remaining_time = (1.0 - (double)progress) * (total_time / (double)progress); scene += | + b_scene.name(); @@ -843,12 +841,12 @@ void BlenderSession::update_status_progress() if(samples 0 total_samples != USHRT_MAX) remaining_time = (total_samples - samples) * (total_time / samples); } - - if(remaining_time0) { + + if(remaining_time 0) { BLI_timestr(remaining_time, time_str, sizeof(time_str)); timestatus += Remaining: + string(time_str) + | ; } - + timestatus += string_printf(Mem:%.2fM, Peak:%.2fM, (double)mem_used, (double)mem_peak); if(status.size() 0) ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [2b4eeb7] master: Cycles: Report error to the blender using report API
Commit: 2b4eeb79cd77bebdb98c769b56dbe0a87e034e1a Author: Sergey Sharybin Date: Fri Dec 5 21:27:52 2014 +0500 Branches: master https://developer.blender.org/rB2b4eeb79cd77bebdb98c769b56dbe0a87e034e1a Cycles: Report error to the blender using report API This way when something goes wrong in Cycles (for example out of VRAM, timelimit launching the kernel etc) we'll have a nice report in the Info space header. Sure it'll be nice to have mention of error in the image editor's information line, but that's for the future. This fixes T42747: CUDA error appears only momentarily, then disappears === M intern/cycles/blender/blender_session.cpp M intern/cycles/blender/blender_session.h === diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 66d63d6..39085ff 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -92,6 +92,7 @@ void BlenderSession::create_session() /* reset status/progress */ last_status = ; + last_error = ; last_progress = -1.0f; start_resize_time = 0.0; @@ -863,6 +864,20 @@ void BlenderSession::update_status_progress() b_engine.update_progress(progress); last_progress = progress; } + + if (session-progress.get_error()) { + string error = session-progress.get_error_message(); + if(error != last_error) { + /* TODO(sergey): Currently C++ RNA API doesn't let us to +* use mnemonic name for the variable. Would be nice to +* have this figured out. +* +* For until then, 1 5 means RPT_ERROR. +*/ + b_engine.report(1 5, error.c_str()); + last_error = error; + } + } } void BlenderSession::tag_update() diff --git a/intern/cycles/blender/blender_session.h b/intern/cycles/blender/blender_session.h index ac68511..143a23a 100644 --- a/intern/cycles/blender/blender_session.h +++ b/intern/cycles/blender/blender_session.h @@ -91,6 +91,7 @@ public: string b_rlay_name; string last_status; + string last_error; float last_progress; int width, height; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [825d6ad] master: OSX: make sure window of new blender instance is front when playing animation
Commit: 825d6adef5c47b172475c0359769b394f2adaf7a Author: Jens Verwiebe Date: Fri Dec 5 18:41:59 2014 +0100 Branches: master https://developer.blender.org/rB825d6adef5c47b172475c0359769b394f2adaf7a OSX: make sure window of new blender instance is front when playing animation === M intern/ghost/intern/GHOST_WindowCocoa.mm === diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm index ab313b0..fed44ea 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.mm +++ b/intern/ghost/intern/GHOST_WindowCocoa.mm @@ -645,6 +645,8 @@ GHOST_WindowCocoa::GHOST_WindowCocoa( m_lionStyleFullScreen = true; } + [m_window orderFrontRegardless]; // to rise window for new blender instance animation play case + [pool drain]; } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [871cf70] master: Fix playercompile after ecc03c8ed
Commit: 871cf701445a6a9c8aa39f1ac6809aebe7d49e56 Author: Jens Verwiebe Date: Fri Dec 5 18:51:19 2014 +0100 Branches: master https://developer.blender.org/rB871cf701445a6a9c8aa39f1ac6809aebe7d49e56 Fix playercompile after ecc03c8ed === M source/blenderplayer/bad_level_call_stubs/stubs.c === diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index ccdf082..6ba2b6c 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -574,6 +574,7 @@ struct RenderStats *RE_GetStats(struct Render *re) RET_NULL struct RenderData *RE_engine_get_render_data(struct Render *re) RET_NULL void RE_engine_update_result(struct RenderEngine *engine, struct RenderResult *result) RET_NONE void RE_engine_update_progress(struct RenderEngine *engine, float progress) RET_NONE +void RE_engine_set_error_message(RenderEngine *engine, const char *msg) RET_NONE void RE_engine_end_result(RenderEngine *engine, struct RenderResult *result, int cancel, int merge_results) RET_NONE void RE_engine_update_stats(RenderEngine *engine, const char *stats, const char *info) RET_NONE void RE_layer_load_from_file(struct RenderLayer *layer, struct ReportList *reports, const char *filename, int x, int y) RET_NONE ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [44e8045] viewport_experiments: Merge branch 'master' into viewport_experiments
Commit: 44e8045ee5064a5e9d89d7654a28bf69f1771966 Author: Antony Riakiotakis Date: Fri Dec 5 23:32:07 2014 +0100 Branches: viewport_experiments https://developer.blender.org/rB44e8045ee5064a5e9d89d7654a28bf69f1771966 Merge branch 'master' into viewport_experiments === === diff --cc source/blender/editors/render/render_opengl.c index 7266f5e,7df281b..bf3e0d4 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@@ -70,9 -68,7 +70,8 @@@ #include GPU_extensions.h #include GPU_glew.h +#include GPU_compositing.h - #include wm_window.h #include render_intern.h diff --cc source/blender/gpu/intern/gpu_extensions.c index ff322d8,e386869..6090f34 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@@ -47,10 -47,8 +47,9 @@@ #include GPU_draw.h #include GPU_extensions.h +#include GPU_compositing.h #include GPU_simple_shader.h - #include intern/gpu_codegen.h #include intern/gpu_extensions_private.h #include stdlib.h ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [c37c50e] viewport_experiments: Add quality settings for depth of field - still inactive.
Commit: c37c50e33ff9822436b4047b690f5903113d79da Author: Antony Riakiotakis Date: Sat Dec 6 00:32:04 2014 +0100 Branches: viewport_experiments https://developer.blender.org/rBc37c50e33ff9822436b4047b690f5903113d79da Add quality settings for depth of field - still inactive. === M release/scripts/startup/bl_ui/properties_data_camera.py M release/scripts/startup/bl_ui/space_view3d.py M source/blender/makesdna/DNA_gpu_types.h M source/blender/makesrna/intern/rna_scene.c === diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py index 395492c..c864f84 100644 --- a/release/scripts/startup/bl_ui/properties_data_camera.py +++ b/release/scripts/startup/bl_ui/properties_data_camera.py @@ -190,6 +190,7 @@ class DATA_PT_camera_gpu_dof(Panel): col.prop(dof_options, dof_fstop) col.prop(dof_options, dof_focal_length) col.prop(dof_options, dof_sensor) +col.prop(dof_options, dof_quality_mode) @classmethod def poll(cls, context): diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 53233c1..23baf78 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -2927,6 +2927,7 @@ class VIEW3D_PT_view3d_shading(Panel): subcol.prop(dof_options, dof_fstop) subcol.prop(dof_options, dof_focal_length) subcol.prop(dof_options, dof_sensor) +subcol.prop(dof_options, dof_quality_mode) col.prop(view, ssao) if view.ssao: ssao_options = fxoptions.ssao_options diff --git a/source/blender/makesdna/DNA_gpu_types.h b/source/blender/makesdna/DNA_gpu_types.h index 8d68c85..1f63c99 100644 --- a/source/blender/makesdna/DNA_gpu_types.h +++ b/source/blender/makesdna/DNA_gpu_types.h @@ -38,6 +38,8 @@ typedef struct GPUDOFOptions { float dof_fstop; float dof_focal_length; float dof_sensor; + int dof_quality_mode; + int pad; } GPUDOFOptions; /* properties for SSAO effect */ diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 46af557..4e4e2a1 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -3826,6 +3826,12 @@ static void rna_def_gpu_dof_fx(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; + static EnumPropertyItem dof_quality_items[] = { + {0, NORMAL, 0, Normal, Use standard blurring depth of field}, + {1, HIGH, 0, High, Use diffusion solver depth of field}, + {0, NULL, 0, NULL, NULL} + }; + srna = RNA_def_struct(brna, GPUDOFOptions, NULL); RNA_def_struct_ui_text(srna, GPU DOF, Options for GPU based depth of field); RNA_def_struct_ui_icon(srna, ICON_RENDERLAYERS); @@ -3854,6 +3860,11 @@ static void rna_def_gpu_dof_fx(BlenderRNA *brna) RNA_def_property_range(prop, 0.0f, FLT_MAX); RNA_def_property_ui_range(prop, 0.1f, 64.0f, 10, 1); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + + prop = RNA_def_property(srna, dof_quality_mode, PROP_ENUM, PROP_NONE); + RNA_def_property_ui_text(prop, Quality, Quality of the dof effect); + RNA_def_property_enum_items(prop, dof_quality_items); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); } static void rna_def_gpu_ssao_fx(BlenderRNA *brna) @@ -3890,7 +3901,7 @@ static void rna_def_gpu_ssao_fx(BlenderRNA *brna) RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); prop = RNA_def_property(srna, ssao_ray_sample_mode, PROP_ENUM, PROP_NONE); - RNA_def_property_ui_text(prop, Sample mode, Attenuation constant); + RNA_def_property_ui_text(prop, Sample mode, Quality of the SSAO algorithm); RNA_def_property_enum_items(prop, view3d_ssao_sample_items); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [702cb6c] viewport_experiments: Replace magic quality numbers, add some cleanup code, deactivate high quality mode dof.
Commit: 702cb6c403de0deee512a15cb31c5f612f1b50ff Author: Antony Riakiotakis Date: Sat Dec 6 01:09:26 2014 +0100 Branches: viewport_experiments https://developer.blender.org/rB702cb6c403de0deee512a15cb31c5f612f1b50ff Replace magic quality numbers, add some cleanup code, deactivate high quality mode dof. === M source/blender/gpu/intern/gpu_compositing.c M source/blender/makesdna/DNA_gpu_types.h M source/blender/makesrna/intern/rna_scene.c === diff --git a/source/blender/gpu/intern/gpu_compositing.c b/source/blender/gpu/intern/gpu_compositing.c index ad25ee4..2563579 100644 --- a/source/blender/gpu/intern/gpu_compositing.c +++ b/source/blender/gpu/intern/gpu_compositing.c @@ -78,6 +78,10 @@ struct GPUFX { /* final near coc buffer. */ GPUTexture *dof_near_coc_final_buffer; + /* diffusion depth of field */ + int num_diff_buffers; + GPUTexture **dof_diffusion_buffers; + /* texture bound to the depth attachment of the gbuffer */ GPUTexture *depth_buffer; @@ -122,6 +126,17 @@ static void cleanup_fx_dof_buffers(GPUFX *fx) GPU_texture_free(fx-dof_near_coc_final_buffer); fx-dof_near_coc_final_buffer = NULL; } + + if (fx-dof_diffusion_buffers) { + int i; + + for (i = 0; i fx-num_diff_buffers; i++) { + GPU_texture_free(fx-dof_diffusion_buffers[i]); + MEM_freeN(fx-dof_diffusion_buffers); + fx-dof_diffusion_buffers = NULL; + fx-num_diff_buffers = 0; + } + } } static void cleanup_fx_gl_data(GPUFX *fx, bool do_fbo) @@ -222,7 +237,7 @@ bool GPU_initialize_fx_passes(GPUFX *fx, rcti *rect, rcti *scissor_rect, int fxf } /* disable effects if no options passed for them */ - if (!options-dof_options) { + if (!options-dof_options || (options-dof_options-dof_quality_mode == DOF_QUALITY_HIGH)) { fxflags = ~GPU_FX_DEPTH_OF_FIELD; } if (!options-ssao_options) { @@ -236,9 +251,9 @@ bool GPU_initialize_fx_passes(GPUFX *fx, rcti *rect, rcti *scissor_rect, int fxf fx-num_passes = 0; /* dof really needs a ping-pong buffer to work */ - if (fxflags GPU_FX_DEPTH_OF_FIELD) { + if (fxflags GPU_FX_DEPTH_OF_FIELD) num_passes++; - } + if (fxflags GPU_FX_SSAO) num_passes++; @@ -271,24 +286,29 @@ bool GPU_initialize_fx_passes(GPUFX *fx, rcti *rect, rcti *scissor_rect, int fxf /* create textures for dof effect */ if (fxflags GPU_FX_DEPTH_OF_FIELD) { - if (!fx-dof_near_coc_buffer || !fx-dof_near_coc_blurred_buffer || !fx-dof_near_coc_final_buffer) { - fx-dof_near_w = w / 4; - fx-dof_near_h = h / 4; - - if (!(fx-dof_near_coc_buffer = GPU_texture_create_2D(fx-dof_near_w, fx-dof_near_h, NULL, err_out))) { - printf(%.256s\n, err_out); - cleanup_fx_gl_data(fx, true); - return false; - } - if (!(fx-dof_near_coc_blurred_buffer = GPU_texture_create_2D(fx-dof_near_w, fx-dof_near_h, NULL, err_out))) { - printf(%.256s\n, err_out); - cleanup_fx_gl_data(fx, true); - return false; - } - if (!(fx-dof_near_coc_final_buffer = GPU_texture_create_2D(fx-dof_near_w, fx-dof_near_h, NULL, err_out))) { - printf(%.256s\n, err_out); - cleanup_fx_gl_data(fx, true); - return false; + if (options-dof_options-dof_quality_mode == DOF_QUALITY_HIGH) { + /* we need to generate a pyramid of images that will be operated */ + } + else { + if (!fx-dof_near_coc_buffer || !fx-dof_near_coc_blurred_buffer || !fx-dof_near_coc_final_buffer) { + fx-dof_near_w = w / 4; + fx-dof_near_h = h / 4; + + if (!(fx-dof_near_coc_buffer = GPU_texture_create_2D(fx-dof_near_w, fx-dof_near_h, NULL, err_out))) { + printf(%.256s\n, err_out); + cleanup_fx_gl_data(fx, true); + return false; + } + if (!(fx-dof_near_coc_blurred_buffer = GPU_texture_create_2D(fx-dof_near_w, fx-dof_near_h, NULL, err_out))) { + printf(%.256s\n,
[Bf-blender-cvs] [c8995ec] master: Fix inbetween mousemove event getting detected in hotkey buttons.
Commit: c8995ecc835d6fa7093bd76dd4ba031ac27465bd Author: Brecht Van Lommel Date: Sat Dec 6 02:27:13 2014 +0100 Branches: master https://developer.blender.org/rBc8995ecc835d6fa7093bd76dd4ba031ac27465bd Fix inbetween mousemove event getting detected in hotkey buttons. === M source/blender/editors/interface/interface_handlers.c === diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index c841370..3a31280 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -3063,10 +3063,10 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data } } else if (data-state == BUTTON_STATE_WAIT_KEY_EVENT) { - - if (event-type == MOUSEMOVE) + if (ELEM(event-type, MOUSEMOVE, INBETWEEN_MOUSEMOVE)) { return WM_UI_HANDLER_CONTINUE; - + } + if (event-type == LEFTMOUSE event-val == KM_PRESS) { /* only cancel if click outside the button */ if (ui_but_contains_point_px(but-active-region, but, event-x, event-y) == 0) { ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [c077f5f] master: Fix T42789: support 3Dconnexion wireless devices
Commit: c077f5fa0863796ce7e76772408306bcea90cde3 Author: Mike Erwin Date: Sat Dec 6 02:48:51 2014 -0500 Branches: master https://developer.blender.org/rBc077f5fa0863796ce7e76772408306bcea90cde3 Fix T42789: support 3Dconnexion wireless devices SpaceMouse Wireless SpaceMouse Pro Wireless Device info is from user reports. I don’t yet have the new devices, so these are untested but likely to work :D === M intern/ghost/intern/GHOST_NDOFManager.cpp M intern/ghost/intern/GHOST_NDOFManager.h === diff --git a/intern/ghost/intern/GHOST_NDOFManager.cpp b/intern/ghost/intern/GHOST_NDOFManager.cpp index 9bd6226..86020e1 100644 --- a/intern/ghost/intern/GHOST_NDOFManager.cpp +++ b/intern/ghost/intern/GHOST_NDOFManager.cpp @@ -228,7 +228,7 @@ bool GHOST_NDOFManager::setDevice(unsigned short vendor_id, unsigned short produ // that I don't have access to. Thanks! switch (vendor_id) { - case 0x046D: // Logitech (3Dconnexion) + case 0x046D: // Logitech (3Dconnexion was a subsidiary) switch (product_id) { // -- current devices -- case 0xC626: // full-size SpaceNavigator @@ -281,6 +281,29 @@ bool GHOST_NDOFManager::setDevice(unsigned short vendor_id, unsigned short produ printf(ndof: unknown Logitech product %04hx\n, product_id); } break; + case 0x256F: // 3Dconnexion + switch (product_id) { + case 0xC62E: // plugged in + case 0xC62F: // wireless + puts(ndof: using SpaceMouse Wireless); + m_deviceType = NDOF_SpaceMouseWireless; + m_buttonCount = 2; + m_hidMap = Modern3Dx_HID_map; + break; + case 0xC631: // plugged in + case 0xC632: // wireless + puts(ndof: using SpaceMouse Pro Wireless); + m_deviceType = NDOF_SpaceMouseProWireless; + m_buttonCount = 27; + // ^^ actually has 15 buttons, but their HID codes range from 0 to 26 + m_buttonMask = 0x07C0F137; + m_hidMap = Modern3Dx_HID_map; + break; + + default: + printf(ndof: unknown 3Dconnexion product %04hx\n, product_id); +} +break; default: printf(ndof: unknown device %04hx:%04hx\n, vendor_id, product_id); } diff --git a/intern/ghost/intern/GHOST_NDOFManager.h b/intern/ghost/intern/GHOST_NDOFManager.h index 0b2080e..8d6edf3 100644 --- a/intern/ghost/intern/GHOST_NDOFManager.h +++ b/intern/ghost/intern/GHOST_NDOFManager.h @@ -38,6 +38,8 @@ typedef enum { NDOF_SpaceExplorer, NDOF_SpacePilotPro, NDOF_SpaceMousePro, + NDOF_SpaceMouseWireless, + NDOF_SpaceMouseProWireless, // older devices NDOF_SpacePilot, ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs