Sergey Sharybin [Mon, 25 Jan 2016 10:16:49 +0000 (11:16 +0100)]
Sequencer: Add option to use absolute mask animation time
This is handy for cases when mask is created on top of the edit and
used for tasks like color grading and other enhancement.
That was the main purpose of the masks which was totally broken in
6786ef6. Now it's possible to have masks created as both a part of
input movie roto process (which then better be re-mapped to the strip
timing) and as a grading tool (which should be using scene timing
for the animation).
Thanks artists from the Nieve for screaming about such a broken case.
Campbell Barton [Mon, 25 Jan 2016 09:25:56 +0000 (20:25 +1100)]
Docs: quiet warnings in reference doc syntax
Campbell Barton [Mon, 25 Jan 2016 09:25:28 +0000 (20:25 +1100)]
Docs: avoid plank comma in API reference
Brecht Van Lommel [Mon, 25 Jan 2016 08:32:17 +0000 (09:32 +0100)]
Fix T47218: OpenGL render with missing alpha, due to recent OpenGL refactoring.
Patch by Ralf Hölzemer.
Germano Cavalcante [Mon, 25 Jan 2016 07:18:42 +0000 (18:18 +1100)]
Transform: optimize vertex snap w/ nearest-to-ray
Use BLI_bvhtree_find_nearest_to_ray for vertex snapping,
avoids doing screen-space lookup on each vertex.
Germano Cavalcante [Mon, 25 Jan 2016 07:18:30 +0000 (18:18 +1100)]
BLI_kdopbvh: Add BLI_bvhtree_find_nearest_to_ray
Support for casting a ray through all nodes to find the closest
(not the first hit as with ray casting).
Germano Cavalcante [Mon, 25 Jan 2016 07:17:45 +0000 (18:17 +1100)]
Math Lib: Add dist_squared_ray_to_aabb_v3 utility
Campbell Barton [Mon, 25 Jan 2016 00:41:13 +0000 (11:41 +1100)]
Fix regression in sequencer overlay draw option
Drawing alpha backdrop would obscure image data behind the overlay.
Campbell Barton [Sun, 24 Jan 2016 21:33:22 +0000 (08:33 +1100)]
Correct fix for T47047
Caused new 2d views to initialize w/o scrollbars
Sergey Sharybin [Sun, 24 Jan 2016 20:25:52 +0000 (01:25 +0500)]
Fix lock release deadlock when acquiring pass with no data ready yet
There is no reason to do separate image buffer release when there's
found buffer but with empty rects because of the following reasons:
- All the acquire() calls are followed with corresponding release()
calls, regardless of whether image buffer was empty, missing or
whatever.
- It was done wrong -- since lock was passed as NULL, it'll only
de-reference the image buffer itself, this causes following:
* Wrong user counter since there'll subsequent release() call with
the proper lock passed to it.
* Global locks are to be released prior to the spin locks,
and such an extra release violated this rule.
Sergey Sharybin [Sun, 24 Jan 2016 20:23:02 +0000 (01:23 +0500)]
Fix missing render result release when alt-wheeling render pass menu
Sergey Sharybin [Sun, 24 Jan 2016 19:25:38 +0000 (00:25 +0500)]
Fix T47210: Compostiting, Bad AA using distort + undistort nodes
Compositor tried to be too much smart and avoid unneeded re-calculations of
the distortion model, but the way it was implemented is by falling back to
the nearest interpolation first.
We can't really cheat here, better to just look into faster models estimation.
Sergey Sharybin [Sun, 24 Jan 2016 18:38:24 +0000 (23:38 +0500)]
Fix T47217: Crash when tracking specific scene
Sergey Sharybin [Sun, 24 Jan 2016 18:15:58 +0000 (23:15 +0500)]
Fix yet another case broken after glLineWidth() changes
Original patch didn't have any tests or what? =\
Thomas Dinges [Sun, 24 Jan 2016 12:31:07 +0000 (13:31 +0100)]
Cycles: Tweak Cycles samples again.
Now we use 128 for final, and 32 for preview. These values should be a bit
better (power of two, also faster with CMJ).
Sergey Sharybin [Sun, 24 Jan 2016 12:05:02 +0000 (17:05 +0500)]
Cycles: Fix typo in flags check
Thomas Dinges [Sun, 24 Jan 2016 11:31:36 +0000 (12:31 +0100)]
Cleanup: Remove outdated comment in volume code.
Thanks to jesterking for finding this one.
Sergey Sharybin [Sun, 24 Jan 2016 11:24:36 +0000 (16:24 +0500)]
Add missing line width in the 2d view grid drawing
Campbell Barton [Sun, 24 Jan 2016 11:06:05 +0000 (22:06 +1100)]
More missing calls to glLineWidth
Sergey Sharybin [Sun, 24 Jan 2016 11:01:57 +0000 (16:01 +0500)]
Depsgraph: Add missing relations between driver and particle settings
While it's not really working reliably to drive something on runtime
it's handy to have such possibility to tune particle system using
proxies in the scene files.
Just another quick thing for the Nieve project.
Campbell Barton [Sun, 24 Jan 2016 09:30:41 +0000 (20:30 +1100)]
Fix glLineWidth state use w/ grid floor and brush
Sergey Sharybin [Sun, 24 Jan 2016 09:01:21 +0000 (14:01 +0500)]
Fix tile highlight corners are too fat since recent changes in glLineWidth policy
Alexander Gavrilov [Thu, 21 Jan 2016 20:03:14 +0000 (23:03 +0300)]
Fix Smooth Weight expand logic
Since weight_other is equal to weight_accum_prev[i_other], the original
lines actually are no-op. The visible effect is that when smoothing just
two vertices with weights 1 and 0, the expand value has no effect until
it reaches exactly 1. This change makes it gradual.
Campbell Barton [Sun, 24 Jan 2016 03:25:01 +0000 (14:25 +1100)]
Docs: minor edits to code comments
Campbell Barton [Sun, 24 Jan 2016 01:21:13 +0000 (12:21 +1100)]
Prevent accidental fall-through in switch
Campbell Barton [Sun, 24 Jan 2016 01:13:37 +0000 (12:13 +1100)]
Cleanup: style
Campbell Barton [Sun, 24 Jan 2016 01:12:42 +0000 (12:12 +1100)]
Correct error in recent vector transform commit
Sergey Sharybin [Sat, 23 Jan 2016 20:33:53 +0000 (01:33 +0500)]
Cycles: Make Clang 3.6 happy with const debug flags reference
For some reason it did not like the explicit const qualifier for a
custom type.
Sergey Sharybin [Sat, 23 Jan 2016 20:31:36 +0000 (01:31 +0500)]
Fix T47132: Cycles Rendering Tiles Indicator Limited to 16
Alexander Romanov [Sat, 23 Jan 2016 12:27:36 +0000 (15:27 +0300)]
Vector Transform node support for GLSL mode and the internal renderer
The Vector Transform node is a useful node which is present in the Cycles renderer.
{
F144283}
This patch implements the Vector Transform node for GLSL mode and the internal renderer.
Example: {
F273060}
Alexander (Blend4Web Team)
Reviewers: brecht, campbellbarton, sergey
Reviewed By: campbellbarton, sergey
Subscribers: psy-fi, duarteframos, RobM, lightbwk, sergey, AlexKowel, valentin_b4w, Evgeny_Rodygin, yurikovelenov
Projects: #bf_blender:_next
Differential Revision: https://developer.blender.org/D909
Kévin Dietrich [Sat, 23 Jan 2016 07:39:29 +0000 (08:39 +0100)]
Implementation of OpenVDB as a possible cache format for smoke
simulations.
This commits implements OpenVDB as an extra cache format in the Point
Cache system for smoke simulations. Compilation with the library is
turned off by default for now, and shall be enabled when the library is
present.
A documentation of its doings is available here: http://
wiki.blender.org/index.php/User:Kevindietrich/OpenVDBSmokeExport.
A guide to compile OpenVDB can be found here (Linux): http://
wiki.blender.org/index.php?title=Dev:Doc/Building_Blender/Linux/
Dependencies_From_Source#OpenVDB
Reviewers: sergey, lukastoenne, brecht, campbellbarton
Reviewed By: brecht, campbellbarton
Subscribers: galenb, Blendify, robocyte, Lapineige, bliblubli,
jtheninja, lukasstockner97, dingto, brecht
Differential Revision: https://developer.blender.org/D1721
Mike Erwin [Sat, 23 Jan 2016 07:27:32 +0000 (02:27 -0500)]
OpenGL: combine multiple GL_LINES into fewer draw calls
Incidentally, one of the removed glBegin(GL_LINE) calls should’ve used
GL_LINES with an S, which was a GL_INVALID_ENUM error.
Mike Erwin [Sat, 23 Jan 2016 06:13:36 +0000 (01:13 -0500)]
OpenGL: tiny state-change fix
Only re-enable blending if the function that disables it was actually
called.
Still not ideal flipping this on & off repeatedly, but now there are
fewer flips.
Mike Erwin [Sat, 23 Jan 2016 05:58:32 +0000 (00:58 -0500)]
OpenGL: call glLineWidth less often
Each LINES draw call is now responsible for its own line width. No need
to set it back to its 1.0 default after every draw.
This eliminates half our calls to glLineWidth , similar to last week’s
work on glPointSize.
Campbell Barton [Sat, 23 Jan 2016 02:44:20 +0000 (13:44 +1100)]
Math Lib: optimize segment-plane clipping
Calculate the clipped min/max factor along the segment,
only applying to the coordinates at the end (will give better precision too).
Also make split input/output args.
Thomas Dinges [Fri, 22 Jan 2016 22:19:23 +0000 (23:19 +0100)]
Cycles: Change several default values (first batch).
This changes the following defaults:
- Render settings:
* Samples: 100
* Preview Samples: 50
* Filter: Blackmann-Harris
* Tile Order: Hilbert Spiral
- Lamp settings:
* Use MIS: On
- Material settings:
* Volume Sampling: Multiple Importance
Old files are not affected, I tested the versioning code back and forth.
More changes are to come (World, BVH...) but that needs a bit more work.
Bastien Montagne [Fri, 22 Jan 2016 18:32:47 +0000 (19:32 +0100)]
Fix part of T47025: Shadow pass error: Black shadow.
Skipping computing of shadow pass when diffuse color is pitch black is fine... unless
you actually need/want that shadow pass!
The 'noisy' issue with picture texture remains a bit mysterious to me currently. :/
Joshua Leung [Fri, 22 Jan 2016 12:56:23 +0000 (01:56 +1300)]
Fix T45523: "View All" in Graph Editor does not respect Y axis with small values
The previous threshold used to prevent the Graph Editor from imploding if
presented with a flat (or nearly flat, accounting for floating point precision)
curve was too coarse, meaning that in some cases, the "View All" tool would end
up behaving weirdly.
Joshua Leung [Fri, 22 Jan 2016 12:50:11 +0000 (01:50 +1300)]
Dopesheet: Make frame range for new editor instances saner, by basing them on the current frame range
This brings the dopesheet more in line with the NLA and Graph Editors, where
similar initial ranges were also used. The benefit is that it should save
animators a small amount of time getting the dopesheet timeline into the
right zoom level before starting work.
Bastien Montagne [Fri, 22 Jan 2016 11:09:31 +0000 (12:09 +0100)]
Fix T46657: VSE: Strip length jumps to a negative number.
Mike Erwin [Fri, 22 Jan 2016 07:44:33 +0000 (02:44 -0500)]
OpenGL: cleanup
- LINE_STRIP to LINES when only drawing one
- group state changes for easier reading
- general cleanup
Mike Erwin [Fri, 22 Jan 2016 06:57:31 +0000 (01:57 -0500)]
OpenGL: remove unneeded state changes
UI_panel_category_draw_all was setting PolygonMode to LINES before
drawing LINES.
stitch_draw was setting PolygonMode to its default FILL value — any
function that deviates from the default should’ve changed it back to
FILL.
Mike Erwin [Fri, 22 Jan 2016 06:45:39 +0000 (01:45 -0500)]
OpenGL: draw box outlines with lines, not rectangles
2 reasons:
- fewer state changes (PolygonMode)
- glRect goes away in later GL versions
Mike Erwin [Fri, 22 Jan 2016 06:29:05 +0000 (01:29 -0500)]
OpenGL: remove glGet with unused result
This code is disabled but still…
Mike Erwin [Fri, 22 Jan 2016 06:11:23 +0000 (01:11 -0500)]
OpenGL: remove extra vertex in arrowhead
Now draws 2 lines instead of 3 (with a zero-length middle).
Same visual result.
Mike Erwin [Fri, 22 Jan 2016 06:03:15 +0000 (01:03 -0500)]
OpenGL: pull glBegin/End out of loops
When drawing 2D grid and 3D axes.
Joshua Leung [Fri, 22 Jan 2016 02:31:20 +0000 (15:31 +1300)]
GPencil: Select Grouped (Shift G)
This commit adds a "Select Grouped" operator. Although it is set up to
allow more types of "grouping" in future, it current only supports
a single mode (i.e. "Same Layer"). As a result, it does not pop up
any menus/submenus in all the usual places.
Mike Erwin [Fri, 22 Jan 2016 02:07:17 +0000 (21:07 -0500)]
OpenGL: fewer state changes for wireframe PBVH
Wireframe drawing doesn’t use the following GL state, so don’t update
these:
- ShadeModel
- NormalPointer
- ColorPointer
Normal & color data are still uploaded as part of the interleaved VBO,
but those attributes are disabled for wireframe.
Joshua Leung [Fri, 22 Jan 2016 00:59:54 +0000 (13:59 +1300)]
Hacky compile fix for mingw compile issue reported by bat3a on bf-committers
I've been using this fix in another branch locally, so it seems to work fine.
The other #ifdef checks should be checked on too, as __MINGW32__ and __MINGW64__
do NOT seem to be defined when compiling that file
Joshua Leung [Fri, 22 Jan 2016 00:55:19 +0000 (13:55 +1300)]
Fix: Breakdowner value would jump when starting the tool a second time during a Blender session
As reported on the Blender Institute Podcast 009. See my comment on the cloud blog
for further details.
When used a second (or third, etc.) time, the breakdowner's (Shift-E) percentage value
would initially be the last-used value (e.g. 33% or 75%), before suddenly jumping
to another value as soon as the mouse moves. The cause of this behaviour was that it
was initially reusing the value from the previous time the operator was run, but then
as soon as the mouse moved, it would snap to the percentage implied by the mouse position.
(Note: The mapping from mouse position to percentage is "absolute" - i.e. the percentage
is based on how far across the 3D view the mouse is, instead of being some kind of
relative offset thing).
To make things a bit less jumpy, I've changed the behaviour so that the mouse position
always gets used immediately, instead of having it jump suddenly only when making
some mouse movement.
Sergey Sharybin [Thu, 21 Jan 2016 19:11:37 +0000 (00:11 +0500)]
Sequencer: Speedup gaussian blur effect
Apply X and Y blur as separate step, this reduces number of accumulations
required and makes effect more realtime.
Another quick thing for the Nieve project.
Martijn Berger [Thu, 21 Jan 2016 16:21:32 +0000 (17:21 +0100)]
MS Visual Studio 2015 does not find std::inserter
Campbell Barton [Thu, 21 Jan 2016 10:06:49 +0000 (21:06 +1100)]
Sculpt: pinch/inflate support for snake-hook
Snake-hook tended to loose volume along the stroke,
now with pinch > 0.5 its possible to sculpt shapes without loosing volume.
Campbell Barton [Thu, 21 Jan 2016 10:05:49 +0000 (21:05 +1100)]
Sculpt: Add rake option to snake-hook
This allows for dragging out shapes that rotate to follow the cursor motion.
Values over 1 can be set for 'interesting' artistic effects.
Thomas Dinges [Thu, 21 Jan 2016 08:00:10 +0000 (09:00 +0100)]
Cycles: Improve UI feedback for light samples.
Fix T47213.
There was actually no real bug here, just clarify now in the UI that Mesh, World and Lamp samples only have an effect if we sample all lights (direct or indirect).
Campbell Barton [Thu, 21 Jan 2016 07:46:17 +0000 (18:46 +1100)]
Add missing weight paint selection mirror
Was lost resolving merge-conflict.
Campbell Barton [Thu, 21 Jan 2016 00:03:37 +0000 (11:03 +1100)]
Correct comments & some explanation from last commit
Campbell Barton [Wed, 20 Jan 2016 23:30:17 +0000 (10:30 +1100)]
Remove errors for unsupported math operations
Campbell Barton [Wed, 20 Jan 2016 22:05:52 +0000 (09:05 +1100)]
Cleanup: line length, indentation
Alexander Gavrilov [Wed, 20 Jan 2016 21:03:15 +0000 (08:03 +1100)]
Weight Paint: Make multi-paint & mirror work as if bone selection was symmetric
The simplest way of handling mirroring in multi-paint is creating a
uniform symmetric selection and relying on existing symmetric weights
to direct changes to the appropriate vertex groups. This already works
if mirror bones are selected manually, and can be made easier to use
by doing it implicitly.
Alexander Gavrilov [Tue, 19 Jan 2016 12:17:13 +0000 (15:17 +0300)]
Remove old multipaint related argument from wpaint_blend.
With multipaint based on collective weight there is no need for this.
Alexander Gavrilov [Tue, 19 Jan 2016 11:56:28 +0000 (14:56 +0300)]
Weight Paint: Multi-paint support for blur tool
Use the collective weight when using blurring.
This brings blur in sync with the rest of multi-paint modifications.
Also, blur has no business calling `defvert_verify_index` anyway when
it simply wants to read weights.
Alexander Gavrilov [Tue, 19 Jan 2016 11:12:22 +0000 (14:12 +0300)]
Delete unused code, separate for better diff appearance.
Alexander Gavrilov [Tue, 19 Jan 2016 11:54:47 +0000 (14:54 +0300)]
Weight Paint: multi-paint uses collective weights
Similarly, the displayed weight distribution should be used as the
target of brush application instead of the invisible active group.
Multi-paint is split into a new function because all the calls to
defvert_verify_index at the top of the old code should never be
done in multi-paint mode.
Alexander Gavrilov [Tue, 19 Jan 2016 15:57:52 +0000 (18:57 +0300)]
Weight Paint: 'Sample' now supports multi-paint
Since the coloring uses sum or average of the weights of all selected
groups, the weight pick tool should also use that instead of reading
the weight of the single active group that you can't see.
Alexander Gavrilov [Tue, 19 Jan 2016 17:30:50 +0000 (20:30 +0300)]
Weight Paint: reduce alert color brightness
This condition can actually happen quite often if weight painting for
a rig that uses separate control bones, so the color shouldn't be so
bright that it's hard to look at for a significant amount of time.
Bastien Montagne [Wed, 20 Jan 2016 19:39:18 +0000 (20:39 +0100)]
Cleanup: remove remainings of OMP in sculptpaint area.
Bastien Montagne [Wed, 20 Jan 2016 18:43:45 +0000 (19:43 +0100)]
Particle_system.c: OMP -> BLI_task.
The threaded code is twice quicker now (from an average of 20ms/frame to 10ms/frame
while baking 10000 particles here e.g.)!
Think this is mostly due to usage of 'dynamic' scheduler in OMP code though,
from my experience so far this tends to have dramatic effects over performances,
static scheduler is usually much much more efficient.
Bastien Montagne [Wed, 20 Jan 2016 16:05:06 +0000 (17:05 +0100)]
paint_mask.c: OMP -> BLI_stack.
Bastien Montagne [Wed, 20 Jan 2016 13:54:57 +0000 (14:54 +0100)]
Fix error in rBa6eae7339190.
Campbell Barton [Wed, 20 Jan 2016 09:41:47 +0000 (20:41 +1100)]
Fix T43896: Knife Project fails when zoomed out
While knife-project still uses screen-space projection,
use much lower snap thresholds when projecting.
Sergey Sharybin [Wed, 20 Jan 2016 09:30:34 +0000 (10:30 +0100)]
Fix T46243: New Depsgraph: changing action misses relations update tag
Bastien Montagne [Wed, 20 Jan 2016 09:03:14 +0000 (10:03 +0100)]
Fix T47198: Broken UV/VCol in BI and Cycles with some degenerated faces - BI part.
Problem is actually similar in both engines - in some cases, we changed
'natural' quad splitting order to alternative one, without properkly 'notifying'
UV/VCol/other tessface data about it.
So code would use a 'wrong' triangle of UVs etc.
Fix for Cycles was committed by sergey as rBa6eae7339190d1.
Sergey Sharybin [Wed, 20 Jan 2016 08:13:04 +0000 (09:13 +0100)]
Fix (partial) T47198: Cycles have broken UVs in some degenerated quads cases
The issue was discontinuity in logic when importing vertices from blender
and then importing data layers regardless of how we split the face. Quite
interesting we didn't notice this issue before.
Thanks Bastien for the investigation, based on D1742 but redid it to make
patch a bit more clear to follow.
Campbell Barton [Wed, 20 Jan 2016 04:35:51 +0000 (15:35 +1100)]
Fix for tangent regression w/ looptri changes
LoopTri changes in 2.76 calculated all tangents as triangles,
this gave different results though in most cases it was hard to notice.
Though no bugs were reported we should keep our tangents compatible with other users of mikktspace.
Campbell Barton [Wed, 20 Jan 2016 04:05:01 +0000 (15:05 +1100)]
Cleanup: style, use const
Campbell Barton [Wed, 20 Jan 2016 06:09:18 +0000 (17:09 +1100)]
error in last commit
Campbell Barton [Wed, 20 Jan 2016 06:00:12 +0000 (17:00 +1100)]
Cleanup: naming convention
Follow isect_ray_tri_watertight_v3 naming.
Alexander Gavrilov [Mon, 18 Jan 2016 19:00:56 +0000 (22:00 +0300)]
Support multi-paint & show zero-weights as black
Specifically, when only one bone is selected and it's not really active.
(With multiple bones on the other hand that behavior is forced on,
since multi-paint can't modify purely zero weight verts and that's important.)
Sergey Sharybin [Tue, 19 Jan 2016 21:56:37 +0000 (22:56 +0100)]
Carve: Remove empty implementation files
Sergey Sharybin [Tue, 19 Jan 2016 21:51:43 +0000 (22:51 +0100)]
Cycles: Fix OpenCL kernel compilation after the bake commit
There is no function pointers in OpenCL specification. For as long
as we want to support this platform we should follow the specifications.
While the code is not totally optimal now, it should not be that huge
of performance issue on CPU since it does jump tables just nicely, so
it's not that much extra computation here.
Sergey Sharybin [Tue, 19 Jan 2016 21:28:16 +0000 (22:28 +0100)]
Cycles: Pass missing shader filter argument to CUDA and OpenCL kernels
Bastien Montagne [Tue, 19 Jan 2016 19:31:06 +0000 (20:31 +0100)]
Usual i18n/UI messages tweaks.
Sergey Sharybin [Tue, 19 Jan 2016 17:38:41 +0000 (18:38 +0100)]
Cycles: Add a debug flag to disable QBVH
Sergey Sharybin [Tue, 19 Jan 2016 14:53:43 +0000 (15:53 +0100)]
Sequencer: Implement Tone Map strip modifier
Behaves same exact way as compositor node, but could be applied
in the sequencer and used as a grading tool.
Requested by the Nieve project artists.
Bastien Montagne [Tue, 19 Jan 2016 12:24:03 +0000 (13:24 +0100)]
Fix T47203: Render Crash due to missing zbuf_float handling in IMB scaling.
Sergey Sharybin [Tue, 19 Jan 2016 09:55:40 +0000 (14:55 +0500)]
Fix T47201: Cycles+OSL keeps image files open until Blender exits
Now image will be opened for while render session is active, this is
needed to keep image cache working correctly. But stopping render
should now release all files descriptors.
Campbell Barton [Tue, 19 Jan 2016 09:44:57 +0000 (20:44 +1100)]
GTests: were using C++11 feature
Sergey Sharybin [Tue, 19 Jan 2016 09:00:53 +0000 (14:00 +0500)]
Libmv: Solve some strict warnings in tests
Campbell Barton [Tue, 19 Jan 2016 08:54:17 +0000 (19:54 +1100)]
GTests: split array_utils tests
Campbell Barton [Tue, 19 Jan 2016 01:37:26 +0000 (12:37 +1100)]
CMake: check for LLVM static library by default
Even when static option isn't enabled, use the static library path if the dynamic library isn't found.
Campbell Barton [Mon, 18 Jan 2016 22:14:35 +0000 (09:14 +1100)]
Weight Paint: Add lock-aware normalize
D1713 from @angavrilov (with own edits)
The way current weight paint code works is that instead of making normalization lock aware, a separate `enforce_locks` function is called to do a different kind of normalization, hoping that by the time real normalize is called, there is nothing for it to do. The problem is that:
- That different normalization is based on adding the same amount to all unlocked groups, whereas true normalize uses multiplication to preserve ratio between them. The multiplicative approach should match the way weights operate better.
- If `enforce_locks` fails to achieve perfect normalization, true normalize will change locked groups.
Try to fix this by replacing `enforce_locks` with true lock-aware normalization support.
Supporting locked groups in normalize means that freezing the active group can make full normalization impossible if too much weight was added or removed, so it may be necessary to do two normalize passes. This is similar to how enforce_locks operates.
Also, now there is no need to go through the multi-paint branch just because of the locks. In the actual multi-paint case, the same normalize code can be used via a temporary flag array that represents the union of selected and locked groups.
User-visible effect should be:
- Auto-Normalize doesn't change behavior vertex to vertex depending on whether it has any locked groups.
- It never changes locked groups; if you lock some groups and start painting with seriously non-normalized weights, it's assumed you intended that.
- It never adds vertices to new groups, since the computer can't do that intelligently anyway - it was especially broken in case of mirroring.
- It always acts to preserve the ratio between groups it changes, instead of (sometimes, see point 1) adding or subtracting the same amount.
Campbell Barton [Mon, 18 Jan 2016 20:15:27 +0000 (07:15 +1100)]
GTests: array_utils
Campbell Barton [Mon, 18 Jan 2016 20:00:55 +0000 (07:00 +1100)]
BLI_array_utils: add binary and/or functions
Campbell Barton [Mon, 18 Jan 2016 20:50:07 +0000 (07:50 +1100)]
Ignore const qualifier when comparing types
Campbell Barton [Mon, 18 Jan 2016 09:10:18 +0000 (20:10 +1100)]
Cleanup: style
Sybren A. Stüvel [Mon, 18 Jan 2016 09:20:08 +0000 (10:20 +0100)]
rather then → rather than
Mike Erwin [Mon, 18 Jan 2016 04:26:23 +0000 (23:26 -0500)]
OpenGL: remove ARB_fragment_program comment
This a list of OpenGL extensions used. Minus one thanks to
kevindietrich’s smoke work!
https://developer.blender.org/D1694
Campbell Barton [Mon, 18 Jan 2016 02:15:38 +0000 (13:15 +1100)]
Transform: no need to store distance to snap point
Compare squared distance to snap target since the value is only ever used for comparison.
Campbell Barton [Mon, 18 Jan 2016 01:03:43 +0000 (12:03 +1100)]
Fix T29153: Rotate & scale ignore snapping points
Checking for 'Closest' here isn't needed since
TransSnap.snapTarget callback is already ensuring the selected target is the closest.
Also don't reuse the pre-calculated distance,
since its only valid to do this when there are no snap points
and this isn't a significant gain to avoid the extra calculation - run once per update.