Commit Graph

99401 Commits

Author SHA1 Message Date
Jacques Lucke
1e3247c078 Fix: add missing extern "C" 2020-07-09 18:19:39 +02:00
Brecht Van Lommel
a90b69d065 Build: add more libc compatibility functions for upcoming libraries update
These are needed by the x264 library.
2020-07-09 18:10:05 +02:00
Pablo Dobarro
6778949e01 Fix repeated Face Sets IDs when joining meshes
As Face Sets IDs start from 0 and increase by 1 each time a new face set
is created in a mesh, when joining multiple meshes it could happen that
the same ID is used by several unrelated areas in multiple objects. This
checks the Face Sets IDs when joining meshes and ensures that they are
not repeated between different objects when joining them, so in the
resulting mesh all previous face sets will have different IDs.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D8224
2020-07-09 17:56:56 +02:00
Bastien Montagne
7b1c406b54 Implement T77959: Never duplicate linked data during deep-copy.
Note that this behavior is enforced on user level for now, but on code
side it is controlled with a flag, which should make it easy to refine
that behavior if needed.

Only exception is when we duplicate a linked ID directly (then we assume
user wants a local deep-copy of that linked data, and we always also
duplicate linked sub-data-blocks).

Note that this commit also slightly refactor the handling of actions of
animdata, by simplifying `BKE_animdata_copy_id_action()` and adding an
explicit new `BKE_animdata_duplicate_id_action()` to be used during ID
duplication (deep copy).

This also allows us to get rid of the special case for liboverrides.
2020-07-09 17:56:05 +02:00
Pablo Dobarro
78b629a98f Sculpt: Skip fully hidden nodes in sculpt tools
As tools iterators skip not visible vertices, fully hidden nodes can
also be skipped and considered as masked.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D8244
2020-07-09 17:51:09 +02:00
Pablo Dobarro
1fb667da01 Fix wrong upate flag when updating the PBVH visibility
This function was using the wrong flag to update the visibility state of
the nodes, so I assume that most of the partially visible optimizations
were not working.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D8243
2020-07-09 17:50:10 +02:00
Pablo Dobarro
e5ebaa9fd6 Fix T78664: Implement Mesh and Face Set boundary automasking in Multires
This implements the SCULPT_vertex_is_boundary and SCULPT_vertex_has_unique_face_set functions for PBVH_GRIDS, which makes features such as automasking now work in multires. It also fixes some other face sets related features in multires, like face set boundary smoothing.

This uses the BKE_subdiv_ccg_coarse_mesh_adjacency_info_get function to get the vertex indicies in the base mesh from multires. This way the API functions can get topology or face set information directly from it. In the future, these vertex indices can be used to get any other information from the base mesh from multires, like seams, sharp edges, disconnected elements IDs...

Reviewed By: sergey

Maniphest Tasks: T78664

Differential Revision: https://developer.blender.org/D8227
2020-07-09 17:48:24 +02:00
Pablo Dobarro
bd84b2cbcc Fix Sculpt Vertex Colors sample color changing brush alpha
It is not practical to change the alpha of the paint color with the
color picker as with the current brush design alpha is the main strength
control for the brush.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D8208
2020-07-09 17:42:27 +02:00
Pablo Dobarro
13b1374497 Fix crash when using Mask by Color in Multires
Reviewed By: sergey

Differential Revision: https://developer.blender.org/D8207
2020-07-09 17:41:14 +02:00
Sergey Sharybin
78d48343ae Make deps: Fix compilation error on CentOS
There were two issues.

First is related on ISPC's CMake configuration forcing C and C++
compilers to be clang and clang++. This goes against of desired
behavior when we use our own compiled clang compilers.

The second issue was related on linker failure: CLang libraries
are linked statically, and they need some of C++ 11 STL symbols
which are coming from libstdc++.

Differential Revision: https://developer.blender.org/D8258
2020-07-09 17:24:49 +02:00
Brecht Van Lommel
2be0ae7c99 Fix Cycles unnecessary updates to camera in viewport render
Problem identified by Milan Jaros.
2020-07-09 16:53:28 +02:00
Szymon Ulatowski
9de09220fc EEVEE: Implement the missing Sky texture
I'm not sure if the Sky was deliberately left out or was just waiting for a
better moment, but so many I was disappointed that Sky in EEVEE is
completely white.

