4 years agoFix T48732: New GGX breaks OpenCL kernel
Sergey Sharybin [Tue, 28 Jun 2016 12:11:17 +0000 (17:11 +0500)]
Fix T48732: New GGX breaks OpenCL kernel

Make sure we don't perform any implicit address space conversion.

A bit annoying, but less intrusive approaches (like using temp private
variable in .cl kernel) do not work correct here.

Using generic address space will help from code side here, but will
be somewhat slower due to extra things happening as far as i know.

4 years agoCleanup: use bool for writefile
Campbell Barton [Tue, 28 Jun 2016 11:00:00 +0000 (21:00 +1000)]
Cleanup: use bool for writefile

4 years agowritefile: replace most struct lookups /w constants
Campbell Barton [Tue, 28 Jun 2016 10:05:42 +0000 (20:05 +1000)]
writefile: replace most struct lookups /w constants

Removes many hash lookups per file-save and undo-step.

4 years agoCleanup: code-style
Campbell Barton [Tue, 28 Jun 2016 07:35:35 +0000 (17:35 +1000)]
Cleanup: code-style

Other changes here planned which touch many lines, so run cleanup first.

4 years agoFix T48753: VSE must restart for international fonts
Campbell Barton [Tue, 28 Jun 2016 06:18:17 +0000 (16:18 +1000)]
Fix T48753: VSE must restart for international fonts

4 years agoGHOST/X11: Hotplug support for xinput
Campbell Barton [Tue, 28 Jun 2016 03:34:53 +0000 (13:34 +1000)]
GHOST/X11: Hotplug support for xinput

Allows to plug/unplug different tablets while Blender is running.

Also fixes crash unplugging tablet while Blender runs (T48750).

4 years agoRNA: resolve assert w/ no languages available
Campbell Barton [Tue, 28 Jun 2016 02:36:21 +0000 (12:36 +1000)]
RNA: resolve assert w/ no languages available

4 years agoRNA: perform reverse search on operators
Campbell Barton [Tue, 28 Jun 2016 02:11:34 +0000 (12:11 +1000)]
RNA: perform reverse search on operators

In most the last added operator is being handles.

4 years agoCleanup: Python imports
Campbell Barton [Tue, 28 Jun 2016 01:58:38 +0000 (11:58 +1000)]
Cleanup: Python imports

4 years agoFix MSVC error, co_return now a reserved word
Campbell Barton [Mon, 27 Jun 2016 22:31:52 +0000 (08:31 +1000)]
Fix MSVC error, co_return now a reserved word

D2073 by @LazyDodo

4 years agoFix (unreported) wrong ID type check in Text editor's ID remap callback.
Bastien Montagne [Mon, 27 Jun 2016 15:40:08 +0000 (17:40 +0200)]
Fix (unreported) wrong ID type check in Text editor's ID remap callback.

4 years agoBendy Bones Instability Fix - Second Attempt
Joshua Leung [Mon, 27 Jun 2016 14:52:20 +0000 (02:52 +1200)]
Bendy Bones Instability Fix - Second Attempt

So the error seems to be in cubic_tangent_factor_circle_v3(),
which was introduced with D2001.

I've tweaked the most obvious culprit here - the epsilon factor.
It used to be 10^-7, but I've reduced it down to 10^-5 now,
and it's looking a lot more stable now :)


BTW, about the derivation of the magic 0.390464 factor I briefly subbed back
as a workaround for this bug, see:

4 years agoBendy Bones: Temporary workaround for instability caused by D2001 when using custom...
Joshua Leung [Mon, 27 Jun 2016 14:20:25 +0000 (02:20 +1200)]
Bendy Bones: Temporary workaround for instability caused by D2001 when using custom handle bones

It's probably some numeric precision issue, but until we figure out exactly what's
going wrong here, let's just revert back to the hardcoded value that was used here
successfully for years without issues.

4 years agoFix T48740: User could remap indirect libdata usages from outliner.
Bastien Montagne [Mon, 27 Jun 2016 13:43:04 +0000 (15:43 +0200)]
Fix T48740: User could remap indirect libdata usages from outliner.

Remapping indirect usage of IDs is forbidden from user space, this is calling for
nice nightmare with libraries handling (and undo crash, among other things).

Not sure why I was 'laxist' about indirect usage cases detection like that,
for now just consider any ID used by another linked datablock as indirect usage case!

Also, added some error/warning reports to Outliner's remap code.

