4 years agoAPI: Do not show "Created using Sphinx" in the footer
Aaron [Thu, 19 Jan 2017 21:16:04 +0000 (16:16 -0500)]
API: Do not show "Created using Sphinx" in the footer

I talked to Campbell and he said there is no need for this

4 years agoBuild dir should be set after the sanity checks
Aaron [Thu, 19 Jan 2017 20:55:50 +0000 (15:55 -0500)]
Build dir should be set after the sanity checks

Error here is that if do not have 2012 it switch to 2015 but not change the build dir

4 years agoBMesh: remove BM_face_create_ngon_vcloud
Campbell Barton [Thu, 19 Jan 2017 19:06:06 +0000 (06:06 +1100)]
BMesh: remove BM_face_create_ngon_vcloud

Instead, add BM_verts_sort_radial_plane
and use regular creation API.

4 years agoCorrect asserts, un-hiding when selected is ok
Campbell Barton [Thu, 19 Jan 2017 19:00:55 +0000 (06:00 +1100)]
Correct asserts, un-hiding when selected is ok

4 years agoCycles: Expose diffuse and glossy depth to Light Path node
Sergey Sharybin [Tue, 6 Dec 2016 15:15:36 +0000 (16:15 +0100)]
Cycles: Expose diffuse and glossy depth to Light Path node

Was a bit confusing to have transparent and translucent depth
exposed but no diffuse or glossy.

Reviewers: brecht

Subscribers: eyecandy

Differential Revision:

4 years agoCycles: Don't use fast math for the host code
Sergey Sharybin [Thu, 19 Jan 2017 13:48:43 +0000 (14:48 +0100)]
Cycles: Don't use fast math for the host code

This is important for the reliable behavior or isnan/isfinite/min/max
functions to work with nan and non-finite values. Some of the issues
with fast math are possible to work around, but didn't find a way to
have reliable min/max implementation yet.

4 years agoCycles: Add fast-math safe isnan and isfinite
Sergey Sharybin [Thu, 19 Jan 2017 13:41:04 +0000 (14:41 +0100)]
Cycles: Add fast-math safe isnan and isfinite

Currently unused, but might become really handy in the future.

4 years agoCycles: Remove using namespace hell
Sergey Sharybin [Thu, 19 Jan 2017 13:24:14 +0000 (14:24 +0100)]
Cycles: Remove using namespace hell

Please NEVER EVER use such a statement, it's only causing HUGE
issues. What is even worse: it's not always possible to immediately
see that the hell is coming from such a statement.

There is still some statements in the existing code, will leave
those for a later cleanup.

4 years agoGPencil: Add option to create blank frame in active layer only
Antonio Vazquez [Thu, 19 Jan 2017 12:04:56 +0000 (13:04 +0100)]
GPencil: Add option to create blank frame in active layer only

Now it is possible to select if the blank frame is created in active
layer only or in all layers.

4 years agoCleanup: naming, comments assert for hide+selected
Campbell Barton [Thu, 19 Jan 2017 11:59:41 +0000 (22:59 +1100)]
Cleanup: naming, comments assert for hide+selected

4 years agoBMesh: improve hide-flush internal logic
Campbell Barton [Thu, 19 Jan 2017 11:45:15 +0000 (22:45 +1100)]
BMesh: improve hide-flush internal logic

- flushing hidden state ran when it didn't need to.
- flushing checks didn't early exit when first visible element found.
- low level BM_*_hide API calls like this can use skip iterators
  can loop over struct members directly.

No user-visible changes.

4 years agoUI: Fix capitalization inconsistency
Aaron Carlisle [Thu, 19 Jan 2017 00:38:55 +0000 (19:38 -0500)]
UI: Fix capitalization inconsistency

4 years agoCycles: Fix amount of rendered samples not being shown while rendering the last tile...
Lukas Stockner [Wed, 18 Jan 2017 23:39:52 +0000 (00:39 +0100)]
Cycles: Fix amount of rendered samples not being shown while rendering the last tile on CPU

4 years agoFix T49807: Inset faces edge rail bug
Campbell Barton [Wed, 18 Jan 2017 23:35:10 +0000 (10:35 +1100)]
Fix T49807: Inset faces edge rail bug

4 years agoFix face-creation with existing hidden geometry
Campbell Barton [Wed, 18 Jan 2017 22:04:50 +0000 (09:04 +1100)]
Fix face-creation with existing hidden geometry

- face-create-extend option could add hidden verts and edges into
  the selection history (invalid state).
- faces could be created that included existing hidden edges
  that remained hidden (invalid state too).
- newly created faces could copy hidden flag from surrounding faces,
  giving very confusing results (looks as if face creation failed).

Surprising nobody noticed these years old bugs!

