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-04-13Split Normals I (2/5): Add basic BMesh support of split normals.Bastien Montagne
* Merely a re-implementation of core split algorithm for BMesh, taking advantage of topological data available. * This code needs valid loop indices, so added BM_LOOP support to BM_mesh_elem_index_ensure() & co. Reviewers: campbellbarton Reviewed By: campbellbarton CC: brecht Differential Revision: https://developer.blender.org/D366
2014-03-20Code cleanup: use boolsCampbell Barton
2014-02-24Fix T38755: Crash when having cyclic dependency and curve deformSergey Sharybin
Issue was caused by undefined object update order and in some cases NULL pointer will be de-referenced. Added on-demand curve path calculation, just the same creepy call of BKE_displist_make_curveTypes(). This violates DAG and might end up in a difficult to troubleshoot race condition if there'll be some issues with how dependencies are calculated in DAG, but this is the easiest and safest way to solve the bug at this stage,
2014-01-27Code cleanup: use booleans where appropriateCampbell Barton
2014-01-23Cleanup: int/short to bool in BKE_cdderivedmesh.h functions (and TRUE/FALSE ↵Bastien Montagne
to true/false in code using them).
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.
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-22Style Cleanup: remove preprocessor indentation (updated wiki style guide too)Campbell Barton
2013-12-21Mesh Modifiers: refactor copying using a generic functionCampbell Barton
2013-11-18Fix T37413 - Fit-Curve option for Array Modifier ignores constraint resultsJoshua Leung
Unless I'm missing something here (probably with regards to parenting), it makes more sense that constraint results are considered here as well (for example, if Limit Scale constraints get applied on the object), as this allows for greater flexibility when creating setups with this.
2013-09-04replace sqrt(dot()) with length functions.Campbell Barton
2013-09-02bmesh: internal api change, remove BMOElemMapping, its not needed since the ↵Campbell Barton
values can be stored in the ghash directly. saves 24 bytes per element (per vertex/edge/face on a 64bit system), for bmesh operators.
2013-08-28array modifier was adding vertices to the 'targetmap' multiple times.Campbell Barton
this is supported by weldop but would prefer not to allow multiple keys in the map.
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-06-03fix [#35555] Collada: export destroys mesh in some casesCampbell Barton
add arguments to calculate normals when converting to bmesh: BM_mesh_bm_from_me, DM_to_bmesh This gives some speedup to undo (which didnt need to re-calculate vertex normals), and array modifier which doesnt need to calculate face normals at all
2013-06-02fix regression in reducing normal recalculation [#35595],Campbell Barton
pass the dirty-normal-state from the input dm to the output.
2013-05-30modifier stack: lazy initialize normalsCampbell Barton
many modifiers were calculating normals, when those normals were ignored by the next modifier. now flag normals as dirty and recalculate for modifiers that set use `dependsOnNormals()` callback. Quick test on mesh with 12 modifiers (mostly build type), calculated normals 6 times, now it only runs once - so this will give some speedup too.
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-12Fix #35317: crash with boolean modifier using an object whose library linkedBrecht Van Lommel
mesh datablock went missing.
2013-05-02Fix #35174: dynamic paint displacement missing in render.Brecht Van Lommel
A previous bugfix disabled the dynamic paint modifier for orco texture coordinate evaluation of the modifier stack. However the MOD_APPLY_USECACHE flag is not a good way to check if the modifier is evaluated for orcos. Instead I've added a MOD_APPLY_ORCO flag. Also removed a bunch of applyModifierEM callbacks, none of them served a purpose except for the subsurf modifier.
2013-03-17code cleanup: incorrect sized array args, remove some redundant code.Campbell Barton
2012-11-26use more rigid type checking for bmesh slot subtypes.Campbell Barton
2012-11-22Fix #33264: Array MOD First Last option does nothingSergey Sharybin
2012-11-20bmesh operator api:Campbell Barton
avoid per vert/edge/face string lookups in BMO_slot_map_* functions --- used in array modifier, subdivide, remove doubles and other tools.
2012-11-20code cleanup: make bmesh operator names more consistant since python has ↵Campbell Barton
access to these as input arguments and return values. all output values currently have ".out" suffix, this may go in the future, but for now it makes it clear in C code what are inputs and outputs.
2012-11-19use input and output slots for bmesh operators, needed for the python api to ↵Campbell Barton
get return values.
2012-11-18bmesh: lazy initialize bmesh tool flag pool, has the advantage that ↵Campbell Barton
modifiers that dont use bmesh operators can skip allocating it.
2012-10-29style cleanup: also quiet harmless compiler warning.Campbell Barton
2012-10-24add CDDM_from_bmesh(), avoids using BMEditMesh in modifiers.Campbell Barton
2012-07-21add option so operators can be called with a flag, currently the only flag ↵Campbell Barton
is to respect hidden geometry. this is useful for bmesh tools that operate in object mode or for modifiers which would previously use hidden faces in some cases.
2012-07-17code cleanup: spellingCampbell Barton
2012-07-01style cleanup: commentsCampbell Barton
2012-07-01fix for own error renaming bmesh operator dupeCampbell Barton
2012-06-30rename bmesh ops since they are exposed in an api now.Campbell Barton
2012-06-11Fix incorrectly deleted elements in array modifier caps.Nicholas Bishop
Add check for merging vertices into vertices that are themselves marked for merge, was already done for array eleements but not end caps. Fixes bug [#31695] Array Modifier: End Cap fails if all vertices are merged Also corrected some reversed assert arguments.
2012-05-09Refactor of modifiers' apply function: now use a single bit-flag parameter ↵Bastien Montagne
to pass options, instead of having one parameter per boolean flag (i.e. replaces current useRenderParams and isFinalCalc by a single ModifierApplyFlag flag. ModifierApplyFlag is an enum defined in BKE_modifier.h). This way we won't anymore have to edit all modifier files when e.g. adding a new control flag! Should have no effect over modifier behavior.
2012-05-09style cleanup: whitespace/operatorsCampbell Barton
2012-05-07Style cleanup: displist moduleSergey Sharybin
2012-05-06style cleanup: modifiersCampbell Barton
2012-05-05code cleanup: function naming, use BKE_*type* prefix.Campbell Barton
2012-04-22style cleanup: commentsCampbell Barton
2012-04-21style cleanup: multi-line if statements.Campbell Barton
2012-04-21style cleanupCampbell Barton
2012-04-19remove BM_ITER, BM_ITER_INDEX macros, use ELEM or MESH variants only (the ↵Campbell Barton
maceros had unused args in both cases).
2012-04-19style cleanup: BM_ITER / BM_ITER_INDEX / BMO_ITERCampbell Barton
2012-04-13bmesh api changes:Campbell Barton
- remove recently added BM_mesh_select_flush_strip(), functions purpose wasn't clear. - add BM_mesh_elem_hflag_disable_test(), BM_mesh_elem_hflag_enable_test() to match existing BM_mesh_elem_hflag_enable/disable_all(), these take a hflag to test before editing each element. This replaces the need for BM_mesh_select_flush_strip().
2012-04-02fix [#30768] Project from View UV map tool includes hidden geometry r45323Campbell Barton
select all could select hidden faces, now BM_mesh_elem_flag_enable/disable_all takes an argument to skip hidden elements.
2012-03-31Small array modifier performance improvement.Nicholas Bishop
Transform vertices directly rather than using BMOp.
2012-03-30Fix bug 30195, Array modifier fails to merge vertices.Nicholas Bishop
All cases should work now -- that's adjacent duplicate merging, first-last duplicate merging, and start/end cap merging. A lot of complexity really, wonder if it might not be better to just do a full "remove doubles" rather than try to match pre-BMesh behavior exactly.
2012-03-30Small code cleanups related to arrays.Nicholas Bishop
* Added helpful comment on 'keepverts' slot of bmop finddoubles. * Removed unused macro 'E' from MOD_array.