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
AgeCommit message (Collapse)Author
2014-02-25Fix T38824: curve which is constrained on a hidden layer causes cycles crashSergey Sharybin
Issue was caused by cycles setting scene frame which will update scene for all the layers (not just visible ones) which confuses depsgraph making objects which are needed as dependency are not really evaluated. Made it so setting frame via scene.frame_set() which check whether update need to be flushed to an invisible objects and do this if so. Not ideal solution but seems to be safest at this point.
2014-02-20Fix for reading past allocated bounds when calculating pathsCampbell Barton
2014-01-21Code cleanup and structural improvements for dupli generation.Lukas Tönne
This is a first step toward improving our dupli system. It implements a more generic way of treating the various methods of dupli generation by adding a few structs: * DupliContext holds a number of arguments commonly used in the recursive dupli functions and defines a recursion state for generating sub-duplis (nested groups). It also helps to prevent bloated argument lists. * DupliGenerator is a type struct that unifies the different dupli creation methods (groups, frames, verts, text chars, faces, particles). (As with context there should be no overhead from pointer indirection because everything can still be inlined inside anim.c) Beside making the code more easily understandable this implementation should also help to avoid weird side effects from custom matrix hacks by defining clearly what a generator does. The DupliContext is deliberately made const, so a generator can not simply add hidden matrix or flag modifications that are hard to track down. The result container for the generated duplis is stored in the context instead of being passed explicitly. This means the generators are oblivious to the storage of duplis, all they need to do is call the make_dupli function. This will allow us to implement more efficient ways of storing DupliObject instances, such as MemPools or batches. These can be implemented alongside the current ListBase so we can improve dupli bottlenecks without having to replace each and every dupli use case at once. Differential Revision: https://developer.blender.org/D189
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-05Text3d: font family dupli-objects now follow rotation of the curve pathCampbell Barton
2014-01-05Text3d: minor edits to the API, remove BKE_vfont_to_curve_nubase_exCampbell Barton
2014-01-05Text3d: fix font family feature for unicode and correct tooltipCampbell Barton
2014-01-03Text3d: avoid converting utf8 to wchar_t in editmodeCampbell Barton
2013-12-28Fix regression T37971: Crash setting recursive dupli-vertsCampbell Barton
2013-12-26Threaded object update and EvaluationContextSergey Sharybin
Summary: Made objects update happening from multiple threads. It is a task-based scheduling system which uses current dependency graph for spawning new tasks. This means threading happens on object level, but the system is flexible enough for higher granularity. Technical details: - Uses task scheduler which was recently committed to trunk (that one which Brecht ported from Cycles). - Added two utility functions to dependency graph: * DAG_threaded_update_begin, which is called to initialize threaded objects update. It will also schedule root DAG node to the queue, hence starting evaluation process. Initialization will calculate how much parents are to be evaluation before current DAG node can be scheduled. This value is used by task threads for faster detecting which nodes might be scheduled. * DAG_threaded_update_handle_node_updated which is called from task thread function when node was fully handled. This function decreases num_pending_parents of node children and schedules children with zero valency. As it might have become clear, task thread receives DAG nodes and decides which callback to call for it. Currently only BKE_object_handle_update is called for object nodes. In the future it'll call node->callback() from Ali's new DAG. - This required adding some workarounds to the render pipeline. Mainly to stop using get_object_dm() from modifiers' apply callback. Such a call was only a workaround for dependency graph glitch when rendering scene with, say, boolean modifiers before displaying this scene. Such change moves workaround from one place to another, so overall hackentropy remains the same. - Added paradigm of EvaluaitonContext. Currently it's more like just a more reliable replacement for G.is_rendering which fails in some circumstances. Future idea of this context is to also store all the local data needed for objects evaluation such as local time, Copy-on-Write data and so. There're two types of EvaluationContext: * Context used for viewport updated and owned by Main. In the future this context might be easily moved to Window or Screen to allo per-window/per-screen local time. * Context used by render engines to evaluate objects for render purposes. Render engine is an owner of this context. This context is passed to all object update routines. Reviewers: brecht, campbellbarton Reviewed By: brecht CC: lukastoenne Differential Revision: https://developer.blender.org/D94
2013-12-23Dupliverts: avoid calculating normals if not usedCampbell Barton
2013-10-31code cleanup: spellingCampbell Barton
2013-10-12code cleanup: use const's for vector args.Campbell Barton
2013-09-19fix [#36625] Particle Instances ignores Group offsetsCampbell Barton
in fact this failed for all nested dupli types except for dupli-groups, (which ignore the 'par_space_mat' object_duplilist_recursive()).
2013-09-06rename positive_mod to mod_i, make it work with nagative numbers (matching ↵Campbell Barton
pythons modulo), and use in a few more places. allow mesh-checker-deselect to have a negative offset.
2013-08-21code cleanup: bmesh duplicate functionsCampbell Barton
- avoid using an iterator when stepping around an edges radial loop. - use naming constant with the rest of the bmesh operators.
2013-08-19Make lattice deform safe for threadingSergey Sharybin
Lattice deformation used to store some runtime data inside of lattice datablock itself. It's something which is REALLY bad. Ideally DNA shouldn't contain and runtime data. For now solved it in a way that initialization of lattice deform will create a structure which contains lattice object for which deformation is calculating and that runtime data which used to be stored in lattice datablock itself. It works really fine for mesh deform modifier, but there's still runtime data stored in particle system DNA, It didn't look something easy to be solved, so leaving this as-is for now. -- svn merge -r58277:58278 -r58795:58796 ^/branches/soc-2013-depsgraph_mt
2013-08-19Made curves almost thread-safeSergey Sharybin
Now modifier stack wouldn't modify original curve's nurbs and will operate on a copy of nurbs. This makes it possible to process curve object update with shared curve datablocks from multiple threads. There's no big overhead for creating a copy of nurbs comparing to old behavior which was allocating original vertex array and apply coordinates on curve after all modifier are applied. The only remained issue with curves is curve's bounding box and texture space. It's not thread-safe, but it wouldn't lead to crashes -- it just could lead to either memory leak or wrong texture coordinates due to difference in modifiers stacks of objects which shares the same curve. -- svn merge -r57959:57961 ^/branches/soc-2013-depsgraph_mt
2013-08-19Move bevel list and path from Curve to Object datablockSergey Sharybin
I know this is not so much nice to have this guys hanging around in a general Object datablock and ideally they better be wrapped around into a structure like DerivedMesh or something like this. But this is pure runtime only stuff and we could re-wrap them around later. Main purpose of this is making curves more thread safe, so no separate threads will ever start freeing the same path or the same bevel list. It also makes sense because path and bevel shall include deformation coming from modifiers which are applying on pre-tesselation point and different objects could have different set of modifiers. This used to be really confusing in the past and now data which depends on object is stored in an object, making things clear for understanding even. This doesn't make curve code fully thread-safe due to pre-tesselation modifiers still modifies actual nurbs and lock is still needed in makeDispListsCurveTypes, but this change makes usage of paths safe for threading. Once modifiers will stop modifying actual nurbs, curves will be fully safe for threading. Actually, this commit also contains wrapping runtime curve members into own structure This allows easier assignment on file loading, keeps curve- specific runtime data grouped and saves couple of bytes in Object for non-curve types. -- svn merge -r57938:57939 ^/branches/soc-2013-depsgraph_mt svn merge -r57957:57958^/branches/soc-2013-depsgraph_mt
2013-07-23optimization: only calculate the normals for passing into derivedMesh ↵Campbell Barton
foreachMappedVert/foreachMappedFaceCenter when needed, this means in editmode with wire draw, face and vertex normals don't have to be calculated at all. in most cases the normals are not used so add a flag that makes calculating them only for functions that need them. also fix face normal calculation for CDDM, was using quad calculation for ngons too.
2013-06-25Fix #35846: crash rendering with dupligroups visible in 3D viewport during ↵Brecht Van Lommel
render in some cases. The dupli code would still do object updates during render indirectly, while this is disabled for thread safety everywhere else, now we disable it for this case as well. Not a pretty solution but this is for the depgraph refactor to solve.
2013-05-26BLI_math rename functions:Campbell Barton
- mult_m4_m4m4 -> mul_m4_m4m4 - mult_m3_m3m4 -> mul_m3_m3m4 these temporary names were used to avoid problems when argument order was switched.
2013-05-19Fix #35407: different particle behavior compared to 2.66, reverted part of ↵Brecht Van Lommel
56073.
2013-04-16code cleanup: use BKE naming conventions for functions in BKE_editmesh.h and ↵Campbell Barton
BKE_editmesh_bvh.h
2013-04-16Random number generator: replace a bunch of usage of the global random numberBrecht Van Lommel
generator with a local one. It's not thread safe and will not give repeatable results, so in most cases it should not be used. Also fixes #34992 where the noise texture of a displacement modifier was not properly random in opengl animation render, because the seed got reset to a fixed value by an unrelated function while for final render it changed each frame.
2013-04-15Fix #34972: Blender crashes when Force Field-> Curve Guide is createdSergey Sharybin
Made it so where_on_path works correct when Curve does have editNurbs but no Curve->nurbs.
2013-04-14code cleanup: rename BKE_tessmesh -> BKE_editmesh, rename ↵Campbell Barton
EditDerivedBMesh.tc -> em. ('tc' is odd name which isn't used elsewhere).
2013-04-04code cleanup: use bools in UI and WM code, quiet some shadow warnings, ↵Campbell Barton
remove unused function uiEmboss()
2013-04-04Fix #34625: duplivert/face rendering with modifier could crash accessing UV andBrecht Van Lommel
generated coordinates on the original mesh, after the change that made duplis take modifiers into account.
2013-04-03code cleanup: use more (blender) conventional naming for group functions.Campbell Barton
also change dump_rna2xml.py to dump bpy.data by default.
2013-03-21code cleanup: use bool where values are true/false, for view3d and related ↵Campbell Barton
functions.
2013-03-17code cleanup: incorrect sized array args, remove some redundant code.Campbell Barton
2013-02-24rigidbody: Fix motion paths calculation being incorrect for rigid bodiesSergej Reich
For the simulation to work properly the limited update the motion paths calculation did wasn't enough so you got different results for for motion paths than for the actual simulation. Now do full frame update if rigid body sim is active. TODO investigate if we can still limit this.
2013-02-21Dependency Graph: some refactoring which should have no user visible impactBrecht Van Lommel
besides performance in some cases. * DAG_scene_sort is now removed and replaced by DAG_relations_tag_update in most cases. This will clear the dependency graph, and only rebuild it right before it's needed again when the scene is re-evaluated. This is done because DAG_scene_sort is slow when called many times from python operators. Further the scene argument is not needed because most operations can potentially affect more than the current scene. * DAG_scene_relations_update will now rebuild the dependency graph if it's not there yet, and DAG_scene_relations_rebuild will force a rebuild for the rare cases that need it. * Remove various places where ob->recalc was set manually. This should go through DAG_id_tag_update() in nearly all cases instead since this is now a fast operation. Also removed DAG_ids_flush_update that goes along with such manual tagging of ob->recalc.
2013-02-14Bug fix #34230Ton Roosendaal
Error since July 2005, when DerivedMesh was introduced. Vertex and Face duplicators now work for all modifiers. (not only deformers). For example mirror and array modifier didn't work.
2013-01-29WhitespaceJoshua Leung
2013-01-26Motion Path calculations for objects now takes rigidbodies sim effects intoJoshua Leung
account
2012-12-13style cleanup: changes from recent commitsCampbell Barton
2012-12-11define the size of matrix args for both rows/cols.Campbell Barton
2012-12-09Fix #33454: cycles wasn't hiding the original object used for dupliverts orBrecht Van Lommel
duplifaces like blender internal.
2012-11-09add fallbacks for BM_vert_calc_shell_factor() and ↵Campbell Barton
BM_vert_calc_mean_tagged_edge_length() to avoid divide by zero when a vertex has no connected geometry. also style cleanup.
2012-11-09Fix #33082: dupliverted metaball showing wrong in cycles render and metaballBrecht Van Lommel
edit mode. I've made it follow blender internal now, but this system should really be improved once, metaballs that are in linked dupligroups will never show up.
2012-11-08Fix #33113: cycles not rendering motion blur correct with dying particles.Brecht Van Lommel
There were a bunch of other issues with dupli motion blur and syncing, the problem being that there was no proper way to detect corresponding duplis between frames or updates. As a solution, a persistent_id was added to the DupliObject. It's an extension of the previous index value, with one index for each dupli level. This can be used to reliably find matching dupli objects between frames. Works with nested duplis, multiple particle systems, etc.
2012-10-21A final bunch of UI messages fixes and tweaks, and some ↵Bastien Montagne
BKE_report()<->BKE_reportf() fixes.
2012-10-21style cleanup: trailing tabs & expand some non prefix tabs into spaces.Campbell Barton
2012-10-13More UI messages fixes.Bastien Montagne
Also forgot to translate reports' titles, and change some usages of BKE_reportf to simple BKE_report, when the former is not needed!
2012-10-11style cleanup:Campbell Barton
also add helper makefile targets: * tbz - makes a tar.bz2 of an svn export * test_style_qtc - outputs style checks in qtc task format.
2012-10-05Cycles: add "From Dupli" option for texture coordinate node. This gets theBrecht Van Lommel
Generated and UV coordinates from the duplicator of instance instead of the object itself. This was used in e.g. Big Buck Bunny for texturing instanced feathers with a UV map on the bird. Many files changed, mainly to do some refactoring to get rid of G.rendering global in duplilist code.
2012-09-25small improvement to previous commit, use pre-calculated ngon normal to ↵Campbell Barton
avoid calculating twice when dupli-scale is enabled.