4 years agoBMesh: Use angle_signed_on_axis_v3v3v3_v3
Campbell Barton [Wed, 18 Jan 2017 20:59:32 +0000 (07:59 +1100)]
BMesh: Use angle_signed_on_axis_v3v3v3_v3

4 years agoFix strict compiler warning message
Sergey Sharybin [Wed, 18 Jan 2017 14:56:40 +0000 (15:56 +0100)]
Fix strict compiler warning message

4 years agoGPencil: Avoid variable shadowing
Sergey Sharybin [Wed, 18 Jan 2017 14:56:04 +0000 (15:56 +0100)]
GPencil: Avoid variable shadowing

4 years agoReproject Strokes - To Surface/Geometry
Joshua Leung [Wed, 18 Jan 2017 14:20:44 +0000 (03:20 +1300)]
Reproject Strokes - To Surface/Geometry

Experimental option for the Reproject Strokes operator to project strokes on to
geometry, instead of only doing this in a planar (i.e. parallel to viewplane) way.

The current implementation is quite rough, and may need to be improved before it
is really ready for use. Potential issues:
* Loss of precision (i.e. stairstepping artifacts) from the 3D -> 2D -> 3D conversion
  as we don't have float version of one of the projection funcs
* Jagged depth if there are gaps, since it will default back to the 3d-cursor plane
  if no geometry was found (instead of doing some fancy interpolation scheme)
* I'm not sure if it's that useful for adapting GP strokes to deforming geometry yet...

4 years agoFix: Make it possible to erase strokes (on other layers) even if the active layer...
Joshua Leung [Wed, 18 Jan 2017 14:00:33 +0000 (03:00 +1300)]
Fix: Make it possible to erase strokes (on other layers) even if the active layer doesn't have any frames

4 years agoFix: Avoid creating redundant frames when erasing
Joshua Leung [Wed, 18 Jan 2017 13:57:08 +0000 (02:57 +1300)]
Fix: Avoid creating redundant frames when erasing

Now the eraser checks if there's an active frame with some strokes in it
before creating a new frame. There's no point in creating a new frame if
there are no strokes in the active frame (if one exists).

This still doesn't help much if there were strokes but they weren't touched though...

4 years agoGPencil: Pressing 'B' while in 'Continuous Drawing' mode will create a blank frame
Joshua Leung [Wed, 18 Jan 2017 13:24:41 +0000 (02:24 +1300)]
GPencil: Pressing 'B' while in 'Continuous Drawing' mode will create a blank frame

This is a hardcoded keymapping that just calls the "Add Blank Frame" operator
introduced in the previous commit.

4 years agoGPencil: "Add Blank Frame" operator (D+B)
Joshua Leung [Wed, 18 Jan 2017 13:11:51 +0000 (02:11 +1300)]
GPencil: "Add Blank Frame" operator  (D+B)

This operator adds a new frame with nothing in it on the current frame.
If there is already a frame there, all existing frames are shifted one frame later.

Quite often when animating, you may want a quick way to get a blank frame,
ready to start drawing something new. Or maybe you just need a quick way to
add a "placeholder" frame so that a suddenly-appearing element does not show
up before its time.

4 years agoGPencil: Cleanup - move include line to correct scope
Antonio Vazquez [Wed, 18 Jan 2017 12:00:09 +0000 (13:00 +0100)]
GPencil: Cleanup - move include line to correct scope

4 years agoGPencil: Fix unreported error in animation after rename items
Antonio Vazquez [Wed, 18 Jan 2017 11:25:49 +0000 (12:25 +0100)]
GPencil: Fix unreported error in animation after rename items

If the layers or the colors were renamed, the animation data was wrong
because the data path was not updated.

I also have fixed a possible stroke color name update if the name was duplicated moving
the rename function call after checking unique name.

4 years agoCleanup: Strict compiler flags
Sergey Sharybin [Wed, 18 Jan 2017 11:20:53 +0000 (12:20 +0100)]
Cleanup: Strict compiler flags

Also seems the new file forced trailing whitespace, which goes against

4 years agoTransform manipulator: Allow first clicking Shift before selecting axis
Sergey Sharybin [Thu, 15 Dec 2016 10:12:43 +0000 (11:12 +0100)]
Transform manipulator: Allow first clicking Shift before selecting axis

Avoids possible jumps when one is trying to do some really preciese tweak.