4 years agoFCurve Auto Colours: "XYZ to RGB" works for Quaternions too now
Joshua Leung [Mon, 27 Jun 2016 12:25:48 +0000 (00:25 +1200)]
FCurve Auto Colours: "XYZ to RGB" works for Quaternions too now

The "W" channel will get a yellowish colour (i.e. a blend between the X/R and
Y/G axis colours), while the XYZ will behave as they do for other transforms.

4 years agoPartial fix for T48734
Joshua Leung [Mon, 27 Jun 2016 07:01:25 +0000 (19:01 +1200)]
Partial fix for T48734

The create drivers operator should not use the "Transform Channel" variable type
when driving one transform with another on the same object/bone. Otherwise, you
end up with a situation which technically results in a bit of a pseudo-dependency

4 years agoCode Cleanup: Use bools not shorts
Joshua Leung [Mon, 27 Jun 2016 03:47:44 +0000 (15:47 +1200)]
Code Cleanup: Use bools not shorts

4 years agoCtrl-Shift-C: Made it easier to add constraints between bones in different armatures
Joshua Leung [Mon, 27 Jun 2016 03:42:06 +0000 (15:42 +1200)]
Ctrl-Shift-C: Made it easier to add constraints between bones in different armatures

The Ctrl-Shift-C operator to add constraints between a pair of selected items,
for example, between two objects, or between two bones (in the same armature).

This commit makes it possible to use this operator to add a constraint where the
target is a bone from another object - e.g. to make a deform bone follow the control
bone in another armature, or to make an object use a bone as a tracking target.

1) Ensure you are in Pose Mode, then select the bone to use as the target
2) Shift-Select the other object and/or the bone that's going to get the constraint
3) Ctrl-Shift-C

4 years agoFix (unreported) potential buffer overflow with BLO_library_path_explode() usage.
Bastien Montagne [Mon, 27 Jun 2016 10:38:12 +0000 (12:38 +0200)]
Fix (unreported) potential buffer overflow with BLO_library_path_explode() usage.

Also added warning to func doc, let's try to avoid this in future (for until we
pass string length systematically...).

4 years agoFix T48741: File browser back button doesn't work from inside Blend (library) file.
Bastien Montagne [Mon, 27 Jun 2016 08:54:17 +0000 (10:54 +0200)]
Fix T48741: File browser back button doesn't work from inside Blend (library) file.

Problem was in fact slightly wider, File space was nearly not taking into account
library navigation case and its 'virtual' directoris, except in a few places.

Add a wrapper around BLI_is_dir that also check for lib paths, and used it in
ED_file_change_dir(), such that we now always check path is a
valid directory - in the filebrowser context, not filesytem context. ;)

4 years agoCycles: Fix corner case of human readable number returning empty string
Sergey Sharybin [Mon, 27 Jun 2016 08:49:25 +0000 (13:49 +0500)]
Cycles: Fix corner case of human readable number returning empty string

4 years agoFix T48717: Modal operators called from Py omit reports from the UI
Campbell Barton [Mon, 27 Jun 2016 07:09:52 +0000 (17:09 +1000)]
Fix T48717: Modal operators called from Py omit reports from the UI

4 years agoRename script stub
Campbell Barton [Mon, 27 Jun 2016 06:04:59 +0000 (16:04 +1000)]
Rename script stub

Was clear from name this is to run external scripts.

4 years agoFix T48733: World background fails in 3d-view
Campbell Barton [Mon, 27 Jun 2016 05:32:52 +0000 (15:32 +1000)]
Fix T48733: World background fails in 3d-view

Missing from fix for T48555.
Unfortunately duplicates code.

4 years agoFix T48743: Broken menu key accelerators
Campbell Barton [Mon, 27 Jun 2016 04:08:36 +0000 (14:08 +1000)]
Fix T48743: Broken menu key accelerators

Regression caused by fc96110b

4 years agoCleanup: unnecessary NULL check
Campbell Barton [Mon, 27 Jun 2016 02:54:56 +0000 (12:54 +1000)]
Cleanup: unnecessary NULL check

4 years agoDocs: arg names
Campbell Barton [Mon, 27 Jun 2016 03:20:56 +0000 (13:20 +1000)]
Docs: arg names

4 years agoDocs: minor edits to writefile comments
Campbell Barton [Mon, 27 Jun 2016 01:21:03 +0000 (11:21 +1000)]
Docs: minor edits to writefile comments

