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
2016-07-08Cleanup: spellingCampbell Barton
2016-07-07Make use of new 'idtype can use idtype' check (in ID usages code, and ID ↵Bastien Montagne
remapping one too). Reduces calls to BKE_library_foreach_ID_link() from 312 to 105 when relocating a library in a rather simple lib reload test...
2016-07-07libquery: add new 'BKE_library_idtype_can_use_idtype()' helper.Bastien Montagne
This should allow us to avoid a lot of useless processing when iterating over the whole main database (unlink/remap/usages checks/etc.). Note that some ID types report they can use any type for now, due to fuzzyness/indefined nature of some usages (like constraints/modifiers/game logic, or ID pointer of nodes...). Maybe we could address this (like e.g. adding defines in relevant headers to restrict ID types used by constraints, by modifiers, etc.). But don’t think this is top priority for now.
2016-07-07Cleanup/fix animsys 'id_type_can_have_animdata()'.Bastien Montagne
This func now actually takes an ID type as argument, added new 'id_can_have_animdata()' to check whether a datablock may be animated or not.
2016-07-07Extend libquery checks to test wether an ID is used locally and/or indirectly.Bastien Montagne
2016-07-07Fix T48793: Bilinear filter clamps at edge pixelsCampbell Barton
2016-07-07Fix single threaded compositor defineCampbell Barton
2016-07-07Cycles: Enable unaligned BVH builder for scenes with hairSergey Sharybin
This commit enables new unaligned BVH builder and traversal for scenes with hair. This happens automatically, no need of manual control over this. There are some possible optimization still to happen here and there, but overall there's already nice speedup: Master Hair BVH bunny.blend 8:06.54 5:57.14 victor.blend 16:07.44 15:37.35 Unfortunately, such more complexity is not really coming for free, so there's some downsides, but those are within acceptable range: Master Hair BVH classroom.blend 5:31.79 5:35.11 barcelona.blend 4:38.58 4:44.51 Memory usage is also somewhat bigger for hairy scenes, but speed benefit pays well for that. Additionally as was mentioned in one of previous commits we can add an option to disable hair BVH and have similar render time but have memory saving. Reviewers: brecht, dingto, lukasstockner97, juicyfruit, maiself Differential Revision: https://developer.blender.org/D2086
2016-07-07Cycles: Implement unaligned nodes BVH traversalSergey Sharybin
This commit implements traversal of unaligned BVH nodes. QBVH traversal is fully SIMD optimized and calculates orientation for all 4 children at a time, regular BVH might probably be optimized a bit more.
2016-07-07Cycles: Implement unaligned nodes BVH builderSergey Sharybin
This is a special builder type which is allowed to orient nodes to strands direction, hence minimizing their surface area in comparison with axis-aligned nodes. Such nodes are much more efficient for hair rendering. Implementation of BVH builder is based on Embree, and generally idea there is to calculate axis-aligned SAH and oriented SAH and if SAH of oriented node is smaller than axis-aligned SAH we create unaligned node. We store both aligned and unaligned nodes in the same tree (which seems to be different from what Embree is doing) so we don't have any any extra calculations needed to set up hair ray for BVH traversal, hence avoiding any possible negative effect of this new BVH nodes type. This new builder is currently not in use, still need to make BVH traversal code aware of unaligned nodes.
2016-07-07Cycles: Switch node address to absolute values in BVH treeSergey Sharybin
This seems to be straightforward way to support heterogeneous nodes in the same tree. There is some penalty related on 4gig limit of the address space now, but here's are the thing: Traversal code was already using ints to store final offset, so there can't be regressions really. This is a required commit to make it possible to encode both aligned and unaligned nodes in the same array. Also, in the future we can use this to get rid of __leaf_nodes array (which is a bit tricky to do since trickery in pack_instances().
2016-07-07Cycles: Reduce memory usage by de-duplicating triangle storageSergey Sharybin
There are several internal changes for this: First idea is to make __tri_verts to behave similar to __tri_storage, meaning, __tri_verts array now contains all vertices of all triangles instead of just mesh vertices. This saves some lookup when reading triangle coordinates in functions like triangle_normal(). In order to make it efficient needed to store global triangle offset somewhere. So no __tri_vindex.w contains a global triangle index which can be used to read triangle vertices. Additionally, the order of vertices in that array is aligned with primitives from BVH. This is needed to keep cache as much coherent as possible for BVH traversal. This causes some extra tricks needed to fill the array in and deal with True Displacement but those trickery is fully required to prevent noticeable slowdown. Next idea was to use this __tri_verts instead of __tri_storage in intersection code. Unfortunately, this is quite tricky to do without noticeable speed loss. Mainly this loss is caused by extra lookup happening to access vertex coordinate. Fortunately, tricks here and there (i,e, some types changes to avoid casts which are not really coming for free) reduces those losses to an acceptable level. So now they are within couple of percent only, On a positive site we've achieved: - Few percent of memory save with triangle-only scenes. Actual save in this case is close to size of all vertices. On a more fine-subdivided scenes this benefit might become more obvious. - Huge memory save of hairy scenes. For example, on koro.blend there is about 20% memory save. Similar figure for bunny.blend. This memory save was the main goal of this commit to move forward with Hair BVH which required more memory per BVH node. So while this sounds exciting, this memory optimization will become invisible by upcoming Hair BVH work. But again on a positive side, we can add an option to NOT use Hair BVH and then we'll have same-ish render times as we've got currently but will have this 20% memory benefit on hairy scenes.
2016-07-07Cycles: Support visibility check for inner nodes of QBVHSergey Sharybin
It was initially unsupported because initial idea of checking visibility of all children was slowing scenes down a lot. Now the idea has changed and we only perform visibility check of current node. This avoids huge slowdown (from tests here it seems to be withing 1-2%, but more tests would never hurt) and gives nice speedup of ray traversal for complex scenes which utilized ray visibility. Here's timing of koro.blend: Without visibility check With visibility check Original file 4min 20sec 4min 23sec Camera rays only 1min 43 sec 55sec Unfortunately, this doesn't come for free and requires extra data in BVH node, which increases memory usage of BVH nodes by 15%. This we can solve with some future trickery of avoiding __tri_storage created for curve segments.
2016-07-07Quiet gcc warning-as-error about non-const pointer passed to const parameter.Bastien Montagne
2016-07-07Fix T48802 Unwrap buttons, can't add hotkey in 3DView's UV Unwrap menu.Bastien Montagne
Those unwrap operators are a bit tricky, some are available from both 3DView and UVEditor, others only from 3DView... Hacked around this by returning Mesh keymap for UV_OT ops for specific 3DView/MeshEditMode context.
2016-07-07RNA: rename sorting -> sortCampbell Barton
Shorter and consistent with other RNA.
2016-07-07Skip the ID part of object names when comparingCampbell Barton
Also no need to calloc arrays which are immediately filled
2016-07-07Cleanup: spelling, styleCampbell Barton
2016-07-07Cleanup: use static sets, remove redundant copyCampbell Barton
2016-07-07Revert "ChildOf Constraint: Hide the Loc/Rot/Scale toggles"Joshua Leung
This reverts commit 4fd78bb06faa31f265af6a5f247cf4255b5ac479. After further testing, it turns out that these options are less-broken than I remember them being (and have been hearing about). Specifically, as long as you disable all 3-axes of a transform component (i.e. all location, all rotation, all scale) you're not likely to have problems, whereas if you only disabled one axis (i.e. y-rotation), you may have problems in some cases. So, restoring these to the UI.
2016-07-07Code Cleanup - Split out the FCurve auto-color code into a separate functionJoshua Leung
2016-07-07Fix T48747: Stuck in edit mode after selecting another object in the ↵Joshua Leung
animation editors
2016-07-07Fix: Keyframe click-selection threshold in Dopesheet was still hardcoded to 7pxJoshua Leung
2016-07-07Dopesheet: Added "Moving Hold" as a keyframe typeJoshua Leung
Currently "long keyframes" are only useful for indicating where stationary holds occur. If however you try to create a "moving hold" (where the values are slightly different, but in terms of overall effect, it's still a hold) then it could get tricky to keep track of where these occur. Now it's possible to tag such keyframes (using the keyframe types - RKEY) as being part of a moving hold. These will not only be drawn differently from normal keyframes, but they will also result in a "long keyframe" being drawn between each pair of them, just like if they had been completely stationary instead. Currently the theming/styling of these is a bit rough. They reuse the existing theme colours for long keyframes.
2016-07-07Transforms to Delta TransformsJoshua Leung
* Added new operators to take the current transform value (loc/rot/scale or all 3) and convert/apply that transform to a corresponding delta transform value. By default, the transform value will be zeroed out again afterwards, so you don't end up with a double transform. * These operators can be found in the "Apply" menu (Ctrl-A) * The "Animated Transforms to Deltas" (which does a similar job, except it adjusts all existing animation data instead of the current transform) has also been moved to the Apply menu (it was in the Transform menu instead)
2016-07-07Animation Editors: Object datablocks are now sorted alphabetically by defaultJoshua Leung
A long requested feature has been to have objects appear in alphabetical order in the animation editors, so that it is easier to find where they occur. This commit implements support for this. The main sticking point has been the performance impact of having this sorting happening all the time (as the actual list of "bases" cannot be modified, as the old depsgraph still needs random-looking unsorted order of objects for scheduling updates). However, it recently occurred to me that perhaps by restricting it to the one case where the ordering actually matters (i.e. when we're getting the channel list for drawing all channels, vs operating on them), and adding a toggle to turn the sorting off in heavy scenes when it might bog down things, that it will probably be acceptable enough in general. Furthermore, if things get really bad, we can investigate putting in place some sort of caching scheme for this too - though hopefully the new depsgraph will make that unnecessary (i.e. it doesn't sort the bases directly anymore).
2016-07-07Code Cleanup: Move out logic for checking if an object can be included in ↵Joshua Leung
the dopesheet
2016-07-07Dopesheet: Keyframe size can be adjusted as part of theme settingsJoshua Leung
This commit introduces a scale factor setting for scaling all keyframe indicators in the Dopesheet Editor up/down, in order to make them easier to select. It is perhaps most useful for keyframe types which are usually indicated using smaller keyframes (e.g. breakdown), which may get tricky to quickly select.
2016-07-07NLA: Indicate position of action-local markers on stripsJoshua Leung
To make it easier to synchronise timing across multiple strips, if you add markers locally to an action, these will show up in the NLA strip in the NLA Editor. These markings can then be used to line up the start/end of another strip, or even to make sure that the markers from two different strips end up lining up. By default, this is turned on, but it can be disabled (via the View menu) if it adds too much visual noise.
2016-07-07Fix (unreported) crash when remapping armatures.Bastien Montagne
Objects' Pose holds references to the armature bones, so we have to force POSE_RECALC in those cases...
2016-07-07Outliner: Match search length w/ id name lengthCampbell Barton
2016-07-07writefile: call undo flush after writing the windowmanagerCampbell Barton
Data here is constantly changing, avoids outliner data being included in those changes for undo.
2016-07-07Cleanup: move write flush into its own functionCampbell Barton
No point passing dummy args to existing function, split out logic instead. Also add flush after writing mesh data too.
2016-07-07Fix memory leak switching sculpt mode + dyntopoCampbell Barton
Auto-enabling dyntopo w/ mode switching leaked memory when undo was used.
2016-07-07Transform Snap: fix vert & edit object in ortho viewGermano Cavalcante
The callback used in `BLI_bvhtree_find_nearest_to_ray` was wrong and could result in crash. Also de-duplicate vert/edge logic.
2016-07-06Fix failing script_load_addons test after recent code cleanup.Brecht Van Lommel
2016-07-06Cycles tests: Don't create fail file on idiff warningSergey Sharybin
2016-07-06Revert rB961ebfa8c40b9909 - do not set Main's versions directly in ↵Bastien Montagne
do_versions(). This breaks any post-versionning (like IPO conversion, python handler, etc.). rB961ebfa8c40b9909 mentions some Main being do_versionned several times (which is not desired for sure), will try to reproduce again and find another fix.
2016-07-06Fix Python API error message (do_unlink, instead of unlink)Dalai Felinto
2016-07-06writefile: add flushesCampbell Barton
Flush on grease pencil and data with image preview or packed data.
2016-07-06writefile: avoid adding SDNA to every undo stepCampbell Barton
Since SDNA was allocated for each undo step, the new address meant it was considered different and included again. Add an option not to duplicate the DNA string when calling DNA_sdna_from_data, as well as avoiding a redundant copy, it writes the same address each time.
2016-07-06Fix memleak with recent Outliner writefile changes.Bastien Montagne
2016-07-06Cleanup/simplify/fixes BKE_object_is_libdata and BKE_object_obdata_is_libdata.Bastien Montagne
Removed checks for ob->proxy from the equation, you can totally have proxy objects linked into another .blend file!
2016-07-06Replace of (id->lib != NULL) check by meaningful macro.Bastien Montagne
Idea is to replace hard-to-track (id->lib != NULL) 'is linked datablock' check everywhere in Blender by a macro doing the same thing. This will allow to easily spot those checks in future, and more importantly, to easily change it (see work done in asset-engine branch). Note: did not touch to readfile.c, since there most of the time 'id->lib' check actually concerns the pointer, and not a check whether ID is linked or not. Will have a closer look at it later. Reviewers: campbellbarton, brecht, sergey Differential Revision: https://developer.blender.org/D2082
2016-07-06writefile: simplify outliner treestore workaroundCampbell Barton
Instead of keeping a list of allocations, write to unique addresses based on the BLI_mempool address since we know this is unique.
2016-07-06Cleanup: redundant 4th index in sculpt PBVHCampbell Barton
Since moving to MLoopTri this is no longer needed.
2016-07-06Dyntopo: optimize edge collapsingCampbell Barton
Checking if faces exist was a bottleneck, use a simpler version of this function for triangles. Gives approx 1.6x overall speedup (when many edges are being collapsed).
2016-07-06Cleanup: group dyntopo utility functionsCampbell Barton
2016-07-06Transform Snap: Replace pixel limit w/ 'dist_to_ray_sq'Germano Cavalcante
When snapping to edge/vert, check the distance to the ray instead of the screen-space pixel projection. This also corrects the conversion of `dist_to_ray_sq` to `dist_px` which was being done incorrectly. While this change was planned, it fixes T48791, caused by error in b01a56ee.
2016-07-05Code cleanup: for Cycles compatible panels, use exclusion rather than ↵Brecht Van Lommel
inclusion list. This shortens the list, and Blender render specific panels are added less often than other panels anyway, so less chance to miss things.