Quite striaghtforward change for mouse input initialization: take Shift
state into account. However, this will interfere with the axis exclusion
which is currently also uses Shift (the feature to move something in a
plane which doesn't have selected axis). This is probably not so commonly
used feature (nobody in the studio even knew of it) and the only downside
now would be that such a constrainted movement will become accurate by
default. That's easy to deal from user side by just unholding Shift key.

Reviewers: brecht, mont29, Severin

Differential Revision:

4 years agoGP Interpolation: "Remove Breakdowns" operator
Joshua Leung [Wed, 18 Jan 2017 06:40:48 +0000 (19:40 +1300)]
GP Interpolation: "Remove Breakdowns" operator

To make it faster to try different interpolation curves, there's a new operator
"Remove Breakdowns" which will delete all breakdowns sandwiched by normal
keyframes (i.e. all the ones that the previous run of the Interpolation op created)

4 years agoGP Interpolate Sequence: Tool settings for controlling the shape of interpolation
Joshua Leung [Wed, 18 Jan 2017 06:00:17 +0000 (19:00 +1300)]
GP Interpolate Sequence: Tool settings for controlling the shape of interpolation

This commit introduces the ability to use the Robert Penner easing equations
or a Custom Curve to control the way that the "Interpolate Sequence" operator
interpolates between keyframes. Previously, it was only possible to get linear
interpolation between the gp frames.

1) Place current frame between a pair of GP keyframes
2) Open the "Interpolate" panel in the Toolshelf
3) Choose the interpolation type (under "Sequence Options")
4) Adjust settings (e.g. if you're using "Custom Curve", use the curvemap widget
   to define the way that the interpolation proceeds)
5) Click "Sequence" to interpolate
6) Play back/scrub the animation to see if you've got the result you want
7) If you need to make some tweaks, undo, or delete the generated keyframes,
   then repeat the process again from step 4 until you've got the desired result.

4 years agoGP Interpolate: Move settings from "gp_sculpt" to a new toolsettings struct - "gp_int...
Joshua Leung [Wed, 18 Jan 2017 03:43:17 +0000 (16:43 +1300)]
GP Interpolate: Move settings from "gp_sculpt" to a new toolsettings struct - "gp_interpolate"

The "gp_sculpt" settings should be strictly for stroke sculpting, and not abused by
other tools. (Similarly, if other general GP tools need one-off options, those should
go into the normal toolsettings->gpencil_flag)

Furthermore, this paves the way for introducing new settings for controlling the way
that GP interpolation takes place (e.g. with easing equations, or a custom curvemap)

4 years agoGP Interpolate Code Cleanup (Second Round)
Joshua Leung [Tue, 17 Jan 2017 12:29:40 +0000 (01:29 +1300)]
GP Interpolate Code Cleanup (Second Round)

* Reduce scope of variables
* Simplify a lot of the active_gpl->actframe->...->framenum stuff
* Missed some error messages

4 years agoCode Cleanup for GP Interpolation ops (first pass)
Joshua Leung [Tue, 17 Jan 2017 11:48:15 +0000 (00:48 +1300)]
Code Cleanup for GP Interpolation ops (first pass)

* Reshuffled some blocks of code for better ease of navigation/flow in the file
* Improved some tooltips
* Removed "Helper" tag from some functions that serve bigger roles
* Fixed some errant formatting

4 years agoCode Cleanup: Move GPencil Interpolation operators into their own file
Joshua Leung [Tue, 3 Jan 2017 10:29:21 +0000 (23:29 +1300)]
Code Cleanup: Move GPencil Interpolation operators into their own file

The interpolation operators (and their associated code) occupied a significant
portion of gpencil_edit.c (which was getting a bit heavy). So, it's best to split
these out into a separate file to make things easier to handle, in preparation
for some further dev work.

4 years agoAdd 'Layer Weight' node to Blender internal node items
Alexander Romanov [Tue, 17 Jan 2017 09:02:05 +0000 (12:02 +0300)]
Add 'Layer Weight' node to Blender internal node items

4 years agoReturn correct alpha for environment map in GLSL
Alexander Romanov [Tue, 17 Jan 2017 08:52:02 +0000 (11:52 +0300)]
Return correct alpha for environment map in GLSL

4 years agoCleanup/refactor: move BKE_deform_flip_side_name & co to BLI_string_utils
Bastien Montagne [Mon, 16 Jan 2017 19:34:13 +0000 (20:34 +0100)]
Cleanup/refactor: move BKE_deform_flip_side_name & co to BLI_string_utils

Functions like that do not have anything to do in BKE really, even less
when actually more used for bones than vgroups!

4 years agoCleanup/refactor: get rid of fixed name limit in BKE_deform_flip_side_name & co.
Bastien Montagne [Mon, 16 Jan 2017 19:08:46 +0000 (20:08 +0100)]
Cleanup/refactor: get rid of fixed name limit in BKE_deform_flip_side_name & co.

Those were forcing to use vgroup name define in bones area, or even
mixing with maxbonename... ugly, and totally avoidable.

4 years agoCleanup/refactor: Add new BLI_string_util.
Bastien Montagne [Mon, 16 Jan 2017 16:33:34 +0000 (17:33 +0100)]
Cleanup/refactor: Add new BLI_string_util.