4 years agoFix T48732 v2: New GGX breaks OpenCL kernel
Lukas Stockner [Sat, 25 Jun 2016 22:46:27 +0000 (00:46 +0200)]
Fix T48732 v2: New GGX breaks OpenCL kernel

As far as I can see, the second issue there was that the functions receive a pointer to a member variable of the
ShaderData, which is stored in global memory. However, this means that the pointer points to global memory as well,
therefore OpenCL requires the ccl_addr_space "keyword" in front of the pointer.
With this commit, the OpenCL kernels build on Linux with the Intel CPU OpenCL runtime - however, they already did
without the change and I don't have an AMD card, so I can't really test whether the AMD runtime is happy as well now.

4 years agoCleanup: Get rid of remaining 'BKE_<id>_unlink()' functions, no more used anyway.
Bastien Montagne [Sat, 25 Jun 2016 16:35:54 +0000 (18:35 +0200)]
Cleanup: Get rid of remaining 'BKE_<id>_unlink()' functions, no more used anyway.

4 years agoCleanup: get rid of BKE_text_unlink(), replace by usage of generic BKE_libblock_...
Bastien Montagne [Sat, 25 Jun 2016 16:12:23 +0000 (18:12 +0200)]
Cleanup: get rid of BKE_text_unlink(), replace by usage of generic BKE_libblock_... API.

4 years agoCleanup: remove RNA's `ID.destroy()` function.
Bastien Montagne [Sat, 25 Jun 2016 15:09:26 +0000 (17:09 +0200)]
Cleanup: remove RNA's `ID.destroy()` function.

We already have Main's ID lists' `remove()` function, better not do the same thing
in two different places!

4 years agoCleanup/refactor RNA IDs' `remove` functions.
Bastien Montagne [Sat, 25 Jun 2016 15:01:36 +0000 (17:01 +0200)]
Cleanup/refactor RNA IDs' `remove` functions.

Those (one per ID type!) were uselessly duplicated, and badly inconsistent
(some types were actually unlinking before deletion, others were only working if already unlinked!).

Now we use same func and same API for all types, by default deletion is performed only if ID is no more used,
set `do_unlink` parameter to True to always delete ID even if still in use.
Only exception now is with Scene, since we always want to keep at least one!

Note that this will change default behavior of some types (since unlinking is never done anymore by default).

4 years agoCMake: exclude gitignore & arcconfig for addons
Campbell Barton [Sat, 25 Jun 2016 11:57:54 +0000 (21:57 +1000)]
CMake: exclude gitignore & arcconfig for addons

These files were included in releases

4 years agoCleanup: remove bad-level call
Campbell Barton [Sat, 25 Jun 2016 11:10:30 +0000 (21:10 +1000)]
Cleanup: remove bad-level call

4 years agoGPU: move select index code out of WM
Campbell Barton [Sat, 25 Jun 2016 10:16:33 +0000 (20:16 +1000)]
GPU: move select index code out of WM

This avoids bad-level calls.

4 years agoExclude obsolete static pythonlibs from install
Jens Verwiebe [Sat, 25 Jun 2016 10:39:47 +0000 (12:39 +0200)]
Exclude obsolete static pythonlibs from install

4 years agoFix T48732, OpenCL compile failure after Multiscatter GGX commit.
Thomas Dinges [Sat, 25 Jun 2016 09:14:06 +0000 (11:14 +0200)]
Fix T48732, OpenCL compile failure after Multiscatter GGX commit.

Use OpenCL "all" builtin type for conversion, according to OpenCL 1.1 spec 6.3e.

4 years agoFix T48723: Curve bevel creates invalid geometry
Campbell Barton [Sat, 25 Jun 2016 03:57:35 +0000 (13:57 +1000)]
Fix T48723: Curve bevel creates invalid geometry

4 years agoCleanup: use BLI_bitmap for bevel-split
Campbell Barton [Sat, 25 Jun 2016 01:24:25 +0000 (11:24 +1000)]
Cleanup: use BLI_bitmap for bevel-split

4 years agoFix T48725: UI message typo.
Bastien Montagne [Fri, 24 Jun 2016 09:00:19 +0000 (11:00 +0200)]
Fix T48725: UI message typo.

4 years agoBMesh: avoid redundant calculations comparing angles
Campbell Barton [Fri, 24 Jun 2016 08:59:02 +0000 (18:59 +1000)]
BMesh: avoid redundant calculations comparing angles

4 years agoFix T48716: Knife cut creates inverted normals
Campbell Barton [Fri, 24 Jun 2016 08:58:42 +0000 (18:58 +1000)]
Fix T48716: Knife cut creates inverted normals

