[Bf-blender-cvs] [d4934f8] master: cleanup: style/indentation

2015-02-10 Thread Campbell Barton
Commit: d4934f8f6d8d2da457adb6dd32047eb1627459a0
Author: Campbell Barton
Date:   Wed Feb 11 18:38:41 2015 +1100
Branches: master
https://developer.blender.org/rBd4934f8f6d8d2da457adb6dd32047eb1627459a0

cleanup: style/indentation

===

M   source/blender/blenkernel/intern/movieclip.c
M   source/blender/blenkernel/intern/seqeffects.c
M   source/blender/blenkernel/intern/softbody.c
M   source/blender/blenlib/intern/noise.c
M   source/blender/bmesh/tools/bmesh_bevel.c
M   source/blender/compositor/intern/COM_MemoryBuffer.cpp
M   source/blender/editors/mesh/editmesh_tools.c
M   source/blender/editors/mesh/meshtools.c
M   source/blender/editors/render/render_internal.c
M   source/blender/editors/screen/screen_edit.c
M   source/blender/editors/sound/sound_ops.c
M   source/blender/editors/space_outliner/outliner_tree.c
M   source/blender/editors/transform/transform.c
M   source/blender/editors/uvedit/uvedit_smart_stitch.c
M   source/blender/freestyle/intern/winged_edge/Curvature.cpp
M   source/blender/gpu/intern/gpu_buffers.c
M   source/blender/gpu/intern/gpu_material.c
M   source/blender/imbuf/intern/divers.c
M   source/blender/makesdna/DNA_gpencil_types.h
M   source/blender/makesrna/intern/rna_ui_api.c
M   source/blender/quicktime/apple/qtkit_export.m
M   source/blender/render/intern/source/pipeline.c
M   source/gameengine/Ketsji/KX_MouseActuator.cpp

===

diff --git a/source/blender/blenkernel/intern/movieclip.c 
b/source/blender/blenkernel/intern/movieclip.c
index 491fb46..73f75f4 100644
--- a/source/blender/blenkernel/intern/movieclip.c
+++ b/source/blender/blenkernel/intern/movieclip.c
@@ -790,10 +790,10 @@ static ImBuf *postprocess_frame(MovieClip *clip, 
MovieClipUser *user, ImBuf *ibu
}
 
