Commit Graph

17403 Commits

Author SHA1 Message Date
James Fulop
d8435596d5 imbuf: support writing grayscale BMP images 2020-01-29 12:40:49 +11:00
Brecht Van Lommel
14deacdc22 Merge branch 'blender-v2.82-release' 2020-01-28 18:39:58 +01:00
Clément Foucault
b2034c6ba2 Fix T62730 Overlay: Selected edit hair points highlight is incorrect
This was due to the fact the drawing code was expecting the editpoints
to be equaly spaced. Reuse the code in particle.c to output the select
mask in red color channel of the particle (which is unused in new code).
2020-01-28 18:28:48 +01:00
Brecht Van Lommel
ca572e9970 Cleanup: fix compiler warnings related to deprecated members
For Freestyle, it helps to move the struct copy from C++ to C, where the
compiler knows that copying deprecated members is ok.
2020-01-28 18:25:31 +01:00
Brecht Van Lommel
aabf4d4076 Merge branch 'blender-v2.82-release' 2020-01-27 12:26:18 +01:00
Brecht Van Lommel
3788901107 Cleanup: fix compiler warnings 2020-01-27 12:19:49 +01:00
Brecht Van Lommel
62ec19f37c Cleanup: removed unused derivedDeform and derivedFinal 2020-01-27 12:18:43 +01:00
Campbell Barton
cb83cf1b71 Cleanup: spelling 2020-01-25 20:15:38 +11:00
Alexander Gavrilov
79d9874028 Merge branch 'blender-v2.82-release' 2020-01-24 20:48:38 +03:00
Alexander Gavrilov
fc1f5bded4 Depsgraph: fix false positive time dependencies for simple drivers.
The dependency graph has to know whether a driver must be re-evaluated
every frame due to a dependency on the current frame number. For python
drivers it was using a heuristic based on searching for certain sub-
strings in the expression, notably including '('.

When the expression is actually evaluated using Python, this can't be
easily improved; however if the Simple Expression evaluator is used,
this check can be done precisely by accessing the parsed data.

Differential Revision: https://developer.blender.org/D6624
2020-01-24 20:48:02 +03:00
Pablo Dobarro
dada30f5ef Merge branch 'blender-v2.82-release' 2020-01-24 18:23:28 +01:00
Pablo Dobarro
300f937aec Sculpt: Rename Topology Brush to Slide Relax Brush
The full name was "Topology Slide/Relax", but it didn't fit in the
toolbar UI. This was causing some problems:

- The mesh filter that does the same thing is called "Relax"
- We may want to add a "Topology Brush" tool in the future that is more
oriented to retopology task (like creating strips of quads), so by doing
this we avoid having two tools with the same name in the UI.

Reviewed By: billreynish

Differential Revision: https://developer.blender.org/D6590
2020-01-24 18:21:19 +01:00
Pablo Dobarro
f08f92a04d Merge branch 'blender-v2.82-release' 2020-01-24 18:15:15 +01:00
Sebastián Barschkis
7a9f102537 Fix T72975: [Mantaflow] Mesh generation bug
The initial value for phi was too high.
2020-01-24 17:23:50 +01:00
Sergey Sharybin
11df5443e5 Merge branch 'blender-v2.82-release' 2020-01-24 12:49:49 +01:00
Bastien Montagne
af00fab312 IDProps: add utility to set an ID pointer IDProp value. 2020-01-24 11:39:21 +01:00
Sergey Sharybin
6fff73e3f0 Merge branch 'blender-v2.82-release' 2020-01-23 16:59:50 +01:00
Sergey Sharybin
517870a4a1 CMake: Refactor external dependencies handling
This is a more correct fix to the issue Brecht was fixing in D6600.

While the fix in that patch worked fine for linking it broke ASAN
runtime under some circumstances.
For example, `make full debug developer` would compile, but trying
to start blender will cause assert failure in ASAN (related on check
that ASAN is not running already).

Top-level idea: leave it to CMake to keep track of dependency graph.

The root of the issue comes to the fact that target like "blender" is
configured to use a lot of static libraries coming from Blender sources
and to use external static libraries. There is nothing which ensures
order between blender's and external libraries. Only order of blender
libraries is guaranteed.

It was possible that due to a cycle or other circumstances some of
blender libraries would have been passed to linker after libraries
it uses, causing linker errors.

For example, this order will likely fail:

  libbf_blenfont.a libfreetype6.a libbf_blenfont.a

This change makes it so blender libraries are explicitly provided
their dependencies to an external libraries, which allows CMake to
ensure they are always linked against them.

General rule here: if bf_foo depends on an external library it is
to be provided to LIBS for bf_foo.
For example, if bf_blenkernel depends on opensubdiv then LIBS in
blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES.

The change is made based on searching for used include folders
such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries
to LIBS ion that CMakeLists.txt. Transitive dependencies are not
simplified by this approach, but I am not aware of any downside of
this: CMake should be smart enough to simplify them on its side.
And even if not, this shouldn't affect linking time.

Benefit of not relying on transitive dependencies is that build
system is more robust towards future changes. For example, if
bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES
and all such code is moved to bf_blenkernel this will not break
linking.

The not-so-trivial part is change to blender_add_lib (and its
version in Cycles). The complexity is caused by libraries being
provided as a single list argument which doesn't allow to use
different release and debug libraries on Windows. The idea is:

- Have every library prefixed as "optimized" or "debug" if
  separation is needed (non-prefixed libraries will be considered
  "generic").

- Loop through libraries passed to function and do simple parsing
  which will look for "optimized" and "debug" words and specify
  following library to corresponding category.

This isn't something particularly great. Alternative would be to
use target_link_libraries() directly, which sounds like more code
but which is more explicit and allows to have more flexibility
and control comparing to wrapper approach.

Tested the following configurations on Linux, macOS and Windows:

- make full debug developer
- make full release developer
- make lite debug developer
- make lite release developer

NOTE: Linux libraries needs to be compiled with D6641 applied,
otherwise, depending on configuration, it's possible to run into
duplicated zlib symbols error.

Differential Revision: https://developer.blender.org/D6642
2020-01-23 16:59:18 +01:00
Richard Antalik
6a49161c8c VSE: Tool system integration
Add toolbar to sequencer regions.

A bit of refactoring has to be done in RNA space.
Currently there is only cut tool implemented to serve as template for
anybody who would like to add more.
2020-01-22 15:06:18 +01:00
Richard Antalik
d51760dc5a Merge branch 'blender-v2.82-release' 2020-01-22 13:41:43 +01:00
Richard Antalik
a60a623a1a Fix T69921: VSE - Waveforms unnecessary redrawn on offset change
Waveform is freed in `sound_load_audio()` when sound length is `queried by BKE_sound_info_get()`.

Add argument free_waveform, so `BKE_sound_info_get()` can skip waveform freeing, as it is not expected to alter sound.

Reviewed By: sybren

Differential Revision: http://developer.blender.org/D6053
2020-01-22 13:36:55 +01:00
Richard Antalik
0f7095f826 Merge branch 'blender-v2.82-release' 2020-01-22 01:41:26 +01:00
Richard Antalik
3119a014a6 Fix T70415 100% proxy files playing with poor performance
Refactor code to use `eSpaceSeq_Proxy_RenderSize` or corresponding `IMB_Proxy_Size`
enum items directly.

`SEQ_PROXY_RENDER_SIZE_100` has assigned value 99 to distinguish from `SEQ_PROXY_RENDER_SIZE_FULL`.
This caused error in image size calculation and because of that image had to be scaled.

Author: EitanSomething

Reviewed By: ISS