Things like `BLI_uniquename` had nothing, but really nothing to do in
BLI_path_util files!

Also, got rid of length limitation in `BLI_uniquename_cb`, we can use
alloca here to avoid overhead of malloc while keeping free size (within
reasonable limits of course).

4 years agoCleanup: remove unused & unimplemented `BLI_newname`.
Bastien Montagne [Mon, 16 Jan 2017 13:06:26 +0000 (14:06 +0100)]
Cleanup: remove unused & unimplemented `BLI_newname`.

4 years agoFix T50393: Flip names working just on one side when both are selected.
Bastien Montagne [Mon, 16 Jan 2017 13:03:31 +0000 (14:03 +0100)]
Fix T50393: Flip names working just on one side when both are selected.

Just store bones that could not get renamed to desired flipped name on the
first try into a temp list, and try to rename them a second time.

This is rather simple solution, will induce 'over numbering' in case you
flip a bone to another unselected bone's name (since number will be
incremented in both rename attempts), but think this is acceptable minor
glitch, for a corner case situation that does not have any good
resolution anyway.

Also, set `strip_numbers` option of `BKE_deform_flip_side_name` to
false, otherwise chains of bones with same names would get their numbers
completely messed up after name flipping.

Based on work by @dfelinto in D2456 (, thanks.

4 years agoCycles: Cleanup, spelling
Sergey Sharybin [Mon, 16 Jan 2017 16:55:41 +0000 (17:55 +0100)]
Cycles: Cleanup, spelling

4 years agoCycles: Cleanup, avoid shadowing
Sergey Sharybin [Mon, 16 Jan 2017 16:54:39 +0000 (17:54 +0100)]
Cycles: Cleanup, avoid shadowing

4 years agoAdd 3d to 2d plane mapping functions to math lib
Luca Rood [Thu, 22 Dec 2016 04:13:03 +0000 (02:13 -0200)]
Add 3d to 2d plane mapping functions to math lib

This adds two functions to project 3d coordinates onto a 3d plane,
to get 2d coordinates, essentially eliminating the plane's normal axis
from the coordinates.

Reviewed By: mont29

Differential Revision:

4 years agoFix missing user when opening text from ID UI widget.
Bastien Montagne [Fri, 13 Jan 2017 17:12:56 +0000 (18:12 +0100)]
Fix missing user when opening text from ID UI widget.

Own mistake in recent fix for Text data-block usercount (rBa9163f7d2).

Reported by @sergey over IRC, thanks.

4 years agoCycles: Fix wrong transparent shadows for motion blur hair
Sergey Sharybin [Fri, 13 Jan 2017 14:41:20 +0000 (15:41 +0100)]
Cycles: Fix wrong transparent shadows for motion blur hair

This was a missing bit from b53ce9a.

4 years agoCycles: Cleanup, style
Sergey Sharybin [Fri, 13 Jan 2017 14:24:56 +0000 (15:24 +0100)]
Cycles: Cleanup, style

4 years agoCycles: Simplify some code in Curve BVH reference fill
Sergey Sharybin [Fri, 13 Jan 2017 09:59:34 +0000 (10:59 +0100)]
Cycles: Simplify some code in Curve BVH reference fill

makes code slightly shorter and uses idea of const qualifiers.

4 years agoCycles: Avoid shadowing in BVH code
Sergey Sharybin [Fri, 13 Jan 2017 09:53:01 +0000 (10:53 +0100)]
Cycles: Avoid shadowing in BVH code

Run into some nasty bugs while trying various things here.

Wouldn't mind enabling -Wshadow for Cycles actually..

4 years agoFix small spelling error
Aaron Carlisle [Fri, 13 Jan 2017 04:36:08 +0000 (23:36 -0500)]
Fix small spelling error

4 years agoDynamic Paint: recursively search for island border edges.
Alexander Gavrilov [Tue, 3 Jan 2017 16:11:59 +0000 (19:11 +0300)]
Dynamic Paint: recursively search for island border edges.

It is quite likely in a triangulated mesh that the actual island edge
belongs to a different triangle than the current pixel; for example
consider corners of a triangulated axis aligned rectangle face that
have the additional edge: a pixel there will have to be assigned to
one of the triangles, but one of the edges of the original rectangle
can only be accessed through the other triangle.

Thus for robust operation it is necessary to do a recursive search.
The search is limited by requiring that it only goes through edges
that bring it closer to the target point, and also by depth as a

Differential Revision:

4 years agoDynamic Paint: provide margin of error for linking neighbors across seams.
Alexander Gavrilov [Tue, 3 Jan 2017 16:13:02 +0000 (19:13 +0300)]
Dynamic Paint: provide margin of error for linking neighbors across seams.

The code requires the pixel on the other side of the seam to be assigned
precisely to the expected triangle. This can cause false negatives around
vertices, where a pixel is likely to touch multiple triangles and thus
cannot be said to unambiguously belong to any one of them, so check
distance to the intended triangle and accept the result if it's close.

4 years agoDynamic Paint: improve UV island border handling in effects.
Alexander Gavrilov [Tue, 3 Jan 2017 15:50:15 +0000 (18:50 +0300)]
Dynamic Paint: improve UV island border handling in effects.

1. Forcibly symmetrize the neighbor relations, so that if A is neighbor
   of B, B is neighbor of A. The existing code is guaranteed to violate
   this if texture resolution is different between the sides of a seam.

2. In texture mode dynamic paint adds a 1 pixel wide border around the
   islands. These pixels aren't really part of the dynamic paint domain
   and thus by design can't have symmetrical neighbor relations. This
   means they can't be treated by effects like normal pixels.
   The simplest way to handle it in a consistent way is to exclude
   them from effects, but add an additional pass that recomputes them
   as average of their non-border neighbors, located on both sides of
   the seam.

4 years agoCycles: Allow up to 4 motion curve primitives per BVH node
Sergey Sharybin [Thu, 12 Jan 2017 17:23:23 +0000 (18:23 +0100)]
Cycles: Allow up to 4 motion curve primitives per BVH node

This avoids intersection AABB of different curve primitives
which makes it less ray-to-primitive intersections.

This gives about 30% speedup of hair rendering in the barber
shop scenes here. There is still some work to be done on those
files to solve major speed issues on certain frames.

4 years agoCycles: Prepare BVH traversal code to work with multiple curve primitives per node
Sergey Sharybin [Thu, 12 Jan 2017 17:20:19 +0000 (18:20 +0100)]
Cycles: Prepare BVH traversal code to work with multiple curve primitives per node

4 years agoCycles: Correct assert() for cases when there are multiple curves per BVH node
Sergey Sharybin [Thu, 12 Jan 2017 16:38:27 +0000 (17:38 +0100)]
Cycles: Correct assert() for cases when there are multiple curves per BVH node

4 years agoCycles: Use separate limit for motion primitives for BVH node limits
Sergey Sharybin [Thu, 12 Jan 2017 15:54:08 +0000 (16:54 +0100)]
Cycles: Use separate limit for motion primitives for BVH node limits

This way we can have different limits for regular and motion curves
which we'll do in one of the upcoming commits in order to gain some
percents of speedup.

The reasoning here is that motion curves are usually intersecting
lots of others bounding boxes, which makes it inefficient to have
single primitive in the leaf node.

4 years agoCycles: Change confusing logic of max leaf size check
Sergey Sharybin [Thu, 12 Jan 2017 14:48:21 +0000 (15:48 +0100)]
Cycles: Change confusing logic of max leaf size check

Maximal number of elements is supposed to be inclusive. That is what
it was always meant in this file and what @brecht considered still
the case in 6974b69c6172.

In fact, the commit message to that change mentions that we allowed
up to 2 curve primitives per leaf while in fact it was doing up to 1
curve primitive.

Making it real 2 primitives at a max gives about 5% slowdown for the
koro.blend scene. This is a reason why BVHParams.max_curve_leaf_size
was changed to 1 by this change.

4 years agoCycles: Cleanup, space prior to semicolon
Sergey Sharybin [Thu, 12 Jan 2017 14:30:56 +0000 (15:30 +0100)]
Cycles: Cleanup, space prior to semicolon

We don't have that in Blender style, no reason to violate it here.

4 years agoCycles: Cleanup, make curve functions private
Sergey Sharybin [Thu, 12 Jan 2017 14:28:19 +0000 (15:28 +0100)]
Cycles: Cleanup, make curve functions private

Not only they don't really follow naming convention (we don't use
camel case) but also was not necessary to keep them in the global
symbol table.