if (postprocess_flag) {
-   bool disable_red   = (postprocess_flag & MOVIECLIP_DISABLE_RED) 
!= 0,
-disable_green = (postprocess_flag & 
MOVIECLIP_DISABLE_GREEN) != 0,
-disable_blue  = (postprocess_flag & 
MOVIECLIP_DISABLE_BLUE) != 0,
-grayscale = (postprocess_flag & 
MOVIECLIP_PREVIEW_GRAYSCALE) != 0;
+   bool disable_red   = (postprocess_flag & MOVIECLIP_DISABLE_RED) 
!= 0;
+   bool disable_green = (postprocess_flag & 
MOVIECLIP_DISABLE_GREEN) != 0;
+   bool disable_blue  = (postprocess_flag & 
MOVIECLIP_DISABLE_BLUE) != 0;
+   bool grayscale = (postprocess_flag & 
MOVIECLIP_PREVIEW_GRAYSCALE) != 0;
 
if (disable_red || disable_green || disable_blue || grayscale)
BKE_tracking_disable_channels(postproc_ibuf, 
disable_red, disable_green, disable_blue, 1);
diff --git a/source/blender/blenkernel/intern/seqeffects.c 
b/source/blender/blenkernel/intern/seqeffects.c
index 11a6cb7..6157d63 100644
--- a/source/blender/blenkernel/intern/seqeffects.c
+++ b/source/blender/blenkernel/intern/seqeffects.c
@@ -2670,8 +2670,8 @@ static void do_gaussian_blur_effect_byte(Sequence *seq,
 {
 #define INDEX(_x, _y) (((_y) * (x) + (_x)) * 4)
GaussianBlurVars *data = seq->effectdata;
-   const int size_x = (int) (data->size_x + 0.5f),
- size_y = (int) (data->size_y + 0.5f);
+   const int size_x = (int) (data->size_x + 0.5f);
+   const int size_y = (int) (data->size_y + 0.5f);
int i, j;
 
/* Make gaussian weight tabke. */
@@ -2754,8 +2754,8 @@ static void do_gaussian_blur_effect_float(Sequence *seq,
 {
 #define INDEX(_x, _y) (((_y) * (x) + (_x)) * 4)
GaussianBlurVars *data = seq->effectdata;
-   const int size_x = (int) (data->size_x + 0.5f),
- size_y = (int) (data->size_y + 0.5f);
+   const int size_x = (int) (data->size_x + 0.5f);
+   const int size_y = (int) (data->size_y + 0.5f);
int i, j;
 
/* Make gaussian weight tabke. */
diff --git a/source/blender/blenkernel/intern/softbody.c 
b/source/blender/blenkernel/intern/softbody.c
index 941344c..06d0627 100644
--- a/source/blender/blenkernel/intern/softbody.c
+++ b/source/blender/blenkernel/intern/softbody.c
@@ -1945,7 +1945,7 @@ static int sb_detect_vertex_collisionCached(float 
opco[3], float facenormal[3],
float dist;
 

closest_to_line_segment_v3(ve, opco, nv1, nv2);
-sub_v3_v3v3(ve, opco, 
ve);
+   sub_v3_v3v3(ve, opco, 
ve);
dist = normalize_v3(ve);
if ((dist < 
outerfacethickness)&&(dist < mindistedge )) {

[Bf-blender-cvs] SVN commit: /data/svn/repos/bf-blender [61498] trunk/lib/ darwin-9.x.universal/python/bin: OSX/Python: add a python binary for use in subprocesses in the future

2015-02-10 Thread jens verwiebe
Revision: 61498
  https://developer.blender.org/rBL61498
Author:   jensverwiebe
Date: 2015-02-11 07:29:33 + (Wed, 11 Feb 2015)
Log Message:
---
OSX/Python: add a python binary for use in subprocesses in the future

Added Paths:
---
trunk/lib/darwin-9.x.universal/python/bin/
trunk/lib/darwin-9.x.universal/python/bin/python3.4m

Added: trunk/lib/darwin-9.x.universal/python/bin/python3.4m
===
(Binary files differ)

Index: trunk/lib/darwin-9.x.universal/python/bin/python3.4m
===
--- trunk/lib/darwin-9.x.universal/python/bin/python3.4m2015-02-08 
18:09:40 UTC (rev 61497)
+++ trunk/lib/darwin-9.x.universal/python/bin/python3.4m2015-02-11 
07:29:33 UTC (rev 61498)

Property changes on: trunk/lib/darwin-9.x.universal/python/bin/python3.4m
___
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [387d918] master: Fix T43149: Grease Pencil fill areas look divided by multiples ray lines

2015-02-10 Thread Joshua Leung
Commit: 387d91829d787ac96afbb2b3f86899e0e3346222
Author: Joshua Leung
Date:   Wed Feb 11 17:54:14 2015 +1300
Branches: master
https://developer.blender.org/rB387d91829d787ac96afbb2b3f86899e0e3346222

Fix T43149: Grease Pencil fill areas look divided by multiples ray lines

The problem here was caused by the usage of GL_POLYGON_SMOOTH (thanks Campbell
for the help tracking this down!). Apparently the issue is that this option
ends up doing some nasty accumulation with whatever is in the framebuffer for
each *tesselated* polygon (instead of the whole polygon as intended/expected).

** IMPORTANT USER NOTES **
With the removal of this option, filled areas and volumetric strokes will now
have jagged edges again. To resolve these artifacts, it is necessary to enable
Viewport Multisampling (found in the User Preferences, under the System tab),
and restart Blender to see the effects of this change.

===

M   source/blender/editors/gpencil/drawgpencil.c

===

diff --git a/source/blender/editors/gpencil/drawgpencil.c 
b/source/blender/editors/gpencil/drawgpencil.c
index 895fc66..20279ca 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -1051,8 +1051,10 @@ static void gp_draw_data(bGPdata *gpd, int offsx, int 
offsy, int winx, int winy,
/* turn on smooth lines (i.e. anti-aliasing) */
glEnable(GL_LINE_SMOOTH);

-   glEnable(GL_POLYGON_SMOOTH);
-   glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
+   /* XXX: turn on some way of ensuring that the polygon edges get 
smoothed 
+*  GL_POLYGON_SMOOTH is nasty and shouldn't be used, as it ends up
+*  creating internal white rays due to the ways it accumulates 
stuff
+*/

/* turn on alpha-blending */
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, 
GL_ONE_MINUS_SRC_ALPHA);
@@ -1064,7 +1066,6 @@ static void gp_draw_data(bGPdata *gpd, int offsx, int 
offsy, int winx, int winy,
/* turn off alpha blending, then smooth lines */
glDisable(GL_BLEND); // alpha blending
glDisable(GL_LINE_SMOOTH); // smooth lines
-   glDisable(GL_POLYGON_SMOOTH); // smooth poly lines

/* restore initial gl conditions */
glLineWidth(1.0);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [88fc1a5] gooseberry: Minor optimization for mask modifier

2015-02-10 Thread Campbell Barton
Commit: 88fc1a5c50233f37efbf0a9eef914c04d23f0aaa
Author: Campbell Barton
Date:   Wed Feb 11 10:34:34 2015 +1100
Branches: gooseberry
https://developer.blender.org/rB88fc1a5c50233f37efbf0a9eef914c04d23f0aaa

Minor optimization for mask modifier

- don't resize ghash buckets (reserve maximum size)
- get vert, edge arrays instead of DM getVert, getEdge
- calloc -> malloc

===

M   source/blender/modifiers/intern/MOD_mask.c

===

diff --git a/source/blender/modifiers/intern/MOD_mask.c 
b/source/blender/modifiers/intern/MOD_mask.c
index 174f3df..59348c5 100644
--- a/source/blender/modifiers/intern/MOD_mask.c
+++ b/source/blender/modifiers/intern/MOD_mask.c
@@ -51,6 +51,8 @@
 
 #include "depsgraph_private.h"
 
+#include "BLI_strict_flags.h"
+
 static void copyData(ModifierData *md, ModifierData *target)
 {
 #if 0
@@ -105,14 +107,15 @@ static DerivedMesh *applyModifier(ModifierData *md, 
Object *ob,
int maxVerts, maxEdges, maxPolys;
int i;
 
-   MPoly *mpoly;
-   MLoop *mloop;
-
-   MPoly *mpoly_new;
-   MLoop *mloop_new;
-   MEdge *medge_new;
-   MVert *mvert_new;
+   const MVert *mvert_src;
+   const MEdge *medge_src;
+   const MPoly *mpoly_src;
+   const MLoop *mloop_src;
 
+   MPoly *mpoly_dst;
+   MLoop *mloop_dst;
+   MEdge *medge_dst;
+   MVert *mvert_dst;
 
int *loop_mapping;
 
@@ -158,7 +161,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object 
*ob,
 * - each cell is a boolean saying whether bone corresponding 
to the ith group is selected
 * - groups that don't match a bone are treated as not existing 
(along with the corresponding ungrouped verts)
 */
-   bone_select_array = MEM_mallocN(defbase_tot * sizeof(char), 
"mask array");
+   bone_select_array = MEM_mallocN((size_t)defbase_tot * 
sizeof(char), "mask array");

for (i = 0, def = ob->defbase.first; def; def = def->next, i++) 
{
pchan = BKE_pose_channel_find_name(oba->pose, 
def->name);
@@ -174,7 +177,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object 
*ob,
/* verthash gives mapping from original vertex indices to the 
new indices (including selected matches only)
 * key = oldindex, value = newindex
 */
-   vertHash = BLI_ghash_int_new("mask vert gh");
+   vertHash = BLI_ghash_int_new_ex("mask vert gh", (unsigned 
int)maxVerts);

/* add vertices which exist in vertexgroups into vertHash for 
filtering 
 * - dv = for each vertex, what vertexgroups does it belong to
@@ -217,7 +220,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object 
*ob,
return dm;

/* hashes for quickly providing a mapping from old to new - use 
key=oldindex, value=newindex */
-   vertHash = BLI_ghash_int_new("mask vert2 bh");
+   vertHash = BLI_ghash_int_new_ex("mask vert2 bh", (unsigned 
int)maxVerts);

/* add vertices which exist in vertexgroup into ghash for 
filtering */
for (i = 0, dv = dvert; i < maxVerts; i++, dv++) {
@@ -233,37 +236,39 @@ static DerivedMesh *applyModifier(ModifierData *md, 
Object *ob,
}
 
/* hashes for quickly providing a mapping from old to new - use 
key=oldindex, value=newindex */
-   edgeHash = BLI_ghash_int_new("mask ed2 gh");
-   polyHash = BLI_ghash_int_new("mask fa2 gh");
-   
-   mpoly = dm->getPolyArray(dm);
-   mloop = dm->getLoopArray(dm);
+   edgeHash = BLI_ghash_int_new_ex("mask ed2 gh", (unsigned int)maxEdges);
+   polyHash = BLI_ghash_int_new_ex("mask fa2 gh", (unsigned int)maxPolys);
 
-   loop_mapping = MEM_callocN(sizeof(int) * maxPolys, "mask loopmap"); /* 
overalloc, assume all polys are seen */
+   mvert_src = dm->getVertArray(dm);
+   medge_src = dm->getEdgeArray(dm);
+   mpoly_src = dm->getPolyArray(dm);
+   mloop_src = dm->getLoopArray(dm);
+
+   /* overalloc, assume all polys are seen */
+   loop_mapping = MEM_mallocN(sizeof(int) * (size_t)maxPolys, "mask 
loopmap");
 
/* loop over edges and faces, and do the same thing to 
 * ensure that they only reference existing verts 
 */
for (i = 0; i < maxEdges; i++) {
-   MEdge me;
-   dm->getEdge(dm, i, &me);
+   const MEdge *me = &medge_src[i];

/* only add if both verts will be in new mesh */
-   if (BLI_ghash_haskey(vertHash, SET_INT_IN_POINTER(me.v1)) &&
-   BLI_ghash_haskey(vertHash, SET_INT_IN_POINTER(me.v2)))
+   if (BLI_ghash_haskey(vertHash, SET_INT_I

[Bf-blender-cvs] [54a8e50] gooseberry: Merge branch 'master' into gooseberry

2015-02-10 Thread Campbell Barton
Commit: 54a8e50deacb27872fbd60048d15599009776326
Author: Campbell Barton
Date:   Wed Feb 11 10:46:33 2015 +1100
Branches: gooseberry
https://developer.blender.org/rB54a8e50deacb27872fbd60048d15599009776326

Merge branch 'master' into gooseberry

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [4ae6d58] master: Minor optimization for mask modifier

2015-02-10 Thread Campbell Barton
Commit: 4ae6d5899914a3b1baf54816062073a2f959a6bd
Author: Campbell Barton
Date:   Wed Feb 11 10:34:34 2015 +1100
Branches: master
https://developer.blender.org/rB4ae6d5899914a3b1baf54816062073a2f959a6bd

Minor optimization for mask modifier

- don't resize ghash buckets (reserve maximum size)
- get vert, edge arrays instead of DM getVert, getEdge
- calloc -> malloc

===

M   source/blender/modifiers/intern/MOD_mask.c

===

diff --git a/source/blender/modifiers/intern/MOD_mask.c 
b/source/blender/modifiers/intern/MOD_mask.c
index 174f3df..59348c5 100644
--- a/source/blender/modifiers/intern/MOD_mask.c
+++ b/source/blender/modifiers/intern/MOD_mask.c
@@ -51,6 +51,8 @@
 
 #include "depsgraph_private.h"
 
+#include "BLI_strict_flags.h"
+
 static void copyData(ModifierData *md, ModifierData *target)
 {
 #if 0
@@ -105,14 +107,15 @@ static DerivedMesh *applyModifier(ModifierData *md, 
Object *ob,
int maxVerts, maxEdges, maxPolys;
int i;
 
-   MPoly *mpoly;
-   MLoop *mloop;
-
-   MPoly *mpoly_new;
-   MLoop *mloop_new;
-   MEdge *medge_new;
-   MVert *mvert_new;
+   const MVert *mvert_src;
+   const MEdge *medge_src;
+   const MPoly *mpoly_src;
+   const MLoop *mloop_src;
 
+   MPoly *mpoly_dst;
+   MLoop *mloop_dst;
+   MEdge *medge_dst;
+   MVert *mvert_dst;
 
int *loop_mapping;
 
@@ -158,7 +161,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object 
*ob,
 * - each cell is a boolean saying whether bone corresponding 
to the ith group is selected
 * - groups that don't match a bone are treated as not existing 
(along with the corresponding ungrouped verts)
 */
-   bone_select_array = MEM_mallocN(defbase_tot * sizeof(char), 
"mask array");
+   bone_select_array = MEM_mallocN((size_t)defbase_tot * 
sizeof(char), "mask array");

for (i = 0, def = ob->defbase.first; def; def = def->next, i++) 
{
pchan = BKE_pose_channel_find_name(oba->pose, 
def->name);
@@ -174,7 +177,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object 
*ob,
/* verthash gives mapping from original vertex indices to the 
new indices (including selected matches only)
 * key = oldindex, value = newindex
 */
-   vertHash = BLI_ghash_int_new("mask vert gh");
+   vertHash = BLI_ghash_int_new_ex("mask vert gh", (unsigned 
int)maxVerts);

/* add vertices which exist in vertexgroups into vertHash for 
filtering 
 * - dv = for each vertex, what vertexgroups does it belong to
@@ -217,7 +220,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object 
*ob,
return dm;

/* hashes for quickly providing a mapping from old to new - use 
key=oldindex, value=newindex */
-   vertHash = BLI_ghash_int_new("mask vert2 bh");
+   vertHash = BLI_ghash_int_new_ex("mask vert2 bh", (unsigned 
int)maxVerts);

/* add vertices which exist in vertexgroup into ghash for 
filtering */
for (i = 0, dv = dvert; i < maxVerts; i++, dv++) {
@@ -233,37 +236,39 @@ static DerivedMesh *applyModifier(ModifierData *md, 
Object *ob,
}
 
/* hashes for quickly providing a mapping from old to new - use 
key=oldindex, value=newindex */
-   edgeHash = BLI_ghash_int_new("mask ed2 gh");
-   polyHash = BLI_ghash_int_new("mask fa2 gh");
-   
-   mpoly = dm->getPolyArray(dm);
-   mloop = dm->getLoopArray(dm);
+   edgeHash = BLI_ghash_int_new_ex("mask ed2 gh", (unsigned int)maxEdges);
+   polyHash = BLI_ghash_int_new_ex("mask fa2 gh", (unsigned int)maxPolys);
 
-   loop_mapping = MEM_callocN(sizeof(int) * maxPolys, "mask loopmap"); /* 
overalloc, assume all polys are seen */
+   mvert_src = dm->getVertArray(dm);
+   medge_src = dm->getEdgeArray(dm);
+   mpoly_src = dm->getPolyArray(dm);
+   mloop_src = dm->getLoopArray(dm);
+
+   /* overalloc, assume all polys are seen */
+   loop_mapping = MEM_mallocN(sizeof(int) * (size_t)maxPolys, "mask 
loopmap");
 
/* loop over edges and faces, and do the same thing to 
 * ensure that they only reference existing verts 
 */
for (i = 0; i < maxEdges; i++) {
-   MEdge me;
-   dm->getEdge(dm, i, &me);
+   const MEdge *me = &medge_src[i];

/* only add if both verts will be in new mesh */
-   if (BLI_ghash_haskey(vertHash, SET_INT_IN_POINTER(me.v1)) &&
-   BLI_ghash_haskey(vertHash, SET_INT_IN_POINTER(me.v2)))
+   if (BLI_ghash_haskey(vertHash, SET_INT_IN_PO

[Bf-blender-cvs] [ca04eef] gooseberry: Merge branch 'master' into gooseberry

2015-02-10 Thread Bastien Montagne
Commit: ca04eef4f2ecc91689c74a53aa933164e1f5cf9c
Author: Bastien Montagne
Date:   Wed Feb 11 00:29:31 2015 +0100
Branches: gooseberry
https://developer.blender.org/rBca04eef4f2ecc91689c74a53aa933164e1f5cf9c

Merge branch 'master' into gooseberry

Conflicts:
source/blender/blenloader/intern/versioning_270.c

===



===

diff --cc source/blender/blenloader/intern/versioning_270.c
index 97331e9,572566d..83aa187
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@@ -570,6 -485,6 +572,26 @@@ void blo_do_versions_270(FileData *fd, 
}
}
  
++  if (!MAIN_VERSION_ATLEAST(main, 273, 4)) {
++  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_zoom = 1.0;
++  }
++  if (sl->spacetype == SPACE_SEQ) {
++  SpaceSeq *sseq = (SpaceSeq *)sl;
++  sseq->overdrop_zoom = 1.0;
++  }
++  }
++  }
++  }
++  }
++
if (!MAIN_VERSION_ATLEAST(main, 273, 6)) {
if (!DNA_struct_elem_find(fd->filesdna, "ClothSimSettings", 
"float", "bending_damping")) {
Object *ob;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [4f1e387] master: UI: add optional tip callback to uiBut, and use it for per-item tooltips in UIList.

2015-02-10 Thread Bastien Montagne
Commit: 4f1e3875884506c017e03469658e9e7dadeeb500
Author: Bastien Montagne
Date:   Wed Feb 11 00:06:03 2015 +0100
Branches: master
https://developer.blender.org/rB4f1e3875884506c017e03469658e9e7dadeeb500

UI: add optional tip callback to uiBut, and use it for per-item tooltips in 
UIList.

When defined, uiBut->tip_func is called when button's tip is generated. This 
allows
for advanced, dynamic generation of tooltips.

For now, only used by UIList, which can now optionaly use a given string 
property
of each item for its tooltip.

Thanks to Campbell for the reviews!

===

M   source/blender/editors/include/UI_interface.h
M   source/blender/editors/interface/interface.c
M   source/blender/editors/interface/interface_intern.h
M   source/blender/editors/interface/interface_templates.c
M   source/blender/editors/space_node/drawnode.c
M   source/blender/editors/space_node/node_buttons.c
M   source/blender/makesrna/intern/rna_ui_api.c
M   source/blenderplayer/bad_level_call_stubs/stubs.c

===

diff --git a/source/blender/editors/include/UI_interface.h 
b/source/blender/editors/include/UI_interface.h
index 590ab1d..b1bb48b 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -348,6 +348,9 @@ typedef void (*uiButHandleRenameFunc)(struct bContext *C, 
void *arg, char *origs
 typedef void (*uiButHandleNFunc)(struct bContext *C, void *argN, void *arg2);
 typedef int (*uiButCompleteFunc)(struct bContext *C, char *str, void *arg);
 typedef void (*uiButSearchFunc)(const struct bContext *C, void *arg, const 
char *str, uiSearchItems *items);
+/* Must return allocated string. */
+typedef char *(*uiButToolTipFunc)(struct bContext *C, void *argN, const char 
*tip);
+
 typedef void (*uiBlockHandleFunc)(struct bContext *C, void *arg, int event);
 
 /* Menu Callbacks */
@@ -678,6 +681,8 @@ voidUI_but_func_drawextra_set(
 void (*func)(const struct bContext *C, void *, void *, void *, struct 
rcti *rect),
 void *arg1, void *arg2);
 
+voidUI_but_func_tooltip_set(uiBut *but, uiButToolTipFunc func, void *argN);
+
 bool UI_textbutton_activate_rna(const struct bContext *C, struct ARegion *ar,
 const void *rna_poin_data, const char 
*rna_prop_id);
 bool UI_textbutton_activate_but(const struct bContext *C, uiBut *but);
@@ -907,7 +912,8 @@ void uiTemplateNodeSocket(uiLayout *layout, struct bContext 
*C, float *color);
 #define UI_UL_DEFAULT_CLASS_NAME "UI_UL_list"
 void uiTemplateList(uiLayout *layout, struct bContext *C, const char 
*listtype_name, const char *list_id,
 struct PointerRNA *dataptr, const char *propname, struct 
PointerRNA *active_dataptr,
-const char *active_propname, int rows, int maxrows, int 
layout_type, int columns);
+const char *active_propname, const char 
*item_dyntip_propname,
+int rows, int maxrows, int layout_type, int columns);
 void uiTemplateNodeLink(uiLayout *layout, struct bNodeTree *ntree, struct 
bNode *node, struct bNodeSocket *input);
 void uiTemplateNodeView(uiLayout *layout, struct bContext *C, struct bNodeTree 
*ntree, struct bNode *node, struct bNodeSocket *input);
 void uiTemplateTextureUser(uiLayout *layout, struct bContext *C);
diff --git a/source/blender/editors/interface/interface.c 
b/source/blender/editors/interface/interface.c
index 8fa604d..bad09a7 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -716,6 +716,7 @@ static bool ui_but_update_from_old_block(const bContext *C, 
uiBlock *block, uiBu
if (oldbut->poin != (char *)oldbut) {
SWAP(char *, oldbut->poin, but->poin);
SWAP(void *, oldbut->func_argN, but->func_argN);
+   SWAP(void *, oldbut->tip_argN, but->tip_argN);
}
 
oldbut->flag = (oldbut->flag & ~flag_copy) | (but->flag & 
flag_copy);
@@ -2440,6 +2441,10 @@ static void ui_but_free(const bContext *C, uiBut *but)
MEM_freeN(but->func_argN);
}
 
+   if (but->tip_argN) {
+   MEM_freeN(but->tip_argN);
+   }
+
if (but->active) {
/* XXX solve later, buttons should be free-able without context 
ideally,
 * however they may have open tooltips or popup windows, which 
need to
@@ -4113,6 +4118,15 @@ void UI_but_func_complete_set(uiBut *but, 
uiButCompleteFunc func, void *arg)
but->autofunc_arg = arg;
 }
 
+void UI_but_func_tooltip_set(uiBut *but, uiButToolTipFunc func, void *argN)
+{
+   but->tip_func = func;
+   if (but->tip_argN) {
+   MEM_freeN(but->tip_argN);
+   }
+   but->tip_argN = argN;
+}
+
 uiBut *uiDefBlockBut(uiBlock *block, uiBlockCreateF

[Bf-blender-cvs] [9e2abbc] master: FileBrowser: Editable Bookmarks.

2015-02-10 Thread Bastien Montagne
Commit: 9e2abbc9ba5d8edf3f43060122d683d0c6ae2525
Author: Bastien Montagne
Date:   Wed Feb 11 00:09:45 2015 +0100
Branches: master
https://developer.blender.org/rB9e2abbc9ba5d8edf3f43060122d683d0c6ae2525

FileBrowser: Editable Bookmarks.

Bookmarks are now editable (i.e. you can rename them, and reorder them).
They are also listed in regular UILists, so you can filter/sort them as usual 
too.

Also, FileBrowser 'T' side area is changed to something similar to 3DView one,
in this case because we need op panel to remain at the bottom, and later because
we'll more than likely need tabs here!

Thanks to Campbell and Sergey for reviews.

Differential Revision: https://developer.blender.org/D1093

===

M   release/scripts/startup/bl_ui/space_filebrowser.py
M   source/blender/blenkernel/BKE_blender.h
M   source/blender/blenloader/intern/versioning_270.c
M   source/blender/editors/include/ED_fileselect.h
M   source/blender/editors/screen/area.c
M   source/blender/editors/space_file/file_draw.c
M   source/blender/editors/space_file/file_intern.h
M   source/blender/editors/space_file/file_ops.c
M   source/blender/editors/space_file/file_panels.c
M   source/blender/editors/space_file/filesel.c
M   source/blender/editors/space_file/fsmenu.c
M   source/blender/editors/space_file/fsmenu.h
M   source/blender/editors/space_file/space_file.c
M   source/blender/makesdna/DNA_space_types.h
M   source/blender/makesrna/RNA_access.h
M   source/blender/makesrna/intern/rna_space.c
M   source/blenderplayer/bad_level_call_stubs/stubs.c

===

diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py 
b/release/scripts/startup/bl_ui/space_filebrowser.py
index 6fe50c7..cda3dfe 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -18,7 +18,7 @@
 
 # 
 import bpy
-from bpy.types import Header
+from bpy.types import Header, Panel, Menu
 
 
 class FILEBROWSER_HT_header(Header):
@@ -81,5 +81,128 @@ class FILEBROWSER_HT_header(Header):
 row.prop(params, "filter_search", text="", icon='VIEWZOOM')
 
 
+
+class FILEBROWSER_UL_dir(bpy.types.UIList):
+def draw_item(self, context, layout, data, item, icon, active_data, 
active_propname, index):
+direntry = item
+space = context.space_data
+icon = 'NONE'
+if active_propname == "system_folders_active":
+icon = 'DISK_DRIVE'
+if active_propname == "system_bookmarks_active":
+icon = 'BOOKMARKS'
+if active_propname == "bookmarks_active":
+icon = 'BOOKMARKS'
+if active_propname == "recent_folders_active":
+icon = 'FILE_FOLDER'
+
+if self.layout_type in {'DEFAULT', 'COMPACT'}:
+row = layout.row(align=True)
+row.prop(direntry, "name", text="", emboss=False, icon=icon)
+
+elif self.layout_type in {'GRID'}:
+layout.alignment = 'CENTER'
+layout.prop(direntry, "path", text="")
+
+
+class FILEBROWSER_PT_system_folders(Panel):
+bl_space_type = 'FILE_BROWSER'
+bl_region_type = 'TOOLS'
+bl_category = "Bookmarks"
+bl_label = "System"
+
+def draw(self, context):
+layout = self.layout
+space = context.space_data
+
+if space.system_folders:
+row = layout.row()
+row.template_list("FILEBROWSER_UL_dir", "system_folders", space, 
"system_folders",
+  space, "system_folders_active", 
item_dyntip_propname="path", rows=1, maxrows=6)
+
+
+class FILEBROWSER_PT_system_bookmarks(Panel):
+bl_space_type = 'FILE_BROWSER'
+bl_region_type = 'TOOLS'
+bl_category = "Bookmarks"
+bl_label = "System Bookmarks"
+
+@classmethod
+def poll(cls, context):
+return not context.user_preferences.filepaths.hide_system_bookmarks
+
+def draw(self, context):
+layout = self.layout
+space = context.space_data
+
+if space.system_bookmarks:
+row = layout.row()
+row.template_list("FILEBROWSER_UL_dir", "system_bookmarks", space, 
"system_bookmarks",
+  space, "system_bookmarks_active", 
item_dyntip_propname="path", rows=1, maxrows=6)
+
+
+class FILEBROWSER_MT_bookmarks_specials(Menu):
+bl_label = "Bookmarks Specials"
+
+def draw(self, context):
+layout = self.layout
+
+layout.operator("file.bookmark_move", icon='TRIA_UP_BAR', text="Move 
To Top").direction = 'TOP'
+layout.operator("file.bookmark_move", icon='TRIA_DOWN_BAR', text="Move 
To Bottom").direction = 'BOTTOM'
+
+
+class FILEBROWSER_PT_bookmarks(Panel):
+bl_space_type = 'FILE_BROWSER'
+bl_region_type = 'TOOLS'
+bl_category = "Bookmarks"
+bl_label = "Bookmarks"
+
+def draw(self, context):
+

[Bf-blender-cvs] [b851063] cycles-ptex-49: Merge remote-tracking branch 'origin/master' into cycles-ptex-49

2015-02-10 Thread Nicholas Bishop
Commit: b851063d24acca6bf94484218fe8df037fe07af7
Author: Nicholas Bishop
Date:   Tue Feb 10 22:38:30 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rBb851063d24acca6bf94484218fe8df037fe07af7

Merge remote-tracking branch 'origin/master' into cycles-ptex-49

Conflicts:
intern/cycles/blender/blender_mesh.cpp

===



===

diff --cc intern/cycles/blender/blender_mesh.cpp
index 613d171,c5e2fa2..1f9f443
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@@ -258,85 -258,169 +258,246 @@@ static void create_mesh_volume_attribut
create_mesh_volume_attribute(b_ob, mesh, scene->image_manager, 
ATTR_STD_VOLUME_VELOCITY, frame);
  }
  
+ /* Create vertex color attributes. */
+ static void attr_create_vertex_color(Scene *scene,
+  Mesh *mesh,
+  BL::Mesh b_mesh,
+  const vector& nverts)
+ {
+   BL::Mesh::tessface_vertex_colors_iterator l;
+   for(b_mesh.tessface_vertex_colors.begin(l); l != 
b_mesh.tessface_vertex_colors.end(); ++l) {
+   if(!mesh->need_attribute(scene, ustring(l->name().c_str(
+   continue;
+ 
+   Attribute *attr = mesh->attributes.add(
+   ustring(l->name().c_str()), TypeDesc::TypeColor, 
ATTR_ELEMENT_CORNER_BYTE);
+ 
+   BL::MeshColorLayer::data_iterator c;
+   uchar4 *cdata = attr->data_uchar4();
+   size_t i = 0;
+ 
+   for(l->data.begin(c); c != l->data.end(); ++c, ++i) {
+   cdata[0] = 
color_float_to_byte(color_srgb_to_scene_linear(get_float3(c->color1(;
+   cdata[1] = 
color_float_to_byte(color_srgb_to_scene_linear(get_float3(c->color2(;
+   cdata[2] = 
color_float_to_byte(color_srgb_to_scene_linear(get_float3(c->color3(;
+ 
+   if(nverts[i] == 4) {
+   cdata[3] = cdata[0];
+   cdata[4] = cdata[2];
+   cdata[5] = 
color_float_to_byte(color_srgb_to_scene_linear(get_float3(c->color4(;
+   cdata += 6;
+   }
+   else
+   cdata += 3;
+   }
+   }
+ }
+ 
+ /* Create uv map attributes. */
+ static void attr_create_uv_map(Scene *scene,
+Mesh *mesh,
+BL::Mesh b_mesh,
+const vector& nverts)
+ {
+   if (b_mesh.tessface_uv_textures.length() != 0) {
+   BL::Mesh::tessface_uv_textures_iterator l;
+ 
+   for(b_mesh.tessface_uv_textures.begin(l); l != 
b_mesh.tessface_uv_textures.end(); ++l) {
+   bool active_render = l->active_render();
+   AttributeStandard std = (active_render)? ATTR_STD_UV: 
ATTR_STD_NONE;
+   ustring name = ustring(l->name().c_str());
+ 
+   /* UV map */
+   if(mesh->need_attribute(scene, name) || 
mesh->need_attribute(scene, std)) {
+   Attribute *attr;
+ 
+   if(active_render)
+   attr = mesh->attributes.add(std, name);
+   else
+   attr = mesh->attributes.add(name, 
TypeDesc::TypePoint, ATTR_ELEMENT_CORNER);
+ 
+   BL::MeshTextureFaceLayer::data_iterator t;
+   float3 *fdata = attr->data_float3();
+   size_t i = 0;
+ 
+   for(l->data.begin(t); t != l->data.end(); ++t, 
++i) {
+   fdata[0] =  get_float3(t->uv1());
+   fdata[1] =  get_float3(t->uv2());
+   fdata[2] =  get_float3(t->uv3());
+   fdata += 3;
+ 
+   if(nverts[i] == 4) {
+   fdata[0] =  
get_float3(t->uv1());
+   fdata[1] =  
get_float3(t->uv3());
+   fdata[2] =  
get_float3(t->uv4());
+   fdata += 3;
+   }
+   }
+   }
+ 
+   /* UV tangent */
+   std = (active_render)? ATTR_STD_UV_TANGENT: 
ATTR_STD_NONE;
+   name = ustring((string(l->name().c_str()) + 
".tangent").c_str());
+ 
+   if(mesh->need_attribute(scene, na

[Bf-blender-cvs] [4d82812] fracture_modifier: fix: for severe performance issue with fractal, did unnecessary unwrapping operations there

2015-02-10 Thread Martin Felke
Commit: 4d82812e137b06d3b559c87bb777f774dc086bc4
Author: Martin Felke
Date:   Tue Feb 10 22:37:46 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rB4d82812e137b06d3b559c87bb777f774dc086bc4

fix: for severe performance issue with fractal, did unnecessary unwrapping 
operations there

===

M   source/blender/blenkernel/intern/fracture_util.c

===

diff --git a/source/blender/blenkernel/intern/fracture_util.c 
b/source/blender/blenkernel/intern/fracture_util.c
index 9578016..e4dbe08 100644
--- a/source/blender/blenkernel/intern/fracture_util.c
+++ b/source/blender/blenkernel/intern/fracture_util.c
@@ -339,11 +339,9 @@ Shard *BKE_fracture_shard_boolean(Object *obj, DerivedMesh 
*dm_parent, Shard *ch
else
{
left_dm = BKE_shard_create_dm(child, false);
+   unwrap_shard_dm(left_dm);
}
 
-
-   unwrap_shard_dm(left_dm);
-
/* set inner material on child shard */
if (other == NULL)
{

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d18993d] master: Fix T43297 The Exporter assumed ANSII encoding but we need to support UTF-8 instead

2015-02-10 Thread Gaia Clary
Commit: d18993d4e457b195b2ebfc910dbaf14a023e1ec8
Author: Gaia Clary
Date:   Tue Feb 10 22:12:47 2015 +0100
Branches: master
https://developer.blender.org/rBd18993d4e457b195b2ebfc910dbaf14a023e1ec8

Fix T43297 The Exporter assumed ANSII encoding but we need to support UTF-8 
instead

===

M   source/blender/collada/collada_internal.cpp

===

diff --git a/source/blender/collada/collada_internal.cpp 
b/source/blender/collada/collada_internal.cpp
index 2aab9b6..3885501 100644
--- a/source/blender/collada/collada_internal.cpp
+++ b/source/blender/collada/collada_internal.cpp
@@ -187,73 +187,77 @@ void TransformBase::decompose(float mat[4][4], float 
*loc, float eul[3], float q
  * must obviously be removed too, otherwise they would be heavily 
misinterpreted.
  */
 const unsigned char translate_start_name_map[256] = {
-   95,  95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   65,  66,  67,  68,  69,  70,  71,  72,
-   73,  74,  75,  76,  77,  78,  79,  80,
-   81,  82,  83,  84,  85,  86,  87,  88,
-   89,  90,  95,  95,  95,  95,  95,  95,
-   97,  98,  99,  100,  101,  102,  103,  104,
-   105,  106,  107,  108,  109,  110,  111,  112,
-   113,  114,  115,  116,  117,  118,  119,  120,
-   121,  122,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  192,
-   193,  194,  195,  196,  197,  198,  199,  200,
-   201,  202,  203,  204,  205,  206,  207,  208,
-   209,  210,  211,  212,  213,  214,  95,  216,
-   217,  218,  219,  220,  221,  222,  223,  224,
-   225,  226,  227,  228,  229,  230,  231,  232,
-   233,  234,  235,  236,  237,  238,  239,  240,
-   241,  242,  243,  244,  245,  246,  95,  248,
-   249,  250,  251,  252,  253,  254,  255
+
+   95, 95, 95, 95, 95, 95, 95, 95,
+   95, 95, 95, 95, 95, 95, 95, 95,
+   95, 95, 95, 95, 95, 95, 95, 95,
+   95, 95, 95, 95, 95, 95, 95, 95,
+   95, 95, 95, 95, 95, 95, 95, 95,
+   95, 95, 95, 95, 95, 95, 95, 95,
+   95, 95, 95, 95, 95, 95, 95, 95,
+   95, 95, 95, 95, 95, 95, 95, 95,
+   95, 65, 66, 67, 68, 69, 70, 71,
+   72, 73, 74, 75, 76, 77, 78, 79,
+   80, 81, 82, 83, 84, 85, 86, 87,
+   88, 89, 90, 95, 95, 95, 95, 95,
+   95, 97, 98, 99, 100, 101, 102, 103,
+   104, 105, 106, 107, 108, 109, 110, 111,
+   112, 113, 114, 115, 116, 117, 118, 119,
+   120, 121, 122, 95, 95, 95, 95, 95,
+
+   128, 129, 130, 131, 132, 133, 134, 135,
+   136, 137, 138, 139, 140, 141, 142, 143,
+   144, 145, 146, 147, 148, 149, 150, 151,
+   152, 153, 154, 155, 156, 157, 158, 159,
+   160, 161, 162, 163, 164, 165, 166, 167,
+   168, 169, 170, 171, 172, 173, 174, 175,
+   176, 177, 178, 179, 180, 181, 182, 183,
+   184, 185, 186, 187, 188, 189, 190, 191,
+   192, 193, 194, 195, 196, 197, 198, 199,
+   200, 201, 202, 203, 204, 205, 206, 207,
+   208, 209, 210, 211, 212, 213, 214, 215,
+   216, 217, 218, 219, 220, 221, 222, 223,
+   224, 225, 226, 227, 228, 229, 230, 231,
+   232, 233, 234, 235, 236, 237, 238, 239,
+   240, 241, 242, 243, 244, 245, 246, 247,
+   248, 249, 250, 251, 252, 253, 254, 255
 };
 
 const unsigned char translate_name_map[256] = {
-   95,  95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  45,  95,  95,  48,
-   49,  50,  51,  52,  53,  54,  55,  56,
-   57,  95,  95,  95,  95,  95,  95,  95,
-   65,  66,  67,  68,  69,  70,  71,  72,
-   73,  74,  75,  76,  77,  78,  79,  80,
-   81,  82,  83,  84,  85,  86,  87,  88,
-   89,  90,  95,  95,  95,  95,  95,  95,
-   97,  98,  99,  100,  101,  102,  103,  104,
-   105,  106,  107,  108,  109,  110,  111,  112,
-   113,  114,  115,  116,  117,  118,  119,  120,
-   121,  122,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  95,
-   95,  95,  95,  95,  95,  95,  95,  9

[Bf-blender-cvs] [4b04a4e] master: Cycles: Control CPU capabilities via environment variables

2015-02-10 Thread Sergey Sharybin
Commit: 4b04a4e2ff4b00258dd98d4d0cb492eb41881d11
Author: Sergey Sharybin
Date:   Wed Feb 11 01:55:35 2015 +0500
Branches: master
https://developer.blender.org/rB4b04a4e2ff4b00258dd98d4d0cb492eb41881d11

Cycles: Control CPU capabilities via environment variables

Purely developers-only feature which allows to disable some of the CPU
capabilities. This way it's easier to test different kernels on the
same machine.

===

M   intern/cycles/util/util_system.cpp

===

diff --git a/intern/cycles/util/util_system.cpp 
b/intern/cycles/util/util_system.cpp
index 998fad6..6d6bee2 100644
--- a/intern/cycles/util/util_system.cpp
+++ b/intern/cycles/util/util_system.cpp
@@ -135,6 +135,29 @@ struct CPUCapabilities {
bool bmi2;
 };
 
+static void system_cpu_capabilities_override(CPUCapabilities *caps)
+{
+   /* Only capabilities which affects on cycles kernel. */
+   if(getenv("CYCLES_CPU_NO_AVX2")) {
+   caps->avx2 = false;
+   }
+   if(getenv("CYCLES_CPU_NO_AVX")) {
+   caps->avx = false;
+   }
+   if(getenv("CYCLES_CPU_NO_SSE41")) {
+   caps->sse41 = false;
+   }
+   if(getenv("CYCLES_CPU_NO_SSE3")) {
+   caps->sse3 = false;
+   }
+   if(getenv("CYCLES_CPU_NO_SSE2")) {
+   caps->sse2 = false;
+   }
+   if(getenv("CYCLES_CPU_NO_SSE")) {
+   caps->sse = false;
+   }
+}
+
 static CPUCapabilities& system_cpu_capabilities()
 {
static CPUCapabilities caps;
@@ -200,6 +223,8 @@ static CPUCapabilities& system_cpu_capabilities()
}
 #endif
 
+   system_cpu_capabilities_override(&caps);
+
caps_init = true;
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [28e76bb] master: Remove legacy color transform functions.

2015-02-10 Thread Troy Sobotka
Commit: 28e76bbb931d2747fdb1ef6b47cc313a34899951
Author: Troy Sobotka
Date:   Tue Feb 10 21:33:00 2015 +0100
Branches: master
https://developer.blender.org/rB28e76bbb931d2747fdb1ef6b47cc313a34899951

Remove legacy color transform functions.

Differential Revision: https://developer.blender.org/D1095

===

M   source/blender/blenlib/BLI_math_color.h
M   source/blender/blenlib/intern/math_color.c

===

diff --git a/source/blender/blenlib/BLI_math_color.h 
b/source/blender/blenlib/BLI_math_color.h
index 560ebe3..55e57b1 100644
--- a/source/blender/blenlib/BLI_math_color.h
+++ b/source/blender/blenlib/BLI_math_color.h
@@ -89,9 +89,6 @@ MINLINE float rgb_to_luma_y(const float rgb[3]);
 
 / Profile Transformations */
 
-void gamma_correct(float *c, float gamma);
-float rec709_to_linearrgb(float c);
-float linearrgb_to_rec709(float c);
 float srgb_to_linearrgb(float c);
 float linearrgb_to_srgb(float c);
 
diff --git a/source/blender/blenlib/intern/math_color.c 
b/source/blender/blenlib/intern/math_color.c
index 3ed7230..e149fdb 100644
--- a/source/blender/blenlib/intern/math_color.c
+++ b/source/blender/blenlib/intern/math_color.c
@@ -429,27 +429,6 @@ void rgba_float_to_uchar(unsigned char r_col[4], const 
float col_f[4])
 /* * color transforms 
* */
 
 
-void gamma_correct(float *c, float gamma)
-{
-   *c = powf((*c), gamma);
-}
-
-float rec709_to_linearrgb(float c)
-{
-   if (c < 0.081f)
-   return (c < 0.0f) ? 0.0f : c * (1.0f / 4.5f);
-   else
-   return powf((c + 0.099f) * (1.0f / 1.099f), (1.0f / 0.45f));
-}
-
-float linearrgb_to_rec709(float c)
-{
-   if (c < 0.018f)
-   return (c < 0.0f) ? 0.0f : c * 4.5f;
-   else
-   return 1.099f * powf(c, 0.45f) - 0.099f;
-}
-
 float srgb_to_linearrgb(float c)
 {
if (c < 0.04045f)

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [1d64dff] master: Fix recent vert-slide UV's when cancelled

2015-02-10 Thread Campbell Barton
Commit: 1d64dff6716ac02fb706d4111c606ddc42984a3d
Author: Campbell Barton
Date:   Wed Feb 11 07:22:19 2015 +1100
Branches: master
https://developer.blender.org/rB1d64dff6716ac02fb706d4111c606ddc42984a3d

Fix recent vert-slide UV's when cancelled

Added support recently, but wasn't cancelling correctly.

===

M   source/blender/editors/transform/transform.c
M   source/blender/editors/transform/transform_conversions.c

===

diff --git a/source/blender/editors/transform/transform.c 
b/source/blender/editors/transform/transform.c
index 14bbdeb..2cf8031 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -2342,8 +2342,12 @@ int transformEnd(bContext *C, TransInfo *t)
/* handle restoring objects */
if (t->state == TRANS_CANCEL) {
/* exception, edge slide transformed UVs too */
-   if (t->mode == TFM_EDGE_SLIDE)
+   if (t->mode == TFM_EDGE_SLIDE) {
doEdgeSlide(t, 0.0f);
+   }
+   else if (t->mode == TFM_VERT_SLIDE) {
+   doVertSlide(t, 0.0f);
+   }

exit_code = OPERATOR_CANCELLED;
restoreTransObjects(t); // calls recalcData()
diff --git a/source/blender/editors/transform/transform_conversions.c 
b/source/blender/editors/transform/transform_conversions.c
index 5deb5ee..4802f8d 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -5615,6 +5615,12 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
sld->perc = 0.0;
projectEdgeSlideData(t, false);
}
+   else if (t->mode == TFM_VERT_SLIDE) {
+   VertSlideData *sld = t->customData;
+
+   sld->perc = 0.0;
+   projectVertSlideData(t, false);
+   }
}
}
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [2b01b71] master: Fix T43565: BGE removed unneeded if/else in BL_KetsjiEmbedStart

2015-02-10 Thread Sybren A. Stüvel
Commit: 2b01b713394ae49bb805c889b65719ac59827b89
Author: Sybren A. Stüvel
Date:   Tue Feb 10 21:28:18 2015 +0100
Branches: master
https://developer.blender.org/rB2b01b713394ae49bb805c889b65719ac59827b89

Fix T43565: BGE removed unneeded if/else in BL_KetsjiEmbedStart

===

M   source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp

===

diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp 
b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index 60b8832..6e8c64f 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -457,14 +457,7 @@ extern "C" void StartKetsjiShell(struct bContext *C, 
struct ARegion *ar, rcti *c

ketsjiengine->SetCameraOverrideUseOrtho((rv3d->persp == RV3D_ORTHO));

ketsjiengine->SetCameraOverrideProjectionMatrix(MT_CmMatrix4x4(rv3d->winmat));

ketsjiengine->SetCameraOverrideViewMatrix(MT_CmMatrix4x4(rv3d->viewmat));
-   if (rv3d->persp == RV3D_ORTHO)
-   {
-   
ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far);
-   }
-   else
-   {
-   
ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far);
-   }
+   
ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far);
ketsjiengine->SetCameraOverrideLens(v3d->lens);
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [59c0a1e] master: Typo fix + clarification in mathutils.Vector example

2015-02-10 Thread Sybren A. Stüvel
Commit: 59c0a1e7c8df1c44df1bd0b459e3e17c481c4e76
Author: Sybren A. Stüvel
Date:   Tue Feb 10 21:25:01 2015 +0100
Branches: master
https://developer.blender.org/rB59c0a1e7c8df1c44df1bd0b459e3e17c481c4e76

Typo fix + clarification in mathutils.Vector example

===

M   doc/python_api/examples/mathutils.Vector.py

===

diff --git a/doc/python_api/examples/mathutils.Vector.py 
b/doc/python_api/examples/mathutils.Vector.py
index 14b8829..3f79fde 100644
--- a/doc/python_api/examples/mathutils.Vector.py
+++ b/doc/python_api/examples/mathutils.Vector.py
@@ -18,16 +18,16 @@ matrix = mathutils.Matrix()
 
 # Comparison operators can be done on Vector classes:
 
-# greater and less then test vector length.
+# (In)equality operators == and != test component values, e.g. 1,2,3 != 3,2,1
+vec_a == vec_b
+vec_a != vec_b
+
+# Ordering operators >, >=, > and <= test vector length.
 vec_a > vec_b
 vec_a >= vec_b
 vec_a < vec_b
 vec_a <= vec_b
 
-# ==, != test vector values e.g. 1,2,3 != 3,2,1 even if they are the same 
length
-vec_a == vec_b
-vec_a != vec_b
-
 
 # Math can be performed on Vector classes
 vec_a + vec_b

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [bb08502] master: Cycles: Fallback to bottom-top tile order when rendering from the command line

2015-02-10 Thread Sergey Sharybin
Commit: bb08502cf40613778ae880db88e8772dc63fe581
Author: Sergey Sharybin
Date:   Wed Feb 11 01:02:36 2015 +0500
Branches: master
https://developer.blender.org/rBbb08502cf40613778ae880db88e8772dc63fe581

Cycles: Fallback to bottom-top tile order when rendering from the command line

In the worst case it'll do nothing, in the best case it might give some percent
of speedup because of better cache coherency.

Currently it's all handled as an override on blender_python level, don't really
see reason to penetrate the boolean flag further into sync code. This can always
be done later if needed.

===

M   intern/cycles/blender/addon/__init__.py
M   intern/cycles/blender/addon/engine.py
M   intern/cycles/blender/blender_python.cpp

===

diff --git a/intern/cycles/blender/addon/__init__.py 
b/intern/cycles/blender/addon/__init__.py
index 64e4a83..5702538 100644
--- a/intern/cycles/blender/addon/__init__.py
+++ b/intern/cycles/blender/addon/__init__.py
@@ -59,7 +59,7 @@ class CyclesRender(bpy.types.RenderEngine):
   None, None, None, use_osl)
 else:
 if not self.session:
-engine.create(self, data, scene)
+engine.create(self, data, scene, background=bpy.app.background)
 else:
 engine.reset(self, data, scene)
 
diff --git a/intern/cycles/blender/addon/engine.py 
b/intern/cycles/blender/addon/engine.py
index e1d82db..492a254 100644
--- a/intern/cycles/blender/addon/engine.py
+++ b/intern/cycles/blender/addon/engine.py
@@ -28,7 +28,7 @@ def init():
 _cycles.init(path, user_path)
 
 
-def create(engine, data, scene, region=None, v3d=None, rv3d=None, 
preview_osl=False):
+def create(engine, data, scene, region=None, v3d=None, rv3d=None, 
preview_osl=False, background=False):
 import bpy
 import _cycles
 
@@ -42,7 +42,7 @@ def create(engine, data, scene, region=None, v3d=None, 
rv3d=None, preview_osl=Fa
 if rv3d:
 rv3d = rv3d.as_pointer()
 
-engine.session = _cycles.create(engine.as_pointer(), userpref, data, 
scene, region, v3d, rv3d, preview_osl)
+engine.session = _cycles.create(engine.as_pointer(), userpref, data, 
scene, region, v3d, rv3d, preview_osl, background)
 
 
 def free(engine):
diff --git a/intern/cycles/blender/blender_python.cpp 
b/intern/cycles/blender/blender_python.cpp
index 37191bb..120d6b0 100644
--- a/intern/cycles/blender/blender_python.cpp
+++ b/intern/cycles/blender/blender_python.cpp
@@ -90,10 +90,13 @@ static PyObject *init_func(PyObject *self, PyObject *args)
 static PyObject *create_func(PyObject *self, PyObject *args)
 {
PyObject *pyengine, *pyuserpref, *pydata, *pyscene, *pyregion, *pyv3d, 
*pyrv3d;
-   int preview_osl;
+   int preview_osl, background;
 
-   if(!PyArg_ParseTuple(args, "OOOi", &pyengine, &pyuserpref, &pydata, 
&pyscene, &pyregion, &pyv3d, &pyrv3d, &preview_osl))
+   if(!PyArg_ParseTuple(args, "OOOii", &pyengine, &pyuserpref, 
&pydata, &pyscene,
+&pyregion, &pyv3d, &pyrv3d, &preview_osl, 
&background))
+   {
return NULL;
+   }
 
/* RNA */
PointerRNA engineptr;
@@ -143,6 +146,12 @@ static PyObject *create_func(PyObject *self, PyObject 
*args)
RNA_boolean_set(&cscene, "use_progressive_refine", 
true);
}
 
+   /* Use more optimal tile order when rendering from the command 
line. */
+   if(background) {
+   PointerRNA cscene = RNA_pointer_get(&sceneptr, 
"cycles");
+   RNA_enum_set(&cscene, "tile_order", 
(int)TILE_BOTTOM_TO_TOP);
+   }
+
/* offline session or preview render */
session = new BlenderSession(engine, userpref, data, scene);
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [5cef36e] gooseberry: Merge branch 'master' into gooseberry

2015-02-10 Thread Antony Riakiotakis
Commit: 5cef36e6e2b6fdede6bda3683043d3a07c38cd16
Author: Antony Riakiotakis
Date:   Tue Feb 10 20:24:35 2015 +0100
Branches: gooseberry
https://developer.blender.org/rB5cef36e6e2b6fdede6bda3683043d3a07c38cd16

Merge branch 'master' into gooseberry

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [a3b7f83] master: Cavity mask support for texture painting.

2015-02-10 Thread Antony Riakiotakis
Commit: a3b7f83cb54a9bafe3ed2156d7cda3a1b758792b
Author: Antony Riakiotakis
Date:   Tue Feb 10 20:22:25 2015 +0100
Branches: master
https://developer.blender.org/rBa3b7f83cb54a9bafe3ed2156d7cda3a1b758792b

Cavity mask support for texture painting.

Title says it all, options can be found in the options panel,

A slider controls the amount of cavity masking that is applied while
it's also possible to invert the mask and paint outside or inside
cavities.

Again we might greatly benefit from caching of the cavity result, but
that should only affect startup time for the stroke.

===

M   release/scripts/startup/bl_ui/space_view3d_toolbar.py
M   source/blender/editors/sculpt_paint/paint_image_proj.c
M   source/blender/makesdna/DNA_scene_types.h
M   source/blender/makesrna/intern/rna_sculpt_paint.c

===

diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py 
b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 18a38c8..7af8be1 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -1721,6 +1721,12 @@ class VIEW3D_PT_tools_projectpaint(View3DPaintPanel, 
Panel):
 sub.active = (ipaint.use_normal_falloff)
 sub.prop(ipaint, "normal_angle", text="")
 
+layout.prop(ipaint, "use_cavity")
+sub = layout.column()
+sub.active = (ipaint.use_cavity)
+sub.prop(ipaint, "cavity_mul", slider=True)
+sub.prop(ipaint, "invert_cavity")
+
 layout.prop(ipaint, "seam_bleed")
 layout.prop(ipaint, "dither")
 self.unified_paint_settings(layout, context)
diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c 
b/source/blender/editors/sculpt_paint/paint_image_proj.c
index 098477e..439e9cd 100644
--- a/source/blender/editors/sculpt_paint/paint_image_proj.c
+++ b/source/blender/editors/sculpt_paint/paint_image_proj.c
@@ -214,10 +214,12 @@ typedef struct ProjPaintState {
 
DerivedMesh*dm;
int dm_totface;
+   int dm_totedge;
int dm_totvert;
int dm_release;
 
MVert  *dm_mvert;
+   MEdge  *dm_medge;
MFace  *dm_mface;
MTFace **dm_mtface;
MTFace **dm_mtface_clone;/* other UV map, use for cloning 
between layers */
@@ -250,11 +252,12 @@ typedef struct ProjPaintState {
int image_tot;  /* size of projectImages array */
 
float (*screenCoords)[4];   /* verts projected into floating point 
screen space */
-
+   float *cavities;/* cavity amount for vertices */
float screenMin[2]; /* 2D bounds for mesh verts on the screen's 
plane (screenspace) */
float screenMax[2];
float screen_width; /* Calculated from screenMin & screenMax */
float screen_height;
+   float cavity_multiplier;
int winx, winy; /* from the carea or from the projection 
render */
 
/* options for projection painting */
@@ -267,6 +270,7 @@ typedef struct ProjPaintState {
bool  do_occlude;   /* Use raytraced occlusion? - 
ortherwise will paint right through to the back*/
bool  do_backfacecull;  /* ignore faces with normals pointing 
away, skips a lot of raycasts if your normals are correctly flipped */
bool  do_mask_normal;   /* mask out pixels based on their 
normals */
+   bool  do_mask_cavity;   /* mask out pixels based on cavity */
bool  do_new_shading_nodes; /* cache 
BKE_scene_use_new_shading_nodes value */
float normal_angle; /* what angle to mask at*/
float normal_angle_inner;
@@ -1300,6 +1304,25 @@ static float project_paint_uvpixel_mask(
mask = 1.0f;
}
 
+   if (ps->do_mask_cavity) {
+   MFace *mf = &ps->dm_mface[face_index];
+   float ca1, ca2, ca3, ca_mask;
+   ca1 = ps->cavities[mf->v1];
+   if (side == 1) {
+   ca2 = ps->cavities[mf->v3];
+   ca3 = ps->cavities[mf->v4];
+   }
+   else {
+   ca2 = ps->cavities[mf->v2];
+   ca3 = ps->cavities[mf->v3];
+   }
+
+   ca_mask = w[0] * ca1 + w[1] * ca2 + w[2] * ca3;
+   CLAMP(ca_mask, 0.0, 1.0);
+   ca_mask = 1.0f - ca_mask;
+   mask *= ca_mask;
+   }
+
/* calculate mask */
if (ps->do_mask_normal) {
MFace *mf = &ps->dm_mface[face_index];
@@ -3203,6 +3226,44 @@ static void 
proj_paint_state_screen_coords_init(ProjPaintState *ps, const int di
}
 }
 
+static void proj_paint_state_cavity_init(ProjPaintState *ps)
+{
+   MVert *mv;
+   MEdge *me;
+   float *cavities;
+  

[Bf-blender-cvs] [f1e1dbd] cycles-ptex-49: Fix typo in Ptex CMakeLists

2015-02-10 Thread Nicholas Bishop
Commit: f1e1dbdc03e45aba062857d7892f18ae6231230f
Author: Nicholas Bishop
Date:   Tue Feb 10 20:20:38 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rBf1e1dbdc03e45aba062857d7892f18ae6231230f

Fix typo in Ptex CMakeLists

===

M   extern/ptex/CMakeLists.txt

===

diff --git a/extern/ptex/CMakeLists.txt b/extern/ptex/CMakeLists.txt
index e411773..a660569 100644
--- a/extern/ptex/CMakeLists.txt
+++ b/extern/ptex/CMakeLists.txt
@@ -40,7 +40,7 @@ set(SRC
 if(WITH_OPENIMAGEIO)
list(APPEND INC_SYS
${OPENIMAGEIO_INCLUDE_DIRS}
-   ${BOOST_INCLUDE_DIRS}
+   ${BOOST_INCLUDE_DIR}
)
add_definitions(-DWITH_OPENIMAGEIO)
 endif()

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [5646a9f] master: Cycles: Add utility functions to print ssef, ssei and sseb

2015-02-10 Thread Sergey Sharybin
Commit: 5646a9f759f306d7c98bb240b24e88afa9e187d9
Author: Sergey Sharybin
Date:   Wed Feb 11 00:11:04 2015 +0500
Branches: master
https://developer.blender.org/rB5646a9f759f306d7c98bb240b24e88afa9e187d9

Cycles: Add utility functions to print ssef, ssei and sseb

Nothing special, just really handy for debugging.

===

M   intern/cycles/util/util_sseb.h
M   intern/cycles/util/util_ssef.h
M   intern/cycles/util/util_ssei.h

===

diff --git a/intern/cycles/util/util_sseb.h b/intern/cycles/util/util_sseb.h
index 4e1d1b3..b517dc9 100644
--- a/intern/cycles/util/util_sseb.h
+++ b/intern/cycles/util/util_sseb.h
@@ -155,6 +155,12 @@ __forceinline size_t movemask( const sseb& a ) { return 
_mm_movemask_ps(a); }
 
 #endif
 
+ccl_device_inline void print_sseb(const char *label, const sseb &a)
+{
+   printf("%s: %df %df %df %d\n",
+  label, a[0], a[1], a[2], a[3]);
+}
+
 CCL_NAMESPACE_END
 
 #endif
diff --git a/intern/cycles/util/util_ssef.h b/intern/cycles/util/util_ssef.h
index 073f2c6..dfbc841 100644
--- a/intern/cycles/util/util_ssef.h
+++ b/intern/cycles/util/util_ssef.h
@@ -582,6 +582,16 @@ ccl_device_inline const ssef set_sign_bit(const ssef &a)
 
 #endif
 
+ccl_device_inline void print_ssef(const char *label, const ssef &a)
+{
+   printf("%s: %.8f %.8f %.8f %.8f\n",
+  label,
+  (double)a[0],
+  (double)a[1],
+  (double)a[2],
+  (double)a[3]);
+}
+
 CCL_NAMESPACE_END
 
 #endif
diff --git a/intern/cycles/util/util_ssei.h b/intern/cycles/util/util_ssei.h
index 0539425..45d2542 100644
--- a/intern/cycles/util/util_ssei.h
+++ b/intern/cycles/util/util_ssei.h
@@ -288,6 +288,12 @@ __forceinline void store4i_nt(void* ptr, const ssei& v) {
 
 #endif
 
+ccl_device_inline void print_ssei(const char *label, const ssei &a)
+{
+   printf("%s: %df %df %df %d\n",
+  label, a[0], a[1], a[2], a[3]);
+}
+
 CCL_NAMESPACE_END
 
 #endif

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [13ad69c] master: Cycles: Add print functions for sse3f, sse3i and sse3b

2015-02-10 Thread Sergey Sharybin
Commit: 13ad69c68e25346c6530e87d69eafded4d62dadc
Author: Sergey Sharybin
Date:   Wed Feb 11 00:20:34 2015 +0500
Branches: master
https://developer.blender.org/rB13ad69c68e25346c6530e87d69eafded4d62dadc

Cycles: Add print functions for sse3f, sse3i and sse3b

===

M   intern/cycles/kernel/kernel_compat_cpu.h

===

diff --git a/intern/cycles/kernel/kernel_compat_cpu.h 
b/intern/cycles/kernel/kernel_compat_cpu.h
index 6b950e3..d500cba 100644
--- a/intern/cycles/kernel/kernel_compat_cpu.h
+++ b/intern/cycles/kernel/kernel_compat_cpu.h
@@ -412,6 +412,28 @@ typedef texture_image texture_image_uchar4;
 typedef vector3 sse3b;
 typedef vector3 sse3f;
 typedef vector3 sse3i;
+
+ccl_device_inline void print_sse3b(const char *label, sse3b& a)
+{
+   print_sseb(label, a.x);
+   print_sseb(label, a.y);
+   print_sseb(label, a.z);
+}
+
+ccl_device_inline void print_sse3f(const char *label, sse3f& a)
+{
+   print_ssef(label, a.x);
+   print_ssef(label, a.y);
+   print_ssef(label, a.z);
+}
+
+ccl_device_inline void print_sse3i(const char *label, sse3i& a)
+{
+   print_ssei(label, a.x);
+   print_ssei(label, a.y);
+   print_ssei(label, a.z);
+}
+
 #endif
 
 CCL_NAMESPACE_END

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [4e37b29] master: Cycles: Move mesh attribute creation into separate functions

2015-02-10 Thread Sergey Sharybin
Commit: 4e37b296317eb00774973e1ce60ea7dd3004dccc
Author: Sergey Sharybin
Date:   Tue Feb 10 23:40:26 2015 +0500
Branches: master
https://developer.blender.org/rB4e37b296317eb00774973e1ce60ea7dd3004dccc

Cycles: Move mesh attribute creation into separate functions

This makes overall code of create_mesh() much cleaner and easier to follow.

===

M   intern/cycles/blender/blender_mesh.cpp

===

diff --git a/intern/cycles/blender/blender_mesh.cpp 
b/intern/cycles/blender/blender_mesh.cpp
index a5664fa..c5e2fa2 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -137,7 +137,7 @@ static void mikk_set_tangent_space(const SMikkTSpaceContext 
*context, const floa
userdata->tangent[face*4 + vert] = make_float4(T[0], T[1], T[2], sign);
 }
 
-static void mikk_compute_tangents(BL::Mesh b_mesh, BL::MeshTextureFaceLayer 
*b_layer, Mesh *mesh, vector& nverts, bool need_sign, bool active_render)
+static void mikk_compute_tangents(BL::Mesh b_mesh, BL::MeshTextureFaceLayer 
*b_layer, Mesh *mesh, const vector& nverts, bool need_sign, bool 
active_render)
 {
/* setup userdata */
MikkUserData userdata(b_mesh, b_layer, nverts.size());
@@ -258,6 +258,167 @@ static void create_mesh_volume_attributes(Scene *scene, 
BL::Object b_ob, Mesh *m
create_mesh_volume_attribute(b_ob, mesh, scene->image_manager, 
ATTR_STD_VOLUME_VELOCITY, frame);
 }
 
+/* Create vertex color attributes. */
+static void attr_create_vertex_color(Scene *scene,
+ Mesh *mesh,
+ BL::Mesh b_mesh,
+ const vector& nverts)
+{
+   BL::Mesh::tessface_vertex_colors_iterator l;
+   for(b_mesh.tessface_vertex_colors.begin(l); l != 
b_mesh.tessface_vertex_colors.end(); ++l) {
+   if(!mesh->need_attribute(scene, ustring(l->name().c_str(
+   continue;
+
+   Attribute *attr = mesh->attributes.add(
+   ustring(l->name().c_str()), TypeDesc::TypeColor, 
ATTR_ELEMENT_CORNER_BYTE);
+
+   BL::MeshColorLayer::data_iterator c;
+   uchar4 *cdata = attr->data_uchar4();
+   size_t i = 0;
+
+   for(l->data.begin(c); c != l->data.end(); ++c, ++i) {
+   cdata[0] = 
color_float_to_byte(color_srgb_to_scene_linear(get_float3(c->color1(;
+   cdata[1] = 
color_float_to_byte(color_srgb_to_scene_linear(get_float3(c->color2(;
+   cdata[2] = 
color_float_to_byte(color_srgb_to_scene_linear(get_float3(c->color3(;
+
+   if(nverts[i] == 4) {
+   cdata[3] = cdata[0];
+   cdata[4] = cdata[2];
+   cdata[5] = 
color_float_to_byte(color_srgb_to_scene_linear(get_float3(c->color4(;
+   cdata += 6;
+   }
+   else
+   cdata += 3;
+   }
+   }
+}
+
+/* Create uv map attributes. */
+static void attr_create_uv_map(Scene *scene,
+   Mesh *mesh,
+   BL::Mesh b_mesh,
+   const vector& nverts)
+{
+   if (b_mesh.tessface_uv_textures.length() != 0) {
+   BL::Mesh::tessface_uv_textures_iterator l;
+
+   for(b_mesh.tessface_uv_textures.begin(l); l != 
b_mesh.tessface_uv_textures.end(); ++l) {
+   bool active_render = l->active_render();
+   AttributeStandard std = (active_render)? ATTR_STD_UV: 
ATTR_STD_NONE;
+   ustring name = ustring(l->name().c_str());
+
+   /* UV map */
+   if(mesh->need_attribute(scene, name) || 
mesh->need_attribute(scene, std)) {
+   Attribute *attr;
+
+   if(active_render)
+   attr = mesh->attributes.add(std, name);
+   else
+   attr = mesh->attributes.add(name, 
TypeDesc::TypePoint, ATTR_ELEMENT_CORNER);
+
+   BL::MeshTextureFaceLayer::data_iterator t;
+   float3 *fdata = attr->data_float3();
+   size_t i = 0;
+
+   for(l->data.begin(t); t != l->data.end(); ++t, 
++i) {
+   fdata[0] =  get_float3(t->uv1());
+   fdata[1] =  get_float3(t->uv2());
+   fdata[2] =  get_float3(t->uv3());
+   fdata += 3;
+
+   if(nverts[i] == 4)

[Bf-blender-cvs] [bc218cf] master: BLI_linklist: Add a new helper to move an item (identified by its current index) to a new position in the list.

2015-02-10 Thread Bastien Montagne
Commit: bc218cf4d24f1cb4653950be84129ff9039b4e65
Author: Bastien Montagne
Date:   Tue Feb 10 17:28:55 2015 +0100
Branches: master
https://developer.blender.org/rBbc218cf4d24f1cb4653950be84129ff9039b4e65

BLI_linklist: Add a new helper to move an item (identified by its current 
index) to a new position in the list.

===

M   source/blender/blenlib/BLI_linklist.h
M   source/blender/blenlib/intern/BLI_linklist.c

===

diff --git a/source/blender/blenlib/BLI_linklist.h 
b/source/blender/blenlib/BLI_linklist.h
index 2ca363e..8dbf7b4 100644
--- a/source/blender/blenlib/BLI_linklist.h
+++ b/source/blender/blenlib/BLI_linklist.h
@@ -54,6 +54,8 @@ struct LinkNode *BLI_linklist_find(struct LinkNode *list, int 
index);
 
 voidBLI_linklist_reverse(struct LinkNode **listp);
 
+voidBLI_linklist_move_item(struct LinkNode **listp, int curr_index, int 
new_index);
+
 voidBLI_linklist_prepend_nlink(struct LinkNode **listp, void *ptr, struct 
LinkNode *nlink);
 voidBLI_linklist_prepend(struct LinkNode **listp, void *ptr);
 voidBLI_linklist_prepend_arena(struct LinkNode **listp, void *ptr, struct 
MemArena *ma);
diff --git a/source/blender/blenlib/intern/BLI_linklist.c 
b/source/blender/blenlib/intern/BLI_linklist.c
index 6b79cf9..391f3ef 100644
--- a/source/blender/blenlib/intern/BLI_linklist.c
+++ b/source/blender/blenlib/intern/BLI_linklist.c
@@ -87,6 +87,77 @@ void BLI_linklist_reverse(LinkNode **listp)
 }
 
 /**
+ * Move an item from its current position to a new one inside a single-linked 
list.
+ * Note *listp may be modified.
+ */
+void BLI_linklist_move_item(LinkNode **listp, int curr_index, int new_index)
+{
+   LinkNode *lnk, *lnk_psrc = NULL, *lnk_pdst = NULL;
+   int i;
+
+   if (new_index == curr_index) {
+   return;
+   }
+
+   if (new_index < curr_index) {
+   for (lnk = *listp, i = 0; lnk; lnk = lnk->next, i++) {
+   if (i == new_index - 1) {
+   lnk_pdst = lnk;
+   }
+   else if (i == curr_index - 1) {
+   lnk_psrc = lnk;
+   break;
+   }
+   }
+
+   if (!(lnk_psrc && lnk_psrc->next && (!lnk_pdst || 
lnk_pdst->next))) {
+   /* Invalid indices, abort. */
+   return;
+   }
+
+   lnk = lnk_psrc->next;
+   lnk_psrc->next = lnk->next;
+   if (lnk_pdst) {
+   lnk->next = lnk_pdst->next;
+   lnk_pdst->next = lnk;
+   }
+   else {
+   /* destination is first element of the list... */
+   lnk->next = *listp;
+   *listp = lnk;
+   }
+   }
+   else {
+   for (lnk = *listp, i = 0; lnk; lnk = lnk->next, i++) {
+   if (i == new_index) {
+   lnk_pdst = lnk;
+   break;
+   }
+   else if (i == curr_index - 1) {
+   lnk_psrc = lnk;
+   }
+   }
+
+   if (!(lnk_pdst && (!lnk_psrc || lnk_psrc->next))) {
+   /* Invalid indices, abort. */
+   return;
+   }
+
+   if (lnk_psrc) {
+   lnk = lnk_psrc->next;
+   lnk_psrc->next = lnk->next;
+   }
+   else {
+   /* source is first element of the list... */
+   lnk = *listp;
+   *listp = lnk->next;
+   }
+   lnk->next = lnk_pdst->next;
+   lnk_pdst->next = lnk;
+   }
+}
+
+/**
  * A version of prepend that takes the allocated link.
  */
 void BLI_linklist_prepend_nlink(LinkNode **listp, void *ptr, LinkNode *nlink)

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [ac09b3b] cycles-ptex-49: Add function to force refresh of Ptex packed image

2015-02-10 Thread Nicholas Bishop
Commit: ac09b3b36a77090c69e9c9d626103686a110648a
Author: Nicholas Bishop
Date:   Tue Feb 10 18:28:04 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rBac09b3b36a77090c69e9c9d626103686a110648a

Add function to force refresh of Ptex packed image

===

M   source/blender/blenkernel/BKE_ptex.h
M   source/blender/blenkernel/intern/bke_ptex.c

===

diff --git a/source/blender/blenkernel/BKE_ptex.h 
b/source/blender/blenkernel/BKE_ptex.h
index 9fa1271..d406bc1 100644
--- a/source/blender/blenkernel/BKE_ptex.h
+++ b/source/blender/blenkernel/BKE_ptex.h
@@ -98,4 +98,6 @@ bool BKE_ptex_texel_info_init(MPtexTexelInfo *texel_info,
 
 bool BKE_ptex_import(struct Mesh *me, const char filepath[]);
 
+void BKE_ptex_image_mark_for_update(struct Mesh *me, const int layer_offset);
+
 #endif
diff --git a/source/blender/blenkernel/intern/bke_ptex.c 
b/source/blender/blenkernel/intern/bke_ptex.c
index 81526ea..88b8489 100644
--- a/source/blender/blenkernel/intern/bke_ptex.c
+++ b/source/blender/blenkernel/intern/bke_ptex.c
@@ -223,6 +223,26 @@ void BKE_loop_ptex_free(MLoopPtex *loop_ptex)
}
 }
 
+void BKE_ptex_image_mark_for_update(struct Mesh *me, const int layer_offset)
+{
+   MLoopPtex *loop_ptex;
+
+   BLI_assert(me);
+   if (!me) {
+   return;
+   }
+
+   loop_ptex = CustomData_get_layer_n(&me->ldata, CD_LOOP_PTEX, 
layer_offset);
+   BLI_assert(loop_ptex);
+   if (!loop_ptex) {
+   return;
+   }
+
+   if (loop_ptex->image) {
+   BKE_image_free_buffers(loop_ptex->image);
+   }
+}
+
 #ifdef WITH_PTEX
 
 /* TODO: for testing, fill initialized loop with some data */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [27b23c3] cycles-ptex-49: Avoid creating new images on Ptex resolution change

2015-02-10 Thread Nicholas Bishop
Commit: 27b23c326e7dce6750cd45f79966ce5a200da3a5
Author: Nicholas Bishop
Date:   Tue Feb 10 18:29:28 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB27b23c326e7dce6750cd45f79966ce5a200da3a5

Avoid creating new images on Ptex resolution change

===

M   source/blender/blenkernel/intern/bke_ptex.c
M   source/blender/editors/mesh/mesh_data.c

===

diff --git a/source/blender/blenkernel/intern/bke_ptex.c 
b/source/blender/blenkernel/intern/bke_ptex.c
index 88b8489..a6647c4 100644
--- a/source/blender/blenkernel/intern/bke_ptex.c
+++ b/source/blender/blenkernel/intern/bke_ptex.c
@@ -580,10 +580,13 @@ static BPXImageBuf 
*bpx_image_buf_wrap_loop_ptex(MLoopPtex *loop_ptex)
 }
 
 /* TODO(nicholasbishop): sync up with code in imb_ptex.c */
-static bool ptex_pack_loops(Image **image, Mesh *me, MLoopPtex *loop_ptex,
+/* TODO(nicholasbishop): should function apart, Image stuff really is
+ * separate from the packing stuff */
+static bool ptex_pack_loops(Image **image_r, Mesh *me, MLoopPtex *loop_ptex,
const char *layer_name)
 {
BPXImageBuf *bpx_dst;
+   Image *image;
const int num_loops = me->totloop;
struct BPXPackedLayout *layout = NULL;
struct ImBuf *ibuf;
@@ -591,7 +594,7 @@ static bool ptex_pack_loops(Image **image, Mesh *me, 
MLoopPtex *loop_ptex,
BPXTypeDesc type_desc;
int i;
 
-   if (!image) {
+   if (!image_r) {
return false;
}
 
@@ -654,52 +657,56 @@ static bool ptex_pack_loops(Image **image, Mesh *me, 
MLoopPtex *loop_ptex,
// TODO
IMB_float_from_rect(ibuf);
 
-   (*image) = BKE_image_add_from_imbuf(ibuf);
-   
-   /* Image now owns the ImBuf */
-   IMB_freeImBuf(ibuf);
-
-   if (*image) {
-   ID *id = &(*image)->id;
-   rename_id(id, layer_name);
-   id_us_min(id);
-   return true;
+   image = *image_r;
+   if (image) {
+   BKE_image_free_buffers(image);
+   BKE_image_assign_ibuf(image, ibuf);
}
else {
-   return false;
+   image = BKE_image_add_from_imbuf(ibuf);
+
+   rename_id(&image->id, layer_name);
+   id_us_min(&image->id);
+
+   (*image_r) = image;
}
+
+   /* Image now owns the ImBuf */
+   IMB_freeImBuf(ibuf);
+
+   return image != NULL;
 }
 
 Image *BKE_ptex_mesh_image_get(struct Object *ob,
   const char 
layer_name[MAX_CUSTOMDATA_LAYER_NAME])
 {
Mesh *me = BKE_mesh_from_object(ob);
-   if (me) {
-   MLoopPtex *loop_ptex = CustomData_get_layer_named(&me->ldata,
-   
  CD_LOOP_PTEX,
-   
  layer_name);
-   if (loop_ptex) {
-   // TODO
-   if (!loop_ptex->image) {
-   // TODO
-   const bool r = 
ptex_pack_loops(&loop_ptex->image, me,
-   
   loop_ptex, layer_name);
-   BLI_assert(r);
-   }
-   else if (loop_ptex->image->tpageflag & 
IMA_TPAGE_REFRESH) {
-   //mesh_ptex_pack_textures_free(loop_ptex->pack);
-   loop_ptex->image->tpageflag &= 
~IMA_TPAGE_REFRESH;
-   }
-   // TODO
+   MLoopPtex *loop_ptex;
+   if (!me) {
+   return NULL;
+   }
 
-   /* if (!loop_ptex->pack->mapping_texture) { */
-   /*  
mesh_ptex_pack_update_textures(loop_ptex->pack); */
-   /* } */
+   loop_ptex = CustomData_get_layer_named(&me->ldata, CD_LOOP_PTEX,
+   
   layer_name);
+   if (!loop_ptex) {
+   return NULL;
+   }
 
-   return loop_ptex->image;
-   }
+   if (!loop_ptex->image ||
+   !BKE_image_has_ibuf(loop_ptex->image, NULL))
+   {
+   // TODO
+   const bool r = ptex_pack_loops(&loop_ptex->image, me,
+  
loop_ptex, layer_name);
+   BLI_assert(r);
}
-   return NULL;
+   // TODO
+   else if (loop_ptex->image->tpageflag & IMA_TPAGE_REFRESH) {
+   //mesh_ptex_pack_textures_free(loop_ptex->pack);
+   

[Bf-blender-cvs] [232fb32] cycles-ptex-49: Merge remote-tracking branch 'origin/master' into cycles-ptex-49

2015-02-10 Thread Nicholas Bishop
Commit: 232fb32187b05af1baec035c99cb943d1670a593
Author: Nicholas Bishop
Date:   Tue Feb 10 18:37:57 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB232fb32187b05af1baec035c99cb943d1670a593

Merge remote-tracking branch 'origin/master' into cycles-ptex-49

Conflicts:
intern/cycles/kernel/kernel_types.h
intern/cycles/render/attribute.cpp

===



===

diff --cc intern/cycles/kernel/kernel_types.h
index 19452b9,680094d..54aa2f4
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@@ -534,7 -534,7 +534,8 @@@ typedef enum AttributeStandard 
ATTR_STD_VOLUME_FLAME,
ATTR_STD_VOLUME_HEAT,
ATTR_STD_VOLUME_VELOCITY,
+   ATTR_STD_POINTINESS,
 +  ATTR_STD_PTEX_LAYER,
ATTR_STD_NUM,
  
ATTR_STD_NOT_FOUND = ~0
diff --cc intern/cycles/render/attribute.cpp
index fbd751f,656420f..22fe207
--- a/intern/cycles/render/attribute.cpp
+++ b/intern/cycles/render/attribute.cpp
@@@ -230,8 -230,8 +230,10 @@@ const char *Attribute::standard_name(At
return "heat";
case ATTR_STD_VOLUME_VELOCITY:
return "velocity";
+   case ATTR_STD_POINTINESS:
+   return "pointiness";
 +  case ATTR_STD_PTEX_LAYER:
 +  return "ptex_layer";
case ATTR_STD_NOT_FOUND:
case ATTR_STD_NONE:
case ATTR_STD_NUM:
@@@ -377,9 -377,9 +379,12 @@@ Attribute *AttributeSet::add(AttributeS
case ATTR_STD_VOLUME_VELOCITY:
attr = add(name, TypeDesc::TypeVector, 
ATTR_ELEMENT_VOXEL);
break;
+   case ATTR_STD_POINTINESS:
+   attr = add(name, TypeDesc::TypeFloat, 
ATTR_ELEMENT_VERTEX);
+   break;
 +  case ATTR_STD_PTEX_LAYER:
 +  attr = add(name, TypeDesc::TypeFloat, 
ATTR_ELEMENT_MESH);
 +  break;
default:
assert(0);
break;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [6f03051] cycles-ptex-49: Revert "Code cleanup: remove unused function BKE_image_assign_ibuf"

2015-02-10 Thread Nicholas Bishop
Commit: 6f03051fac4cc3f390976c98ea8ea20b7d1d9e5f
Author: Nicholas Bishop
Date:   Tue Feb 10 17:34:29 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB6f03051fac4cc3f390976c98ea8ea20b7d1d9e5f

Revert "Code cleanup: remove unused function BKE_image_assign_ibuf"

This reverts commit 567e147f619b1a51eecebccaaff39030362fd2f4.

===

M   source/blender/blenkernel/BKE_image.h
M   source/blender/blenkernel/intern/image.c

===

diff --git a/source/blender/blenkernel/BKE_image.h 
b/source/blender/blenkernel/BKE_image.h
index 2c9ecef..945224f 100644
--- a/source/blender/blenkernel/BKE_image.h
+++ b/source/blender/blenkernel/BKE_image.h
@@ -186,6 +186,9 @@ void BKE_image_walk_all_users(const struct Main *mainp, 
void *customdata,
 /* ensures an Image exists for viewing nodes or render */
 struct Image *BKE_image_verify_viewer(int type, const char *name);
 
+/* force an ImBuf to become part of Image */
+void BKE_image_assign_ibuf(struct Image *ima, struct ImBuf *ibuf);
+
 /* called on frame change or before render */
 void BKE_image_user_frame_calc(struct ImageUser *iuser, int cfra, int fieldnr);
 void BKE_image_user_check_frame_calc(struct ImageUser *iuser, int cfra, int 
fieldnr);
diff --git a/source/blender/blenkernel/intern/image.c 
b/source/blender/blenkernel/intern/image.c
index 131a19b..85a0532f 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -2182,6 +2182,11 @@ Image *BKE_image_verify_viewer(int type, const char 
*name)
return ima;
 }
 
+void BKE_image_assign_ibuf(Image *ima, ImBuf *ibuf)
+{
+   image_assign_ibuf(ima, ibuf, IMA_NO_INDEX, 0);
+}
+
 void BKE_image_walk_all_users(const Main *mainp, void *customdata,
   void callback(Image *ima, ImageUser *iuser, void 
*customdata))
 {

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [337cb56] experimental-build: Merge remote-tracking branch 'origin/master' into experimental-build

2015-02-10 Thread Dalai Felinto
Commit: 337cb5683c2164ab51640ecd829849671a99af3d
Author: Dalai Felinto
Date:   Tue Feb 10 15:05:20 2015 -0200
Branches: experimental-build
https://developer.blender.org/rB337cb5683c2164ab51640ecd829849671a99af3d

Merge remote-tracking branch 'origin/master' into experimental-build

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [9982ae2] experimental-build: Revert "Bake-API: reduce memory footprint when baking more than one object [test"

2015-02-10 Thread Dalai Felinto
Commit: 9982ae284f241e71b574cfa141e3a8fe4d011d09
Author: Dalai Felinto
Date:   Tue Feb 10 15:07:01 2015 -0200
Branches: experimental-build
https://developer.blender.org/rB9982ae284f241e71b574cfa141e3a8fe4d011d09

Revert "Bake-API: reduce memory footprint when baking more than one object 
[test"

This reverts commit 087ee57dbaa2f90354f985cfc3b8320c1ce3df90.

===

M   intern/cycles/blender/blender_session.cpp
M   source/blender/editors/object/object_bake_api.c
M   source/blender/makesrna/intern/rna_render.c
M   source/blender/render/extern/include/RE_bake.h
M   source/blender/render/intern/include/render_types.h
M   source/blender/render/intern/source/bake_api.c
M   source/blender/render/intern/source/external_engine.c
M   source/blenderplayer/bad_level_call_stubs/stubs.c

===

diff --git a/intern/cycles/blender/blender_session.cpp 
b/intern/cycles/blender/blender_session.cpp
index 5835cc8..eb3f54a 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -498,13 +498,13 @@ void BlenderSession::render()
sync = NULL;
 }
 
-static void populate_bake_data(BL::RenderEngine b_engine, BakeData *data, 
BL::BakePixel pixel_array, const int num_pixels)
+static void populate_bake_data(BakeData *data, BL::BakePixel pixel_array, 
const int num_pixels)
 {
BL::BakePixel bp = pixel_array;
 
int i;
for(i=0; i < num_pixels; i++) {
-   data->set(i, bp.primitive_id(b_engine), bp.uv(), bp.du_dx(), 
bp.du_dy(), bp.dv_dx(), bp.dv_dy());
+   data->set(i, bp.primitive_id(), bp.uv(), bp.du_dx(), 
bp.du_dy(), bp.dv_dx(), bp.dv_dy());
bp = bp.next();
}
 }
@@ -565,7 +565,7 @@ void BlenderSession::bake(BL::Object b_object, const 
string& pass_type, BL::Bake
 
BakeData *bake_data = scene->bake_manager->init(object, tri_offset, 
num_pixels);
 
-   populate_bake_data(b_engine, bake_data, pixel_array, num_pixels);
+   populate_bake_data(bake_data, pixel_array, num_pixels);
 
/* set number of samples */
session->tile_manager.set_samples(session_params.samples);
diff --git a/source/blender/editors/object/object_bake_api.c 
b/source/blender/editors/object/object_bake_api.c
index 344d3bd..fca527f 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -571,7 +571,6 @@ static int bake(
float *result = NULL;
 
BakePixel *pixel_array_low = NULL;
-   BakePixel *pixel_array_high = NULL;
 
const bool is_save_internal = (save_mode == R_BAKE_SAVE_INTERNAL);
const bool is_noncolor = is_noncolor_pass(pass_type);
@@ -680,7 +679,6 @@ static int bake(
}
 
pixel_array_low = MEM_mallocN(sizeof(BakePixel) * num_pixels, "bake 
pixels low poly");
-   pixel_array_high = MEM_mallocN(sizeof(BakePixel) * num_pixels, "bake 
pixels high poly");
result = MEM_callocN(sizeof(float) * depth * num_pixels, "bake return 
pixels");
 
/* get the mesh as it arrives in the renderer */
@@ -748,6 +746,8 @@ static int bake(
/* initialize highpoly_data */
highpoly[i].ob = ob_iter;
highpoly[i].restrict_flag = ob_iter->restrictflag;
+   highpoly[i].pixel_array = MEM_mallocN(sizeof(BakePixel) 
* num_pixels, "bake pixels high poly");
+
 
/* triangulating so BVH returns the primitive_id that 
will be used for rendering */
highpoly[i].tri_mod = ED_object_modifier_add(
@@ -779,7 +779,7 @@ static int bake(
 
/* populate the pixel arrays with the corresponding face data 
for each high poly object */
if (!RE_bake_pixels_populate_from_objects(
-   me_low, pixel_array_low, pixel_array_high, 
highpoly, tot_highpoly, num_pixels, ob_cage != NULL,
+   me_low, pixel_array_low, highpoly, tot_highpoly, 
num_pixels, ob_cage != NULL,
cage_extrusion, ob_low->obmat, (ob_cage ? 
ob_cage->obmat : ob_low->obmat), me_cage))
{
BKE_report(reports, RPT_ERROR, "Error handling selected 
objects");
@@ -788,8 +788,7 @@ static int bake(
 
/* the baking itself */
for (i = 0; i < tot_highpoly; i++) {
-   RE_bake_object_id_set(re, i);
-   ok = RE_bake_engine(re, highpoly[i].ob, 
pixel_array_high, num_pixels,
+   ok = RE_bake_engine(re, highpoly[i].ob, 
highpoly[i].pixel_array, num_pixels,
depth, pass_type, result);
if (!ok) {
BKE_reportf(reports, RPT_ERROR, "Error baking 
from object \"%s\"", highpoly[i]

[Bf-blender-cvs] [087ee57] experimental-build: Bake-API: reduce memory footprint when baking more than one object [test build]

2015-02-10 Thread Dalai Felinto
Commit: 087ee57dbaa2f90354f985cfc3b8320c1ce3df90
Author: Dalai Felinto
Date:   Tue Feb 10 15:06:30 2015 -0200
Branches: experimental-build
https://developer.blender.org/rB087ee57dbaa2f90354f985cfc3b8320c1ce3df90

Bake-API: reduce memory footprint when baking more than one object [test
build]

===

M   intern/cycles/blender/blender_session.cpp
M   source/blender/editors/object/object_bake_api.c
M   source/blender/makesrna/intern/rna_render.c
M   source/blender/render/extern/include/RE_bake.h
M   source/blender/render/intern/include/render_types.h
M   source/blender/render/intern/source/bake_api.c
M   source/blender/render/intern/source/external_engine.c
M   source/blenderplayer/bad_level_call_stubs/stubs.c

===

diff --git a/intern/cycles/blender/blender_session.cpp 
b/intern/cycles/blender/blender_session.cpp
index eb3f54a..5835cc8 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -498,13 +498,13 @@ void BlenderSession::render()
sync = NULL;
 }
 
-static void populate_bake_data(BakeData *data, BL::BakePixel pixel_array, 
const int num_pixels)
+static void populate_bake_data(BL::RenderEngine b_engine, BakeData *data, 
BL::BakePixel pixel_array, const int num_pixels)
 {
BL::BakePixel bp = pixel_array;
 
int i;
for(i=0; i < num_pixels; i++) {
-   data->set(i, bp.primitive_id(), bp.uv(), bp.du_dx(), 
bp.du_dy(), bp.dv_dx(), bp.dv_dy());
+   data->set(i, bp.primitive_id(b_engine), bp.uv(), bp.du_dx(), 
bp.du_dy(), bp.dv_dx(), bp.dv_dy());
bp = bp.next();
}
 }
@@ -565,7 +565,7 @@ void BlenderSession::bake(BL::Object b_object, const 
string& pass_type, BL::Bake
 
BakeData *bake_data = scene->bake_manager->init(object, tri_offset, 
num_pixels);
 
-   populate_bake_data(bake_data, pixel_array, num_pixels);
+   populate_bake_data(b_engine, bake_data, pixel_array, num_pixels);
 
/* set number of samples */
session->tile_manager.set_samples(session_params.samples);
diff --git a/source/blender/editors/object/object_bake_api.c 
b/source/blender/editors/object/object_bake_api.c
index fca527f..344d3bd 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -571,6 +571,7 @@ static int bake(
float *result = NULL;
 
BakePixel *pixel_array_low = NULL;
+   BakePixel *pixel_array_high = NULL;
 
const bool is_save_internal = (save_mode == R_BAKE_SAVE_INTERNAL);
const bool is_noncolor = is_noncolor_pass(pass_type);
@@ -679,6 +680,7 @@ static int bake(
}
 
pixel_array_low = MEM_mallocN(sizeof(BakePixel) * num_pixels, "bake 
pixels low poly");
+   pixel_array_high = MEM_mallocN(sizeof(BakePixel) * num_pixels, "bake 
pixels high poly");
result = MEM_callocN(sizeof(float) * depth * num_pixels, "bake return 
pixels");
 
/* get the mesh as it arrives in the renderer */
@@ -746,8 +748,6 @@ static int bake(
/* initialize highpoly_data */
highpoly[i].ob = ob_iter;
highpoly[i].restrict_flag = ob_iter->restrictflag;
-   highpoly[i].pixel_array = MEM_mallocN(sizeof(BakePixel) 
* num_pixels, "bake pixels high poly");
-
 
/* triangulating so BVH returns the primitive_id that 
will be used for rendering */
highpoly[i].tri_mod = ED_object_modifier_add(
@@ -779,7 +779,7 @@ static int bake(
 
/* populate the pixel arrays with the corresponding face data 
for each high poly object */
if (!RE_bake_pixels_populate_from_objects(
-   me_low, pixel_array_low, highpoly, tot_highpoly, 
num_pixels, ob_cage != NULL,
+   me_low, pixel_array_low, pixel_array_high, 
highpoly, tot_highpoly, num_pixels, ob_cage != NULL,
cage_extrusion, ob_low->obmat, (ob_cage ? 
ob_cage->obmat : ob_low->obmat), me_cage))
{
BKE_report(reports, RPT_ERROR, "Error handling selected 
objects");
@@ -788,7 +788,8 @@ static int bake(
 
/* the baking itself */
for (i = 0; i < tot_highpoly; i++) {
-   ok = RE_bake_engine(re, highpoly[i].ob, 
highpoly[i].pixel_array, num_pixels,
+   RE_bake_object_id_set(re, i);
+   ok = RE_bake_engine(re, highpoly[i].ob, 
pixel_array_high, num_pixels,
depth, pass_type, result);
if (!ok) {
BKE_reportf(reports, RPT_ERROR, "Error baking 
from object \"%s\"", highpoly[i].ob->id.name + 2);
@@ -815,6 +816,7 @@ cage_cleanup:
 

[Bf-blender-cvs] [a4644c3] alembic_pointcache: Cleanup: Use enums where appropriate instead of #defines.

2015-02-10 Thread Lukas Tönne
Commit: a4644c360506274ea1dd91a4bb862d0d2395b366
Author: Lukas Tönne
Date:   Tue Feb 10 17:56:56 2015 +0100
Branches: alembic_pointcache
https://developer.blender.org/rBa4644c360506274ea1dd91a4bb862d0d2395b366

Cleanup: Use enums where appropriate instead of #defines.

===

M   source/blender/blenkernel/BKE_pointcache.h
M   source/blender/blenkernel/intern/pointcache.c

===

diff --git a/source/blender/blenkernel/BKE_pointcache.h 
b/source/blender/blenkernel/BKE_pointcache.h
index 05cc068..76af442 100644
--- a/source/blender/blenkernel/BKE_pointcache.h
+++ b/source/blender/blenkernel/BKE_pointcache.h
@@ -40,46 +40,51 @@
 
 /* Point cache clearing option, for BKE_ptcache_id_clear, before
  * and after are non inclusive (they wont remove the cfra) */
-#define PTCACHE_CLEAR_ALL   0
-#define PTCACHE_CLEAR_FRAME 1
-#define PTCACHE_CLEAR_BEFORE2
-#define PTCACHE_CLEAR_AFTER 3
+typedef enum ePointCache_ClearMode {
+   PTCACHE_CLEAR_ALL   = 0,
+   PTCACHE_CLEAR_FRAME = 1,
+   PTCACHE_CLEAR_BEFORE= 2,
+   PTCACHE_CLEAR_AFTER = 3,
+} ePointCache_ClearMode;
 
 /* Point cache reset options */
-#define PTCACHE_RESET_DEPSGRAPH 0
-#define PTCACHE_RESET_BAKED 1
-#define PTCACHE_RESET_OUTDATED  2
-/* #define PTCACHE_RESET_FREE  3 */ /*UNUSED*/
+typedef enum ePointCache_ResetMode {
+   PTCACHE_RESET_DEPSGRAPH = 0,
+   PTCACHE_RESET_BAKED = 1,
+   PTCACHE_RESET_OUTDATED  = 2,
+/* PTCACHE_RESET_FREE  = 3, */ /*UNUSED*/
+} ePointCache_ResetMode;
 
 /* Add the blendfile name after blendcache_ */
 #define PTCACHE_EXT ".bphys"
 #define PTCACHE_PATH "blendcache_"
 
-/* File open options, for BKE_ptcache_file_open */
-#define PTCACHE_FILE_READ   0
-#define PTCACHE_FILE_WRITE  1
-#define PTCACHE_FILE_UPDATE 2
-
 /* PTCacheID types */
-#define PTCACHE_TYPE_SOFTBODY   0
-#define PTCACHE_TYPE_PARTICLES  1
-#define PTCACHE_TYPE_CLOTH  2
-#define PTCACHE_TYPE_SMOKE_DOMAIN   3
-#define PTCACHE_TYPE_SMOKE_HIGHRES  4
-#define PTCACHE_TYPE_DYNAMICPAINT   5
-#define PTCACHE_TYPE_RIGIDBODY  6
+typedef enum ePointCache_Type {
+   PTCACHE_TYPE_SOFTBODY   = 0,
+   PTCACHE_TYPE_PARTICLES  = 1,
+   PTCACHE_TYPE_CLOTH  = 2,
+   PTCACHE_TYPE_SMOKE_DOMAIN   = 3,
+   PTCACHE_TYPE_SMOKE_HIGHRES  = 4,
+   PTCACHE_TYPE_DYNAMICPAINT   = 5,
+   PTCACHE_TYPE_RIGIDBODY  = 6,
+} ePointCache_Type;
 
 /* high bits reserved for flags that need to be stored in file */
-#define PTCACHE_TYPEFLAG_COMPRESS   (1 << 16)
-#define PTCACHE_TYPEFLAG_EXTRADATA  (1 << 17)
+typedef enum ePointCache_Flag {
+   PTCACHE_TYPEFLAG_COMPRESS   = (1 << 16),
+   PTCACHE_TYPEFLAG_EXTRADATA  = (1 << 17),
+} ePointCache_Flag;
 
 #define PTCACHE_TYPEFLAG_TYPEMASK   0x
 #define PTCACHE_TYPEFLAG_FLAGMASK   0x
 
 /* PTCache read return code */
-#define PTCACHE_READ_EXACT  1
-#define PTCACHE_READ_INTERPOLATED   2
-#define PTCACHE_READ_OLD3
+typedef enum ePointCache_ReadResult {
+   PTCACHE_READ_EXACT  = 1,
+   PTCACHE_READ_INTERPOLATED   = 2,
+   PTCACHE_READ_OLD= 3,
+} ePointCache_ReadResult;
 
 /* Structs */
 struct ClothModifierData;
diff --git a/source/blender/blenkernel/intern/pointcache.c 
b/source/blender/blenkernel/intern/pointcache.c
index a9780ef..779217d 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -104,6 +104,14 @@
 #  include "BLI_winstuff.h"
 #endif
 
+
+/* File open options, for BKE_ptcache_file_open */
+typedef enum ePointCache_FileMode {
+   PTCACHE_FILE_READ   = 0,
+   PTCACHE_FILE_WRITE  = 1,
+   PTCACHE_FILE_UPDATE = 2,
+} ePointCache_FileMode;
+
 #define PTCACHE_DATA_FROM(data, type, from)  \
if (data[type]) { \
memcpy(data[type], from, ptcache_data_size[type]); \

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [fe610b7] gooseberry: Merge branch 'master' into gooseberry

2015-02-10 Thread Antony Riakiotakis
Commit: fe610b7437f907447695993d1e70ddd477bcbf1e
Author: Antony Riakiotakis
Date:   Tue Feb 10 17:40:46 2015 +0100
Branches: gooseberry
https://developer.blender.org/rBfe610b7437f907447695993d1e70ddd477bcbf1e

Merge branch 'master' into gooseberry

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [a9c5d0b] master: Slip tool: add enter and space to confirm the operation

2015-02-10 Thread Antony Riakiotakis
Commit: a9c5d0ba51f453e5ffc8d392970cff5d36b9501d
Author: Antony Riakiotakis
Date:   Tue Feb 10 17:39:23 2015 +0100
Branches: master
https://developer.blender.org/rBa9c5d0ba51f453e5ffc8d392970cff5d36b9501d

Slip tool: add enter and space to confirm the operation

===

M   source/blender/editors/space_sequencer/sequencer_edit.c

===

diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c 
b/source/blender/editors/space_sequencer/sequencer_edit.c
index 8d4a82f..8e5f509 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -1598,6 +1598,8 @@ static int sequencer_slip_modal(bContext *C, wmOperator 
*op, const wmEvent *even
}
 
case LEFTMOUSE:
+   case RETKEY:
+   case SPACEKEY:
{
ED_region_draw_cb_exit(ar->type, data->draw_handle);
MEM_freeN(data->seq_array);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [0b1a886] master: Cycles: optimize one normalization out from the previous commit

2015-02-10 Thread Sergey Sharybin
Commit: 0b1a886292d385ec1f05495f67e27c52496f8e8d
Author: Sergey Sharybin
Date:   Tue Feb 10 21:32:44 2015 +0500
Branches: master
https://developer.blender.org/rB0b1a886292d385ec1f05495f67e27c52496f8e8d

Cycles: optimize one normalization out from the previous commit

===

M   intern/cycles/blender/blender_mesh.cpp

===

diff --git a/intern/cycles/blender/blender_mesh.cpp 
b/intern/cycles/blender/blender_mesh.cpp
index a02449a..a5664fa 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -411,8 +411,9 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh 
b_mesh, const vector<
v1 = b_mesh.edges[i].vertices()[1];
float3 co0 = 
get_float3(b_mesh.vertices[v0].co()),
   co1 = 
get_float3(b_mesh.vertices[v1].co());
-   edge_accum[v0] += normalize(co1 - co0);
-   edge_accum[v1] += normalize(co0 - co1);
+   float3 edge = normalize(co1 - co0);
+   edge_accum[v0] += edge;
+   edge_accum[v1] += -edge;
++counter[v0];
++counter[v1];
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [e89fd50] alembic_pointcache: Merge branch 'master' into alembic_pointcache

2015-02-10 Thread Lukas Tönne
Commit: e89fd502d7b1ee5a4c17286a78ae0116f03510b7
Author: Lukas Tönne
Date:   Tue Feb 10 17:09:00 2015 +0100
Branches: alembic_pointcache
https://developer.blender.org/rBe89fd502d7b1ee5a4c17286a78ae0116f03510b7

Merge branch 'master' into alembic_pointcache

Conflicts:
CMakeLists.txt
build_files/build_environment/install_deps.sh
source/blender/blenkernel/CMakeLists.txt
source/blender/blenkernel/SConscript
source/blender/blenkernel/intern/particle.c
source/blender/blenkernel/intern/pointcache.c
source/blender/editors/physics/particle_edit.c
source/blender/editors/space_outliner/outliner_draw.c
source/blender/makesdna/DNA_modifier_types.h
source/blender/makesrna/SConscript
source/blender/makesrna/intern/CMakeLists.txt
source/blender/makesrna/intern/SConscript
source/blender/makesrna/intern/rna_modifier.c
source/blender/makesrna/intern/rna_object_force.c
source/blender/modifiers/MOD_modifiertypes.h
source/blender/modifiers/intern/MOD_util.c
source/blender/render/intern/source/voxeldata.c

===



===

diff --cc CMakeLists.txt
index f232a00,026386a..7837f75
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@@ -1081,37 -1095,6 +1105,15 @@@ if(UNIX AND NOT APPLE
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} 
-Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
endif()
  
-   if(WITH_CYCLES_OSL)
-   set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to 
OpenShadingLanguage installation")
-   
-   message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
-   
-   find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
-   find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
-   find_library(OSL_LIB_QUERY NAMES oslquery PATHS 
${CYCLES_OSL}/lib)
-   # Note: --whole-archive is needed to force loading of all 
symbols in liboslexec,
-   # otherwise LLVM is missing the osl_allocate_closure_component 
function
-   list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -Wl,--whole-archive 
${OSL_LIB_EXEC} -Wl,--no-whole-archive ${OSL_LIB_QUERY})
-   find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS 
${CYCLES_OSL}/include)
-   find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
-   
-   if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
-   set(OSL_FOUND TRUE)
-   else()
-   message(STATUS "OSL not found")
-   set(WITH_CYCLES_OSL OFF)
-   endif()
-   endif()
- 
 +  if(WITH_ALEMBIC)
 +  find_package_wrapper(Alembic)
 +  set(ALEMBIC_LIBRARIES ${ALEMBIC_LIBRARIES} ${BOOST_LIBRARIES})
 +  endif()
 +
 +  if(WITH_HDF5)
 +  find_package_wrapper(HDF5)
 +  endif()
 +
# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using 
--as-needed
list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm)
  
diff --cc build_files/build_environment/install_deps.sh
index ca9832b,45decac..aaf3034
--- a/build_files/build_environment/install_deps.sh
+++ b/build_files/build_environment/install_deps.sh
@@@ -2161,8 -1992,7 +2175,8 @@@ install_DEB() 
if [ $? -eq 0 ]; then
  install_packages_DEB libboost-locale$boost_version-dev 
libboost-filesystem$boost_version-dev \
   libboost-regex$boost_version-dev 
libboost-system$boost_version-dev \
 - libboost-thread$boost_version-dev 
libboost-wave$boost_version-dev
 + libboost-thread$boost_version-dev 
libboost-python$boost_version-dev \
-  libboost-program-options$boost_version-dev
++ libboost-program-options$boost_version-dev 
libboost-wave$boost_version-dev
  clean_Boost
else
  compile_Boost
diff --cc release/scripts/startup/bl_ui/properties_particle.py
index b75c061,d1d6ee6..56b0ad6
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@@ -278,27 -329,50 +329,50 @@@ class PARTICLE_PT_hair_dynamics(Particl
  if not psys.cloth:
  return
  
- cloth = psys.cloth.settings
+ cloth_md = psys.cloth
+ cloth = cloth_md.settings
+ result = cloth_md.solver_result
  
 -layout.enabled = psys.use_hair_dynamics and psys.point_cache.is_baked 
is False
 +layout.enabled = psys.use_hair_dynamics and not 
psys.point_cache.lock_settings
  
- split = layout.split()
+ row = layout.row(align=True)
+ row.menu("PARTICLE_MT_hair_dynamics_presets", 
text=bpy.types.PARTICLE_MT_hair_dynamics_presets.bl_label)
+

[Bf-blender-cvs] [6f9982a] gooseberry: Merge branch 'master' into gooseberry

2015-02-10 Thread Sergey Sharybin
Commit: 6f9982a13c5a7a97520ba922f6160c4b4166c721
Author: Sergey Sharybin
Date:   Tue Feb 10 21:01:22 2015 +0500
Branches: gooseberry
https://developer.blender.org/rB6f9982a13c5a7a97520ba922f6160c4b4166c721

Merge branch 'master' into gooseberry

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [227a940] master: Cycles: implement pointiness geometry attribute

2015-02-10 Thread Sergey Sharybin
Commit: 227a94077f508a47fe7595b9091ab86aecde4ad5
Author: Sergey Sharybin
Date:   Fri Feb 6 12:35:46 2015 +0500
Branches: master
https://developer.blender.org/rB227a94077f508a47fe7595b9091ab86aecde4ad5

Cycles: implement pointiness geometry attribute

This attribute means how "pointy" the geometry surface is, which allows to do
effects like dirt maps and wear-off effects on render geometry. This means the
attribute is calculated for the final mesh which means no baking (which implies
UV unwrap) is needed. Apart from this the behavior is quite close to how vertex
dirty colors works.

The new attribute is available as an output socket of Geometry node.

There's no penalty for the render time, only some delay on scene preparation
(the delay is linear of the mesh complexity).

Reviewers: brecht, juicyfruit

Subscribers: eyecandy, venomgfx

Differential Revision: https://developer.blender.org/D1086

===

M   intern/cycles/blender/blender_mesh.cpp
M   intern/cycles/kernel/kernel_types.h
M   intern/cycles/kernel/shaders/node_geometry.osl
M   intern/cycles/render/attribute.cpp
M   intern/cycles/render/nodes.cpp
M   source/blender/nodes/shader/nodes/node_shader_geometry.c

===

diff --git a/intern/cycles/blender/blender_mesh.cpp 
b/intern/cycles/blender/blender_mesh.cpp
index 10b037a..a02449a 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -28,6 +28,7 @@
 
 #include "util_foreach.h"
 #include "util_logging.h"
+#include "util_math.h"
 
 #include "mikktspace.h"
 
@@ -387,6 +388,68 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh 
b_mesh, const vector<
}
}
 
+   /* create vertex pointiness attributes */
+   /* TODO(sergey): Consider moving all the attribute creation into own
+* functions for clarity.
+*/
+   {
+   if(mesh->need_attribute(scene, ATTR_STD_POINTINESS)) {
+   Attribute *attr = 
mesh->attributes.add(ATTR_STD_POINTINESS);
+   float *data = attr->data_float();
+   int *counter = new int[numverts];
+   float *raw_data = new float[numverts];
+   float3 *edge_accum = new float3[numverts];
+
+   /* Calculate pointiness using single ring neighborhood. 
*/
+   memset(counter, 0, sizeof(int) * numverts);
+   memset(raw_data, 0, sizeof(float) * numverts);
+   memset(edge_accum, 0, sizeof(float3) * numverts);
+   BL::Mesh::edges_iterator e;
+   i = 0;
+   for(b_mesh.edges.begin(e); e != b_mesh.edges.end(); 
++e, ++i) {
+   int v0 = b_mesh.edges[i].vertices()[0],
+   v1 = b_mesh.edges[i].vertices()[1];
+   float3 co0 = 
get_float3(b_mesh.vertices[v0].co()),
+  co1 = 
get_float3(b_mesh.vertices[v1].co());
+   edge_accum[v0] += normalize(co1 - co0);
+   edge_accum[v1] += normalize(co0 - co1);
+   ++counter[v0];
+   ++counter[v1];
+   }
+   i = 0;
+   for(b_mesh.vertices.begin(v); v != 
b_mesh.vertices.end(); ++v, ++i) {
+   if(counter[i] > 0) {
+   float3 normal = 
get_float3(b_mesh.vertices[i].normal());
+   float angle = safe_acosf(dot(normal, 
edge_accum[i] / counter[i]));
+   raw_data[i] = angle * M_1_PI_F;
+   }
+   else {
+   raw_data[i] = 0.0f;
+   }
+   }
+
+   /* Blur vertices to approximate 2 ring neighborhood. */
+   memset(counter, 0, sizeof(int) * numverts);
+   memcpy(data, raw_data, sizeof(float) * numverts);
+   i = 0;
+   for(b_mesh.edges.begin(e); e != b_mesh.edges.end(); 
++e, ++i) {
+   int v0 = b_mesh.edges[i].vertices()[0],
+   v1 = b_mesh.edges[i].vertices()[1];
+   data[v0] += raw_data[v1];
+   data[v1] += raw_data[v0];
+   ++counter[v0];
+   ++counter[v1];
+   }
+   for(i = 0; i < numverts; ++i) {
+   data[i] /= counter[i] + 1;
+   }
+
+   delete [] co

[Bf-blender-cvs] [858b58f] cycles-ptex-49: Small Ptex alpha cleanup

2015-02-10 Thread Nicholas Bishop
Commit: 858b58f7794f129f721ec16b1e6b941012b437b3
Author: Nicholas Bishop
Date:   Tue Feb 10 14:12:20 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB858b58f7794f129f721ec16b1e6b941012b437b3

Small Ptex alpha cleanup

===

M   source/blender/blenkernel/intern/bke_ptex.c

===

diff --git a/source/blender/blenkernel/intern/bke_ptex.c 
b/source/blender/blenkernel/intern/bke_ptex.c
index b346000..81526ea 100644
--- a/source/blender/blenkernel/intern/bke_ptex.c
+++ b/source/blender/blenkernel/intern/bke_ptex.c
@@ -624,15 +624,14 @@ static bool ptex_pack_loops(Image **image, Mesh *me, 
MLoopPtex *loop_ptex,
BPX_image_buf_free(bpx_src);
}
 
-   // TODO
-   IMB_rectfill_alpha(ibuf, 1);
+   BPX_image_buf_free(bpx_dst);
ptex_filter_borders_update(ibuf, me);
 
-   BPX_image_buf_free(bpx_dst);
+   if (texel_info.num_channels < 4) {
+   IMB_rectfill_alpha(ibuf, 1);
+   }
 
// TODO
-   IMB_rectfill_alpha(ibuf, 1);
-
IMB_float_from_rect(ibuf);
 
(*image) = BKE_image_add_from_imbuf(ibuf);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [897aabf] cycles-ptex-49: Merge remote-tracking branch 'origin/master' into cycles-ptex-49

2015-02-10 Thread Nicholas Bishop
Commit: 897aabfe5997c58746bb9b4db4d9a7aa13ce8c38
Author: Nicholas Bishop
Date:   Tue Feb 10 15:26:11 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB897aabfe5997c58746bb9b4db4d9a7aa13ce8c38

Merge remote-tracking branch 'origin/master' into cycles-ptex-49

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [c39555c] cycles-ptex-49: Fix Ptex bump coordinates in Cycles

2015-02-10 Thread Nicholas Bishop
Commit: c39555c01fbc8d31c38fc5177ca1202b71371e88
Author: Nicholas Bishop
Date:   Tue Feb 10 15:24:53 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rBc39555c01fbc8d31c38fc5177ca1202b71371e88

Fix Ptex bump coordinates in Cycles

===

M   intern/cycles/kernel/svm/svm_image.h
M   intern/cycles/render/nodes.cpp

===

diff --git a/intern/cycles/kernel/svm/svm_image.h 
b/intern/cycles/kernel/svm/svm_image.h
index a3c33ae..f168f69 100644
--- a/intern/cycles/kernel/svm/svm_image.h
+++ b/intern/cycles/kernel/svm/svm_image.h
@@ -400,9 +400,6 @@ ccl_device void svm_node_tex_image(KernelGlobals *kg, 
ShaderData *sd, float *sta
f = make_float4(1.0f, 0.0f, 1.0f, 1.0f);
}
else if (srgb & 2) {
-   kernel_assert(co.x >= 0 && co.x <= 1);
-   kernel_assert(co.y >= 0 && co.y <= 1);
-
// TODO: test hacks for Ptex
uint face_id = (uint)(co.z + 0.5f);
uint offset = kernel_tex_fetch(__ptex_table, id - /* TODO */ 
1024);
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index b74cb87..c572cdd 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -437,6 +437,19 @@ void PtexTextureNode::attributes(Shader *shader, 
AttributeRequestSet *attributes
ShaderNode::attributes(shader, attributes);
 }
 
+static NodeType node_attr_from_bump(const ShaderBump bump)
+{
+   if(bump == SHADER_BUMP_DX) {
+   return NODE_ATTR_BUMP_DX;
+   }
+   else if(bump == SHADER_BUMP_DY) {
+   return NODE_ATTR_BUMP_DY;
+   }
+   else {
+   return NODE_ATTR;
+   }
+}
+
 void PtexTextureNode::compile(SVMCompiler& compiler)
 {
ShaderInput *layer_in = input("Layer");
@@ -449,8 +462,9 @@ void PtexTextureNode::compile(SVMCompiler& compiler)
{
int attr = compiler.attribute(ATTR_STD_PTEX_UV);
compiler.stack_assign(vector_in);
-   compiler.add_node(NODE_ATTR, attr, vector_in->stack_offset,
- NODE_ATTR_FLOAT3);
+
+   compiler.add_node(node_attr_from_bump(bump), attr,
+ vector_in->stack_offset, 
NODE_ATTR_FLOAT3);
}
 
image_manager = compiler.image_manager;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [1ebf95b] master: Tests: Disable failing import/export tests for until they're fixed

2015-02-10 Thread Sergey Sharybin
Commit: 1ebf95bfd7502c27f33a9325f88118bde4239607
Author: Sergey Sharybin
Date:   Tue Feb 10 19:29:18 2015 +0500
Branches: master
https://developer.blender.org/rB1ebf95bfd7502c27f33a9325f88118bde4239607

Tests: Disable failing import/export tests for until they're fixed

===

M   tests/python/CMakeLists.txt

===

diff --git a/tests/python/CMakeLists.txt b/tests/python/CMakeLists.txt
index 4902709..fd47bba 100644
--- a/tests/python/CMakeLists.txt
+++ b/tests/python/CMakeLists.txt
@@ -89,6 +89,8 @@ add_test(bevel ${TEST_BLENDER_EXE}
 # IO TESTS
 
 # OBJ Import tests
+# disabled until updated & working
+if(FALSE)
 add_test(import_obj_cube ${TEST_BLENDER_EXE}
--python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py --

--run={'FINISHED'}&bpy.ops.import_scene.obj\(filepath='${TEST_SRC_DIR}/io_tests/obj/cube.obj'\)
@@ -109,6 +111,7 @@ add_test(import_obj_makehuman ${TEST_BLENDER_EXE}
--md5=c9f78b185e58358daa4ecaecfa75464e --md5_method=SCENE
--write-blend=${TEST_OUT_DIR}/import_obj_makehuman.blend
 )
+endif()
 
 # OBJ Export tests
 add_test(export_obj_cube ${TEST_BLENDER_EXE}
@@ -129,6 +132,8 @@ add_test(export_obj_nurbs ${TEST_BLENDER_EXE}
--md5=a733ae4fa4a591ea9b0912da3af042de --md5_method=FILE
 )
 
+# disabled until updated & working
+if(FALSE)
 add_test(export_obj_all_objects ${TEST_BLENDER_EXE}
${TEST_SRC_DIR}/io_tests/blend_scene/all_objects.blend
--python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py --
@@ -137,6 +142,7 @@ add_test(export_obj_all_objects ${TEST_BLENDER_EXE}
--md5_source=${TEST_OUT_DIR}/export_obj_all_objects.mtl
--md5=04b3ed97cede07a19548fc518ce9f8ca --md5_method=FILE
 )
+endif()
 
 
 
@@ -163,6 +169,8 @@ add_test(import_ply_small_holes ${TEST_BLENDER_EXE}
 )
 
 # PLY Export
+# disabled until updated & working
+if(FALSE)
 add_test(export_ply_cube_all_data ${TEST_BLENDER_EXE}
${TEST_SRC_DIR}/io_tests/blend_geometry/cube_all_data.blend
--python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py --
@@ -178,6 +186,7 @@ add_test(export_ply_suzanne_all_data ${TEST_BLENDER_EXE}
--md5_source=${TEST_OUT_DIR}/export_ply_suzanne_all_data.ply
--md5=68ba23f02efd6511bfd093f45f703221 --md5_method=FILE
 )
+endif()
 
 add_test(export_ply_vertices ${TEST_BLENDER_EXE}  # lame, add a better one
${TEST_SRC_DIR}/io_tests/blend_geometry/vertices.blend
@@ -189,6 +198,8 @@ add_test(export_ply_vertices ${TEST_BLENDER_EXE}  # lame, 
add a better one
 
 
 # STL Import tests
+# disabled until updated & working
+if(FALSE)
 add_test(import_stl_cube ${TEST_BLENDER_EXE}
--python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py --

--run={'FINISHED'}&bpy.ops.import_mesh.stl\(filepath='${TEST_SRC_DIR}/io_tests/stl/cube.stl'\)
@@ -209,8 +220,11 @@ add_test(import_stl_knot_max_simplified ${TEST_BLENDER_EXE}
--md5=baf82803f45a84ec4ddbad9cef57dd3e --md5_method=SCENE
--write-blend=${TEST_OUT_DIR}/import_stl_knot_max_simplified.blend
 )
+endif()
 
 # STL Export
+# disabled until updated & working
+if(FALSE)
 add_test(export_stl_cube_all_data ${TEST_BLENDER_EXE}
${TEST_SRC_DIR}/io_tests/blend_geometry/cube_all_data.blend
--python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py --
@@ -234,9 +248,12 @@ add_test(export_stl_vertices ${TEST_BLENDER_EXE}  # lame, 
add a better one
--md5_source=${TEST_OUT_DIR}/export_stl_vertices.stl
--md5=3fd3c877e573beeebc782532cc005820 --md5_method=FILE
 )
+endif()
 
 
 # X3D Import
+# disabled until updated & working
+if(FALSE)
 add_test(import_x3d_cube ${TEST_BLENDER_EXE}
--python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py --

--run={'FINISHED'}&bpy.ops.import_scene.x3d\(filepath='${TEST_SRC_DIR}/io_tests/x3d/color_cube.x3d'\)
@@ -282,10 +299,13 @@ add_test(export_x3d_all_objects ${TEST_BLENDER_EXE}
--md5_source=${TEST_OUT_DIR}/export_x3d_all_objects.x3d
--md5=f5f9fa4c5619a0eeab66685aafd2f7f0 --md5_method=FILE
 )
+endif()
 
 
 
 # 3DS Import
+# disabled until updated & working
+if(FALSE)
 add_test(import_3ds_cube ${TEST_BLENDER_EXE}
--python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py --

--run={'FINISHED'}&bpy.ops.import_scene.autodesk_3ds\(filepath='${TEST_SRC_DIR}/io_tests/3ds/cube.3ds'\)
@@ -306,8 +326,11 @@ add_test(import_3ds_hierarchy_greek_trireme 
${TEST_BLENDER_EXE}
--md5=b62ee30101e8999cb91ef4f8a8760056 --md5_method=SCENE
--write-blend=${TEST_OUT_DIR}/import_3ds_hierarchy_greek_trireme.blend
 )
+endif()
 
 # 3DS Export
+# disabled until updated & working
+if(FALSE)
 add_test(export_3ds_cube ${TEST_BLENDER_EXE}
${TEST_SRC_DIR}/io_tests/blend_geometry/all_quads.blend
--python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py --
@@ -331,11 +354,14 @@ add_test(export_3ds_all_objects ${TEST_BLENDER_EXE}
--md5_source=${TEST_OUT_DIR}/export_3ds_all_objects.3ds
--md5=68447761ab0ca38

[Bf-blender-cvs] [b03ac83] master: Cycles: Correction to glossy shaders not handling total internal reflection

2015-02-10 Thread Sergey Sharybin
Commit: b03ac8384389a4ad34bd6bcf0cc7be204c7ada9f
Author: Sergey Sharybin
Date:   Tue Feb 10 18:20:36 2015 +0500
Branches: master
https://developer.blender.org/rBb03ac8384389a4ad34bd6bcf0cc7be204c7ada9f

Cycles: Correction to glossy shaders not handling total internal reflection

The issue was caused by lack of check for whether fresnel term is actually
giving total internal reflection in refraction BSDFs. This lead to usage of
arbitrary vector of (0, 0, 0) as reflection, giving numeric issues in other
areas of the kernel.

This gives some visual changes of sharp reflection but it seems to be rather
proper now. Which also corresponds with rough glossy reflection with sharpness
set to 0.001 (previously it was totally different from sharpness of 0.0, which
is just weird).

===

M   intern/cycles/kernel/closure/bsdf_microfacet.h
M   intern/cycles/kernel/closure/bsdf_refraction.h

===

diff --git a/intern/cycles/kernel/closure/bsdf_microfacet.h 
b/intern/cycles/kernel/closure/bsdf_microfacet.h
index 9561885..20dced2 100644
--- a/intern/cycles/kernel/closure/bsdf_microfacet.h
+++ b/intern/cycles/kernel/closure/bsdf_microfacet.h
@@ -591,16 +591,16 @@ ccl_device int bsdf_microfacet_ggx_sample(KernelGlobals 
*kg, const ShaderClosure
 #ifdef __RAY_DIFFERENTIALS__
float3 dRdx, dRdy, dTdx, dTdy;
 #endif
-   float m_eta = sc->data2;
+   float m_eta = sc->data2, fresnel;
bool inside;
 
-   fresnel_dielectric(m_eta, m, I, &R, &T,
+   fresnel = fresnel_dielectric(m_eta, m, I, &R, &T,
 #ifdef __RAY_DIFFERENTIALS__
dIdx, dIdy, &dRdx, &dRdy, &dTdx, &dTdy,
 #endif
&inside);

-   if(!inside) {
+   if(!inside && fresnel != 1.0f) {
 
*omega_in = T;
 #ifdef __RAY_DIFFERENTIALS__
@@ -945,16 +945,16 @@ ccl_device int 
bsdf_microfacet_beckmann_sample(KernelGlobals *kg, const ShaderCl
 #ifdef __RAY_DIFFERENTIALS__
float3 dRdx, dRdy, dTdx, dTdy;
 #endif
-   float m_eta = sc->data2;
+   float m_eta = sc->data2, fresnel;
bool inside;
 
-   fresnel_dielectric(m_eta, m, I, &R, &T,
+   fresnel = fresnel_dielectric(m_eta, m, I, &R, &T,
 #ifdef __RAY_DIFFERENTIALS__
dIdx, dIdy, &dRdx, &dRdy, &dTdx, &dTdy,
 #endif
&inside);
 
-   if(!inside) {
+   if(!inside && fresnel != 1.0f) {
*omega_in = T;
 
 #ifdef __RAY_DIFFERENTIALS__
diff --git a/intern/cycles/kernel/closure/bsdf_refraction.h 
b/intern/cycles/kernel/closure/bsdf_refraction.h
index c96ac62..02a0694 100644
--- a/intern/cycles/kernel/closure/bsdf_refraction.h
+++ b/intern/cycles/kernel/closure/bsdf_refraction.h
@@ -67,13 +67,14 @@ ccl_device int bsdf_refraction_sample(const ShaderClosure 
*sc, float3 Ng, float3
float3 dRdx, dRdy, dTdx, dTdy;
 #endif
bool inside;
-   fresnel_dielectric(m_eta, N, I, &R, &T,
+   float fresnel;
+   fresnel = fresnel_dielectric(m_eta, N, I, &R, &T,
 #ifdef __RAY_DIFFERENTIALS__
dIdx, dIdy, &dRdx, &dRdy, &dTdx, &dTdy,
 #endif
&inside);
 
-   if(!inside) {
+   if(!inside && fresnel != 1.0f) {
/* Some high number for MIS. */
*pdf = 1e6f;
*eval = make_float3(1e6f, 1e6f, 1e6f);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [edb7195] master: Cycles: Bring back distance check in re-intersection

2015-02-10 Thread Sergey Sharybin
Commit: edb7195f27091b6c4acf8b4ab29e9bb2f468c64f
Author: Sergey Sharybin
Date:   Tue Feb 10 19:07:55 2015 +0500
Branches: master
https://developer.blender.org/rBedb7195f27091b6c4acf8b4ab29e9bb2f468c64f

Cycles: Bring back distance check in re-intersection

>From more investigation of the numeric failures in the kernel it appears
the check was rather correct. But in theory it;s also needed for the motion
triangles.

===

M   intern/cycles/kernel/geom/geom_motion_triangle.h
M   intern/cycles/kernel/geom/geom_triangle_intersect.h

===

diff --git a/intern/cycles/kernel/geom/geom_motion_triangle.h 
b/intern/cycles/kernel/geom/geom_motion_triangle.h
index 3a4b20e..d3297e0 100644
--- a/intern/cycles/kernel/geom/geom_motion_triangle.h
+++ b/intern/cycles/kernel/geom/geom_motion_triangle.h
@@ -130,6 +130,9 @@ ccl_device_inline float3 
motion_triangle_refine(KernelGlobals *kg, ShaderData *s
 
 #ifdef __INTERSECTION_REFINE__
if(isect->object != OBJECT_NONE) {
+   if(UNLIKELY(t == 0.0f)) {
+   return P;
+   }
 #ifdef __OBJECT_MOTION__
Transform tfm = sd->ob_itfm;
 #else
diff --git a/intern/cycles/kernel/geom/geom_triangle_intersect.h 
b/intern/cycles/kernel/geom/geom_triangle_intersect.h
index 0674e8b..30468ef 100644
--- a/intern/cycles/kernel/geom/geom_triangle_intersect.h
+++ b/intern/cycles/kernel/geom/geom_triangle_intersect.h
@@ -314,6 +314,9 @@ ccl_device_inline float3 triangle_refine(KernelGlobals *kg,
 
 #ifdef __INTERSECTION_REFINE__
if(isect->object != OBJECT_NONE) {
+   if(UNLIKELY(t == 0.0f)) {
+   return P;
+   }
 #ifdef __OBJECT_MOTION__
Transform tfm = sd->ob_itfm;
 #else

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [3b19288] cycles-ptex-49: Decrease Ptex packed image refcount

2015-02-10 Thread Nicholas Bishop
Commit: 3b192888dc5e818d3cfa71e3b03654c99e8369c7
Author: Nicholas Bishop
Date:   Tue Feb 10 13:58:43 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB3b192888dc5e818d3cfa71e3b03654c99e8369c7

Decrease Ptex packed image refcount

===

M   source/blender/blenkernel/intern/bke_ptex.c

===

diff --git a/source/blender/blenkernel/intern/bke_ptex.c 
b/source/blender/blenkernel/intern/bke_ptex.c
index 8f68118..c82b64c 100644
--- a/source/blender/blenkernel/intern/bke_ptex.c
+++ b/source/blender/blenkernel/intern/bke_ptex.c
@@ -25,6 +25,7 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_image.h"
+#include "BKE_library.h"
 #include "BKE_ptex.h"
 
 #include "IMB_imbuf.h"
@@ -220,7 +221,6 @@ void BKE_loop_ptex_free(MLoopPtex *loop_ptex)
if (loop_ptex->rect) {
MEM_freeN(loop_ptex->rect);
}
-   //mesh_ptex_pack_free(loop_ptex->pack);
 }
 
 #ifdef WITH_PTEX
@@ -570,6 +570,10 @@ static bool ptex_pack_loops(Image **image, Mesh *me, 
MLoopPtex *loop_ptex)
BPXTypeDesc type_desc;
int i;
 
+   if (!image) {
+   return false;
+   }
+
if (!loop_ptex) {
return false;
}
@@ -631,12 +635,17 @@ static bool ptex_pack_loops(Image **image, Mesh *me, 
MLoopPtex *loop_ptex)
IMB_float_from_rect(ibuf);
 
(*image) = BKE_image_add_from_imbuf(ibuf);
-
+   
/* Image now owns the ImBuf */
IMB_freeImBuf(ibuf);
 
-   /* Return true only if Image was created successfully */
-   return (*image) != NULL;
+   if (*image) {
+   id_us_min(&(*image)->id);
+   return true;
+   }
+   else {
+   return false;
+   }
 }
 
 Image *BKE_ptex_mesh_image_get(struct Object *ob,

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [73d9c15] cycles-ptex-49: Give better name to Ptex packed images

2015-02-10 Thread Nicholas Bishop
Commit: 73d9c15e199f6b17f794bc2a7aa9c3dd43814d14
Author: Nicholas Bishop
Date:   Tue Feb 10 14:03:29 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB73d9c15e199f6b17f794bc2a7aa9c3dd43814d14

Give better name to Ptex packed images

===

M   source/blender/blenkernel/intern/bke_ptex.c

===

diff --git a/source/blender/blenkernel/intern/bke_ptex.c 
b/source/blender/blenkernel/intern/bke_ptex.c
index c82b64c..b346000 100644
--- a/source/blender/blenkernel/intern/bke_ptex.c
+++ b/source/blender/blenkernel/intern/bke_ptex.c
@@ -560,7 +560,8 @@ static BPXImageBuf *bpx_image_buf_wrap_loop_ptex(MLoopPtex 
*loop_ptex)
 }
 
 /* TODO(nicholasbishop): sync up with code in imb_ptex.c */
-static bool ptex_pack_loops(Image **image, Mesh *me, MLoopPtex *loop_ptex)
+static bool ptex_pack_loops(Image **image, Mesh *me, MLoopPtex *loop_ptex,
+   const char *layer_name)
 {
BPXImageBuf *bpx_dst;
const int num_loops = me->totloop;
@@ -640,7 +641,9 @@ static bool ptex_pack_loops(Image **image, Mesh *me, 
MLoopPtex *loop_ptex)
IMB_freeImBuf(ibuf);
 
if (*image) {
-   id_us_min(&(*image)->id);
+   ID *id = &(*image)->id;
+   rename_id(id, layer_name);
+   id_us_min(id);
return true;
}
else {
@@ -660,7 +663,8 @@ Image *BKE_ptex_mesh_image_get(struct Object *ob,
// TODO
if (!loop_ptex->image) {
// TODO
-   const bool r = 
ptex_pack_loops(&loop_ptex->image, me, loop_ptex);
+   const bool r = 
ptex_pack_loops(&loop_ptex->image, me,
+   
   loop_ptex, layer_name);
BLI_assert(r);
}
else if (loop_ptex->image->tpageflag & 
IMA_TPAGE_REFRESH) {

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [298d868] master: Fix T43596: Refraction BSDF crashes blender on pre-sse4 CPU

2015-02-10 Thread Sergey Sharybin
Commit: 298d8681a0ac28ccc96e593a02ad34a5cef624c6
Author: Sergey Sharybin
Date:   Tue Feb 10 17:31:55 2015 +0500
Branches: master
https://developer.blender.org/rB298d8681a0ac28ccc96e593a02ad34a5cef624c6

Fix T43596: Refraction BSDF crashes blender on pre-sse4 CPU

This is the same issue T43475: SSE4 code is more robust to non-finite values
in the ray origin/direction. So for now added a check before doing BVH traversal
for pre-SSE4 CPUs.

For sure actual root of the issue is a bit different and much more tricky to
solve, especially without disturbing render results too much. Still looking
into this.

In any case, it's kinda fine to have such a check, we might later make it to be
a kernel_assert() instead of just a return.

===

M   intern/cycles/kernel/geom/geom_qbvh_shadow.h
M   intern/cycles/kernel/geom/geom_qbvh_subsurface.h
M   intern/cycles/kernel/geom/geom_qbvh_traversal.h
M   intern/cycles/kernel/geom/geom_qbvh_volume.h
M   intern/cycles/kernel/geom/geom_triangle_intersect.h

===

diff --git a/intern/cycles/kernel/geom/geom_qbvh_shadow.h 
b/intern/cycles/kernel/geom/geom_qbvh_shadow.h
index e77e220..4233ff1 100644
--- a/intern/cycles/kernel/geom/geom_qbvh_shadow.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_shadow.h
@@ -58,6 +58,12 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals 
*kg,
Transform ob_tfm;
 #endif
 
+#ifndef __KERNEL_SSE41__
+   if(!isfinite(P.x)) {
+   return false;
+   }
+#endif
+
 #if BVH_FEATURE(BVH_INSTANCING)
int num_hits_in_instance = 0;
 #endif
diff --git a/intern/cycles/kernel/geom/geom_qbvh_subsurface.h 
b/intern/cycles/kernel/geom/geom_qbvh_subsurface.h
index ef1754e..6259811 100644
--- a/intern/cycles/kernel/geom/geom_qbvh_subsurface.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_subsurface.h
@@ -61,6 +61,12 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals 
*kg,
Transform ob_tfm;
 #endif
 
+#ifndef __KERNEL_SSE41__
+   if(!isfinite(P.x)) {
+   return 0;
+   }
+#endif
+
ssef tnear(0.0f), tfar(isect_t);
sse3f idir4(ssef(idir.x), ssef(idir.y), ssef(idir.z));
 
diff --git a/intern/cycles/kernel/geom/geom_qbvh_traversal.h 
b/intern/cycles/kernel/geom/geom_qbvh_traversal.h
index 64da513..99d2fb2 100644
--- a/intern/cycles/kernel/geom/geom_qbvh_traversal.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_traversal.h
@@ -66,6 +66,12 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals 
*kg,
Transform ob_tfm;
 #endif
 
+#ifndef __KERNEL_SSE41__
+   if(!isfinite(P.x)) {
+   return false;
+   }
+#endif
+
isect->t = ray->t;
isect->u = 0.0f;
isect->v = 0.0f;
diff --git a/intern/cycles/kernel/geom/geom_qbvh_volume.h 
b/intern/cycles/kernel/geom/geom_qbvh_volume.h
index a2a8d1a..2c396e9 100644
--- a/intern/cycles/kernel/geom/geom_qbvh_volume.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_volume.h
@@ -57,6 +57,12 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals 
*kg,
Transform ob_tfm;
 #endif
 
+#ifndef __KERNEL_SSE41__
+   if(!isfinite(P.x)) {
+   return false;
+   }
+#endif
+
isect->t = ray->t;
isect->u = 0.0f;
isect->v = 0.0f;
diff --git a/intern/cycles/kernel/geom/geom_triangle_intersect.h 
b/intern/cycles/kernel/geom/geom_triangle_intersect.h
index 30468ef..0674e8b 100644
--- a/intern/cycles/kernel/geom/geom_triangle_intersect.h
+++ b/intern/cycles/kernel/geom/geom_triangle_intersect.h
@@ -314,9 +314,6 @@ ccl_device_inline float3 triangle_refine(KernelGlobals *kg,
 
 #ifdef __INTERSECTION_REFINE__
if(isect->object != OBJECT_NONE) {
-   if(UNLIKELY(t == 0.0f)) {
-   return P;
-   }
 #ifdef __OBJECT_MOTION__
Transform tfm = sd->ob_itfm;
 #else

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [e7d20b0] master: Fix grease-pencil crash without clip/track data

2015-02-10 Thread Campbell Barton
Commit: e7d20b0be481b5c8cd724cb6a12bbb3029991cc6
Author: Campbell Barton
Date:   Tue Feb 10 23:34:16 2015 +1100
Branches: master
https://developer.blender.org/rBe7d20b0be481b5c8cd724cb6a12bbb3029991cc6

Fix grease-pencil crash without clip/track data

===

M   source/blender/editors/gpencil/gpencil_paint.c

===

diff --git a/source/blender/editors/gpencil/gpencil_paint.c 
b/source/blender/editors/gpencil/gpencil_paint.c
index e6f6644..c03766a 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -999,7 +999,7 @@ static void gp_session_validatebuffer(tGPsdata *p)
 }
 
 /* (re)init new painting data */
-static int gp_session_initdata(bContext *C, tGPsdata *p)
+static bool gp_session_initdata(bContext *C, tGPsdata *p)
 {
bGPdata **gpd_ptr = NULL;
ScrArea *curarea = CTX_wm_area(C);
@@ -1082,7 +1082,13 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
case SPACE_CLIP:
{
SpaceClip *sc = curarea->spacedata.first;
+   MovieClip *clip = ED_space_clip_get_clip(sc);

+   if (clip == NULL) {
+   p->status = GP_STATUS_ERROR;
+   return false;
+   }
+
/* set the current area */
p->sa = curarea;
p->ar = ar;
@@ -1097,13 +1103,18 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
p->custom_color[3] = 0.9f;

if (sc->gpencil_src == SC_GPENCIL_SRC_TRACK) {
-   MovieClip *clip = ED_space_clip_get_clip(sc);
int framenr = 
ED_space_clip_get_clip_frame_number(sc);
MovieTrackingTrack *track = 
BKE_tracking_track_get_active(&clip->tracking);
-   MovieTrackingMarker *marker = 
BKE_tracking_marker_get(track, framenr);
-   
-   p->imat[3][0] -= marker->pos[0];
-   p->imat[3][1] -= marker->pos[1];
+   MovieTrackingMarker *marker = track ? 
BKE_tracking_marker_get(track, framenr) : NULL;
+
+   if (marker) {
+   p->imat[3][0] -= marker->pos[0];
+   p->imat[3][1] -= marker->pos[1];
+   }
+   else {
+   p->status = GP_STATUS_ERROR;
+   return false;
+   }
}

invert_m4_m4(p->mat, p->imat);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [26a74c8] wiggly-widgets: Fix error in last commit

2015-02-10 Thread Antony Riakiotakis
Commit: 26a74c8e11aa7e457af5066aadc0b976259b
Author: Antony Riakiotakis
Date:   Tue Feb 10 12:53:36 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB26a74c8e11aa7e457af5066aadc0b976259b

Fix error in last commit

===

M   source/blender/windowmanager/intern/wm_widgets.c

===

diff --git a/source/blender/windowmanager/intern/wm_widgets.c 
b/source/blender/windowmanager/intern/wm_widgets.c
index 63cb987..e9aeb04 100644
--- a/source/blender/windowmanager/intern/wm_widgets.c
+++ b/source/blender/windowmanager/intern/wm_widgets.c
@@ -366,7 +366,7 @@ void WM_widgets_draw(const bContext *C, wmWidgetMap *wmap, 
bool in_scene)
{
for (widget = wgroup->widgets.first; widget; 
widget = widget->next) {
if ((!(widget->flag & 
WM_WIDGET_DRAW_HOVER) || (widget->flag & WM_WIDGET_HIGHLIGHT)) &&
-   ((widget->flag & 
WM_WIDGET_SCENE_DEPTH) == 0) == in_scene)
+   ((widget->flag & 
WM_WIDGET_SCENE_DEPTH) != 0) == in_scene)
{
widget->draw(widget, C);
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [60927ae] wiggly-widgets: WIP code to use in scene drawing for widgets.

2015-02-10 Thread Antony Riakiotakis
Commit: 60927ae2e0f394a0efa9d2061caa624a6690ab13
Author: Antony Riakiotakis
Date:   Mon Feb 9 17:52:39 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB60927ae2e0f394a0efa9d2061caa624a6690ab13

WIP code to use in scene drawing for widgets.

===

M   source/blender/editors/space_node/node_draw.c
M   source/blender/editors/space_sequencer/sequencer_draw.c
M   source/blender/editors/space_view3d/view3d_draw.c
M   source/blender/windowmanager/WM_api.h
M   source/blender/windowmanager/intern/wm_widgets.c
M   source/blender/windowmanager/wm.h

===

diff --git a/source/blender/editors/space_node/node_draw.c 
b/source/blender/editors/space_node/node_draw.c
index 85b2186..6298ac2 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -1354,7 +1354,7 @@ void drawnodespace(const bContext *C, ARegion *ar)
glaDefine2DArea(&ar->winrct);
wmOrtho2_pixelspace(ar->winx, ar->winy);
 
-   WM_widgets_draw(C, ar->widgetmaps.first);
+   WM_widgets_draw(C, ar->widgetmaps.first, false);
 
glMatrixMode(GL_PROJECTION);
glPopMatrix();
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c 
b/source/blender/editors/space_sequencer/sequencer_draw.c
index 69efffe..f899867 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -1582,7 +1582,7 @@ void draw_timeline_seq(const bContext *C, ARegion *ar)
UI_view2d_view_restore(C);

/* finally draw any widgets here */
-   WM_widgets_draw(C, ar->widgetmaps.first);   
+   WM_widgets_draw(C, ar->widgetmaps.first, false);
 
/* scrollers */
unit = (sseq->flag & SEQ_DRAWFRAMES) ? V2D_UNIT_FRAMES : 
V2D_UNIT_SECONDS;
diff --git a/source/blender/editors/space_view3d/view3d_draw.c 
b/source/blender/editors/space_view3d/view3d_draw.c
index 4a6718e..b04188f 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -3615,9 +3615,9 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
if (v3d->drawtype == OB_RENDER)
view3d_main_area_draw_engine(C, scene, ar, v3d, clip_border, 
&border_rect);

-   view3d_main_area_setup_view(scene, v3d, ar, NULL, NULL);
+   view3d_main_area_setup_view(scene, v3d, ar, NULL, NULL);
glClear(GL_DEPTH_BUFFER_BIT);
-   WM_widgets_draw(C, ar->widgetmaps.first);
+   WM_widgets_draw(C, ar->widgetmaps.first, false);
BIF_draw_manipulator(C);
ED_region_pixelspace(ar);

diff --git a/source/blender/windowmanager/WM_api.h 
b/source/blender/windowmanager/WM_api.h
index abd9260..a9e7807 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -478,13 +478,14 @@ struct wmWidget *WM_widget_new(void (*draw)(struct 
wmWidget *, const struct bCon
 
 void WM_widget_property(struct wmWidget *, int slot, struct PointerRNA *ptr, 
const char *propname);
 struct PointerRNA *WM_widget_operator(struct wmWidget *, const char *opname);
-void WM_widgets_draw(const struct bContext *C, struct wmWidgetMap *wmap);
+void WM_widgets_draw(const struct bContext *C, struct wmWidgetMap *wmap, bool 
in_scene);
 void WM_event_add_area_widgetmap_handlers(struct ARegion *ar);
 void WM_modal_handler_attach_widgetgroup(struct bContext *C, struct 
wmEventHandler *handler, struct wmWidgetGroupType *wgrouptype, struct 
wmOperator *op);
 
 void WM_widget_set_origin(struct wmWidget *widget, float origin[3]);
 void WM_widget_set_3d_scale(struct wmWidget *widget, bool scale);
 void WM_widget_set_draw_on_hover_only(struct wmWidget *widget, bool draw);
+void WM_widget_set_scene_depth(struct wmWidget *widget, bool scene);
 void WM_widget_set_scale(struct wmWidget *widget, float scale);
 
 struct wmWidgetMapType *WM_widgetmaptype_find(const char *idname, int spaceid, 
int regionid, bool is_3d, bool create);
diff --git a/source/blender/windowmanager/intern/wm_widgets.c 
b/source/blender/windowmanager/intern/wm_widgets.c
index bb6e6c5..cd72945 100644
--- a/source/blender/windowmanager/intern/wm_widgets.c
+++ b/source/blender/windowmanager/intern/wm_widgets.c
@@ -257,7 +257,7 @@ static bool widgets_compare(wmWidget *widget, wmWidget 
*widget2)
 }
 
 
-void WM_widgets_draw(const bContext *C, wmWidgetMap *wmap)
+void WM_widgets_draw(const bContext *C, wmWidgetMap *wmap, bool in_scene)
 {
wmWidget *widget;
bool use_lighting;
@@ -285,7 +285,7 @@ void WM_widgets_draw(const bContext *C, wmWidgetMap *wmap)
 
widget = wmap->active_widget;
 
-   if (widget) {
+   if (widget && in_scene == ((widget->flag & WM_WIDGET

[Bf-blender-cvs] [748d9ec] wiggly-widgets: Separate widget drawing to update and draw phase to make in-scene widget drawing possible (need to update once, draw twice).

2015-02-10 Thread Antony Riakiotakis
Commit: 748d9eca90915195f3aadec59627015d6344bc18
Author: Antony Riakiotakis
Date:   Tue Feb 10 12:52:29 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB748d9eca90915195f3aadec59627015d6344bc18

Separate widget drawing to update and draw phase to make in-scene widget
drawing possible (need to update once, draw twice).

===

M   source/blender/editors/space_node/node_draw.c
M   source/blender/editors/space_sequencer/sequencer_draw.c
M   source/blender/editors/space_view3d/view3d_draw.c
M   source/blender/windowmanager/WM_api.h
M   source/blender/windowmanager/intern/wm_widgets.c

===

diff --git a/source/blender/editors/space_node/node_draw.c 
b/source/blender/editors/space_node/node_draw.c
index 6298ac2..b2020da 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -1354,6 +1354,7 @@ void drawnodespace(const bContext *C, ARegion *ar)
glaDefine2DArea(&ar->winrct);
wmOrtho2_pixelspace(ar->winx, ar->winy);
 
+   WM_widgets_update(C, ar->widgetmaps.first);
WM_widgets_draw(C, ar->widgetmaps.first, false);
 
glMatrixMode(GL_PROJECTION);
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c 
b/source/blender/editors/space_sequencer/sequencer_draw.c
index f899867..d6fc5c4 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -1582,6 +1582,7 @@ void draw_timeline_seq(const bContext *C, ARegion *ar)
UI_view2d_view_restore(C);

/* finally draw any widgets here */
+   WM_widgets_update(C, ar->widgetmaps.first);
WM_widgets_draw(C, ar->widgetmaps.first, false);
 
/* scrollers */
diff --git a/source/blender/editors/space_view3d/view3d_draw.c 
b/source/blender/editors/space_view3d/view3d_draw.c
index b04188f..479e865 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -3617,6 +3617,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)

view3d_main_area_setup_view(scene, v3d, ar, NULL, NULL);
glClear(GL_DEPTH_BUFFER_BIT);
+   WM_widgets_update(C, ar->widgetmaps.first);
WM_widgets_draw(C, ar->widgetmaps.first, false);
BIF_draw_manipulator(C);
ED_region_pixelspace(ar);
diff --git a/source/blender/windowmanager/WM_api.h 
b/source/blender/windowmanager/WM_api.h
index a9e7807..d124031 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -478,6 +478,7 @@ struct wmWidget *WM_widget_new(void (*draw)(struct wmWidget 
*, const struct bCon
 
 void WM_widget_property(struct wmWidget *, int slot, struct PointerRNA *ptr, 
const char *propname);
 struct PointerRNA *WM_widget_operator(struct wmWidget *, const char *opname);
+void WM_widgets_update(const struct bContext *C, struct wmWidgetMap *wmap);
 void WM_widgets_draw(const struct bContext *C, struct wmWidgetMap *wmap, bool 
in_scene);
 void WM_event_add_area_widgetmap_handlers(struct ARegion *ar);
 void WM_modal_handler_attach_widgetgroup(struct bContext *C, struct 
wmEventHandler *handler, struct wmWidgetGroupType *wgrouptype, struct 
wmOperator *op);
diff --git a/source/blender/windowmanager/intern/wm_widgets.c 
b/source/blender/windowmanager/intern/wm_widgets.c
index cd72945..63cb987 100644
--- a/source/blender/windowmanager/intern/wm_widgets.c
+++ b/source/blender/windowmanager/intern/wm_widgets.c
@@ -256,6 +256,74 @@ static bool widgets_compare(wmWidget *widget, wmWidget 
*widget2)
return true;
 }
 
+void WM_widgets_update(const bContext *C, wmWidgetMap *wmap)
+{
+   wmWidget *widget;
+
+   if (!wmap)
+   return;
+
+   widget = wmap->active_widget;
+
+   if (widget) {
+   widget_calculate_scale(widget, C);
+   }
+   else if (wmap->widgetgroups.first) {
+   wmWidgetGroup *wgroup;
+
+   for (wgroup = wmap->widgetgroups.first; wgroup; wgroup = 
wgroup->next) {
+   if (!wgroup->type->poll || wgroup->type->poll(C, 
wgroup->type))
+   {
+   wmWidget *highlighted = NULL;
+
+   /* first delete and recreate the widgets */
+   for (widget = wgroup->widgets.first; widget;) {
+   wmWidget *widget_next = widget->next;
+
+   /* do not delete the highlighted 
widget, instead keep it to compare with the new one */
+   if (widget->flag & WM_WIDGET_HIGHLIGHT) 
{
+   highlighted = widget;
+ 

[Bf-blender-cvs] [263814d] cycles-ptex-49: Add very simple UI for setting initial Ptex resolution

2015-02-10 Thread Nicholas Bishop
Commit: 263814dbf6aa0523cf599f22ed10faeb8924b11c
Author: Nicholas Bishop
Date:   Tue Feb 10 12:36:55 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB263814dbf6aa0523cf599f22ed10faeb8924b11c

Add very simple UI for setting initial Ptex resolution

===

M   release/scripts/startup/bl_ui/properties_data_mesh.py
M   source/blender/editors/mesh/mesh_data.c
M   source/blender/makesdna/DNA_scene_types.h
M   source/blender/makesrna/intern/rna_scene.c

===

diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py 
b/release/scripts/startup/bl_ui/properties_data_mesh.py
index 6893259..2de15a8 100644
--- a/release/scripts/startup/bl_ui/properties_data_mesh.py
+++ b/release/scripts/startup/bl_ui/properties_data_mesh.py
@@ -196,6 +196,7 @@ class DATA_PT_ptex(MeshButtonsPanel, Panel):
 def draw(self, context):
 layout = self.layout
 
+pts = context.tool_settings.ptex_tool_settings
 me = context.mesh
 
 row = layout.row()
@@ -207,6 +208,8 @@ class DATA_PT_ptex(MeshButtonsPanel, Panel):
 col.operator("mesh.ptex_add", icon='ZOOMIN', text="")
 col.operator("mesh.ptex_remove", icon='ZOOMOUT', text="")
 
+layout.prop(pts, "resolution")
+
 layout.operator("mesh.ptex_res_change",
 text='Halve Resolution').mode = 'HALVE'
 layout.operator("mesh.ptex_res_change",
diff --git a/source/blender/editors/mesh/mesh_data.c 
b/source/blender/editors/mesh/mesh_data.c
index 8fb8748..90dcff7 100644
--- a/source/blender/editors/mesh/mesh_data.c
+++ b/source/blender/editors/mesh/mesh_data.c
@@ -720,16 +720,20 @@ void MESH_OT_vertex_color_remove(wmOperatorType *ot)
 
 /*** ptex operator ***/
 
-static int mesh_ptex_add(Mesh *me, const char *name, const bool active_set)
+static int mesh_ptex_add(const PtexToolSettings *pts, Mesh *me,
+const char *name, const bool 
active_set)
 {
int layernum = 0;
 
if (me->edit_btmesh) {
/* TODO */
assert(!me->edit_btmesh);
+   return -1;
}
else {
MLoopPtex *layer_data;
+   const MPtexLogRes logres = {pts->u_logres, pts->u_logres};
+   int i;
 
layernum = CustomData_number_of_layers(&me->ldata, 
CD_LOOP_PTEX);
 
@@ -740,9 +744,7 @@ static int mesh_ptex_add(Mesh *me, const char *name, const 
bool active_set)
 
{
// TODO
-   int i;
MPtexTexelInfo texel_info = {4, MPTEX_DATA_TYPE_UINT8};
-   MPtexLogRes logres = {5, 5};
for (i = 0; i < me->totloop; i++) {
BKE_loop_ptex_init(&layer_data[i], texel_info, 
logres);
}
@@ -764,9 +766,11 @@ static int mesh_ptex_add(Mesh *me, const char *name, const 
bool active_set)
 static int mesh_ptex_add_exec(bContext *C, wmOperator *UNUSED(op))
 {
Object *ob = ED_object_context(C);
+   Scene *scene = CTX_data_scene(C);
+   PtexToolSettings *pts = &scene->toolsettings->ptex_tool_settings;
Mesh *me = ob->data;
 
-   if (mesh_ptex_add(me, NULL, true) == -1)
+   if (mesh_ptex_add(pts, me, NULL, true) == -1)
return OPERATOR_CANCELLED;
 
return OPERATOR_FINISHED;
diff --git a/source/blender/makesdna/DNA_scene_types.h 
b/source/blender/makesdna/DNA_scene_types.h
index 9ac5066..24d3dfb 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1066,6 +1066,13 @@ typedef struct MeshStatVis {
float sharp_min, sharp_max;
 } MeshStatVis;
 
+typedef struct PtexToolSettings {
+   /* TODO(nicholasbishop): for now just expose one resolution
+* setting and use for both U and V resolution */
+   int u_logres;
+
+   int pad;
+} PtexToolSettings;
 
 /* *** */
 /* Tool Settings */
@@ -1184,6 +1191,8 @@ typedef struct ToolSettings {
struct UnifiedPaintSettings unified_paint_settings;
 
struct MeshStatVis statvis;
+
+   struct PtexToolSettings ptex_tool_settings;
 } ToolSettings;
 
 /* *** */
diff --git a/source/blender/makesrna/intern/rna_scene.c 
b/source/blender/makesrna/intern/rna_scene.c
index 1c133db..cd1bb09 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -2120,6 +2120,12 @@ static void rna_def_tool_settings(BlenderRNA  *brna)
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "MeshStatVis");
RNA_def_property_ui_text(prop, "Mesh Statistics Visualization", NULL);
+
+   /* Ptex */
+   prop 

[Bf-blender-cvs] [67eb234] asset-experiments: Merge branch 'master' into asset-experiments

2015-02-10 Thread Bastien Montagne
Commit: 67eb23478385d743feab0eac7e234bf5ab8b757e
Author: Bastien Montagne
Date:   Tue Feb 10 12:40:24 2015 +0100
Branches: asset-experiments
https://developer.blender.org/rB67eb23478385d743feab0eac7e234bf5ab8b757e

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] [08bccfe] asset-experiments: Merge branch 'master' into asset-experiments

2015-02-10 Thread Bastien Montagne
Commit: 08bccfed6ce4d3499e3b5d561057a9d257867ee5
Author: Bastien Montagne
Date:   Mon Feb 9 09:20:39 2015 +0100
Branches: asset-experiments
https://developer.blender.org/rB08bccfed6ce4d3499e3b5d561057a9d257867ee5

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] [ec4b79f] asset-experiments: Merge branch 'master' into asset-experiments

2015-02-10 Thread Bastien Montagne
Commit: ec4b79fb6044ebbae4abced28d2dafe13d72dcbf
Author: Bastien Montagne
Date:   Mon Feb 9 10:15:02 2015 +0100
Branches: asset-experiments
https://developer.blender.org/rBec4b79fb6044ebbae4abced28d2dafe13d72dcbf

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] [1cfe0c1] master: UI: scale timeline cache-height by DPI/pixelsize

2015-02-10 Thread Campbell Barton
Commit: 1cfe0c1fb227cab7fc28e253fc591a362c31ffc5
Author: Campbell Barton
Date:   Tue Feb 10 22:33:52 2015 +1100
Branches: master
https://developer.blender.org/rB1cfe0c1fb227cab7fc28e253fc591a362c31ffc5

UI: scale timeline cache-height by DPI/pixelsize

D602 by @blakenator with edits

===

M   source/blender/editors/space_time/space_time.c

===

diff --git a/source/blender/editors/space_time/space_time.c 
b/source/blender/editors/space_time/space_time.c
index c5ac67a..91a0970 100644
--- a/source/blender/editors/space_time/space_time.c
+++ b/source/blender/editors/space_time/space_time.c
@@ -58,6 +58,7 @@
 
 #include "UI_resources.h"
 #include "UI_view2d.h"
+#include "UI_interface.h"
 
 #include "ED_space_api.h"
 #include "ED_markers.h"
@@ -90,13 +91,12 @@ static void time_draw_sfra_efra(Scene *scene, View2D *v2d)
fdrawline((float)PEFRA, v2d->cur.ymin, (float)PEFRA, v2d->cur.ymax);
 }
 
-#define CACHE_DRAW_HEIGHT   3.0f
-
 static void time_draw_cache(SpaceTime *stime, Object *ob, Scene *scene)
 {
PTCacheID *pid;
ListBase pidlist;
SpaceTimeCache *stc = stime->caches.first;
+   const float cache_draw_height = (4.0f * UI_DPI_FAC * U.pixelsize);
float yoffs = 0.f;

if (!(stime->cache_display & TIME_CACHE_DISPLAY) || (!ob))
@@ -172,7 +172,7 @@ static void time_draw_cache(SpaceTime *stime, Object *ob, 
Scene *scene)

glPushMatrix();
glTranslatef(0.0, (float)V2D_SCROLL_HEIGHT + yoffs, 0.0);
-   glScalef(1.0, CACHE_DRAW_HEIGHT, 0.0);
+   glScalef(1.0, cache_draw_height, 0.0);

switch (pid->type) {
case PTCACHE_TYPE_SOFTBODY:
@@ -230,7 +230,7 @@ static void time_draw_cache(SpaceTime *stime, Object *ob, 
Scene *scene)

glPopMatrix();

-   yoffs += CACHE_DRAW_HEIGHT;
+   yoffs += cache_draw_height;
 
stc = stc->next;
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [27f81bf] master: correct last commit

2015-02-10 Thread Campbell Barton
Commit: 27f81bf6ceeb2554ac34dc149468b6e29f9b2c27
Author: Campbell Barton
Date:   Tue Feb 10 22:03:10 2015 +1100
Branches: master
https://developer.blender.org/rB27f81bf6ceeb2554ac34dc149468b6e29f9b2c27

correct last commit

===

M   source/blender/blenkernel/intern/library.c

===

diff --git a/source/blender/blenkernel/intern/library.c 
b/source/blender/blenkernel/intern/library.c
index a2a1b10..fa4f9c6 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -379,7 +379,7 @@ bool id_copy(ID *id, ID **newid, bool test)
return false;  /* can't be copied from here */
case ID_GD:
if (!test) *newid = (ID 
*)gpencil_data_duplicate((bGPdata *)id, false);
-   return false;  /* not implemented */
+   return true;
case ID_MSK:
if (!test) *newid = (ID *)BKE_mask_copy((Mask *)id);
return true;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [040b510] master: Fix: Grease Pencil datablocks can be copied using the ID.copy() API method now

2015-02-10 Thread Joshua Leung
Commit: 040b510df1ad1bff9858344386e6fba20de133f7
Author: Joshua Leung
Date:   Tue Feb 10 23:30:30 2015 +1300
Branches: master
https://developer.blender.org/rB040b510df1ad1bff9858344386e6fba20de133f7

Fix: Grease Pencil datablocks can be copied using the ID.copy() API method now

===

M   source/blender/blenkernel/intern/library.c

===

diff --git a/source/blender/blenkernel/intern/library.c 
b/source/blender/blenkernel/intern/library.c
index a5691d6..a2a1b10 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -378,6 +378,7 @@ bool id_copy(ID *id, ID **newid, bool test)
case ID_WM:
return false;  /* can't be copied from here */
case ID_GD:
+   if (!test) *newid = (ID 
*)gpencil_data_duplicate((bGPdata *)id, false);
return false;  /* not implemented */
case ID_MSK:
if (!test) *newid = (ID *)BKE_mask_copy((Mask *)id);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [268ae6a] viewport_experiments: Merge branch 'master' into viewport_experiments

2015-02-10 Thread Antony Riakiotakis
Commit: 268ae6a62b21c51c0c85835e42fcd0a2bccb0a66
Author: Antony Riakiotakis
Date:   Tue Feb 10 11:18:12 2015 +0100
Branches: viewport_experiments
https://developer.blender.org/rB268ae6a62b21c51c0c85835e42fcd0a2bccb0a66

Merge branch 'master' into viewport_experiments

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [1a33fb9] gooseberry: Support dupli transparency pass.

2015-02-10 Thread Antony Riakiotakis
Commit: 1a33fb983bd4ac1db1b5a74d6a00eb80db3d91cb
Author: Antony Riakiotakis
Date:   Tue Feb 10 10:55:26 2015 +0100
Branches: gooseberry
https://developer.blender.org/rB1a33fb983bd4ac1db1b5a74d6a00eb80db3d91cb

Support dupli transparency pass.

Only for gooseberry for now, since it's slightly hacky and adds extra
cost to duplis.

===

M   source/blender/editors/space_view3d/drawobject.c
M   source/blender/editors/space_view3d/view3d_draw.c

===

diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index eae24b3a..b4ea727 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -310,9 +310,6 @@ bool draw_glsl_material(Scene *scene, Object *ob, View3D 
*v3d, const char dt)
 
 static bool check_alpha_pass(Base *base)
 {
-   if (base->flag & OB_FROMDUPLI)
-   return false;
-
if (G.f & G_PICKSEL)
return false;
 
@@ -4024,14 +4021,22 @@ static bool draw_mesh_object(Scene *scene, ARegion *ar, 
View3D *v3d, RegionView3
}
}

-   if ((dflag & DRAW_PICKING) == 0 && (base->flag & OB_FROMDUPLI) == 0 && 
(v3d->flag2 & V3D_RENDER_SHADOW) == 0) {
+   if ((dflag & DRAW_PICKING) == 0 && ((base->flag & OB_FROMDUPLI) == 0 || 
(ob->dtx & OB_DRAWTRANSP)) && (v3d->flag2 & V3D_RENDER_SHADOW) == 0) {
/* GPU_begin_object_materials checked if this is needed */
if (do_alpha_after) {
-   if (ob->dtx & OB_DRAWXRAY) {
+   /* duplis only for transparency */
+   if ((ob->dtx & OB_DRAWXRAY) && !(base->flag & 
OB_FROMDUPLI)) {
ED_view3d_after_add(&v3d->afterdraw_xraytransp, 
base, dflag);
}
else {
-   ED_view3d_after_add(&v3d->afterdraw_transp, 
base, dflag);
+   if (base->flag & OB_FROMDUPLI) {
+   Base *nbase = MEM_mallocN(sizeof(Base), 
"dupli_trans");
+   *nbase = *base;
+   
ED_view3d_after_add(&v3d->afterdraw_transp, nbase, dflag);
+   }
+   else {
+   
ED_view3d_after_add(&v3d->afterdraw_transp, base, dflag);
+   }
}
}
else if (ob->dtx & OB_DRAWXRAY && ob->dtx & OB_DRAWTRANSP) {
diff --git a/source/blender/editors/space_view3d/view3d_draw.c 
b/source/blender/editors/space_view3d/view3d_draw.c
index c9be94e..553ba56 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -1904,16 +1904,19 @@ typedef struct View3DAfter {
struct View3DAfter *next, *prev;
struct Base *base;
short dflag;
+   float obmat[4][4];
 } View3DAfter;
 
 /* temp storage of Objects that need to be drawn as last */
 void ED_view3d_after_add(ListBase *lb, Base *base, const short dflag)
 {
View3DAfter *v3da = MEM_callocN(sizeof(View3DAfter), "View 3d after");
-   BLI_assert((base->flag & OB_FROMDUPLI) == 0);
BLI_addtail(lb, v3da);
v3da->base = base;
v3da->dflag = dflag;
+   if (base->flag & OB_FROMDUPLI) {
+   copy_m4_m4(v3da->obmat, base->object->obmat);
+   }
 }
 
 /* disables write in zbuffer and draws it over */
@@ -1925,8 +1928,17 @@ static void view3d_draw_transp(Scene *scene, ARegion 
*ar, View3D *v3d)
v3d->transp = true;

for (v3da = v3d->afterdraw_transp.first; v3da; v3da = next) {
+   float obmat[4][4];
next = v3da->next;
+   if (v3da->base->flag & OB_FROMDUPLI) {
+   copy_m4_m4(obmat, v3da->base->object->obmat);
+   copy_m4_m4(v3da->base->object->obmat, v3da->obmat);
+   }
draw_object(scene, ar, v3d, v3da->base, v3da->dflag);
+   if (v3da->base->flag & OB_FROMDUPLI) {
+   copy_m4_m4(v3da->base->object->obmat, obmat);
+   MEM_freeN(v3da->base);
+   }
BLI_remlink(&v3d->afterdraw_transp, v3da);
MEM_freeN(v3da);
}
@@ -1959,6 +1971,7 @@ static void view3d_draw_xray(Scene *scene, ARegion *ar, 
View3D *v3d, const bool
 static void view3d_draw_xraytransp(Scene *scene, ARegion *ar, View3D *v3d, 
const bool clear)
 {
View3DAfter *v3da, *next;
+   float obmat[4][4];
 
if (clear && v3d->zbuf)
glClear(GL_DEPTH_BUFFER_BIT);
@@ -1968,7 +1981,15 @@ static void view3d_draw_xraytransp(Scene *scene, ARegion 
*ar, View3D *v3d, c

[Bf-blender-cvs] [ef47b88] fracture_modifier: crash fix: removing the fracture modifier again from object without executing fracture first did crash

2015-02-10 Thread Martin Felke
Commit: ef47b883cd4b2facc71933c5c6bc76289feba49f
Author: Martin Felke
Date:   Tue Feb 10 10:49:10 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rBef47b883cd4b2facc71933c5c6bc76289feba49f

crash fix: removing the fracture modifier again from object without executing 
fracture first did crash

===

M   source/blender/editors/object/object_modifier.c

===

diff --git a/source/blender/editors/object/object_modifier.c 
b/source/blender/editors/object/object_modifier.c
index feb9950..9868cb8 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -343,7 +343,10 @@ static bool object_modifier_remove(Main *bmain, Object 
*ob, ModifierData *md,
{
/* need to clean up modifier remainders inside the rigidbody 
world
 * AFTER the modifier is gone...  but only from the operator ?*/
-   BKE_rigidbody_rebuild_world(scene, -1);
+   if (scene->rigidbody_world)
+   {
+   BKE_rigidbody_rebuild_world(scene, -1);
+   }
BKE_scene_frame_set(scene, 1.0);
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d21668d] master: Synchronize changes from buildbot server

2015-02-10 Thread Sergey Sharybin
Commit: d21668de5c83b68c61a5fce9b09fdb9b5dab9f2f
Author: Sergey Sharybin
Date:   Tue Feb 10 13:47:28 2015 +0500
Branches: master
https://developer.blender.org/rBd21668de5c83b68c61a5fce9b09fdb9b5dab9f2f

Synchronize changes from buildbot server

===

M   build_files/buildbot/master.cfg

===

diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg
index d7f5678..026d5e4 100644
--- a/build_files/buildbot/master.cfg
+++ b/build_files/buildbot/master.cfg
@@ -146,7 +146,7 @@ def schedule_build(name, hour, minute=0):
 "blender-addons": {"repository": "", "branch": "master"},
 "blender-addons-contrib": {"repository": "", "branch": 
"master"},
 "scons": {"repository": "", "branch": "master"},
-"lib svn": {"repository": "", "branch": "master"}},
+"lib svn": {"repository": "", "branch": "trunk"}},
 branch=current_branch,
 builderNames=[name],
 hour=hour,

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [258c228] gooseberry: Merge branch 'master' into gooseberry

2015-02-10 Thread Sergey Sharybin
Commit: 258c2286cd7d57c318479947524628a6a7a34506
Author: Sergey Sharybin
Date:   Tue Feb 10 13:19:17 2015 +0500
Branches: gooseberry
https://developer.blender.org/rB258c2286cd7d57c318479947524628a6a7a34506

Merge branch 'master' into gooseberry

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs