blender.git
2 years agostart using COMP_* instead of GL_* in viewport
Mike Erwin [Tue, 15 Nov 2016 16:49:00 +0000 (11:49 -0500)]
start using COMP_* instead of GL_* in viewport

Gawain can accept either enum, but its own COMP_ values are recommended.

2 years agoblender 2.8: OpenGL immediate mode: action_draw
Mike Erwin [Tue, 15 Nov 2016 03:54:56 +0000 (22:54 -0500)]
blender 2.8: OpenGL immediate mode: action_draw

Updated action_draw to use imm mode.

Reviewers: merwin

Subscribers: LazyDodo

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

2 years agoblender 2.8: Opengl: UI_draw_roundbox
Mike Erwin [Tue, 15 Nov 2016 01:04:59 +0000 (20:04 -0500)]
blender 2.8: Opengl: UI_draw_roundbox

all is in the title too..

Reviewers: merwin

Reviewed By: merwin

Subscribers: Blendify, Severin

Tags: #bf_blender_2.8, #opengl_gfx

Maniphest Tasks: T49043

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

2 years agoOpenGL: use packed normals for fancy wireframes
Mike Erwin [Mon, 14 Nov 2016 02:27:50 +0000 (20:27 -0600)]
OpenGL: use packed normals for fancy wireframes

Consumes much less memory (1/3 for both normals = 32 bytes less per edge). Same visual result.

We can pack normals for other draw modes to get similar savings.

Part of T49165

2 years agoGawain: add support for 10_10_10 vertex format
Mike Erwin [Mon, 14 Nov 2016 02:18:51 +0000 (20:18 -0600)]
Gawain: add support for 10_10_10 vertex format

Most useful for packed normals, which take 1/3 the space of float32 normals.

2-bit alpha|w component is ignored for now.

Batch API can use these now, will add support to immediate mode API if desired.

Enabling on Windows first. Will enable on all platforms after we switch Blender to core profile.

2 years agoOpenGL: simplify debug, use only newer features
Mike Erwin [Sat, 12 Nov 2016 23:18:13 +0000 (17:18 -0600)]
OpenGL: simplify debug, use only newer features

Drop SciTech support & workarounds for WinCE and OpenGL ES.

AMD_debug_output is still in the code but disabled. Once I verify the newer extensions are available on all the GPU + OS combos we support we can delete this disabled code.

2 years agoGawain: strict error checking in debug builds
Mike Erwin [Sat, 12 Nov 2016 05:53:58 +0000 (23:53 -0600)]
Gawain: strict error checking in debug builds

Not release builds. Fix 66d7f01eccdd9f82a4929f2873639e4012362090 to match what I meant to do.

2 years agoGawain: new enum type for vertex attrib components
Mike Erwin [Sat, 12 Nov 2016 01:39:56 +0000 (19:39 -0600)]
Gawain: new enum type for vertex attrib components

Motivations:
1) GLenum is too broad; tightly-defined enum just for this is safer.
2) enable a Vulkan future

New code should use these instead of GL_FLOAT etc. When all existing code has been updated to use new enum, we can drop compatibility with GLenum values.

Early work towards 10_10_10 format, more to come soon.

2 years agoFix T49961: Blender 2.8 Crashes on saving an image
Julian Eisel [Thu, 10 Nov 2016 18:56:52 +0000 (19:56 +0100)]
Fix T49961: Blender 2.8 Crashes on saving an image

Caused by 4811b2d3565cf which caused the event handler hack that is used to fire up the file browser from other operators to fail. Basically the context from before the file browser is opened gets stored and used later for executing the actual file read/write operation (in this case, saving image). This context storage is cleared when exiting an editor since 4811b2d3565cf, which is technically correct, but causes usage of NULLed context data in this case, because the file browser is exited before the file read/write operation is executed.

For now I solved this by moving the fileselect handler to list of normal handlers, instead of modal ones. 4811b2d3565cf only touches list of modal handlers so we avoid the crash. Ideally we'd completely refactor how the file browser opening works to get rid of these event handler hacks.

Note that I wouldn't be suprised if this causes other regressions, but I couldn't find one so worth a try.

2 years agoMerge remote-tracking branch 'origin/master' into blender2.8
Dalai Felinto [Wed, 9 Nov 2016 13:36:59 +0000 (14:36 +0100)]
Merge remote-tracking branch 'origin/master' into blender2.8

2 years agoBMesh: face-flip, no need for temporary edge-array
Campbell Barton [Wed, 9 Nov 2016 11:25:31 +0000 (22:25 +1100)]
BMesh: face-flip, no need for temporary edge-array

Reverse loops in-place.