In the case of having 3+ boundary edges, we need to find the best.

4 years agoAvoid memory leaks on exit during argument parsing
Campbell Barton [Fri, 24 Jun 2016 00:05:23 +0000 (10:05 +1000)]
Avoid memory leaks on exit during argument parsing

Exiting Blender during argument parsing would leak memory
(tests, documentation generation, utilities).

While harmless, it hides real leaks which should be resolved.

4 years agoBKE_blender: Add own atexit functions
Campbell Barton [Fri, 24 Jun 2016 00:05:18 +0000 (10:05 +1000)]
BKE_blender: Add own atexit functions

Runs before guarded-alloc leaks print.

4 years agoCleanup: use return argument prefix
Campbell Barton [Fri, 24 Jun 2016 00:05:09 +0000 (10:05 +1000)]
Cleanup: use return argument prefix

4 years agoCycles: Add multi-scattering, energy-conserving GGX as an option to the Glossy, Aniso...
Lukas Stockner [Thu, 23 Jun 2016 20:56:43 +0000 (22:56 +0200)]
Cycles: Add multi-scattering, energy-conserving GGX as an option to the Glossy, Anisotropic and Glass BSDFs

This commit adds a new distribution to the Glossy, Anisotropic and Glass BSDFs that implements the
multiple-scattering microfacet model described in the paper "Multiple-Scattering Microfacet BSDFs with the Smith Model".

Essentially, the improvement is that unlike classical GGX, which only models single scattering and assumes
the contribution of multiple bounces to be zero, this new model performs a random walk on the microsurface until
the ray leaves it again, which ensures perfect energy conservation.

In practise, this means that the "darkening problem" - GGX materials becoming darker with increasing
roughness - is solved in a physically correct and efficient way.

The downside of this model is that it has no (known) analytic expression for evalation. However, it can be
evaluated stochastically, and although the correct PDF isn't known either, the properties of MIS and the
balance heuristic guarantee an unbiased result at the cost of slightly higher noise.

Reviewers: dingto, #cycles, brecht

Reviewed By: dingto, #cycles, brecht

Subscribers: bliblubli, ace_dragon, gregzaal, brecht, harvester, dingto, marcog, swerner, jtheninja, Blendify, nutel

Differential Revision:

4 years agoGPencil: Eraser respects "Selection Mask" when in EditMode
Joshua Leung [Thu, 23 Jun 2016 15:33:31 +0000 (03:33 +1200)]
GPencil: Eraser respects "Selection Mask" when in EditMode

4 years agoFix minor typo - Was m[3][4] instead of m[4][4] for a 4x4 matrix
Joshua Leung [Thu, 23 Jun 2016 15:15:55 +0000 (03:15 +1200)]
Fix minor typo - Was m[3][4] instead of m[4][4] for a 4x4 matrix

4 years agoChildOf Constraint: Hide the Loc/Rot/Scale toggles
Joshua Leung [Thu, 23 Jun 2016 15:07:45 +0000 (03:07 +1200)]
ChildOf Constraint: Hide the Loc/Rot/Scale toggles

The RNA properties are still there (in case you really need them), except now
they will not be shown in the UI anymore, as this constraint really didn't
work well/at all when any of those was disabled. Most people shouldn't really
need to worry about this change.

If anyone wants a matrix-math challenge, they're welcome to try getting those
working for real, so that we can show these toggles again.

4 years agoDopeSheet Mask Mode: Circle/Lasso support
Joshua Leung [Thu, 23 Jun 2016 14:57:03 +0000 (02:57 +1200)]
DopeSheet Mask Mode: Circle/Lasso support

Adapted from the code for Grease Pencil (just like the whole mode was)

4 years agoDopeSheet: GPencil-Mode supports Circle and Lasso Select
Joshua Leung [Thu, 23 Jun 2016 14:52:13 +0000 (02:52 +1200)]
DopeSheet: GPencil-Mode supports Circle and Lasso Select

To get this working the least effort, I've had to expose the helper functions
used by the lasso and circle select keyframe-test callbacks (which are generic)
and expose them for use by the GP keyframe editing code too. Hopefully in time
we clean this all up and just write the code once to operate on "keyframes"

4 years agoDopesheet: Lasso and Circle Select tools work for selecting keyframes
Joshua Leung [Thu, 23 Jun 2016 11:16:14 +0000 (23:16 +1200)]
Dopesheet: Lasso and Circle Select tools work for selecting keyframes