4 years agoCycles: Make it more clear message why curve motion attribute was removed
Sergey Sharybin [Thu, 12 Jan 2017 14:22:41 +0000 (15:22 +0100)]
Cycles: Make it more clear message why curve motion attribute was removed

4 years agoCycles: Use dedicated debug passes for traversed nodes and intersection tests
Sergey Sharybin [Thu, 12 Jan 2017 12:44:35 +0000 (13:44 +0100)]
Cycles: Use dedicated debug passes for traversed nodes and intersection tests

This way it's more clear whether some issue is caused by lots of geometry in
the node or by lots of "transparent" BVH nodes.

4 years agoCycles: Remove more duplicated code in debug passes logic
Sergey Sharybin [Thu, 12 Jan 2017 12:33:53 +0000 (13:33 +0100)]
Cycles: Remove more duplicated code in debug passes logic

4 years agoCycles: Fix wrong scaling of traversed instances debug pass
Sergey Sharybin [Thu, 12 Jan 2017 12:32:13 +0000 (13:32 +0100)]
Cycles: Fix wrong scaling of traversed instances debug pass

4 years agoCycles: Cleanup, remove duplicated code
Sergey Sharybin [Thu, 12 Jan 2017 12:31:35 +0000 (13:31 +0100)]
Cycles: Cleanup, remove duplicated code