There are already 2 implementations (osl and gpu) so this is the third one.
Looking at other cases it seems that we are not supposed to share sources
between cycles and the rest? So the new util_sky_model files are just
copies of what is already in cycles, except that the data file uses the RGB
variant of the Hosek/Wilkie model, because we output RGB anyway (but can be
easily changed to XYZ if desired - the results are nearly identical).
I am not sure if it is okay to pass 3*9 float values as 3 mat4 uniforms (I
wanted to use mat3 but it does not work).
Also, should I cache the sky model data between renders if the parameters
do not change?

Reviewed By: fclem, brecht

Differential Revision: https://developer.blender.org/D7108
2020-07-09 17:31:36 +02:00
Jacques Lucke
42c99ec15b BLI: rename rand.c to rand.cc 2020-07-09 16:37:44 +02:00
Jacques Lucke
580d50091c Particles: Create a simulation state for every Particle Simulation node
Every Particle Simulation node has a name (or a path when it is in a node group).
This name has to be used in the Simulation modifier on a point cloud to see
the particles.

Caching has been disabled for now, because it was holding back development
a bit. To reset the simulation, go back to frame 1.

Currently, there is no way to influence the simulation. There are just some
randomly moving points. Changing that is the next step.
2020-07-09 15:40:27 +02:00
Jacques Lucke
31ad43a3c7 Blenloader: make BLO_read_data_address work in C++ 2020-07-09 15:29:25 +02:00
Brecht Van Lommel
544c435fdd Fix T78745: Cycles error baking with multiple materials 2020-07-09 12:28:33 +02:00
Bastien Montagne
8ddf7556a5 Fix T78718: Crash when deleting particle system modifier with the X Shortcut.
Duplication and deletion code of modifiers was totally wrong for
particle system, that special weird thing needs its own custom
management.

Note that for now I chose not to duplicate the particle settings ID when
duplicating the modifier...
2020-07-09 11:46:28 +02:00
Campbell Barton
ea5fe7abc1 UV: path selection support
This adds support for path selection for vertex edge & face selection
modes, matching mesh editing behavior, useful with the UV rip tool.

Region select & edge tagging are currently not supported,
although they could be added eventually.
2020-07-09 18:43:23 +10:00
Campbell Barton
0b8221683f BMesh: add utility functions
- BM_edge_uv_share_vert_check
- BM_face_uv_calc_center_median_weighted
- BM_loop_at_index_find
2020-07-09 18:23:16 +10:00
Campbell Barton
0b3bf69d3c Cleanup: move BMesh UV queries into their own file 2020-07-09 13:33:15 +10:00
Campbell Barton
754c5d6a14 Cleanup: clang-format 2020-07-09 13:29:48 +10:00
Jacques Lucke
31bc76ea4e Cleanup: remove unnecessary calls to as_span
This uses the new implicit conversions and constructors
that have been committed in the previous commit.

I tested these changes on Linux with gcc and on Windows.
2020-07-08 22:30:23 +02:00
Jacques Lucke
403384998a BLI: improve constructors and conversions to span
This allows us to avoid many calls to `as_span()` methods. I will
remove those in the next commit. Furthermore, constructors
of Vector and Array can convert from one type to another now.

I tested these changes on Linux with gcc and on Windows.
2020-07-08 22:27:25 +02:00
Jacques Lucke
4b85ed819d Cleanup: remove unused function
This is not necessary in C++17 anymore.
2020-07-08 20:41:00 +02:00
Jacques Lucke
f7d5d4ee3b Cleanup: use c++17 helper variable templates 2020-07-08 20:39:20 +02:00
Bastien Montagne
e4926c167b Fix T78718: Crash when deleting particle system modifier with the X Shortcut.
Again those backward pointers not properly flagged in RNA, hence
generating infinite loops.
2020-07-08 18:08:08 +02:00
Jacques Lucke
f4a39cafa1 Functions: add AttributesRef class
This is the same as MutableAttributesRef, but the data in it cannot be changed.
2020-07-08 17:05:52 +02:00
Jacques Lucke
439c238bb4 Cleanup: use different internal socket name 2020-07-08 17:05:52 +02:00
Jacques Lucke
05365d1376 Functions: support hashing MFDataType and CPPType 2020-07-08 17:05:52 +02:00
Sergey Sharybin
2de5de57c5 Build: fix stack linker warning with ffmpeg on macOS
The ff_cfhd_init_vlcs() function was using a lot of stack space, which
made linker on macOS unhappy. Using heap allocation allows to silence
the warning without causing other side-effects.

Kept the patch enabled for all platforms to avoid difference in behavior
and performance on different platforms, which could make certain types
of investigation very tricky.