Differential Revision: http://developer.blender.org/D6368
2020-01-22 00:59:31 +01:00
Bastien Montagne
676f6a699b Merge branch 'blender-v2.82-release' 2020-01-21 20:10:56 +01:00
Bastien Montagne
367d60dab1 Make ED_object_modifier_add() accept NULL scene parameter.
This data is only used to get current time/frame value, which is never
mandatory to add a modifier.

Needed by incoming fix to support particles modifiers in liboverrides.
2020-01-21 20:10:02 +01:00
Sybren A. Stüvel
7dc4477784 Merge remote-tracking branch 'origin/blender-v2.82-release' 2020-01-21 17:58:49 +01:00
Sybren A. Stüvel
5168408ae5 Fix T72459: Mask Modifier breaks Vertex Parenting
The `give_parvert()` function was only considering the mesh's original
vertex indices when the parent vertex index was valid for the evaluated
mesh. However, when using the Mask modifier the evaluated mesh can have
less vertices but still have the parent vertex.

Since the `if (nr < numVertex)` condition wasn't used to prevent any
out-of-bounds access, and seems just an incorrect optimisation, it could
be removed.
2020-01-21 17:53:06 +01:00
Philipp Oeser
43b4cf232c Merge branch 'blender-v2.82-release' 2020-01-20 21:27:39 +01:00
Philipp Oeser
aee2b754dc Fix T73110: UDIM Texture Paint Crash
This would happen if a tile is found on disk, painting would actually
request that tile (because corresponding uvs were in that range), but
that tile was not added in blenders list of tiles in that Image.

Need to also check tile in `image_quick_test` (regardless of iuser
having passed).

thx @lukasstockner97 for additional input!

Maniphest Tasks: T73110

Differential Revision: https://developer.blender.org/D6578
2020-01-20 21:21:59 +01:00
Antonio Vazquez
587ca9e69b Merge branch 'blender-v2.82-release' 2020-01-20 16:19:02 +01:00
Antonio Vazquez
a5f19e3f72 Fix T73265: GPencil console error when delete frist frame 2020-01-20 16:18:20 +01:00
Sebastián Barschkis
4dbaee0293 Fluid: Fix for liquid domains in cache replay mode
Added missing check that prevented bake from being executed correctly.
2020-01-20 16:17:16 +01:00
Brecht Van Lommel
a5270d4cf3 Merge branch 'blender-v2.82-release' 2020-01-20 14:53:14 +01:00
Sebastián Barschkis
81befded7b Fluid: Fix for smoke domain geometry object with adaptive domain enabled
The smoke mesh geometry always needs to be updated when using the adaptive domain.
2020-01-20 14:34:08 +01:00
Brecht Van Lommel
ccfe5bf215 Cleanup: remove redundant function 2020-01-20 13:27:19 +01:00
Brecht Van Lommel
a5a30e485f Merge branch 'blender-v2.82-release' 2020-01-20 09:50:09 +01:00
Brecht Van Lommel
6368343da9 Fix T73129: sculpt mode slow on mesh with fake user
We can't use the fast path when the mesh is used by mulitple objects and so
slower sculpting is expected then. But fake users should not affect this. This
also fixes the same type of error in a few other areas.
2020-01-20 09:39:54 +01:00
Campbell Barton
fb26d25405 Merge branch 'blender-v2.82-release' 2020-01-20 19:22:44 +11:00
Campbell Barton
3fb8191d1d Cleanup: rename lightprobe configure to type_set
Consistent with similar API functions.
2020-01-20 17:54:38 +11:00
Sebastián Barschkis
81b7f8efaf Fixed secondary particle combined export functionality
The combined export was using the old flag format.
2020-01-19 23:44:57 +01:00
Sebastián Barschkis
c7596cd820 Fluid: Improved cache file loading
Cache file loading for mesh and particle files now works through the direct update_structures functions. The final cache mode now also only bakes the most essential files and is therefore not resumable anymore.
2020-01-19 23:44:56 +01:00
Alexander Gavrilov
9b70950e3c Merge branch 'blender-v2.82-release' 2020-01-19 18:50:37 +03:00
Alexander Gavrilov
d1657b406e Fix T73117: B-Bone twist weirdness in chains with sharp bends.
When computing the roll value coming from the handle bone, the code
was using some strange unexplained math. It probably works fine when
the difference with the 'zero roll' orientation is pure twist, like
is the case when called from mat3_to_vec_roll. However, it appears
to break when significant swing is involved.