4 years agoCycles: Cleanup, indentation within preprocessor
Sergey Sharybin [Thu, 12 Jan 2017 11:54:24 +0000 (12:54 +0100)]
Cycles: Cleanup, indentation within preprocessor

4 years agoCycles: Cleanup, use switch() instead of if-else chain
Sergey Sharybin [Thu, 12 Jan 2017 11:45:37 +0000 (12:45 +0100)]
Cycles: Cleanup, use switch() instead of if-else chain

About to add extra debug passes, which will be more clear to use switch().

4 years agoCycles: move hair particle settings to scene context
Sergey Sharybin [Tue, 11 Oct 2016 14:33:07 +0000 (16:33 +0200)]
Cycles: move hair particle settings to scene context

Since the beginning of times hair settings in cycles were global for
the whole scene but were located in the particle context. This causes
quite some trickery to get shots set up for the movies here in the
studio by forcing artists to create dummy particle system to change
settings of hair on the shot.

While ideally this settings should be properly become per-particle
system for the time being it will save sweat and blood to move the
settings to scene context.

Reviewers: brecht

Subscribers: jtheninja, eyecandy, venomgfx, Blendify

Differential Revision:

4 years agoCycles tests: Rework output messages
Sergey Sharybin [Thu, 12 Jan 2017 08:45:04 +0000 (09:45 +0100)]
Cycles tests: Rework output messages

Made them closer to how GTest shows the output, so reading test logs
is easier now (at least feels more uniform).

Additionally now we know how much time tests are taking so can tweak
samples/resolution to reduce render time of slow tests.

It is now also possible to enable colored messages using magic
CYCLESTEST_COLOR environment variable. This makes it even easier to
visually grep failed/passed tests using `ctest -R cycles -V`.

4 years agoAdd Add Modifiers tab to the NLA & VSE editors
Aaron Carlisle [Thu, 12 Jan 2017 06:03:23 +0000 (01:03 -0500)]
Add Add Modifiers tab to the NLA & VSE editors

This is a follow up to rBca935ab

Differential Revision:

4 years agoFix T50056: Dyntopo brush size shortcut broken using constant detail setting.
Julian Eisel [Wed, 11 Jan 2017 22:01:07 +0000 (23:01 +0100)]
Fix T50056: Dyntopo brush size shortcut broken using constant detail setting.

4 years agoUI: Try limiting 'x' icon to search buttons
Julian Eisel [Wed, 11 Jan 2017 21:11:13 +0000 (22:11 +0100)]
UI: Try limiting 'x' icon to search buttons

Reusing PROP_TEXTEDIT_UPDATE instead of adding a new property flag just for search strings. Currently it's only used for search strings anyway so seems fine for now.

Fixes T50336.

4 years agoSplit interp_weights_face_v3 into specific functions for tris and quads
Luca Rood [Wed, 11 Jan 2017 17:15:54 +0000 (15:15 -0200)]
Split interp_weights_face_v3 into specific functions for tris and quads

This splits `interp_weights_face_v3` into `interp_weights_tri_v3` and
`interp_weights_quad_v3`, in order to properly handle three sided polygons
without needing a useless extra index in your weight array. This also
improves clarity and consistency with other math_geom functions, thus
reducing potential future errors.

Reviewed By: mont29

Differential Revision:

4 years agoViewport SSAO: Fix normals not normalized
Clément Foucault [Wed, 11 Jan 2017 17:47:06 +0000 (18:47 +0100)]
Viewport SSAO: Fix normals not normalized

4 years agoCycles: Fix wrong motion blur when combining deformation motion blur with autosplit
Sergey Sharybin [Wed, 11 Jan 2017 15:32:57 +0000 (16:32 +0100)]
Cycles: Fix wrong motion blur when combining deformation motion blur with autosplit

The issue was that we used to compare number of vertices for mesh after the auto
smooth was applied (at the center of the shutter time) with number of vertices
prior to the auto smooth applied. This caused false-positive consideration of a
mesh as changing topology.

Now we do autosplit as early as possible and do it from blender side, so Cycles
does not need to re-implement splitting on it's side.

4 years agoCycles: Pass explicit subdivision type to object_to_mesh
Sergey Sharybin [Wed, 11 Jan 2017 15:23:54 +0000 (16:23 +0100)]
Cycles: Pass explicit subdivision type to object_to_mesh

This allows us to do some extra logic checks there based on particular
subdivision type.

