blender.git
3 years agoBring blender_release.cmake uptodate with the changes from D2227
lazydodo [Thu, 15 Sep 2016 12:34:57 +0000 (06:34 -0600)]
Bring blender_release.cmake uptodate with the changes from D2227

3 years ago[windows] add some helpers to make.bat to facilitate making release builds.
lazydodo [Wed, 14 Sep 2016 23:50:16 +0000 (17:50 -0600)]
[windows] add some helpers to make.bat to facilitate making release builds.

New features:
1) Release target that checks for both cuda 7.5 and 8 with WITH_CYCLES_CUDA_BINARIES=ON and CYCLES_CUDA_BINARIES_ARCH=sm_20;sm_21;sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61 options set.
2) Option to switch between x86 and x64 builds, the default remains (auto detect the architecture) but can be overridden.
3) Option to switch between vs12(2013) and vs14(2015) default is 2013.

Reviewers: juicyfruit, sergey

Reviewed By: sergey

Tags: #platform:_windows

Differential Revision: https://developer.blender.org/D2180

3 years agoDepsgraph: Avoid some false-positive time dependencies of scripted drivers
Sergey Sharybin [Thu, 15 Sep 2016 10:12:59 +0000 (12:12 +0200)]
Depsgraph: Avoid some false-positive time dependencies of scripted drivers

This was quite weak to consider all scripted expression to be time-dependent.
Current solution is somewhat better but still crappy. Not sure how can we make
it really nice.

3 years agoFix filebrowser not getting back to valid dir in Release builds.
Bastien Montagne [Thu, 15 Sep 2016 10:12:19 +0000 (12:12 +0200)]
Fix filebrowser not getting back to valid dir in Release builds.

Stupid mistake wrapping path validation code inside a BLI_assert, which means it was
only called in Debug builds...

Found by Sergey, thanks.

Should be backported to 2.78.

3 years agoFix crash in some cases when deleting particle systems.
Bastien Montagne [Thu, 15 Sep 2016 09:50:56 +0000 (11:50 +0200)]
Fix crash in some cases when deleting particle systems.

Those 'never null' ID pointers are really a PITA to handle... luckily we don't have much of those around!

Found by Sybren, thanks.

Should be backported to 2.78.

3 years agoFix Py's IDs user mapping: do not consider ShapeKeys' from here.
Bastien Montagne [Thu, 15 Sep 2016 09:12:31 +0000 (11:12 +0200)]
Fix Py's IDs user mapping: do not consider ShapeKeys' from here.

This is internal pointer helper for scene evaluation and tools, though exposed to bpy API,
it can give false 'dependency cycles' in bpy.data.user_map() results.

That's followup to rBe007552442634 really, both should be backported to 2.78

3 years agoOpenGL render: Skip GP passes if viewport has GP visibility disabled
Sergey Sharybin [Thu, 15 Sep 2016 09:23:11 +0000 (11:23 +0200)]
OpenGL render: Skip GP passes if viewport has GP visibility disabled

3 years agoFix Py's IDs user mapping: do not consider proxy_from here.
Bastien Montagne [Thu, 15 Sep 2016 08:11:47 +0000 (10:11 +0200)]
Fix Py's IDs user mapping: do not consider proxy_from here.

This is internal pointer helper for scene evaluation and tools, it's not exposed to bpy API anyway,
and can give false 'dependency cycles' in bpy.data.user_map() results.

Found by sybren in his Splode work.

3 years agoUse temp .blend file copybuffer for pose copy-paste
Sergey Sharybin [Wed, 14 Sep 2016 15:50:11 +0000 (17:50 +0200)]
Use temp .blend file copybuffer for pose copy-paste

Uses similar way of storing temp data as object copy paste, just
uses different read entrypoint which does not modify current bmain.

This gives ability to easily copy-paste poses from one blender to
another one.

Hopefully doesn't introduce user-measurable differences.

Request from Peer here in the studio.

Reviewers: mont29

Reviewed By: mont29

Subscribers: hjalti, fsiddi

Differential Revision: https://developer.blender.org/D2229

3 years agoRevert "Cycles: Tweak empty boundbox children"
Sergey Sharybin [Thu, 15 Sep 2016 07:39:33 +0000 (09:39 +0200)]
Revert "Cycles: Tweak empty boundbox children"

This reverts commit ecbfa31caaadb03c53c0fe1459718b99613c8804.

Original commit broke logic in nodes re-fitting. That area can
access non-existing children momentarely. Not sure what would
be best solution here, for now simply reverting the change/

3 years agoFix T49179: Parts of mesh disappear with adaptive subdivision
Mai Lavelle [Wed, 14 Sep 2016 23:34:43 +0000 (19:34 -0400)]
Fix T49179: Parts of mesh disappear with adaptive subdivision

Problem was zero length normal caused by a precision issue in patch evaluation.
This is somewhat of a quick fix, but is better than allowing possible NaNs to
occur and cause problems elsewhere.

3 years agoCycles: Deduplicate light pass code
Lukas Stockner [Wed, 14 Sep 2016 18:09:37 +0000 (20:09 +0200)]
Cycles: Deduplicate light pass code

3 years agoCycles: Stop lamp sampling if the lamp isn't visible
Lukas Stockner [Fri, 9 Sep 2016 13:51:40 +0000 (15:51 +0200)]
Cycles: Stop lamp sampling if the lamp isn't visible

Both spot and area light have large areas where they're not visible.
Therefore, this patch stops the light sampling code when one of these cases (outside of the spotlight cone or behind the area light) occurs, before the lamp shader is evaluated.
In the case of the area light, the solid angle sampling can also be skipped.

In a test scene with Sample All Lights and 18 Area lamps and 9 Spot lamps that all point away from the area that the camera sees, render time drops from 12sec to 5sec.

Reviewers: brecht, sergey, dingto, juicyfruit

Differential Revision: https://developer.blender.org/D2216

3 years agoCycles: Also support the constant emission speedup for mesh lights
Lukas Stockner [Wed, 14 Sep 2016 16:53:35 +0000 (18:53 +0200)]
Cycles: Also support the constant emission speedup for mesh lights

Reviewers: brecht, sergey, dingto, juicyfruit

Differential Revision: https://developer.blender.org/D2220

3 years agoFix T49352: Blender's file browser do not display previews.
Bastien Montagne [Wed, 14 Sep 2016 15:26:42 +0000 (17:26 +0200)]
Fix T49352: Blender's file browser do not display previews.

Own stupid 'logical inversion' mistake in rBa2677100fef06af.

3 years agofix Mac build with Xcode 8
Mike Erwin [Wed, 14 Sep 2016 14:23:48 +0000 (16:23 +0200)]
fix Mac build with Xcode 8

Small issues in GHOST
- use NSApplicationDelegate protocol for our app delegate
- make sure NSApp is initialized before using
(cherry picked from commit df7be04ca6d4b6dccc998445386228699d72d072)

3 years agoCleanup: Fix epic indent failure in previous commit :/
Bastien Montagne [Wed, 14 Sep 2016 14:18:36 +0000 (16:18 +0200)]
Cleanup: Fix epic indent failure in previous commit :/

3 years agoFix missing PaintCurves list in bpy.data
Bastien Montagne [Wed, 14 Sep 2016 14:13:21 +0000 (16:13 +0200)]
Fix missing PaintCurves list in bpy.data

Minimal list features for now, no add/remove stuff, that we can add later...

Reported by sybren.

Should be safe for 2.78.

3 years agoFix memory leak in copy pose operator
Sergey Sharybin [Wed, 14 Sep 2016 13:56:23 +0000 (15:56 +0200)]
Fix memory leak in copy pose operator

3 years agoFix T49342: TypeError when autocompleting bpy.app.something.
Bastien Montagne [Wed, 14 Sep 2016 13:40:35 +0000 (15:40 +0200)]
Fix T49342: TypeError when autocompleting bpy.app.something.

Regression from rB036c006cefe471. We can't use self here, self is bpy.app, not pydescriptor of python path getsetter...

So for now, do not try to replace getsetter by actual value in bpy.app's dict,
just return static var generated on first run.

Should be safe for 2.78.

3 years agoFix T49341: Bad motion blur behavior in Cycles when using Speed effect in Sequencer
Sergey Sharybin [Wed, 14 Sep 2016 12:58:55 +0000 (14:58 +0200)]
Fix T49341: Bad motion blur behavior in Cycles when using Speed effect in Sequencer

Cycles was thinking it always rendering integer frame, which is not correct.

3 years agoAttempt to fix broken path remapping in own rB443b3ca9b9cb.
Bastien Montagne [Wed, 14 Sep 2016 10:58:01 +0000 (12:58 +0200)]
Attempt to fix broken path remapping in own rB443b3ca9b9cb.

3 years agoCMake: decouple WITH_CYCLES_OPENSUBDIV from WITH_OPENSUBDIV, and enable on OS X.
Brecht Van Lommel [Tue, 13 Sep 2016 20:55:18 +0000 (22:55 +0200)]
CMake: decouple WITH_CYCLES_OPENSUBDIV from WITH_OPENSUBDIV, and enable on OS X.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D2227

3 years agoFix two issues related to 'partial' .blend files:
Bastien Montagne [Wed, 14 Sep 2016 09:35:16 +0000 (11:35 +0200)]
Fix two issues related to 'partial' .blend files:

I) Filename was not put in temp Main generated to save selected data only,
this was breaking readcode when trying to open partial file, leading to missing
filename in final loaded Main data.

II) Read code would confuse partial .blend files with Undo ones, when they had no screen in them
(which happens to 99.999% of partial .blend files I guess).

Reported by @sybren, thanks.

Should be safe enough for 2.78 release.

3 years agoFileBrowser: Always do full cache refresh while we are still listing...
Bastien Montagne [Tue, 13 Sep 2016 17:02:27 +0000 (19:02 +0200)]
FileBrowser: Always do full cache refresh while we are still listing...

Does not seem to be a problem with embeded filelisting code, but was breaking with some experimental asset engines.

3 years agoCycles: Implement threaded SVM nodes compilation
Sergey Sharybin [Fri, 9 Sep 2016 10:27:51 +0000 (12:27 +0200)]
Cycles: Implement threaded SVM nodes compilation

The title says it all actually. From tests with barber shop scene here
gives 2-3x speedup for shader compilation on my oldie i7 machine. The
gain is mainly due to textures metadata query from jpeg files (which
seems to requite de-compression before metadata can be read). But in
theory could give nice improvements for scenes with huge node trees
as well (i'm talking about node trees of complexity of fractal which
we had reports about in the past).

Reviewers: juicyfruit, dingto, lukasstockner97, brecht

Reviewed By: brecht

Subscribers: monio, Blendify

Differential Revision: https://developer.blender.org/D2215

3 years agoFix bpy.data.user_map() ignoring unused datablocks.
Bastien Montagne [Tue, 13 Sep 2016 11:22:03 +0000 (13:22 +0200)]
Fix bpy.data.user_map() ignoring unused datablocks.

Should be backported to 2.78.
Found by Sybren here in studio, thanks!

3 years agoOutliner: Report linked datablock edit failure when trying to rename linked data...
Philipp Oeser [Tue, 13 Sep 2016 11:12:44 +0000 (13:12 +0200)]
Outliner: Report linked datablock edit failure when trying to rename linked data in outliner

3 years agoFix T49323: Ineffective bone roll calculation with low rig scale
Sergey Sharybin [Tue, 13 Sep 2016 10:38:47 +0000 (12:38 +0200)]
Fix T49323: Ineffective bone roll calculation with low rig scale

The code was expecting vector to be normalized, however after
applying inverted object matrix it was possible to have scale
applied to it.

3 years agoFix T49336: Outliner allows to edit restrict flags for linked objects
Sergey Sharybin [Tue, 13 Sep 2016 09:33:55 +0000 (11:33 +0200)]
Fix T49336: Outliner allows to edit restrict flags for linked objects

3 years agoCycles: Tweak empty boundbox children
Sergey Sharybin [Tue, 13 Sep 2016 09:05:11 +0000 (11:05 +0200)]
Cycles: Tweak empty boundbox children

The idea here is to make assert failure to fail sooner on an incorrect
node address rather than later with stack overflow.

3 years agoFix T49290: Specific .blend with hair crashes in MacOS 2.78 RC1 on render
Sergey Sharybin [Tue, 13 Sep 2016 08:59:48 +0000 (10:59 +0200)]
Fix T49290: Specific .blend with hair crashes in MacOS 2.78 RC1 on render

The issue was caused by some false-positive empty non-AABB intersection.
Tried to tweak it a bit so it does not record intersection anymore.

Hopefully will work for all platforms. Tested here on iMac and Debian.

3 years agoAPI doc update script: Fix generated zipfile name, was broken in 'release' case...
Bastien Montagne [Tue, 13 Sep 2016 06:38:10 +0000 (08:38 +0200)]
API doc update script: Fix generated zipfile name, was broken in 'release' case...

3 years agoFix error in --debug-handlers printing
Julian Eisel [Mon, 12 Sep 2016 16:39:25 +0000 (18:39 +0200)]
Fix error in --debug-handlers printing

Was missing else block (and also missing newline character). Caused by e672e7a070e698.

3 years agoFix code which was commented by accident
Sergey Sharybin [Mon, 12 Sep 2016 14:29:54 +0000 (16:29 +0200)]
Fix code which was commented by accident

Well, more like some last-minute checks which i did not see before commit.

Let's increase commit ratio!

3 years agoFix T49327: Cycles OSL Mode: RGB Curves node only outputs gray scale images
Sergey Sharybin [Mon, 12 Sep 2016 14:14:40 +0000 (16:14 +0200)]
Fix T49327: Cycles OSL Mode: RGB Curves node only outputs gray scale images

To be backported to 2.78 release.

3 years agoCycles: Fix compilation error after recent commits
Sergey Sharybin [Mon, 12 Sep 2016 14:06:50 +0000 (16:06 +0200)]
Cycles: Fix compilation error after recent commits

3 years agoGraph editor: Add channel option to make it persistent on display
Sergey Sharybin [Mon, 12 Sep 2016 13:31:28 +0000 (15:31 +0200)]
Graph editor: Add channel option to make it persistent on display

The idea is to allow certain animation channels to be always visible in
animation editors. So, for example, one can pin Camera animation to the
editor so it is always possible to refine/tweak camera animation when
animating something else in the scene.

There is probably some more polishing required, and some current
limitations could be solved in the future but should be a good starting
point already.

Currently only works for object without recursing into deeper datablock
(so for example, it's not possible to pin object material animation).

Studio request by Colin Levy.

3 years agoFix T49296, assert failure in Bevel code.
Howard Trickey [Mon, 12 Sep 2016 11:27:29 +0000 (07:27 -0400)]
Fix T49296, assert failure in Bevel code.

The mesh interpolation function failed to fill a fractions-of-the-way
array properly when the distances are very small but nonzero.

3 years agoCycles: Fix wrong SSS in combination with hair on AVX2 platform
Sergey Sharybin [Mon, 12 Sep 2016 10:48:35 +0000 (12:48 +0200)]
Cycles: Fix wrong SSS in combination with hair on AVX2 platform

Not sure why exactly that happened, need a closer look.

3 years agoCycles: Use XDG's .cache folder for cached kernels
Sergey Sharybin [Mon, 5 Sep 2016 14:41:08 +0000 (16:41 +0200)]
Cycles: Use XDG's .cache folder for cached kernels

Basically just moves cached kernels from ~/.config/blender/BLENDER_VERSION to
~/.cache/cycles/kernels. This has following benefits:

- Follows XDG specification more closely,
  not as if it's totally crucial or measurable by users, but still nice.

- Prevents unexpected sizes of config folder, makes disk space used in more
  predictable for users way.

- Allows to share kernels across multiple Blender versions,
  which makes it easier debugging at the times close to release.

- "Copy Previous Settings" operator will no longer be copying possibly
  gigabytes of cached kernels, which used to lead to really nast disk usage
  and annoying delays of copying settings.

- In the future we can have some smart logic to clear old unused cached
  kernels.

Currently only done for Linux and OSX. Windows still follows old "cache"
folder logic, but it's not really important for now because we don't
support kernel compilation on this platform yet.

Reviewers: dingto, juicyfruit, brecht

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D2197

3 years agoCycles: Fix shading and crashes resulting from constant folding on displacement
Mai Lavelle [Sun, 11 Sep 2016 17:39:12 +0000 (13:39 -0400)]
Cycles: Fix shading and crashes resulting from constant folding on displacement

Constant folding was removing all nodes connected to the displacement output
if they evaluated to a constant, causing there to be no valid graph for
displacement even when there was displacement to be applied, and sometimes
caused crashes.

3 years agoCycles: Replace object index hack with actual checks for SD_TRANSFORM_APPLIED
Mai Lavelle [Sat, 3 Sep 2016 01:37:17 +0000 (21:37 -0400)]
Cycles: Replace object index hack with actual checks for SD_TRANSFORM_APPLIED

Using ones complement for detecting if transform has been applied was confusing
and led to several bugs. With this proper checks are made.

Also added a few transforms where they were missing, mostly affecting baking
and displacement when `P` is used in the shader (previously `P` was in the
wrong space for these shaders)

Also removed `TIME_INVALID` as this may have resulted in incorrect
transforms in some cases.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D2192

3 years agoCycles: Fix bump mapping to use object space when used with true displacement
Mai Lavelle [Fri, 2 Sep 2016 04:41:04 +0000 (00:41 -0400)]
Cycles: Fix bump mapping to use object space when used with true displacement

Bump mapping was happening in world space while displacement happens in object
space, causing shading errors when displacement type was used with bump mapping.

To fix this the proper transforms are added to bump nodes. This is only done
for automatic bump mapping however, to avoid visual changes from other uses of
bump mapping. It would be nice to do this for all bump mapping to be consistent
but that will have to wait till we can break compatibility.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D2191

3 years agoRevert "GPencil: Add IFACE_ macro to some strings"
Antonioya [Sun, 11 Sep 2016 11:05:29 +0000 (13:05 +0200)]
Revert "GPencil: Add IFACE_ macro to some strings"

This reverts commit b50a5b92c15e0f110ca978352c2ba59bc3e97dd3 because BKE_report functions are already automatically handled by translation system.

3 years agoGPencil: Add IFACE_ macro to some strings
Antonioya [Sun, 11 Sep 2016 10:27:39 +0000 (12:27 +0200)]
GPencil: Add IFACE_ macro to some strings

3 years agoGPencil: Change interpolate stroke factor
Antonioya [Sun, 11 Sep 2016 10:22:30 +0000 (12:22 +0200)]
GPencil: Change interpolate stroke factor

Now the factor works similar to other Blender areas to make the factor
more consistent for artists. The value 0% means equal to original
stroke, 100% equal to final stroke (50% means half way). Any value below
0% or greater than 100% create an overshoot of the stroke.

3 years ago[CMAKE/Platform/Windows] Only perform version check if the actual compiler is MSVC
lazydodo [Sat, 10 Sep 2016 23:58:56 +0000 (17:58 -0600)]
[CMAKE/Platform/Windows] Only perform version check if the actual compiler is MSVC

3 years agoNDOF: allow view movement for modal border and circle select operators.
Kai Mach [Sat, 10 Sep 2016 21:33:26 +0000 (23:33 +0200)]
NDOF: allow view movement for modal border and circle select operators.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D2167

3 years agoFix undefined variable on errors in Cycles ctests.
Dmitry Dygalo [Sat, 10 Sep 2016 20:55:28 +0000 (22:55 +0200)]
Fix undefined variable on errors in Cycles ctests.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D2201

3 years agoFix OpenSubdiv related buffer overrun with multiple FVar channels.
Alexander Gavrilov [Sat, 10 Sep 2016 18:15:52 +0000 (21:15 +0300)]
Fix OpenSubdiv related buffer overrun with multiple FVar channels.

The existing code uses the input value count of the first channel
for all of them. If the first channel is the largest, it leads to
a crash-causing buffer overrun in memcpy below. Likely this was
left since the time when only one channel was supported.

As a crash fix, probably should go into 2.78

3 years agoFix T49303: Fix T49314: More issues with new handling of X11 shortcuts.
Bastien Montagne [Sat, 10 Sep 2016 10:38:12 +0000 (12:38 +0200)]
Fix T49303: Fix T49314: More issues with new handling of X11 shortcuts.

This commits changes two things:
* It adds more keysyms preferably taken from XLookupKeysym than XLookupString (namely, all numpad ones).
* It falls back to keysyms from XLookupKeysym in other cases, when XLookupString does not produce anything we know of.

Finding the correct balance here is far from easy, but think we are comming rather close to it now...

3 years agoCleanup: Indentation
Sergey Sharybin [Fri, 9 Sep 2016 11:08:21 +0000 (13:08 +0200)]
Cleanup: Indentation

3 years agoCycles: Add overall timing log to SVNShaderManager
Sergey Sharybin [Fri, 9 Sep 2016 09:39:27 +0000 (11:39 +0200)]
Cycles: Add overall timing log to SVNShaderManager

3 years agoFix missing 'prop_required' flags in some ID RNA funcs.
Bastien Montagne [Fri, 9 Sep 2016 09:58:18 +0000 (11:58 +0200)]
Fix missing 'prop_required' flags in some ID RNA funcs.

Not critical, but would rather have this in 2.78 (for API doc reasons mostly).

3 years agoCycles: Deduplicate QBVH node packing across BVH build and refit
Sergey Sharybin [Fri, 9 Sep 2016 09:32:05 +0000 (11:32 +0200)]
Cycles: Deduplicate QBVH node packing across BVH build and refit

3 years agoFix/Workaround T49297: Crash related to custom data draw (Blender with ASAN)
Sergey Sharybin [Fri, 9 Sep 2016 08:55:22 +0000 (10:55 +0200)]
Fix/Workaround T49297: Crash related to custom data draw (Blender with ASAN)

Root of the issue is that active render index became wrong. This is the actual
thing to be fixed, but as usual this is quite tricky to reproduce. Since such
bad situation might have happened more and fix isn't really difficult or
intruisive let's avoid crash for now.

Can be revisited once we figure out root of the issue.

Nice for 2.78 release.

3 years agoFix T49299: Removing offset object in modifiers doesn't update mesh.
Bastien Montagne [Fri, 9 Sep 2016 08:44:49 +0000 (10:44 +0200)]
Fix T49299: Removing offset object in modifiers doesn't update mesh.

Own fault in new ID management work, thought rebuild the DAG itself was
enough to actually update whole scene, but we actually need to tag datablocks
for update as well, when we change (or remove) one of their ID pointers...

3 years agoSmoke viewport: remove dead code.
Kévin Dietrich [Fri, 9 Sep 2016 04:05:58 +0000 (06:05 +0200)]
Smoke viewport: remove dead code.

OCD commit, but cleans the code a bit:
- the first `if 0` block was supposed to draw collision objects but is
vastly outdated as most of the SmokeCollisionSettings member variables
were removed a few years ago and collision objects are drawn like other
objects anyway. Also it was committed already commented out back in
2009.
- the second `if 0` block was doing pretty much the same thing as the
few lines above it.

3 years agoAlembic streaming: initial support to interpolate data between frames.
Kévin Dietrich [Fri, 9 Sep 2016 03:59:20 +0000 (05:59 +0200)]
Alembic streaming: initial support to interpolate data between frames.

Pretty self-explanatory, allows to get some slow motion type of playback
and animations.

3 years agoAlembic: add option to triangulate meshes upon export.
Kévin Dietrich [Fri, 9 Sep 2016 03:30:43 +0000 (05:30 +0200)]
Alembic: add option to triangulate meshes upon export.

3 years agoAlembic, cleanup: split archive opening code in their own classes and
Kévin Dietrich [Fri, 9 Sep 2016 03:06:06 +0000 (05:06 +0200)]
Alembic, cleanup: split archive opening code in their own classes and
files.

Also helps keeping platform specific code in separate from the rest of
the code.

3 years agoCycles: Don't run full shader evaluation for constant emission lamps
Lukas Stockner [Sat, 3 Sep 2016 20:40:07 +0000 (22:40 +0200)]
Cycles: Don't run full shader evaluation for constant emission lamps

Most of the time, Lamps in Cycles are just a constant emission closure, no texturing etc. Therefore, running a full shader evaluation is wasteful.
To avoid that, Cycles now detects these constant emission shaders and stores their value in the lamp data along with a flag in the shader.
Then, at runtime, if this flag is set, the lamp code just uses this value and only runs the full shader evaluation if it is neccessary.

In scenes with a lot of lamps and with "Sample all direct/indirect" enabled, this saves up to 20% of rendering time in my tests.

Reviewers: #cycles

Differential Revision: https://developer.blender.org/D2193

3 years agoCycles: Fix regular BVH nodes refit
Sergey Sharybin [Thu, 8 Sep 2016 13:08:35 +0000 (15:08 +0200)]
Cycles: Fix regular BVH nodes refit

For proper indexing to work we need to use unaligned node with
identity transform instead of aligned nodes when doing refit.

To be backported to 2.78 release.

3 years agoCycles: Add asserts to BVH node packing
Sergey Sharybin [Thu, 8 Sep 2016 12:32:05 +0000 (14:32 +0200)]
Cycles: Add asserts to BVH node packing

3 years agoCycles: Cleanup: line wrapping
Sergey Sharybin [Thu, 8 Sep 2016 12:26:10 +0000 (14:26 +0200)]
Cycles: Cleanup: line wrapping

3 years agoFix T49283: Crash in BKE_ptcache_make_particle_key.
Bastien Montagne [Thu, 8 Sep 2016 08:24:56 +0000 (10:24 +0200)]
Fix T49283: Crash in BKE_ptcache_make_particle_key.

This is really hack-fix actually, not sure why `get_pointcache_keys_for_time()` seems to assume
it will always find key for given part index at least for current frame, and whether this assumption
is wrong or whether bug happens elsewhere...

Anyway, this is to be wiped out in 2.8, so no point loosing too much time on it, for now merely
returning unchanged (i.e. zero'ed) ParticleKeys in case index2 is invalid. Won't hurt anyway,
even if this did not crash in release builds, would be returning giberish values.

3 years agoFix compilation error: Shadowing of variable
Sergey Sharybin [Thu, 8 Sep 2016 07:40:25 +0000 (09:40 +0200)]
Fix compilation error: Shadowing of variable

3 years agoFix strict compiler warnings
Sergey Sharybin [Thu, 8 Sep 2016 07:39:18 +0000 (09:39 +0200)]
Fix strict compiler warnings

3 years agoFix compilation error: missing forward declaration
Sergey Sharybin [Thu, 8 Sep 2016 07:38:24 +0000 (09:38 +0200)]
Fix compilation error: missing forward declaration

3 years agoFix T49286: Compilation error with XCode 7.0
Sergey Sharybin [Thu, 8 Sep 2016 07:27:51 +0000 (09:27 +0200)]
Fix T49286: Compilation error with XCode 7.0

Weirdly enough, this version of XCode seems to have static_assert()
even when NOT using C++11. This is totally weird and counter intuitive
since static_assert() is supposed to be C++11 onlky feature.

Can XCode stop using future, please? :)

3 years agoCycles: Fix OpenCL speed regression introduced with the improved bump mapping
Lukas Stockner [Wed, 7 Sep 2016 23:33:41 +0000 (01:33 +0200)]
Cycles: Fix OpenCL speed regression introduced with the improved bump mapping

The two SVM nodes added with e7ea1ae78c caused a slowdown on AMD cards when rendering with OpenCL, whether displacement was used or not.
In the Barcelona Pavillon scene on a RX480, this would cause a 12% slowdown.

Therefore, this commit adds a additional flag for feature-adaptive compilation so that the new SVM nodes are only enabled when they are needed (Node tree connected to the Displacement output and Displacement type set to Both).

Also, the nodes were also added to shaders when the Displacement Type was set to Bump (the default), which was unneccessary and is fixed now.

Thanks to linda2 on IRC for reporting and testing and to maiself for help with the displacement shader code.

This fix might be relevant for 2.78, but it should be tested further before including it.

3 years agoGPencil UI: Ensure "Move to Color" can be found from the colors panel dropdwon too
Joshua Leung [Wed, 7 Sep 2016 13:42:16 +0000 (01:42 +1200)]
GPencil UI: Ensure "Move to Color" can be found from the colors panel dropdwon too

3 years agoGP Interpolation: Mark created frames as being "breakdowns"
Joshua Leung [Wed, 7 Sep 2016 13:24:02 +0000 (01:24 +1200)]
GP Interpolation: Mark created frames as being "breakdowns"

This brings this tool more in line with the Breakdowner for armature animation,
with which it shares many commonalities.

3 years agoFix: GPencil drawing sessions now respect limits for maximum undo steps
Joshua Leung [Wed, 7 Sep 2016 13:09:55 +0000 (01:09 +1200)]
Fix: GPencil drawing sessions now respect limits for maximum undo steps

When drawing with Grease Pencil "continous drawing" for a long time
(i.e. basically, drawing a very large number of strokes), it could be
possible to cause lower-specced machines to run out of RAM and start
swapping. This was because there was no limit on the number of undo
states that the GP undo code was storing; since the undo states grow
exponentially on each stroke (i.e. each stroke results in another undo
state which contains all the existing strokes AND the newest stroke), this
could cause issues when taken to the extreme.

3 years agoCode Cleanup: Deduplicate undo node freeing code
Joshua Leung [Wed, 7 Sep 2016 11:53:13 +0000 (23:53 +1200)]
Code Cleanup: Deduplicate undo node freeing code

3 years agoFix T49273: Crash during access to dupli weights at launch time.
Bastien Montagne [Wed, 7 Sep 2016 10:45:58 +0000 (12:45 +0200)]
Fix T49273: Crash during access to dupli weights at launch time.

See commit's comments for details, but this boils down to: do not try to use
purely runtime cache data as a 'real' ID pointer in readcode, it's likely
doomed to fail in some cases, and is bad practice in any case!

Thix fix implies dupliweight's object will be invalid until first scene update
(i.e. first particles evaluation).

3 years agoGPencil: New interpolate strokes operators
Antonioya [Wed, 7 Sep 2016 07:54:50 +0000 (09:54 +0200)]
GPencil: New interpolate strokes operators

Two new modal operators to create a grease pencil interpolate drawing
for one frame or a complete sequence between two frames.  For drawing
the temporary strokes in the viewport, two drawing handlers have been
added to manage 3D and 2D stuff.

Video: https://youtu.be/qxYwO5sSg5Y

The operator shortcuts are Ctrl+E and Ctrl+Shift+E. During the modal
operator, the interpolation can be adjusted using the mouse (moving
left/right) or the wheel mouse.

3 years agoOpenSubdiv: Support multiple materials drawing in Cycles textured view
Sergey Sharybin [Wed, 7 Sep 2016 07:47:35 +0000 (09:47 +0200)]
OpenSubdiv: Support multiple materials drawing in Cycles textured view

Consider for inclusion into 2.78.

3 years agoAdd XK_ISO_Left_Tab to ghost's known X11 keydefines...
Bastien Montagne [Tue, 6 Sep 2016 20:32:17 +0000 (22:32 +0200)]
Add XK_ISO_Left_Tab to ghost's known X11 keydefines...

3 years agoCleanup previous commit...
Bastien Montagne [Tue, 6 Sep 2016 16:01:14 +0000 (18:01 +0200)]
Cleanup previous commit...

3 years agoGHOST X11 keyboard: Attempt to fix issues with modifier keys on some systems.
Bastien Montagne [Tue, 6 Sep 2016 15:54:40 +0000 (17:54 +0200)]
GHOST X11 keyboard: Attempt to fix issues with modifier keys on some systems.

Could not reproduce it here, but since users having the issue claims it comes from
rB16cb9391634dcc50e, let's try to use again ugly `XLookupKeysym()` for those modifier keys too...

3 years ago[cmake/cpack] allow override of package name
lazydodo [Tue, 6 Sep 2016 13:21:23 +0000 (07:21 -0600)]
[cmake/cpack] allow override of package name

Cpack generates a standard filename with git information in it, which might not always be wanted for release builds, this patch adds an option to override that default filename.

Reviewers: sergey, juicyfruit

Reviewed By: juicyfruit

Differential Revision: https://developer.blender.org/D2199

ammended to fix: wrong variable name in main CMakeLists.txt

3 years agoRevert "Depsgraph: Prioritize evaluation of the new scheduled nodes"
Sergey Sharybin [Tue, 6 Sep 2016 14:43:26 +0000 (16:43 +0200)]
Revert "Depsgraph: Prioritize evaluation of the new scheduled nodes"

This reverts commit 9444cd56db1a4e43d03fa8c735cd893b2e74b913.

This commit caused some flickering in the bones when swapping IK to Fk.

While it's unclear why such change caused any regressions, let's revert
it to unlock the studio.

3 years ago[cmake/cpack] allow override of package name
lazydodo [Tue, 6 Sep 2016 13:21:23 +0000 (07:21 -0600)]
[cmake/cpack] allow override of package name

Cpack generates a standard filename with git information in it, which might not always be wanted for release builds, this patch adds an option to override that default filename.

Reviewers: sergey, juicyfruit

Reviewed By: juicyfruit

Differential Revision: https://developer.blender.org/D2199

3 years agoFix T41883: Strip keyframes not respected for scenes rendered by other scenes
Sergey Sharybin [Tue, 6 Sep 2016 12:07:07 +0000 (14:07 +0200)]
Fix T41883: Strip keyframes not respected for scenes rendered by other scenes

3 years agoAdd script which scales splash screen down
Sergey Sharybin [Tue, 6 Sep 2016 10:27:58 +0000 (12:27 +0200)]
Add script which scales splash screen down

Based on reading documentation around. This particular version
is based on the ImageMagic documentation which could be found
there:

  http://www.imagemagick.org/Usage/filter/
  http://www.imagemagick.org/Usage/filter/nicolas/

Current filter is based on measuring mean error with the current
splash screen and choosing combination of parameters which
gives minimal mean error.

3 years agocleanup: macro whitespace \ alignment
Mike Erwin [Mon, 5 Sep 2016 17:30:57 +0000 (13:30 -0400)]
cleanup: macro whitespace \ alignment

Gotta be careful mixing tabs & spaces. This commit uses 4-space indent
to align the line continuation markers.

Follow-up to 3b52c4056aaf

3 years agoFix cast shadows (material option) in the viewport
Mike Erwin [Mon, 5 Sep 2016 17:05:00 +0000 (13:05 -0400)]
Fix cast shadows (material option) in the viewport

Fix cast shadows options (in material tab) not working in the viewport.
An off-by-one error. See D2194 for more.

Committing for Ulysse Martin (youle) who found & fixed this.

3 years agoFix T49252: Crash when image textures used with true displacement
Mai Lavelle [Mon, 5 Sep 2016 16:51:30 +0000 (12:51 -0400)]
Fix T49252: Crash when image textures used with true displacement

3 years agoUI: Ctrl+Tab and Ctrl+Shift+Tab to cycle through space context "tabs"
Julian Eisel [Mon, 5 Sep 2016 14:58:40 +0000 (16:58 +0200)]
UI: Ctrl+Tab and Ctrl+Shift+Tab to cycle through space context "tabs"

In User Preferences, Properties Editor and toolshelf, Ctrl+Tab and Ctrl+Shift+Tab now activates the next or previous space context (or category in case of toolshelf tabs), respectively.

For Properties Editor such functionality was completely missing, only toolshelf allowed cycling using ctrl+mousewheel (or only mousewheel while hovering tab region). Ctrl+Tab and Ctrl+Shift+Tab are common web browser shortcuts, so they're a reasonable choice to go with.
Reaching the first/last item doesn't cause the cycling to stop, we continue at the other end of the list then. (I didn't add this to Ctrl+Mousewheel toggling in toolshelf since I wanted to keep its behavior unchanged.)

We could get rid of (Ctrl+)Mousewheel cycling in toolshelf, but this may break user habits.

The cycling happens using a new operator, UI_OT_space_context_cycle, for toolshelf tabs it's hardcoded in panel handling code though.
Generalized rna_property_enum_step a bit and moved it to rna_access.c to allow external reuse.

Reviewed By: venomgfx
Differential Revision: https://developer.blender.org/D2189

3 years agoOpenSubdiv: Fix missing ORCO when enabling OSD but having dependency to the geometry
Sergey Sharybin [Mon, 5 Sep 2016 15:08:09 +0000 (17:08 +0200)]
OpenSubdiv: Fix missing ORCO when enabling OSD but having dependency to the geometry

Was causing huge viewport lags.

Reported by angavrilov in IRC, thanks!

Safe and nice for 2.78.

3 years agoFix T49251: moving smoke domain with additional resolution causes crash.
Alexander Gavrilov [Mon, 5 Sep 2016 12:50:12 +0000 (15:50 +0300)]
Fix T49251: moving smoke domain with additional resolution causes crash.

This is a bug in the multithreaded task manager in negative value range.

The problem here is that if previter is unsigned, the comparison in the
return statement is unsigned, and works incorrectly if stop < 0 &&
iter >= 0. This in turn can happen if stop is close to 0, because this
code is designed to overrun the stop by chunk_size*num_threads as
the threads terminate.

This probably should go into 2.78 as it prevents a crash.

3 years agoFix own mistake in recent rB8b2a45052093, broke saving render results as images in...
Bastien Montagne [Mon, 5 Sep 2016 11:12:05 +0000 (13:12 +0200)]
Fix own mistake in recent rB8b2a45052093, broke saving render results as images in some cases.

Reported by sebastian_k over IRC, thanks.

To be backported to 2.78.

3 years agoAttempt to fix compilation error with static boost on certain platforms
Sergey Sharybin [Mon, 5 Sep 2016 11:10:19 +0000 (13:10 +0200)]
Attempt to fix compilation error with static boost on certain platforms

This was reported in T49231.

3 years agoFix T35333: Update some WM/UI API functions docstrings.
Bastien Montagne [Mon, 5 Sep 2016 08:58:33 +0000 (10:58 +0200)]
Fix T35333: Update some WM/UI API functions docstrings.

Based on patch by @codemanx, but with slightly less verbose descriptions.

More detailed behavior etc. rather belongs to doc/python_api/examples/bpy.ops.x.py imho.

3 years agoFix T49226: Incorrect Material viewport shading of Cycles Normal Map node in Edit...
Sergey Sharybin [Fri, 2 Sep 2016 15:50:30 +0000 (17:50 +0200)]
Fix T49226: Incorrect Material viewport shading of Cycles Normal Map node in Edit mode for an object with Array modifier

