Commit Graph

78095 Commits

Author SHA1 Message Date
Sergey Sharybin
d1dcd2b464 BLI: Fix mistake in SpinLock TBB migration
Copy-paste mistake.
2020-07-07 16:17:58 +02:00
Germano Cavalcante
20558848d3 Optimization: use BLI_bvhtree_intersect_plane to detect faces that will be affected by the knife tool
The knife code currently calls the `BLI_bvhtree_overlap` function that
tests the overlap between the mesh tree and an AABB that encompasses the
points projected in the clip_start, clip_end and or clip_planes of the
view.

This resulted in many false positives since the AABB is very large.
Often all the triangles "overlapped".

The solution was to create a new function that actually tests the
intersection of AABB with a plane.

Even not considering the clip_planes of the view, this solution is more
appropriate than using overlap.

Differential Revision: https://developer.blender.org/D8229
2020-07-07 10:55:57 -03:00
Clément Foucault
630c6226e2 Fix T78307 UI: Drawing artifacts in the Blender UI on macOS
This was due to a bad driver which was not respecting this bit of the
specification:

`If the current primitive does not originate from an instanced draw command, the value of gl_InstanceID is zero.`
2020-07-07 16:26:01 +02:00
Sybren A. Stüvel
98bee41c8a IO: Reversed persistent ID order in exports to Alembic and USD
Each duplicated (a.k.a. instanced) object has a Persistent ID, which
identifies a dupli within the context of its duplicator. This ID
consists of several numbers when there are nested duplis (for example a
mesh instancing empties on its vertices, where each empty instances a
collection). When exporting to Alembic/USD, these are used to uniquely
name the duplicated objects in the export.

This commit reverses the order of the persistent ID numbers, so that the
first number identifies the first level of recursion. This produces
trees like this:

    ABC
     `--Triangle
         |--Triangle
         |--Empty-1
         |    `--Pole-1-0
         |        |--Pole
         |        `--Block-1-1
         |            `--Block
         |--Empty
         |    `--Pole-0
         |        |--Pole
         |        `--Block-1
         |            `--Block
         |--Empty-2
         |    `--Pole-2-0
         |        |--Pole
         |        `--Block-2-1
         |            `--Block
         `--Empty-0
             `--Pole-0-0
                 |--Pole
                 `--Block-0-1
                     `--Block

It is now clearer that `Pole-2-0` and `Block-2-1` are instanced by
`Empty-2`. Before this commit, they would have been named `Pole-0-2` and
`Block-1-2`.
2020-07-07 14:30:55 +02:00
Sybren A. Stüvel
70b1c09d7a IO: Fix bug exporting dupli parent/child relations
Exporting a scene to USD or Alembic would fail when there are multiple
duplicates of parent & child objects, duplicated by the same object. For
example, this happens when such a hierarchy of objects is contained in a
collection, and that collection is instanced multiple times by mesh
vertices. The problem here is that the 'parent' pointer of each
duplicated object points to the real parent; Blender would not figure
out properly which duplicated parent should be used.

This is now resolved by keeping track of the persistent ID of each
duplicated instance, which makes it possible to reconstruct the
parent-child relations of duplicated objects. This does use up some
memory for each dupli, so it could be heavy to export a Spring scene
(with all the pebbles and leaves), but it's only a small addition on top
of the USD/Alembic writer objects that have to be created anyway. At
least with this patch, they're created correctly.

Code-wise, the following changes are made:

- The export graph (that maps export parent to its export children) used
  to have as its key (Object, Duplicator). This is insufficient to
  correctly distinguish between multiple duplis of the same object by
  the same duplicator, so this is now extended to (Object, Duplicator,
  Persistent ID). To make this possible, new classes `ObjectIdentifier`
  and `PersistentID` are introduced.
- Finding the parent of a duplicated object is done via its persistent
  ID. In Python notation, the code first tries to find the parent
  instance where `child_persistent_id[1:] == parent_persistent_id[1:]`.
  If that fails, the dupli with persistent ID `child_persistent_id[1:]`
  is used as parent.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D8233
2020-07-07 13:01:07 +02:00
Sybren A. Stüvel
cc311e4a52 IO: print export name instead of object name in debug export graph output
This is just a change in `AbstractHierarchyIterator::debug_print_export_graph()`
to aid in debugging. It'll make it possible to distinguish between
different duplicates of the same object.

No functional changes to Blender itself.
2020-07-07 12:02:49 +02:00
Johan Walles
80fe5e1b15 UI: Add units to motion tracking solve errors
The unit being "pixels".

Before this change the solve errors were unitless in the UI.

With this change in place, the UI is now clear on that the unit of the
reprojection errors is pixels (px).