2 years agoOpenGL: manage built-in shaders better
Mike Erwin [Wed, 9 Nov 2016 04:53:59 +0000 (22:53 -0600)]
OpenGL: manage built-in shaders better

As our library of built-in shaders grows, it's important to create, access, and discard them efficiently.

Lookup via GPU_shader_get_builtin is now constant time instead of linear (# of built-in shaders). This is called very often with our new immediate mode.

Creation and discard are unified.

Adding a new shader requires fewer steps.

365 lines shorter  :D

2 years agoFix: setting an audio callback before audio device initialization.
Jörg Müller [Tue, 8 Nov 2016 23:06:49 +0000 (00:06 +0100)]
Fix: setting an audio callback before audio device initialization.

2 years agoDepsgraph: Use atomics to tag ID when evaluating driver
Sergey Sharybin [Tue, 8 Nov 2016 16:54:14 +0000 (17:54 +0100)]
Depsgraph: Use atomics to tag ID when evaluating driver

This is required since new dependency graph evaluates drivers in threads
so it was possible to have some partially written ID tag there.

2 years agoblender 2.8: OpenGL immediate mode: node_draw_preview_background
Mike Erwin [Tue, 8 Nov 2016 16:10:47 +0000 (11:10 -0500)]
blender 2.8: OpenGL immediate mode: node_draw_preview_background

all is in the title.

Reviewers: merwin

Tags: #bf_blender_2.8, #opengl_gfx

Maniphest Tasks: T49043

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

2 years agoAtomics: Add 32 bit version of fetch and AND/OR
Sergey Sharybin [Tue, 8 Nov 2016 16:11:35 +0000 (17:11 +0100)]
Atomics: Add 32 bit version of fetch and AND/OR

2 years agoBlender 2.8: OpenGL: new immediate mode for paint_image.c
Mike Erwin [Tue, 8 Nov 2016 16:06:30 +0000 (11:06 -0500)]
Blender 2.8: OpenGL: new immediate mode for paint_image.c

This one is for the straight line (white with width 2.0 over a black with width 4.0) drawn when you use the gradient tool.

To test: Image editor, create / open an image, choose image paint mode and on the tool shelf: choose the Fill brush and enable "Use Gradient" for it. Then click and drag on the image.

From what I checked, calls to glLineWidth are not being removed yet, so I kept them.

Reviewers: dfelinto, Severin, merwin

Reviewed By: merwin

Tags: #bf_blender_2.8, #opengl_gfx

Maniphest Tasks: T49043

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

2 years agoOpenGL: wm_operators.c uses new immediate mode
Mike Erwin [Tue, 8 Nov 2016 15:51:42 +0000 (10:51 -0500)]
OpenGL: wm_operators.c uses new immediate mode

D2311 by @ianwill

This is the radial control that appears when we change the size of a brush in sculpt and vertex and texture painting modes, by pressing "f".

Also includes a new built-in shader that can be useful in other places.

Part of T49043

2 years agoBlender 2.8: OpenGL: new immediate mode API for screendump.c
Mike Erwin [Tue, 8 Nov 2016 15:04:41 +0000 (10:04 -0500)]
Blender 2.8: OpenGL: new immediate mode API for screendump.c

It's the screencast cursor, tested here, compared to original, seems to be working fine.

Reviewers: dfelinto, Severin, merwin

Reviewed By: merwin

Tags: #bf_blender_2.8, #opengl_gfx

Maniphest Tasks: T49043

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

2 years agoBMesh: remove edge search when flipping faces
Campbell Barton [Tue, 8 Nov 2016 13:04:58 +0000 (00:04 +1100)]
BMesh: remove edge search when flipping faces

Replace search with direct lookup.

2 years agoFix memory leak when Blender is build without Bullet and files with RB is opened
Sergey Sharybin [Tue, 8 Nov 2016 10:54:04 +0000 (11:54 +0100)]
Fix memory leak when Blender is build without Bullet and files with RB is opened

2 years agoFix T49838: Noise randomization for frame should be done per interframes as well
Sergey Sharybin [Tue, 8 Nov 2016 10:16:37 +0000 (11:16 +0100)]
Fix T49838: Noise randomization for frame should be done per interframes as well

Add subframe to the animated seed hash calculation.

Should be no difference for the regular files, only for cases when scene is
rendered from sequencer with a speed effect, which is not really a common thing.

2 years agoCycles: Only use new light sample threshold for new files
Sergey Sharybin [Tue, 8 Nov 2016 09:54:38 +0000 (10:54 +0100)]
Cycles: Only use new light sample threshold for new files

This is a late follow-up commit to the light sample threshold changes which
caused difference in rendering all existing .blend files which is not something
we are happy about: it is fine to use new optimized defaults for new files, but
existing ones should always be rendering in the same way as they used to be.

Sorry for the inconveniece, but such thing should have been done to begin with.
If this setting was modified it will not be reset to zero.

Now all render tests should be passing again.

P.S. Also really annoying to bump subversion for such reasons, but currently we
don't have better way to achieve what we want.

2 years agoFix T49937: Blender is crashing because of Lamp Data Node
Sergey Sharybin [Tue, 8 Nov 2016 09:40:21 +0000 (10:40 +0100)]
Fix T49937: Blender is crashing because of Lamp Data Node

Lamp Data node requires shadow sample array which is only enabled when
Shadows are enabled in the shading settings.

This commit prevents crash but might not give expected render results
in such a configuration.

2 years agoGawain: less error checking in release builds
Mike Erwin [Tue, 8 Nov 2016 04:28:40 +0000 (05:28 +0100)]
Gawain: less error checking in release builds

Gawain does very strict runtime checking to help us catch coding errors. Final release should disable most of these checks, so I'm disabling now for all non-debug builds.

When writing Blender code that uses Gawain, always make debug builds and test there! "make lite debug" is my favorite.

2 years agoOpenGL: mesh edit mode uses edge overlays
Mike Erwin [Tue, 8 Nov 2016 04:22:17 +0000 (05:22 +0100)]
OpenGL: mesh edit mode uses edge overlays

Legacy GL uses GL_LINES, modern GL uses the good stuff.

Edit mode still has a long way to go...

2 years agoOpenGL: support for edge overlays
Mike Erwin [Tue, 8 Nov 2016 04:06:09 +0000 (05:06 +0100)]
OpenGL: support for edge overlays

Has some obvious opportunities for improvement. This is my second attempt. First attempt used MLoopTri and sort of worked...

2 years agoBMesh: remove redundant edge-split loop initialize
Campbell Barton [Mon, 7 Nov 2016 20:05:29 +0000 (07:05 +1100)]
BMesh: remove redundant edge-split loop initialize

Would always set both first1 and first2.

2 years agoForgot this in last commit. (Brick GLSL).
Thomas Dinges [Mon, 7 Nov 2016 19:59:09 +0000 (20:59 +0100)]
Forgot this in last commit. (Brick GLSL).

2 years agoFix Brick Texture GLSL, broken after Mortar Smooth addition.
Thomas Dinges [Mon, 7 Nov 2016 19:55:12 +0000 (20:55 +0100)]
Fix Brick Texture GLSL, broken after Mortar Smooth addition.

2 years agoBMesh: remove redundant array size
Campbell Barton [Fri, 4 Nov 2016 20:05:20 +0000 (07:05 +1100)]
BMesh: remove redundant array size

Correct unhelpful comment & some comment edits.

Rename 'disk_is_flagged' -> 'bm_vert_is_manifold_flagged',
since the check is quite specific.

2 years agoBMesh: minor improvement to edge-split assignment
Campbell Barton [Mon, 7 Nov 2016 17:12:10 +0000 (04:12 +1100)]
BMesh: minor improvement to edge-split assignment

2 years agoOpenGL: fade other objects during edit mode
Mike Erwin [Mon, 7 Nov 2016 19:32:27 +0000 (20:32 +0100)]
OpenGL: fade other objects during edit mode

Right now this only affects other objects in wireframe. The idea is to do something similar for other draw modes, and keep focus on the edit object.

As seen at #bcon16

2 years agoOpenGL: simple mesh edit mode for new viewport
Mike Erwin [Mon, 7 Nov 2016 19:24:03 +0000 (20:24 +0100)]
OpenGL: simple mesh edit mode for new viewport

Very very simple. Needs a lot of work to reach "legacy viewport" capabilities.

2 years agoOpenGL: enable fancy wireframes
Mike Erwin [Mon, 7 Nov 2016 19:03:51 +0000 (20:03 +0100)]
OpenGL: enable fancy wireframes

Most of this was already in place, just enabling & adding comments.

One fix was needed to make batch uniforms stick between multiple draws.

Added comments to selection outline; no functional changes there.

2 years agoOpenGL: simple batch of all mesh triangles
Mike Erwin [Sun, 6 Nov 2016 20:51:49 +0000 (21:51 +0100)]
OpenGL: simple batch of all mesh triangles

Can be used for drawing basic surfaces, hit testing, depth pre-pass, ...

2 years agoMerge branch 'master' into blender2.8
Bastien Montagne [Mon, 7 Nov 2016 14:46:27 +0000 (15:46 +0100)]
Merge branch 'master' into blender2.8

Conflicts:
intern/cycles/blender/addon/properties.py

2 years agoFix compilation error when CUDA toolkit is not installed
Sergey Sharybin [Thu, 11 Feb 2016 12:51:47 +0000 (13:51 +0100)]
Fix compilation error when CUDA toolkit is not installed

After CUDA dynload changes having CUDA toolkit became required
in order to compile Cycles. This only happened due to wrong
default value to the option.

2 years agoBuildbot: Update copy of buildbot master configuration
Sergey Sharybin [Mon, 7 Nov 2016 13:29:11 +0000 (14:29 +0100)]
Buildbot: Update copy of buildbot master configuration

2 years agoCycles: Remove device settings from performance tab
Lukas Stockner [Mon, 7 Nov 2016 12:22:53 +0000 (13:22 +0100)]
Cycles: Remove device settings from performance tab

This was included in the commit by accident, it doesn't belong there.

2 years agoDepsgraph: Disable timing profile
Sergey Sharybin [Mon, 7 Nov 2016 11:50:45 +0000 (12:50 +0100)]
Depsgraph: Disable timing profile

2 years agofix building depsgraph after recent changes
Martijn Berger [Mon, 7 Nov 2016 11:32:00 +0000 (12:32 +0100)]
fix building depsgraph after recent changes

2 years agoDepsgraph: Do not rely on indirectly included cstring
Sergey Sharybin [Mon, 7 Nov 2016 11:09:42 +0000 (12:09 +0100)]
Depsgraph: Do not rely on indirectly included cstring

Also add comment why exactly cstring is needed.

2 years agoProxy: Construct pchan hash when syncing armature proxy
Sergey Sharybin [Fri, 4 Nov 2016 16:46:41 +0000 (17:46 +0100)]
Proxy: Construct pchan hash when syncing armature proxy

This makes bone lookup much faster (by avoiding liner string lookup)
and speeds up depsgraph construction time on file open.

2 years agoDespgraph: Optimize cycles detection algorithm
Sergey Sharybin [Fri, 4 Nov 2016 16:45:14 +0000 (17:45 +0100)]
Despgraph: Optimize cycles detection algorithm

The idea is simple: when falling back to one of the nodes which was partially
handled we "resume" checking outgoing relations from the index which we stopped.

This gives about 15-20% depsgraph construction time save.

2 years agoDepsgraph: Speedup initial rig build time
Sergey Sharybin [Thu, 3 Nov 2016 16:47:38 +0000 (17:47 +0100)]
Depsgraph: Speedup initial rig build time

We don't need to sort bone channels, it's all taken care about
by the depsgraph itself.

Gives up to 30% initial rig construction time speedup.

2 years agoDepsgraph: Move key implementation from header to dedicated file
Sergey Sharybin [Thu, 3 Nov 2016 15:25:26 +0000 (16:25 +0100)]
Depsgraph: Move key implementation from header to dedicated file

2 years agoDepsgraph: Move class implementation from header to implementation files
Sergey Sharybin [Thu, 3 Nov 2016 15:03:12 +0000 (16:03 +0100)]
Depsgraph: Move class implementation from header to implementation files

This is more proper way to go:

- Avoids re-compilation of all dependent files when implementation changes
  without changed API,

- Linker should have much simpler time now de-duplicating and getting rid
  of redundant implementations.

2 years agoDepsgraph: Fully switch from string to const char*
Sergey Sharybin [Thu, 3 Nov 2016 13:45:47 +0000 (14:45 +0100)]
Depsgraph: Fully switch from string to const char*

This brings up to 10-20% depsgraph build time improvement in the layout
files from the studio repository.

2 years agoDepsgraph: Add extra name tag for operation nodes
Sergey Sharybin [Thu, 3 Nov 2016 13:31:27 +0000 (14:31 +0100)]
Depsgraph: Add extra name tag for operation nodes

The idea here is to address issue that name on it's own is not
always unique: for example, when adding driver operations the
name used for nodes is the RNA path (and multiple drivers can
write to different array indices of the path). Basically, now
it's possible to pass extra integer value to distinguish
operations in such cases.

So now we've already switched from sprintf() to construct unique
operation name to pass RNA path and array index.

There should be no functional changes yet, but this work is
required for further work about replacing string with const
char*.

2 years agoDepsgraph: Cleanup, operation has name, not description
Sergey Sharybin [Thu, 3 Nov 2016 13:22:41 +0000 (14:22 +0100)]
Depsgraph: Cleanup, operation has name, not description

Hopefully should make things more clear here.

2 years agoDepsgraph: Remove unused function
Sergey Sharybin [Thu, 3 Nov 2016 13:18:19 +0000 (14:18 +0100)]
Depsgraph: Remove unused function

A residue from times where we thought to do partial graph updates,
which we are not committing any time soon.

2 years agoDepsgraph: Use const char for component API
Sergey Sharybin [Thu, 3 Nov 2016 11:14:47 +0000 (12:14 +0100)]
Depsgraph: Use const char for component API

2 years agoDepsgraph: Remove some includes which seems unused
Sergey Sharybin [Thu, 3 Nov 2016 11:08:47 +0000 (12:08 +0100)]
Depsgraph: Remove some includes which seems unused

2 years agoDepsgraph: Use const char instead of string in part of drivers construction
Sergey Sharybin [Thu, 3 Nov 2016 11:01:45 +0000 (12:01 +0100)]
Depsgraph: Use const char instead of string in part of drivers construction

2 years agoDepsgraph: Switch away form string to const char* for node names
Sergey Sharybin [Thu, 3 Nov 2016 10:50:18 +0000 (11:50 +0100)]
Depsgraph: Switch away form string to const char* for node names

There is no real reason to have nodes storing heap-allocated name
and description. Doing this increases amount of allocations during
dependency graph building, which usually means somewhat slowness.

We're temporarily loosing some eyecandy in the graphviz visualizer,
but those we can bring back as a part of graphiz dump (which happens
much less often than depsgraph build).

This will happen in multiple commits for the ease of bisect in the
future just in case this causes any regression. This commit contains
ID creation API changes.

2 years agoDepsgraph: Remove prototype of unused and non-implemented method
Sergey Sharybin [Thu, 3 Nov 2016 10:36:35 +0000 (11:36 +0100)]
Depsgraph: Remove prototype of unused and non-implemented method

2 years agoExpose Bullet rotational spring settings in the UI.
Alexander Gavrilov [Mon, 7 Nov 2016 09:56:58 +0000 (12:56 +0300)]
Expose Bullet rotational spring settings in the UI.

Bullet spring constraint already supports rotational springs, but
they are not exposed in blender UI, likely due to a simple oversight.
Supporting them is as simple as adding a few DNA/RNA properties
with appropriate UI and passing them on to Bullet.

Reviewers: sergof

Reviewed By: sergof

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

2 years agoCycles: Refactor Device selection to allow individual GPU compute device selection
Lukas Stockner [Mon, 7 Nov 2016 01:33:53 +0000 (02:33 +0100)]
Cycles: Refactor Device selection to allow individual GPU compute device selection

Previously, it was only possible to choose a single GPU or all of that type (CUDA or OpenCL).
Now, a toggle button is displayed for every device.
These settings are tied to the PCI Bus ID of the devices, so they're consistent across hardware addition and removal (but not when swapping/moving cards).

From the code perspective, the more important change is that now, the compute device properties are stored in the Addon preferences of the Cycles addon, instead of directly in the User Preferences.
This allows for a cleaner implementation, removing the Cycles C API functions that were called by the RNA code to specify the enum items.

Note that this change is neither backwards- nor forwards-compatible, but since it's only a User Preference no existing files are broken.

Reviewers: #cycles, brecht

Reviewed By: #cycles, brecht

Subscribers: brecht, juicyfruit, mib2berlin, Blendify

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

2 years agoCycles: Fix T49952: Bad MIS sampling of backgrounds with single bright pixels
Lukas Stockner [Sun, 6 Nov 2016 18:12:45 +0000 (19:12 +0100)]
Cycles: Fix T49952: Bad MIS sampling of backgrounds with single bright pixels

With this fix, using a MIS map resolution equal to the image size for closest imterpolation or twice the size for linear interpolation gets rid of all fireflies.
Previously, a much higher resolution was needed to get acceptable noise levels.

2 years agoMSVC Runtime copy : Remove erroneously left in diagnostic message from CMakeLists.txt
lazydodo [Sat, 5 Nov 2016 20:04:23 +0000 (14:04 -0600)]
MSVC Runtime copy : Remove erroneously left in diagnostic message from CMakeLists.txt

2 years agoGawain: manage batch API's current shader program + uniform funcs
Mike Erwin [Sat, 5 Nov 2016 20:03:26 +0000 (21:03 +0100)]
Gawain: manage batch API's current shader program + uniform funcs

Typical pattern:
Batch_set_program
Batch_Uniform(s)
Batch_draw

2 years ago[msvc2015] Add support for copying the vc runtime.
lazydodo [Sat, 5 Nov 2016 19:58:32 +0000 (13:58 -0600)]
[msvc2015] Add support for copying the vc runtime.

There's more dll's hanging out in the ucrt folder, but  I just grabbed the ones blender requested (not sure if that's a wise idea, but it seems to work)

Reviewers: sergey, juicyfruit

Reviewed By: juicyfruit

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

2 years agoOpenGL: edge overlay shaders
Mike Erwin [Sat, 5 Nov 2016 18:26:13 +0000 (19:26 +0100)]
OpenGL: edge overlay shaders

As seen at #bcon16. These were produced quickly and probably need further work.

SIMPLE variant draws triangle mesh edges. Based on this research:
http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/4884/pdf/imm4884.pdf
http://developer.download.nvidia.com/SDK/10/direct3d/Source/SolidWireframe/Doc/SolidWireframe.pdf

Non-SIMPLE variant can adjust thickness per edge. This can be used to draw only some edges, or accentuate some edges. Given the right inputs this is a general n-gon perimeter shader.

Part of T49165

2 years agoOpenGL: further wireframe shaders
Mike Erwin [Sat, 5 Nov 2016 17:56:57 +0000 (18:56 +0100)]
OpenGL: further wireframe shaders

As seen at #bcon16

Geometry shader version is automatically used on modern GL runtimes. Legacy version is used on pre-3.2 systems (Mac, Mesa compat profile). They have the same inputs and visual result.

TODO: specialized versions that are less flexible -- draw ALL edges or draw JUST silhouette edges.

Part of T49165

2 years agochange default for quicktime suport for macOS to off
Martijn Berger [Sat, 5 Nov 2016 13:23:00 +0000 (14:23 +0100)]
change default for quicktime suport for macOS to off

2 years agocycles, cuDeviceComputeCapability is deprecated as of cuda 5.0
Martijn Berger [Fri, 4 Nov 2016 13:49:54 +0000 (14:49 +0100)]
cycles, cuDeviceComputeCapability is deprecated as of cuda 5.0

2 years agoFix T49905: Segfault when copying object data of linked object.
Bastien Montagne [Fri, 4 Nov 2016 08:55:46 +0000 (09:55 +0100)]
Fix T49905: Segfault when copying object data of linked object.

We have to clear `newid` of all datablocks, not only object ones.

Note that this whole stuff is still using some kind of older, primitive
'ID remapping', would like to see whether we can replace it with new,
more generic one, but that's for another day.

2 years agoFix (unreported) asserts in `make_object_duplilist_real()`.
Bastien Montagne [Fri, 4 Nov 2016 07:30:22 +0000 (08:30 +0100)]
Fix (unreported) asserts in `make_object_duplilist_real()`.

Code would try to add multiple time the same key in `parent_gh` (for this
ghash a lot of dupliobjects may generate same key).

Was making the tool unusable in debug builds.

Also optimise things a bit by avoiding creating parent_gh when only
`use_base_parent` is set.

2 years agoFix T49918: Make duplicates real crash on clicking operator toggles.
Bastien Montagne [Fri, 4 Nov 2016 07:11:40 +0000 (08:11 +0100)]
Fix T49918: Make duplicates real crash on clicking operator toggles.

handle_mutex may be NULL here...

2 years agoFix T49903: Blender crashes -> Append Group incl. Object using boolean modifier
Bastien Montagne [Thu, 3 Nov 2016 20:06:10 +0000 (21:06 +0100)]
Fix T49903: Blender crashes -> Append Group incl. Object using boolean modifier

New code dealing with getting rid of lib-only cycles of data-blocks
could add several time the same datablock to the list of candidates. Now
this is avoided, and pointers are further cleaned up as double-safety
measure.

2 years agoinstall_deps cleanup: some Debian stuff was still present in the 'generic compile...
Bastien Montagne [Thu, 3 Nov 2016 19:08:04 +0000 (20:08 +0100)]
install_deps cleanup: some Debian stuff was still present in the 'generic compile-only' part of the script.

2 years agoAdd 'Set From Faces' tool to custom split normals.
Bastien Montagne [Wed, 2 Nov 2016 14:11:58 +0000 (15:11 +0100)]
Add 'Set From Faces' tool to custom split normals.

Feature request during bconf, makes sense to have it even as an hack for
now, since this is probably one of the most common use cases. This should
be redone in bmesh once we have proper custom noramls handling in edit mode...

2 years agoDepsgraph: Add code for timing despgraph builder
Sergey Sharybin [Thu, 3 Nov 2016 12:24:41 +0000 (13:24 +0100)]
Depsgraph: Add code for timing despgraph builder

2 years agoCycles: Fix missing underscore in geom_object.h
Lukas Stockner [Thu, 3 Nov 2016 11:38:00 +0000 (12:38 +0100)]
Cycles: Fix missing underscore in geom_object.h

2 years agoFix T49826: NEW-DEPSGRAPH - Texture is not updated after changing its space color
Sergey Sharybin [Thu, 3 Nov 2016 10:31:49 +0000 (11:31 +0100)]
Fix T49826: NEW-DEPSGRAPH - Texture is not updated after changing its space color

The issue was caused by image ID nodes not being in the depsgraph.

Now, tricky part: we only add nodes but do not add relations yet. Reasoning:

- It's currently important to only call editor's ID update callback to solve
  the issue, without need to flush changes somewhere deeper.

- Adding relations might cause some unwanted updates, so will leave that for
  a later investigation.

2 years agoDepsgraph: Fix wrong comparison of ID type vs. node type
Sergey Sharybin [Thu, 3 Nov 2016 10:19:42 +0000 (11:19 +0100)]
Depsgraph: Fix wrong comparison of ID type vs. node type

2 years agoFix T49857: Blender crashes after adding texture node to compositing tree
Sergey Sharybin [Thu, 3 Nov 2016 09:25:31 +0000 (10:25 +0100)]
Fix T49857: Blender crashes after adding texture node to compositing tree

2 years agoCycles: Fix OpenCL build error caused by light termination commit
Lukas Stockner [Thu, 3 Nov 2016 02:15:39 +0000 (03:15 +0100)]
Cycles: Fix OpenCL build error caused by light termination commit

2 years agoCycles: Fix T49901: OpenCL build error after recent light texture coordinate commit
Lukas Stockner [Thu, 3 Nov 2016 02:08:14 +0000 (03:08 +0100)]
Cycles: Fix T49901: OpenCL build error after recent light texture coordinate commit

Basically, the problem here was that the transform that's used to bring texture coordinates
to world space is either fetched while setting up the shader (with Object Motion is enabled) or
fetched when needed (otherwise). That helps to save ShaderData memory on OpenCL when Object Motion isn't needed.

Now, if OM is enabled, the Lamp transform can just be stored inside the ShaderData as well. The original commit just assumed it is.
However, when it's not (on OpenCL by default, for example), there is no easy way to fetch it when needed, since the ShaderData doesn't
store the Lamp index.

So, for now the lamps just don't support local texture coordinates anymore when Object Motion is disabled.
To fix and support this properly, one of the following could be done:
- Just always pre-fetch the transform. Downside: Memory Usage increases when not using OM on OpenCL
- Add a variable to ShaderData that stores the Lamp ID to allow fetching it when needed
- Store the Lamp ID inside prim or object. Problem: Cycles currently checks these for whether an object was hit - these checks would need to be changed.
- Enable OM whenever a Texture Coordinate's Normal output is used. Downside: Might not actually be needed.

2 years agoDepsgraph: Fix race condition writing drivers to array property
Sergey Sharybin [Wed, 2 Nov 2016 17:05:38 +0000 (18:05 +0100)]
Depsgraph: Fix race condition writing drivers to array property

Animation system has separate fcurves for each of array elements and
dependency graph creates separate nodes for each of fcurve, This is
needed to keep granularity of updates, but causes issues because
animation system will actually write the whole array to property when
modifying single value (this is a limitation of RNA API).

Worked around by adding operation relation between array drivers
so we never write same array form multiple threads.

2 years agotests: Update hash for OBJ
Sergey Sharybin [Wed, 2 Nov 2016 14:35:18 +0000 (15:35 +0100)]
tests: Update hash for OBJ

Was a recent update of UV precision.

2 years agoLibmv: Update tests to make tests pass after recent Ceres update
Sergey Sharybin [Wed, 2 Nov 2016 14:32:11 +0000 (15:32 +0100)]
Libmv: Update tests to make tests pass after recent Ceres update

Just a precision issue, difference is around 1e-7. Should be fine to
simply update expected value.

2 years agoSolve threading conflict when calculating smooth normals
Sergey Sharybin [Wed, 2 Nov 2016 14:09:32 +0000 (15:09 +0100)]
Solve threading conflict when calculating smooth normals

It was possible to have synchronization issues whe naccumulating smooth
normal to a vertex, causing shading artifacts during playback.

Bug found by Dalai, thanks!

2 years agoCOLLADA: Removed obsolete Export select option 'Both' which created invalid data...
Gaia Clary [Wed, 2 Nov 2016 13:11:46 +0000 (14:11 +0100)]
COLLADA: Removed obsolete Export select option 'Both' which created invalid data (duplicate transformation information for nodes)

2 years agoDepsgraph: Fix some errors printed to the console
Sergey Sharybin [Wed, 2 Nov 2016 11:23:00 +0000 (12:23 +0100)]
Depsgraph: Fix some errors printed to the console

They were not real issues, it's just some areas of code tried to create
relations between non-existing nodes without checking whether such
relations are really needed.

Now it should be easier to see real bugs printed.

Hopefully should be no regressions here.

2 years agoFix UI for smoke cache
Dalai Felinto [Wed, 2 Nov 2016 10:09:27 +0000 (11:09 +0100)]
Fix UI for smoke cache

(this was probably broken since we got rid of point cache in 2.8)

2 years agoMerge remote-tracking branch 'origin/master' into blender2.8
Dalai Felinto [Wed, 2 Nov 2016 09:48:06 +0000 (10:48 +0100)]
Merge remote-tracking branch 'origin/master' into blender2.8

2 years agoCycles standalone, compile fix UINT_MAX is not defined in device_cuda.cpp
Martijn Berger [Wed, 2 Nov 2016 09:54:47 +0000 (10:54 +0100)]
Cycles standalone, compile fix UINT_MAX is not defined in device_cuda.cpp

2 years agoCMake: Make ld.gold linker optional
Sergey Sharybin [Wed, 2 Nov 2016 09:42:15 +0000 (10:42 +0100)]
CMake: Make ld.gold linker optional

Some platforms are having hard time using this linker so added an option
to not use it. The options is an advanced one and enabled by default so
should not cause any changes for current users.

2 years agoCMake: Fix use of some option which was never defined
Sergey Sharybin [Wed, 2 Nov 2016 09:32:46 +0000 (10:32 +0100)]
CMake: Fix use of some option which was never defined

This way it seems more logical to me.

2 years ago[msvc/make.bat] Detect spaces in the build path and error out.
lazydodo [Tue, 1 Nov 2016 21:30:12 +0000 (15:30 -0600)]
[msvc/make.bat] Detect spaces in the build path and error out.

2 years agoChange frame for animations should not bein the UNDO stack
Dalai Felinto [Tue, 1 Nov 2016 21:09:42 +0000 (22:09 +0100)]
Change frame for animations should not bein the UNDO stack

Request from Hjalti Hjalmarsson for the animation work.

Basically a common part of the workflow of animation is to change the pose, scrub back and forth a few times and roll back the changes when unsatisfied.
However if you go back and forth too many times the UNDO stack would be full, and it would not be possible to bring back the previous pose.

I'm leaving clip_editor change frames as it is for now. But we can
probably change the behaviour there as well.

2 years agoAdd 'copy array' for rna buttons
Bastien Montagne [Tue, 1 Nov 2016 13:59:12 +0000 (14:59 +0100)]
Add 'copy array' for rna buttons

ctrl-alt-c/v allows to copy/paste whole RNA array, e.g. location, rotation, etc., from UI buttons.

Request from Andy at the studio.

2 years agoFix T49856: Blender 2.78 crashes after loading data from a blendfile
Bastien Montagne [Tue, 1 Nov 2016 12:39:31 +0000 (13:39 +0100)]
Fix T49856: Blender 2.78 crashes after loading data from a blendfile

Issue here was that py API code was keeping references (pointers) to the
liniked data-blocks, which can actually be duplicated and then deleted
during the 'make local' process...

Would have like to find a better way than passing optional GHash to get
the oldid->newid mapping, but could not think of a better idea.

2 years agoCeres: Update to the latest actual version
Sergey Sharybin [Tue, 1 Nov 2016 10:29:33 +0000 (11:29 +0100)]
Ceres: Update to the latest actual version

Brings all the fixes and improvements done in upstream within the last 13 months.

2 years agoOpenGL: draw NLA strip curves with new imm mode
Thomas Beck [Mon, 31 Oct 2016 16:42:11 +0000 (17:42 +0100)]
OpenGL: draw NLA strip curves with new imm mode

Part of T49043.

2 years agoAdded 'delete unlocked vertex groups' option.
Sybren A. Stüvel [Mon, 31 Oct 2016 14:31:47 +0000 (15:31 +0100)]
Added 'delete unlocked vertex groups' option.

2 years agoBMesh: radial loop (internal API symmetry)
Campbell Barton [Mon, 31 Oct 2016 11:52:06 +0000 (22:52 +1100)]
BMesh: radial loop (internal API symmetry)

Radial append/remove had swapped args and *slightly* different behavior.
- bmesh_radial_append(edge, loop)
- bmesh_radial_loop_remove(loop, edge)

Match logic for append/remove,
Logic for the one case where the edge needs to be left untouched
has been moved to: `bmesh_radial_loop_unlink`.

2 years agoBMesh: simplify vert & edge removal
Campbell Barton [Mon, 31 Oct 2016 11:07:23 +0000 (22:07 +1100)]
BMesh: simplify vert & edge removal