[Bf-blender-cvs] [584ab40] depsgraph_refactor: Depsgraph: Add proper relations to the boolean modifier

2014-12-05 Thread Sergey Sharybin
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

2014-12-05 Thread Lukas Tönne
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

2014-12-05 Thread Antony Riakiotakis
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.

2014-12-05 Thread Antony Riakiotakis
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.

2014-12-05 Thread Lukas Tönne
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.

2014-12-05 Thread Lukas Tönne
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.

2014-12-05 Thread Lukas Tönne
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.

2014-12-05 Thread Lukas Tönne
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.

2014-12-05 Thread Lukas Tönne
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.

2014-12-05 Thread Lukas Tönne
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.

2014-12-05 Thread Lukas Tönne
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)

2014-12-05 Thread Antony Riakiotakis
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.

2014-12-05 Thread Lukas Tönne
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.

2014-12-05 Thread Antony Riakiotakis
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.

2014-12-05 Thread Lukas Tönne
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.

2014-12-05 Thread Lukas Tönne
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.

2014-12-05 Thread Antony Riakiotakis
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.

2014-12-05 Thread Antony Riakiotakis
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

2014-12-05 Thread Bastien Montagne
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

2014-12-05 Thread Bastien Montagne
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).

2014-12-05 Thread Bastien Montagne
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

2014-12-05 Thread Antony Riakiotakis
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

2014-12-05 Thread Sergey Sharybin
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

2014-12-05 Thread Sergey Sharybin
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

2014-12-05 Thread Sergey Sharybin
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

2014-12-05 Thread Sergey Sharybin
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

2014-12-05 Thread Sergey Sharybin
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

2014-12-05 Thread Sergey Sharybin
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

2014-12-05 Thread Jens Verwiebe
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

2014-12-05 Thread Jens Verwiebe
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

2014-12-05 Thread Antony Riakiotakis
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.

2014-12-05 Thread Antony Riakiotakis
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.

2014-12-05 Thread Antony Riakiotakis
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.

2014-12-05 Thread Brecht Van Lommel
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

2014-12-05 Thread Mike Erwin
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