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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2014-01-13UI Icons: store icons in git as uncompressed pixmaps (D196)Campbell Barton
this allows for updating icons without committing a new PNG each time (which is inefficient with git). The data files are converted into a PNG at builds time and used just as they were before.
2014-01-13Fix T37886: Material does no update when changing keyframes in dopesheetSergey Sharybin
It was a missing fcurve evaluation in scene update function which lead to materials only being updated on frame change. Added the same exception as we've got for the scene animation. It only runs when there're materials tagged for the update, so wouldn't expect speed regressions or so.
2014-01-13Fix T38040: Crash after loading big image file in compositorSergey Sharybin
Issue was caused by cache limitor removing viewer image buffer from the memory during compositing. Now made it so all viewer images are persistent in the memory. This solves the crash mentioned above and also makes it so render/compo results are never lost. Further tweaks are possible, but pretty much happy now, at least no stoppers for work are there.
2014-01-13Compilation error fix and strict warning silence for previous commitsSergey Sharybin
2014-01-13Remove direct lattice modifiers calc from the drawing codeSergey Sharybin
Same as mballs and curves it was only to work around DAG stupidness which hopefully was fixed in one of the previous commits. From quick tests everything works fine, if something is broken now poke me to find a proper solution.
2014-01-13Avoid memcpy to self when validating UV layer nameSergey Sharybin
2014-01-13Remove direct mball creation from object conversionSergey Sharybin
Same as previous commit, mball shall be visible before conversion meaning it is to be evaluated already.
2014-01-13Remove direct mball creation from the drawing codeSergey Sharybin
This is the same case as curves, and really this is now totally up to DAG, If something fails, poke me to fix the DAG.
2014-01-13Make bvhutil safe for multi-threaded usageSergey Sharybin
There were couple of reasons why it wasn't safe for usage from multiple threads. First of all, it was trying to cache BVH in derived mesh, which wasn't safe because multiple threads might have requested BVH tree and simultaneous reading and writing to the cache became a big headache. Solved this with RW lock so now access to BVH cache is safe. Another issue is causes by the fact that it's not guaranteed DM to have vert/edge/face arrays pre-allocated and when one was calling functions like getVertDataArray() array could have been allocated and marked as temporary. This is REALLY bad, because NO ONE is ever allowed to modify data which doesn't belong to him. This lead to situations when multiple threads were using BVH tree and they run into race condition with this temporary allocated arrays. Now bvhtree owns allocated arrays and keeps track of them, so no race condition happens with temporary data stored in the derived mesh. This solved threading issues and likely wouldn't introduce noticeable slowdown. Even when DM was keeping track of this arrays, they were re-allocated on every BVH creation anyway, because those arrays were temporary and were freed with dm->release() call. We might re-consider this a bit and make it so BVH trees are allocated when DM itself is being allocated based on the DAG layout, but that i'd consider an optimization and not something we need to do 1st priority. Fixes crash happening with 05_4g_track.blend from Mango after the threaded object update landed to master.
2014-01-13Fix T38139: Objects which are in cyclic dependency are not updatedSergey Sharybin
Graph traversal which is based on counting parents which are still to be updated fails in cases there are cycles in the graph. If there are cyclic dependencies in the scene all the objects from the cycles will be updated in a single thread now one by one. This makes blender behave the same way as it was before multi-threaded DAG landed to master. This needed to tweak depsgraph a bit so now dag_check_cycle() sets is_acyclic field of DAG forest if there are cycles in the graph. TODO: It might be possible to save some time on evaluation when all the tagged objects were updated in multi-threaded DAG traversal.
2014-01-13Fix T38054: High CPU usage with many objectsSergey Sharybin
This is a regression since threaded dependency graph landed to master. Root of the issue goes to the loads of graph preparation being done even if there's nothing to be updated. The idea of this change is to use ID type recalc bits to determine whether there're objects to be updated. Generally speaking, we now check object and object data datablocks with DAG_id_type_tagged() and if there's no such IDs tagged we skip the whole task pool creation and so, The only difficult aspect was that in some circumstances it was possible that there are tagged objects but nothing in ID recalc bit fields. There were several different circumstances when it was possible: * When one assigns object->recalc flag directly DAG flush didn't set corresponding bits to ID recalc bits. Partially it is fixed by making it so flush will set bitfield, but also for object types there's no reason to assign recalc flag directly. Using generic DAG_id_type_tag works almost the same fast as direct assignment, ensures all the bitflags are set properly and for the long run it seems it's what we would actually want to. * DAG_on_visible_update() didn't set recalc bits at all. * Some areas were checking for object->recalc != 0, however it is was possible that object recalc flag contains PSYS_RECALC_CHILD which was never cleaned from there. No idea why would we need to assign such a flag when enabling scene simplification, this is to be investigated separately. * It is possible that scene_update_post and frame_update_post handlers will modify objects. The issue is that DAG_ids_clear_recalc is called just after callbacks, which leaves objects with recalc flags but no corresponding bit in ID recalc bitfield. This leads to some kind of regression when using ID type tag fields to check whether there objects to be updated internally comparing threaded DAG with legacy one. For now let's have a workaround which will preserve tag for ID_OB if there're objects with OB_RECALC_ALL bits. This keeps behavior unchanged comparing with 2.69 release.
2014-01-13Remove direct displist creation from array modifierSergey Sharybin
First of all, it was needed to have that set scenes fix which was done recently so curve is being evaluated properly on file load. And last but not least, also needed to tag DAG node to evaluate path regardless to curve datablock settings so curve length is always known.
2014-01-13Remove direct displist creation from constraintsSergey Sharybin
Since recent DAG commit for set scenes in DAG_on_visible_update() it seems there're no longer issues with missing curve_cache after file load.
2014-01-13Remove direct displist creation from curve deformSergey Sharybin
This solves threading conflict which happens when having multiple objects using Curve Deform modifier with the same curve datablock. This conflict was caused by the fact that curve_deform_verts() used to temporary override curve's flags to make it path is there. Actually, it was setting CU_FOLLOW flag temporary which was only used where_on_path() (only in terms that this temporary assignment only affected this function) but it is now commented out for a while, so no reason to set this flag temporary, If it's ever to be done, we'll need to pass flags as an additional function argument. For the path creation i've extended DegNode structure which now holds extra bits which indicates what additional data depending on the graph topology is to be evaluated. Currently this is only used to indicate that curve needs path to be evaluated regardless to cu->flag state. This is so Curve Deform modifier is always happy. In the future this flag might also be used to indicate whether bmesh verts are to update (see recent commit to 3-vertex parent crash fix) or to indicate that the object is the motherball etc.
2014-01-13Remove direct displist creation from BKE_vfont_to_curve_ex()Sergey Sharybin
This goes back to ancient era again and such a call isn't safe for threading and really DAG is to make it sure display list for dependencies is always there.
2014-01-13Code cleanup: no need to check display list elements in texture space matchSergey Sharybin
2014-01-13Remove direct displist creation from object conversionSergey Sharybin
If the object is visible and editable it means there's no way DAG to fail to create needed display lists.
2014-01-13Remove direct displist creation from bevel codeSergey Sharybin
BKE_curve_bevel_make() is only used from object_handle_update() friends and never called directly. This means if there's no display list ready for the bevel object it's something wrong happened with DAG. In fact, this check goes back to ancient era and from tests it appears this check is no longer needed.
2014-01-13Remove direct displist creation from drawing codeSergey Sharybin
It was some kind of workaround for DAG glitch in 2009 (commit hash 8c5c7ebb0) and according to the comment was needed to make select outline show immediately. After some tests it appears DAG behaves almost fine now (just needed to make it so layer is flushed properly to the set scene) and no reason to have rather confusing call in the code.
2014-01-13Select Random: add option to de-selectCampbell Barton
also made metaball operator behave like the others. Path originally from Walid Shouman, with own edits.
2014-01-13Code Cleanup: spellingCampbell Barton
2014-01-13Fix some harmless warnings that mostly appeared on MinGW64Antony Riakiotakis
2014-01-12Bevel fixes for profiles: better way to calculate.Howard Trickey
It is better to keep the profile as it is perpedicular to the edge, and then project it onto a given plane at the corners. Also fixed the interpolation to a different number of segments when the profile is not round.
2014-01-12Fix T38124: Grease Pencil Line thicknessBastien Montagne
Issue was in GP draw code: line thickness was not initiated properly (and a null one makes OGL draw a unity-width line). Also tweaked threshold (when to start a new, width-different OGL linestrip), to make it inversaly proportional to thickness (so that now, it's 0.2 for a thickness of 1, 0.1 for a thickness of 2, etc.), avoids too big steps when using large thickness.
2014-01-12UIList tweak: make active item visible when it changes somehow (useful e.g. ↵Bastien Montagne
when weight-paintings a rigged mesh).
2014-01-12Style Cleanup: whitespaceCampbell Barton
2014-01-12Style Cleanup: whitespaceCampbell Barton
2014-01-12UI: More consistency for T/N sidebars. Logic Editor Properties are on the ↵Thomas Dinges
right now as well, and File Browser Bookmark sidebar uses "T" key, as its on the right.
2014-01-12Fix T38160, N and T sidebars in Image Editor are swapped. Now the Properties ↵Andrew Buttery
are on the right side, which is consistent with other editors. Differential Revision: https://developer.blender.org/D201
2014-01-11Code Cleanup: move MOUSEX/Y to BGE, describe INBETWEEN_MOUSEMOVECampbell Barton
2014-01-11Events: support for buttons 6 & 7 (some trackballs have these) X11 onlyCampbell Barton
Patch by Marcus von Appen Note: this patch makes ISMOUSE accept INBETWEEN_MOUSEMOVE as a mouse event where before it didnt.
2014-01-11Events: Use INBETWEEN_MOUSEMOVE for inactive windows too.Campbell Barton
2014-01-11Add tangent space computation/access from RNA (i.e. python).Bastien Montagne
This simply mimics code used for loopnormals, to enable py scripts to generate and access (temporary) a tangent 3D vector and bitangent sign for each loop. Together with the split normals, this allow to recreate a complete tangent space for normal mapping (bitangent = bitangent_sign * cross(normal, tangent)). Expects all faces to be tri or quads. Reviewed By: Brecht, campbellbarton Differential Revision: https://developer.blender.org/D185
2014-01-11Image API: add frame argument to gl_load(), gl_touch()Campbell Barton
patch D103 by Krantz Geoffroy
2014-01-11Fix T38150: correct fix this timeCampbell Barton
also use fixed size lists for list creation.
2014-01-10Fix T38149: crash adding metaball with zero radius.Brecht Van Lommel
This incorrectly use abs(), that's for integers, not floats.
2014-01-10Fix clang warning for (harmless) use of uninitialized variable.Brecht Van Lommel
2014-01-10Fix T38142: socket interface 'type' enums are not initialized. These areLukas Tönne
not really needed anyway, but need to be adjusted to make use of the socket value copy methods.
2014-01-10Fix T38150: BMLayerCollection.items/values docs switchedCampbell Barton
2014-01-10Fix for random crash in localized node group freeing while tweakingLukas Tönne
group default values. This can happen when using value sliders for node group input values. The localized copies were setting the "interface_type" runtime pointer of the original tree to NULL instead of the new tree (which is created on-the-fly in general). This type is used in RNA update functions however, the original tree DNA should not be modified there.
2014-01-09OpenCollada: Fix error in printf-format (too much arguments).Bastien Montagne
2014-01-09Cleanup: mostly, prefer array syntax to pointer arithmetic (keep the later ↵Bastien Montagne
only where it really makes sense).
2014-01-09Fix T38135: Global start and end point of the curve was set to zero radius & ↵Bastien Montagne
weight, when using 'linked' option. This was (more or less) OK with hand-drawn strokes, as the number of points made it nearly unoticable, but broke completely with line and poly strokes! Did this when I implemented linked curve feature because it was easier! Now, convert code always adds a heading and trailing point to the curve, to get initial/final zero radius. Adds even more complexity to those functions... :/
2014-01-09Grease pencil 'convert to curve' code: some cleanup & refactor.Bastien Montagne
2014-01-09Cleanup: Remove tabs in empty lines, use bool when possible instead of int, ↵Bastien Montagne
and mark const values/parameters as such.
2014-01-09Code cleanup: remove WIP code came from the GSoC branchSergey Sharybin
DAG node tagging was rather an experiment to make derived render working. However, it ended up in a whole can of worms and need to be re-considered. It is likely that regular object update tagging and scene update routines are to be used for this. Meanwhile no need to keep extra field in dag node. Would save us the whole byte of the struct which we can use for other purposes meanwhile.
2014-01-09Fix own regression in font->curve conversionSergey Sharybin
Issue was introduced in a2bf25e and was caused by do_makeDispListCurveTypes() no longer placing nurbs to cu->nurb list. Such an operation isn't thread-safe and proper solution would require having granular update. For until them just make object conversion take care of filling cu->nurb in with splines from font.
2014-01-09Fix T38083: submenu arrow is overlayed by menu hotkeyCampbell Barton
2014-01-09Fix T38077: Scaling bones in EditMode drawn using envelope display mode ↵Joshua Leung
scales joint radii instead When trying to scale bones in EditMode and the bones were drawn using envelope display mode, this resulted in the joint radii (i.e. the inner part of envelopes) being adjusted instead. It turns out that this was due to an old hack that was put in place back in 2.4x (see the tracker logs for full details of the problem here). This commit introduces the following fixes: 1) Removed the old hack. Scaling (S) works normally now. 2) Ctrl-Alt-S (i.e. "Scale Envelopes/BBones") is as-is. That is, it is used to adjust the size falloff-region around a bone (i.e. the "dist" property) 3) Added Alt-S hotkey in EditMode for armatures for adjusting the radii of bones. This change just means that the "TFM_BONE_ENVELOPE" mode is now able to be accessed from the UI as a tool on its own right (instead of being accessible via the old undocumented hack). This tool adjusts the radii of the bone joints, which define the actual full-influence region of the envelopes.
2014-01-09Fix T38138: incorrect API docsCampbell Barton