Additionally avoids implicit cast of enum to bool.

4 years agoCopy autosmooth mesh settings BKE_mesh_new_from_object
Sergey Sharybin [Wed, 11 Jan 2017 15:04:39 +0000 (16:04 +0100)]
Copy autosmooth mesh settings BKE_mesh_new_from_object

This way render engine can first apply all modifiers on the
new mesh and then optionally perform autosmooth face splitting
on it.

4 years agoRNA: Expose autosmooth face splitting
Sergey Sharybin [Wed, 11 Jan 2017 14:59:32 +0000 (15:59 +0100)]
RNA: Expose autosmooth face splitting

This way render engine can request mesh to be auto-split and not
worry about implementing this functionality on it's own.

Please note that this split is to be performed prior to tessellation.

4 years agoCycles: Cleanup, whitespace around operator
Sergey Sharybin [Wed, 11 Jan 2017 14:16:22 +0000 (15:16 +0100)]
Cycles: Cleanup, whitespace around operator

4 years agoCycles: Improve logging of cases when motion blur is disabled
Sergey Sharybin [Wed, 11 Jan 2017 13:34:56 +0000 (14:34 +0100)]
Cycles: Improve logging of cases when motion blur is disabled

Next logical step is to expose this somehow to the interface.

4 years agoCleanup: Use more meaningful constants other than 0
Sergey Sharybin [Tue, 10 Jan 2017 23:08:16 +0000 (00:08 +0100)]
Cleanup: Use more meaningful constants other than 0

4 years agoAdd mid_v3_v3_array function and remove redundant functions
Luca Rood [Tue, 10 Jan 2017 19:46:31 +0000 (17:46 -0200)]
Add mid_v3_v3_array function and remove redundant functions

Other than implementing a `mid_v3_v3_array` function, this removes
`cent_tri_v3` and `cent_quad_v3` in favor of `mid_v3_v3v3v3` and
`mid_v3_v3v3v3v3` respectively.

Reviewed By: mont29

Differential Revision:

4 years agoUI Layout: fix some cases mixing fixed and expandable sizes
Bastien Montagne [Tue, 10 Jan 2017 15:19:10 +0000 (16:19 +0100)]
UI Layout: fix some cases mixing fixed and expandable sizes

When layout has only small buttons (buttons with icon and without label)
its size should be fixed. Code was modified to be able to add a new UI_ITEM_MIN
flag which indicates that the layout has only small fixed-width buttons.

Patch by @raa, with minor style edits by @mont29.

Reviewers: Severin, mont29

Reviewed By: mont29

Tags: #bf_blender, #user_interface

Differential Revision:

4 years agoCleanup: Strict CLang warning in Smoke module
Sergey Sharybin [Mon, 9 Jan 2017 12:12:43 +0000 (13:12 +0100)]
Cleanup: Strict CLang warning in Smoke module

4 years agoCleanup: Indentation
Sergey Sharybin [Mon, 9 Jan 2017 12:11:42 +0000 (13:11 +0100)]
Cleanup: Indentation

4 years agoCleanup: Don't use C++ comments style in C code
Sergey Sharybin [Mon, 9 Jan 2017 11:35:08 +0000 (12:35 +0100)]
Cleanup: Don't use C++ comments style in C code

4 years agoFix for T50373: lattices should not be able to get subsurf modifiers
Philipp Oeser [Mon, 9 Jan 2017 11:24:34 +0000 (12:24 +0100)]
Fix for T50373: lattices should not be able to get subsurf modifiers

Reviewers: mont29

Reviewed By: mont29

Subscribers: sergey

Differential Revision:

4 years agoFix T50385: Deadlock in BKE_libblock_remap_locked.
Bastien Montagne [Mon, 9 Jan 2017 09:43:23 +0000 (10:43 +0100)]
Fix T50385: Deadlock in BKE_libblock_remap_locked.

Am pretty sure node update should not touch to Main database like that,
but for now let's allow it, I guess the hack is needed for things like
Sverchok. ;)

4 years agoFix: Audio plays back incorrectly after rendering to a video file
Jörg Müller [Fri, 6 Jan 2017 17:18:20 +0000 (18:18 +0100)]
Fix: Audio plays back incorrectly after rendering to a video file


4 years agoMake button span the full width of the properties editor
Aaron Carlisle [Thu, 5 Jan 2017 20:41:14 +0000 (15:41 -0500)]
Make button span the full width of the properties editor

4 years agoRemove instances of old vector icons
Aaron Carlisle [Thu, 5 Jan 2017 04:21:45 +0000 (23:21 -0500)]
Remove instances of old vector icons

I checked and this makes consistent with other area of blender.

4 years agoShow 'Manipulate Center Points' in weight paint mode
Julian Eisel [Wed, 4 Jan 2017 23:09:42 +0000 (00:09 +0100)]
Show 'Manipulate Center Points' in weight paint mode