This only works in the Action and Dopesheet modes (which operate on FCurve keyframes).
Support for Grease Pencil and Mask Keyframes though is still pending.

4 years agoCode Cleanup - Circle/Lasso select in the Graph Editor
Joshua Leung [Thu, 23 Jun 2016 07:36:24 +0000 (19:36 +1200)]
Code Cleanup - Circle/Lasso select in the Graph Editor

4 years agoGPencil UI: Streamline toolbar options a bit
Joshua Leung [Sat, 18 Jun 2016 04:52:21 +0000 (16:52 +1200)]
GPencil UI: Streamline toolbar options a bit

As suggested by mendiobox:

* Don't show "enable editing" in the 3D view. You can already do this by switching
  into stroke editing mode here, so no need for the duplication. (In other editors
  though, this can't be done yet, so we don't do it)

* Make the "Convert" button into a dropdown so that you don't need to deal with a
  a separate popup menu

* In the 3D view, don't show the selection + transform operators that can be easily
  found in the menus too (as well as having commonly used shortcuts)

4 years agoGPencil: Added a new version of the "delete active frame" operator which deletes...
Joshua Leung [Sat, 18 Jun 2016 00:58:26 +0000 (12:58 +1200)]
GPencil: Added a new version of the "delete active frame" operator which deletes on all editable layers

This new operator will delete any GP frame it finds on the current frame, regardless
of whether it's on the active layer or not. It will only remove the frames if the
layer is editable, but otherwise, it will just go for it.

The existing operator is great for use in the panel (where it only applies to the active
frame), but it was not so good for all the other places where tools can be invoked
(e.g. D-X, or Delete) as you're typically thinking about the whole scene more holisticaly
than just caring about a particular layer.

4 years agoFix T48689: Transform proportional size was not seriously clamped.
Bastien Montagne [Thu, 23 Jun 2016 14:43:12 +0000 (16:43 +0200)]
Fix T48689: Transform proportional size was not seriously clamped.

Now use same, reasonable min/max values, to avoid getting inf or zero values when
using shortcuts during transform operation...

4 years agoFix T48707: Edit-mesh intersect crash
Campbell Barton [Thu, 23 Jun 2016 11:44:22 +0000 (21:44 +1000)]
Fix T48707: Edit-mesh intersect crash

In rare cases intersect would attempt to add edges with the same vertex twice
from edge-vert / edge-edge intersections.

Solve by checking for duplicates when creating vertex-array for these types of intersections
(always under 3x comparisons, so not much overhead).

4 years agoCorrect recent change to edge-net
Campbell Barton [Thu, 23 Jun 2016 12:19:09 +0000 (22:19 +1000)]
Correct recent change to edge-net

Need account for cases where vertex connects a single edge.

4 years agoFix T48710: 'velocity' particle settings were incorrectly using 'speed' in their...
Bastien Montagne [Thu, 23 Jun 2016 11:09:32 +0000 (13:09 +0200)]
Fix T48710: 'velocity' particle settings were incorrectly using 'speed' in their tooltips.

Not the same thing, velocity is a vector conveying both speed *and* direction...

4 years agoUse hard min/max for view clipping
Campbell Barton [Thu, 23 Jun 2016 08:43:36 +0000 (18:43 +1000)]
Use hard min/max for view clipping

In rare cases its useful to have far clip below 1.

4 years agoCorrect assert
Campbell Barton [Thu, 23 Jun 2016 02:26:26 +0000 (12:26 +1000)]
Correct assert

4 years agoRNA: Expose hook inverse matrix
Campbell Barton [Thu, 23 Jun 2016 01:52:22 +0000 (11:52 +1000)]
RNA: Expose hook inverse matrix

Needed so scripts don't need to use operators to adjust hook modifiers.

4 years agoBLI_array_utils: add BLI_array_rfindindex
Campbell Barton [Thu, 23 Jun 2016 01:23:31 +0000 (11:23 +1000)]
BLI_array_utils: add BLI_array_rfindindex

Array search from back to front.

4 years agoCycles: Fix the Convert Node type registration
Lukas Stockner [Thu, 23 Jun 2016 00:41:46 +0000 (02:41 +0200)]
Cycles: Fix the Convert Node type registration

The function that assigns names to socket types missed an entry, therefore all entries after it were mapped to the wrong name.
Long-term, it might be a better solution to use a map to avoid issues like these, but for now this fix works.