Differential Revision: https://developer.blender.org/D8248
2020-07-08 15:49:55 +02:00
Bastien Montagne
cb3c4218bf Minor cleanup in rna override code. 2020-07-08 15:43:57 +02:00
Jacques Lucke
d1f4546a59 Functions: implement common subnetwork elimination optimization
This was the last of the three network optimizations I developed in
the functions branch. Common subnetwork elimination and constant
folding together can get rid of most unnecessary nodes.
2020-07-08 15:10:30 +02:00
Jacques Lucke
e3e42c00cb Functions: Support getting MFSocket based on its id 2020-07-08 15:10:30 +02:00
Jacques Lucke
2b9d62b73a Functions: Support accessing socket index of MFSocket 2020-07-08 15:10:30 +02:00
Jacques Lucke
34d175f372 Functions: initial hash/equals implementation for constant multi-functions 2020-07-08 15:10:30 +02:00
Jacques Lucke
840941215d Functions: allow multi-functions to override a hash and equals function 2020-07-08 15:10:30 +02:00
Jacques Lucke
36a547af7b Cleanup: add correct license header to tests 2020-07-08 15:10:30 +02:00
Jacques Lucke
ff133bbd33 BLI: add disjoint set data structure
This can be used to find separate islands in meshes efficiently (as is
done in cycles already). Furthermore, this helps to implement some
algorithms on node trees more efficiently.
2020-07-08 15:10:30 +02:00
Jacques Lucke
a8ff8b64dc BLI: add comparison operators and hash functions for float3, etc. 2020-07-08 15:10:30 +02:00
Brecht Van Lommel
ff444da7c4 macOS: upgrade minimum required version to 10.13 High Sierra
C++17 does not work on 10.12, and Apple extended support ended for 10.12 in
October 2019.

Maniphest Tasks: T76783, T76184

Differential Revision: https://developer.blender.org/D8179
2020-07-08 14:43:28 +02:00
Brecht Van Lommel
6435acd8f6 Cycles: support shader transparency for holdout objects
Now transparent areas of the object will render objects behind.

Fixes T78728.
2020-07-08 13:18:19 +02:00
Sergey Sharybin
643196cc37 CMake: Fix spelling of Embree passed to find package
The spelling and capitalization of package name passed to find_package()
and find_package_handle_standard_args() needs to match.

Silences CMake warning about mismatch.

Differential Revision: https://developer.blender.org/D8247
2020-07-08 12:35:56 +02:00
Jacques Lucke
45004d82e0 Functions: add dead node removal and constant folding optimization
Those optimizations work on the multi-function network level.
Not only will they make the network evaluation faster, but they also
simplify the network a lot. That makes it easier to understand the
exported dot graph.
2020-07-08 11:18:43 +02:00
Jacques Lucke
50d7c00d9c Cleanup: fix comment 2020-07-08 10:16:56 +02:00
Alexander Gavrilov
01c8aa12a1 Apply Modifier: support applying as shape key and keeping the modifier.
This can be useful to save the result of a cloth simulation as a
shape key without destroying the simulation, so it's possible to
e.g. re-run it to get other shapes, or simply use the new shape
key to start the simulation already in a draped state.

It also makes sense to allow applying as shape key even when the
mesh is shared, because the operation itself just adds a shape
key. To support this, split the apply operator into Apply and
Apply As Shapekey so that they can have different poll callbacks.

Differential Revision: https://developer.blender.org/D8173
2020-07-08 11:06:57 +03:00
Lukas Stockner
7fcb6bc59c Fix T78324: Different Sky Texture results between CPU and GPU
The problem here was numerical precision: The code calculates the angle between
sun and view direction, and the usual acos(dot(a, b)) approach for that has
poor numerical performance for almost parallel angles.

As a result, the generally tiny difference between floating point computation
between CPU and GPU was enough to make the sun vanish at different radii,
causing different results.

The new version fixes the difference by making the computation much more robust
on both platforms.
2020-07-08 02:15:37 +02:00
Jacques Lucke
afcb41a0aa BLI: simplify copy constructor of Array 2020-07-07 20:32:40 +02:00
Jacques Lucke
eb5fb1741d Cleanup: don't end description with a '.' 2020-07-07 20:29:35 +02:00
Jacques Lucke
8713109212 Cleanup: fix typo 2020-07-07 20:27:34 +02:00
Jacques Lucke
902ee4d13c Functions: cleanup loop that traverses the MFNetwork 2020-07-07 19:46:10 +02:00