If the active object is in weight paint mode, but some armatures in pose mode, 'manipulate center points' still affects the transformation. See bd2034a749a9a9.

Also removed redundant check, we basically did the same check for paint modes twice.

4 years agoDynamic Paint: Fix random pixel flooding by absolute brush with spread.
Alexander Gavrilov [Wed, 4 Jan 2017 16:40:34 +0000 (19:40 +0300)]
Dynamic Paint: Fix random pixel flooding by absolute brush with spread.

If a very low wetness absolute alpha brush is used with spread and
drying effects enabled, some pixels will rapidly accumulate paint.
This happens because paint drying code applies a minimal wetness
threshold that causes the paint to instantly dry out.

Specifically, every frame the brush adds paint at the specified
absolute alpha and wetness set to the minimal threshold, spread
drops it below threshold, and finally drying moves all paint to
the dry layer. This drastically accelerates the rate of flow of
paint into the affected pixels.

Fortunately, the reason paint spread actually ends up decreasing
wetness turns out to be a simple floating point precision problem,
which can be easily fixed by restructuring the affected expression.

4 years agoFix (IRC reported) bad handling of Text data-block user count.
Bastien Montagne [Wed, 4 Jan 2017 13:07:38 +0000 (14:07 +0100)]
Fix (IRC reported) bad handling of Text data-block user count.

Reported on IRC by dfelinto, thanks.

Root of the issue was that opening a new text file would create
datablock with one user, when Text editor is actually a 'user one' user.

This was leaving Text datablocks in inconsitent user count, and
generating asserts in BKE_library area.

Also changed a weird piece of code related to that extra user thing in
main remapping func.

4 years agoFix T50369: Objects can't be deleted from scene when using "link group objects to...
Bastien Montagne [Wed, 4 Jan 2017 09:25:27 +0000 (10:25 +0100)]
Fix T50369: Objects can't be deleted from scene when using "link group objects to scene"

Main issue here was that in old usercount system 'user_real' did simply
not allow that kind of thing to work. With new pait of 'USER_EXTRA'
tags, it becomes possible to handle the case correctly, by merely refining
checks about indirectly use objects whene removing them from a scene.

Incidently, found another related bug, 'link group objects to scene' was not
incrementing objects' usercount - bad, very very bad!

4 years agoFix T50350: Quick Explode time frame problem
Dalai Felinto [Wed, 4 Jan 2017 09:13:28 +0000 (10:13 +0100)]
Fix T50350: Quick Explode time frame problem

The settings.frame_start rna was clamping frame start to frame end when frame start was bigger than frame end.
The fix is simply to set frame end first

4 years agoRevert "Remove double menu entries"
Aaron Carlisle [Tue, 3 Jan 2017 15:34:05 +0000 (10:34 -0500)]
Revert "Remove double menu entries"

This reverts commit e2d7efc9503720770b9652284e25006eecbec8d4.

4 years agoFix implicit size_t to int conversion.
Bastien Montagne [Tue, 3 Jan 2017 14:30:59 +0000 (15:30 +0100)]
Fix implicit size_t to int conversion.

Seems like it was erroring on some buildbots...

4 years agoFix: NLA "Strip Time" setting cannot be edited
Joshua Leung [Mon, 2 Jan 2017 22:42:50 +0000 (11:42 +1300)]
Fix: NLA "Strip Time" setting cannot be edited

This is a hacky fix for a regression introduced sometime after 2.76.
The "Strip Time" setting on NLA Strips could not be edited without the
value immediately jumping back to the current FCurve value (or 0.0 if no
keyframes existed); even enabling autokey wouldn't let you key the property.

Until we have proper overrides (that only lose their values on frame change),
it's best that this setting is editable, even if it does mean it you have to
manually change the frame to see the updated values.

4 years agoGPencil: Per-layer option to always show onion skinning
Joshua Leung [Mon, 2 Jan 2017 10:31:35 +0000 (23:31 +1300)]
GPencil: Per-layer option to always show onion skinning

Sometimes it can be useful to be able to keep onion skins visible in the
OpenGL renders and/or when doing animation playback. In particular, there
are two use cases where this is quite useful:
 1) For creating a cheap motion-blur effect, especially when the before/after
    values are also animated.
 2) If you've animated a shot with onion skinning enabled, the poses may end
    up looking odd if the ghosts are not shown (as you may have been accounting
    for the ghosts when making the compositions).

This option can be found as the small "camera" toggle between the "Use Onion Skinning"
and "Use Custom Colors" options.

4 years agoFix: Passed wrong last argument to function
Joshua Leung [Thu, 29 Dec 2016 01:34:39 +0000 (14:34 +1300)]
Fix: Passed wrong last argument to function