[Bf-blender-cvs] [d4934f8] master: cleanup: style/indentation
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
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
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
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
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
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
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.
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.
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
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
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
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
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.
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
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
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
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
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
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.
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
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
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
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
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.
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
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
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
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"
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
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"
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]
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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).
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
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
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
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
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
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
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
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
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.
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
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
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
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