Differential Revision: https://developer.blender.org/D8000
2020-07-07 11:22:12 +02:00
Jacques Lucke
19d4e265b6 Cleanup: remove redundant comments
Searching in these files for "_as" will reveal a comment at the
top, that explains what these methods are for. There is no need
to duplicate that knowledge all over the place.
2020-07-07 10:35:55 +02:00
Campbell Barton
6e609f0eb0 Cleanup: use doxy comments 2020-07-07 17:52:05 +10:00
Campbell Barton
b28683b8b5 Cleanup: remove unused arguments 2020-07-07 16:04:10 +10:00
Campbell Barton
0c58970da7 Cleanup: spelling 2020-07-07 12:49:13 +10:00
Campbell Barton
ad0edc626d Cleanup: unused World struct members linfac, logfac 2020-07-07 12:44:20 +10:00
Hans Goudey
d557f05502 Cleanup: Use bool instead of int 2020-07-06 16:07:54 -04:00
Hans Goudey
053e0c0af3 UI: Add shortcuts for shader effect panels
Only the delete shortcut applies here, although the move up and down
operators can optionally be assigned in the keymap.

See rB1fa40c9f8a81 for more details and rB5d2005cbb54b for the
grease pencil modifier panel implementation, which is the same.
2020-07-06 15:35:21 -04:00
Germano Cavalcante
12817083ec Cleanup: Use the BLI_edgehash API in the sewing simulation of cloths
Also remove the code in the ghash that is no longer used.

This change simplifies the existing code.

Differential Revision: https://developer.blender.org/D8219
2020-07-06 14:44:30 -03:00
Hans Goudey
a856de700b Fix T77730: ShaderFx Missing Update Notifier
This adds a notification type for shaderfx so the properties editor can
be properly notified to redraw.

Another possible solution would be to also redraw the shaderfx tab
 with a ND_MODIFIER update, but this solution allows us to avoid
 some unecessary redraws too. There were no existing cases of
ND_OBJECT | NC_MODIFIER updates, so those cases were
removed from buttons_area_listener.

Differential Revision: https://developer.blender.org/D8159
2020-07-06 13:17:07 -04:00
Jacques Lucke
f6f4043924 BLI: add methods to lookup a stored key in a set 2020-07-06 17:59:27 +02:00
Bastien Montagne
aabfd2fb9b Cleanup: readfile: remove old deprecated OldNewMap for runtime caches. 2020-07-06 16:55:38 +02:00
Bastien Montagne
ee3eba902a Runtime cache preservation during undo: add support for nodes and embedded IDs. 2020-07-06 16:55:38 +02:00
Sybren A. Stüvel
bfc644dcfb Reduce DupliObject::persistent_id from 16 to 8 items
For historical reasons, `DupliObject::persistent_id` was of size
`2*MAX_DUPLI_RECUR`. These reasons are now gone, and the persistent ID
always gets exactly one array element for every dupli-recursion.

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

Reviewed by: brecht
2020-07-06 16:52:28 +02:00
Bastien Montagne
0b07f9b717 Fix T78608: Memory leak in Material properties: "Data from SCE".
Caused by recent own refactor of cache presevation handling in readfile,
EEVEE's lightcache are weird birds that can also be saved in .blend
files, need a special handling for those 'persistent' caches...
2020-07-06 15:09:39 +02:00
Campbell Barton
99feb10b8b Cleanup: warning, spelling 2020-07-06 23:07:18 +10:00
Sergey Sharybin
ffaf294c3f Fix alignment/size issue on ARM/RPi architecture
Addresses 964305 from Debian bug tracker.
2020-07-06 14:53:39 +02:00
Germano Cavalcante
924578ce19 Optimization: Don't compute the snap to face on the knife tool twice
Both `knife_find_closest_vert` and `knife_find_closest_edge` call
`knife_find_closest_face`. Thus, running the raycast twice and setting
values like `kcd->curr.bmface` and `kcd->curr.is_space` repeatedly.

So:
- separate `knife_find_closest_face` from `knife_find_closest_vert` and `knife_find_closest_edge`.
- rename `knife_find_closest_vert` to `knife_find_closest_vert_of_face`
- rename `knife_find_closest_edge `to `knife_find_closest_edge_of_face`.
- do not set parameters previously set.