Was incorrect indexing done in the array. Caused by 5abae51.

Not sure why it needed to be changed here, but array here is supposed to be
a loop data, so bringing back loop index as it originally was. The shading was
wrong in edit mode with BI active as well (so it's not like it's needed for
BI only).

Patch in collaboration with Alexander Gavrilov (angavrilov), thanks!

Should be double-checked and ported to 2.78.

3 years agoFix glUniform called from glBegin/glEnd blocks
Sergey Sharybin [Fri, 2 Sep 2016 14:17:20 +0000 (16:17 +0200)]
Fix glUniform called from glBegin/glEnd blocks

Was causing some invalid operations in OpenGL.

After more testing should be fine for 2.78.

3 years agoFix T49220: Vertex paint doesn't work with OpenSubdiv
Sergey Sharybin [Fri, 2 Sep 2016 13:15:42 +0000 (15:15 +0200)]
Fix T49220: Vertex paint doesn't work with OpenSubdiv

It's a bit tricky to align vertex color data between Blender and OpenSubdiv
so for now we simply disable OpenSubdiv in the paint modes.

Safe for 2.78.

3 years agoCMake: Skip addons_contrib for release candidate builds
Sergey Sharybin [Fri, 2 Sep 2016 12:42:01 +0000 (14:42 +0200)]
CMake: Skip addons_contrib for release candidate builds

Nowadays release candidates are supposed to be as close to the final
release as possible.

Safe for 2.78 release branch.