4 years agoFix T48658: Cycles render & render preview corrupts particles
Campbell Barton [Wed, 22 Jun 2016 21:53:49 +0000 (07:53 +1000)]
Fix T48658: Cycles render & render preview corrupts particles

Replaces `G.is_rendering` with `use_render_params` argument.

This is needed for Cycles, which attempts to restore render-preview settings from particles,
after it gets its own particle data, but fails to restore because
`G.is_rendering` was being checked in psys_cache_paths (and other places).

4 years agoID-Remap, step two: add some user-level tools.
Bastien Montagne [Wed, 22 Jun 2016 16:05:55 +0000 (18:05 +0200)]
ID-Remap, step two: add some user-level tools.

This commit adds operators and Outliner menu entries to reload or relocate a library,
and to delete or replace a datablock.

RNA ID API is also extended to allow ID deletion and remapping from python.

Review task: D2027 (
Reviewed by campbellbarton, thanks a bunch.

4 years agoCleanup: use proper RNA struct type for ListBase type
Bastien Montagne [Wed, 22 Jun 2016 16:04:04 +0000 (18:04 +0200)]
Cleanup: use proper RNA struct type for ListBase type
(otherwise all code using RNA has to link DNA_listbase.h, not clean at all!).

4 years agoID-Remap - Step one: core work (cleanup and rework of generic ID datablock handling).
Bastien Montagne [Wed, 22 Jun 2016 15:29:38 +0000 (17:29 +0200)]
ID-Remap - Step one: core work (cleanup and rework of generic ID datablock handling).

This commit changes a lot of how IDs are handled internally, especially the unlinking/freeing
processes. So far, this was very fuzy, to summarize cleanly deleting or replacing a datablock
was pretty much impossible, except for a few special cases.

Also, unlinking was handled by each datatype, in a rather messy and prone-to-errors way (quite
a few ID usages were missed or wrongly handled that way).

One of the main goal of id-remap branch was to cleanup this, and fatorize ID links handling
by using library_query utils to allow generic handling of those, which is now the case
(now, generic ID links handling is only "knwon" from readfile.c and library_query.c).

This commit also adds backends to allow live replacement and deletion of datablocks in Blender
(so-called 'remapping' process, where we replace all usages of a given ID pointer by a new one,
or NULL one in case of unlinking).

This will allow nice new features, like ability to easily reload or relocate libraries, real immediate
deletion of datablocks in blender, replacement of one datablock by another, etc.
Some of those are for next commits.

A word of warning: this commit is highly risky, because it affects potentially a lot in Blender core.
Though it was tested rather deeply, being totally impossible to check all possible ID usage cases,
it's likely there are some remaining issues and bugs in new code... Please report them! ;)

Review task: D2027 (
Reviewed by campbellbarton, thanks a bunch.

4 years agoCycles: Fix crash with Environment Texture and OSL
Lukas Stockner [Wed, 22 Jun 2016 14:10:10 +0000 (16:10 +0200)]
Cycles: Fix crash with Environment Texture and OSL

In the OSL node compilation code for the Environment Texture, is_linear was used as a socket.
However, there was no socket for it, which caused Blender to crash.
Adding a socket doesn't really make sense since it's an internal value and not a parameter
of the node, so it now just uses the variable directly.

4 years agoEditMesh: Avoid creating deform-vert layer every redraw
Campbell Barton [Wed, 22 Jun 2016 11:20:09 +0000 (21:20 +1000)]
EditMesh: Avoid creating deform-vert layer every redraw

Getting a new edit-derived-bmesh was always creating a deform-vert array, even when it wasn't needed.
Since this was called on redraw, in many cases it was doing it unnecessarily.

Now pass in a custom-data mask and only fill in deform-verts when needed.

Gives noticeable drawing speedup (~10-30% here).

4 years agoCleanup: style
Campbell Barton [Wed, 22 Jun 2016 04:02:51 +0000 (14:02 +1000)]
Cleanup: style

4 years agoCleanup: remove unused Image space curves
Campbell Barton [Tue, 21 Jun 2016 23:50:53 +0000 (09:50 +1000)]
Cleanup: remove unused Image space curves

Caused leaks reading old files, was read/written but not freed,
remove since its unused.

4 years agoreadfile: use BLI_endian_switch
Campbell Barton [Tue, 21 Jun 2016 23:38:23 +0000 (09:38 +1000)]
readfile: use BLI_endian_switch

Replace inline endian switching

4 years agoRemove module reloading for preview operators
Campbell Barton [Tue, 21 Jun 2016 22:47:40 +0000 (08:47 +1000)]
Remove module reloading for preview operators

This can be kept on file level but best keep out of operator functions.

4 years agowritefile: use const for old address
Campbell Barton [Tue, 21 Jun 2016 22:44:26 +0000 (08:44 +1000)]
writefile: use const for old address

Also remove temp preview overwriting.

4 years agoFix T48703: Name inconsistency w/ area maximize/fullscreen
Campbell Barton [Tue, 21 Jun 2016 21:41:25 +0000 (07:41 +1000)]
Fix T48703: Name inconsistency w/ area maximize/fullscreen

Name operator based on default behavior.

4 years agoDocs: use doxy formatting for readfile
Campbell Barton [Tue, 21 Jun 2016 21:22:00 +0000 (07:22 +1000)]
Docs: use doxy formatting for readfile

4 years agoT48694: fix bge.texture.Texture.refresh() documentation
Benoit Bolsee [Tue, 21 Jun 2016 21:23:05 +0000 (23:23 +0200)]
T48694: fix bge.texture.Texture.refresh() documentation

first parameter is mandatory and must be a bool indicating if the image
source should be refreshed after updating the texture.

4 years agoFix null-pointer free
Campbell Barton [Tue, 21 Jun 2016 19:34:04 +0000 (05:34 +1000)]
Fix null-pointer free

Own error in recent decimeter commit

4 years agoFix T48700: Crash when window creation fails
Campbell Barton [Tue, 21 Jun 2016 17:29:25 +0000 (03:29 +1000)]
Fix T48700: Crash when window creation fails

Check if Python is initialized before calling BPY_python_end.

4 years agoFix T48698: Rays from SSS act as diffuse for normal objects but have an undefined...
Lukas Stockner [Tue, 21 Jun 2016 18:02:21 +0000 (20:02 +0200)]
Fix T48698: Rays from SSS act as diffuse for normal objects but have an undefined type for lamp objects

The problem here was that there are five path types internally (diffuse, glossy, transmission, subsurface and volume scatter), but subsurface isn't exposed to the user.
This caused some weird behaviour - if all four types are disabled on the lamp, Cycles doesn't even try sampling it, but if any type was active, the lamp would illuminate
the cube since none of the options set subsurface to zero.
In the future, it might be reasonable to add subsurface visibility as an option - but for now the weird and inconsistent behaviour can be fixed simply by setting both
diffuse and subsurface to zero if the user disables diffuse visibility.

4 years agoCleanup: hide debug print behind proper debug defines instead of using comments...
Bastien Montagne [Tue, 21 Jun 2016 14:19:08 +0000 (16:19 +0200)]
Cleanup: hide debug print behind proper debug defines instead of using comments...

4 years agoFix T48412: Blender 2.77a crashes on Undo in some specific multi-level linked librari...
Bastien Montagne [Tue, 21 Jun 2016 14:12:33 +0000 (16:12 +0200)]
Fix T48412: Blender 2.77a crashes on Undo in some specific multi-level linked libraries cases.

Good old dead-brain stupid error when iterating over a linked list from which you remove some items...

4 years agoFix for string buffer overflow in DepsNode identifiers.
Lukas Tönne [Tue, 21 Jun 2016 10:51:18 +0000 (12:51 +0200)]
Fix for string buffer overflow in DepsNode identifiers.

Layer flags can go up to 2^n-1 for n layers, requiring *at least* 9 chars + 1 terminator for 20 layers.

4 years agoFix T48697: Brush curve-stroke snaps strangely
Campbell Barton [Tue, 21 Jun 2016 06:17:05 +0000 (16:17 +1000)]
Fix T48697: Brush curve-stroke snaps strangely

Support Snapping screen-space 2d curves, (was applying world-space coords in screen-space).
Also show snap settings in header.

4 years agoFix T48196: Crash enabling modal operator in exec
Campbell Barton [Tue, 21 Jun 2016 05:02:10 +0000 (15:02 +1000)]
Fix T48196: Crash enabling modal operator in exec

Not good practice, but better not crash.

4 years agoCleanup: rename curve align-x flags
Campbell Barton [Tue, 21 Jun 2016 02:44:49 +0000 (12:44 +1000)]
Cleanup: rename curve align-x flags

4 years agoText Object: Vertical Alignment
Dalai Felinto [Tue, 21 Jun 2016 02:21:24 +0000 (23:21 -0300)]
Text Object: Vertical Alignment

A new option for Font/Text objects vertical alignment:

* Top Base-Line (current mode)
* Top
* Center
* Bottom

The Top is the equivalent as the Top-Baseline with an empty line at the begin of the
text. It's nice to have this option too though, since if we are driving
the alignment via Python we don't want to add extra lines to the text
only to accomodate to the desired vertical alignment.

The Center and Bottom are as intuitive as their name suggest.

When working with text boxes, the vertical alignment only work for
paragraphs that are not vertically full.

Many thanks to Campbell Barton (ideasman42 / @campbellbarton) for the
code review, code comments, and overall suggestions and changes :)

Reviewers: campbellbarton

Differential Revision:

4 years agoFix T48688: Crash loading particle effector weights
Campbell Barton [Mon, 20 Jun 2016 23:41:25 +0000 (09:41 +1000)]
Fix T48688: Crash loading particle effector weights

4 years agoFix T48691: Cycles - OpenCL - HDR Image mapping does not match CUDA rendering
Lukas Stockner [Mon, 20 Jun 2016 22:49:25 +0000 (00:49 +0200)]
Fix T48691: Cycles - OpenCL - HDR Image mapping does not match CUDA rendering

The OpenCL texture code didn't offset the coordinates by half a pixel like the CPU code does.

4 years agoCycles: Deduplicate Vector and RGB Curve nodes
Lukas Stockner [Mon, 20 Jun 2016 22:19:51 +0000 (00:19 +0200)]
Cycles: Deduplicate Vector and RGB Curve nodes

Since most of the code for these two nodes was identical, this commit
now instead uses a common base class that implements all the functionality.

4 years agoFix T48683: Knife cut creates hole
Campbell Barton [Mon, 20 Jun 2016 21:54:46 +0000 (07:54 +1000)]
Fix T48683: Knife cut creates hole

BM_face_split_edgenet wasn't correctly detecting boundary vertices to walk over,
since vertices may be attached to boundary edges not part of the newly created face.

4 years agoBMesh: avoid verts-of-edge iterator
Campbell Barton [Mon, 20 Jun 2016 21:50:19 +0000 (07:50 +1000)]
BMesh: avoid verts-of-edge iterator

Since this function is called a lot, loop over data directly.

4 years agoCycles: Add svm_util_color.h file to CMake
Lukas Stockner [Mon, 20 Jun 2016 17:05:49 +0000 (19:05 +0200)]
Cycles: Add svm_util_color.h file to CMake

The file wasn't included in CMake and therefore not installed into the addon folder.

4 years agoFix building for Windows after 57cff46v (booleans unitialized)
Dalai Felinto [Mon, 20 Jun 2016 16:02:53 +0000 (13:02 -0300)]
Fix building for Windows after 57cff46v (booleans unitialized)

4 years agoFix once more time particle distribution.
Bastien Montagne [Mon, 20 Jun 2016 09:07:36 +0000 (11:07 +0200)]
Fix once more time particle distribution.

rB046adde64f16 was actually pretty useless (and broken), since issue ends up not being
in binary search code, but in generation of the 'summed weights' array used to distribute
particles over mesh items - looks like very small weights could lead to null accumulated
weights, wich was breaking binary search.

Fixed simply by adding a minimal, non-zero weight for mesh items to be allowed to emit particles.

Hopefully we are done with this distribution mess!

4 years agoCleanup: Remove todo comment, this is fine as is.
Thomas Dinges [Sun, 19 Jun 2016 19:09:54 +0000 (21:09 +0200)]
Cleanup: Remove todo comment, this is fine as is.

4 years agoCycles: add constant folding for more color operation nodes.
Alexander Gavrilov [Sun, 19 Jun 2016 10:28:50 +0000 (13:28 +0300)]
Cycles: add constant folding for more color operation nodes.

Invert, brightness & constrast, separate/combine and Mix RGB blend modes
and clamping.

4 years agoFix issues with node deduplication in Cycles shader graph.
Alexander Gavrilov [Sun, 19 Jun 2016 13:51:10 +0000 (16:51 +0300)]
Fix issues with node deduplication in Cycles shader graph.

It is not possible to use a set split by name as valid input to
check_node_input_traversed - it needs a complete set of all nodes visited so
far. On the other hand, the merge comparison loop should only check nodes that
were not just visited, but found unique. This means that there should really be
two separate data structures.

Without the fix, check_node_input_traversed actually never returns true, so
only nodes without any inputs are processed.