Differential Revision: https://developer.blender.org/D8198
2020-07-06 09:49:00 -03:00
Germano Cavalcante
073c426900 Fix faces disappearing when AutoMerge & Split 2020-07-06 09:03:33 -03:00
Campbell Barton
c632cf9ccd Fix UV select separate not refreshing the display 2020-07-06 21:23:35 +10:00
Campbell Barton
dbe171fb26 Cleanup: spelling, comments 2020-07-06 21:03:45 +10:00
Jacques Lucke
18b6c49a90 Cleanup: rename namespace TimeIt to timeit
According to our style guide, namespaces should have
lower case names.
2020-07-06 12:37:11 +02:00
Jacques Lucke
572c48cf98 BLI: improve exception safety of memory utils
Even if we do not use exception in many places in Blender, our core C++ library
should become exception safe. Otherwise, we don't even have the option
to work with exceptions if we decide to do so.
2020-07-06 09:08:53 +02:00
Jacques Lucke
703a73fa84 BLI: refactor how buffers for small object optimization are stored
Previously, there was an error when operator-> was returning an
invalid type. See error C2839.
2020-07-06 10:56:26 +02:00
Campbell Barton
80393a0eba UV: add rip tool
New rip tool matching edit-mesh rip functionality.

Useful as disconnecting UV's, especially for loops is inconvenient
without this.

This uses 'V' to rip, changing stitch to 'Alt-V'.
2020-07-06 18:27:51 +10:00
Campbell Barton
9353477383 BMesh: add BM_face_calc_uv_cross 2020-07-06 18:23:38 +10:00
Campbell Barton
b51b893df8 BMesh: add BM_loop_other_vert_loop_by_edge 2020-07-06 18:23:38 +10:00
Jeroen Bakker
705015e0a4 Fix T78481: Workbench Shadow effects XRay
When in XRay some effects (shadow, cavity & depth of field) aren't supported.
This patch makes sure that these effects aren't enabled.
2020-07-06 10:21:14 +02:00
Campbell Barton
4f3045999d Cleanup: warnings, spelling 2020-07-06 17:35:41 +10:00
Jeroen Bakker
0f617cd67e GPU: Remove local shaders workaround for Intel/Windows
It has been tested that local shaders workaround isn't needed for the
latest Windows/Intel 6xx GPU's.

Currently the local shaders workaround doesn't work anymore during the
investigation it was detected that the intel drivers didn't need it
anymore.

Local shaders should still be fixed as it is also used for some legacy
iGPU's. The current work around crashes when doing preview renders in
EEVEE as the default materials aren't available but for the work around
they should. (See T77346 for more information)
2020-07-06 07:45:10 +02:00
Jacques Lucke
247a28f242 Revert "BLI: refactor how buffers for small object optimization are stored"
This reverts commit 5d79f9f276.

This was introducing build errors in windows. Need a bit more time to check it.
2020-07-05 15:08:26 +02:00
Jacques Lucke
5d79f9f276 BLI: refactor how buffers for small object optimization are stored 2020-07-05 16:30:26 +02:00
Antonio Vazquez
464aaf2701 Fix T78603: GPencil Noise modifier Vertex Group influence filter missing
This was removed by error during the last refactor of modiifers.
2020-07-04 17:31:15 +02:00
Jacques Lucke
169bb4b9ce BLI: fix mistake in move constructor of Stack 2020-07-04 17:28:25 +02:00
Julian Eisel
8e97694c8a Fix T78588: Material preview not visible in selection list
Logic to determine if the library icon should be used was too general.
2020-07-04 17:06:57 +02:00
Antonio Vazquez
9168ea8aab Cleanup: Fix small typo error 2020-07-04 11:15:11 +02:00
Antonio Vazquez
17603816f2 GPencil: Cleanup some comments typo 2020-07-04 11:04:21 +02:00
Clément Foucault
b0da78084b UI: Attempt to fix OSX widget shader issue
Some OSX GL driver implementation needs a dummy vbo read. This fixed issues
with the Hair shaders in the past.

Related to T78307
2020-07-04 01:27:59 +02:00
Richard Antalik
cad98923d0 Cleanup: spelling 2020-07-04 01:03:34 +02:00
Nathan Craddock
4bf56b37ca Cleanup: Use C-style comments in outliner files
No functional changes. Convert all C++ style comments to C comments.
Also capitalize and add full stops.

The comments themselves were not cleaned up. Some could be removed or
reworded.
2020-07-03 13:40:12 -06:00
Nathan Craddock
59ef43147e Cleanup: Remove unused outliner activation code
No functional changes. Remove commented calls to extern_set_butspace
and unused text activation code.
2020-07-03 13:40:12 -06:00
Nathan Craddock
57a48bd0ca Cleanup: Use _fn suffix for outliner button callbacks
No functional changes. Use _fn instead of _cb.
2020-07-03 13:40:12 -06:00
Sebastian Parborg
d7dbf90a02 Clang-tidy: Enable braces-around-statements warning 2020-07-03 21:23:33 +02:00
Brecht Van Lommel
185fe9cd8b Cleanup: compiler warning 2020-07-03 19:12:37 +02:00