The issue is fixed by using the proper Swing+Twist decomposition
utility function that was added in a recent version for drivers.
2020-01-19 18:48:18 +03:00
Alexander Gavrilov
966383138a Weight Paint: implement a red shade for bones with locked weights.
Blender supports locking vertex groups to prevent changes to the
weights. However, as mentioned in comments for D3837, it is hard
to use this because there is no interface for locking in 3D View.

This adds a red shade to bones that are associated with a locked
weight group during weight paint mode, as the first step to adding
such interface. The next step is adding a pie menu for lock/unlock.

Differential Revision: https://developer.blender.org/D6533
2020-01-18 11:43:31 +03:00
Bastien Montagne
1f92e9903f Merge branch 'blender-v2.82-release' 2020-01-17 20:09:44 +01:00
Bastien Montagne
5472ae6fdf Fix memory leak when full-copying a scene after recent changes.
Once again, am not exactly sure why that was working before, and not
anymore - but in any case, doing that kind of update here is not only
useless (since we have to do it at the end of the whole
collections/objects duplication and remapping anyway), it is also rather
dangerous, as collections are currently in rather invalid states at that
point of the code...

Note that in ideal world, `BKE_main_collection_sync()` & co would be
lazy (setting only a flag, then code actually needing this to be valid
again should call some sort of `BKE_main_collection_sync_ensure()`).
Then we would not have to worry about such things (and we'd get nice
performance improvements in some cases, also in main remapping code,
etc.).

Food for some refactoring, some day...
2020-01-17 19:59:00 +01:00
Bastien Montagne
35b16e4985 Cleanup: factorize collection handling in libquery code.
Both actual Collection datablocks and the horrible master collection
should share the same code (there were already some differences,
although probably not critical, but some callbacks from
scene->master_collection did not have the 'not self' flag...).
2020-01-17 19:59:00 +01:00
swann
e280c0441b Fix lightprobe creation from python data API
### Description of the problem

Until now, it is only possible to correctly add a lightprobe in python via an operator:
`bpy.ops.object.lightprobe_add()`

### Description of the proposed solution

The idea of this patch is to fix the lack of consistency lightprobe creation without operator.
It allow creation of different lightprobe type directly via `bpy.data.lightprobes.new(name, type)` (such as for curves).

In order to make it possible I had to:
1. Add a function `BKE_lightprobe_configure` in charge of lightprobe settings configuration (avoid code redundancy)
2. Allow an object to take lightprobe datablock as data during is initialization.

### A short example of this patch usage

```
lp = bpy.data.lightprobes.new('some_name','PLANAR')

bpy.data.objects.new('toto', lp)

```

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D6396
2020-01-17 19:14:51 +01:00
Luca Rood
d42a7bbd6e Integrate hair collisions with cloth collision
This integrates hair collisions with the new cloth collision system,
greatly improving reliability, and reducing the amount of hair-specific
code paths in the cloth code.

The removes all the point constraint based collision stuff, instead
implementing segment impulse based collisions, using the same collision
response code as the normal cloth solver.

The hair system can now also collide with the emitter if it is a
collision object.

Reviewed By: mano-wii, Sebastian Parborg

Differential Revision: https://developer.blender.org/D6545
2020-01-16 18:54:30 +01:00
Campbell Barton
09122883b2 Merge branch 'blender-v2.82-release' 2020-01-17 02:55:31 +11:00