Commit Graph

79997 Commits

Author SHA1 Message Date
Campbell Barton
d9e2adaaf9 Fix T80728: UV edge select splits UV's for lasso/box/circle select
Oversight in 411c5238a2 ignored sticky selection.

Use 'uvedit_edge_select_set_with_sticky' to make sure
sticky options are respected.

Also skip checking the existing selection since that only checks the
current UV, not all connected UV's which is needed for sticky selection.

The extra checks to avoid updating UV's isn't such an advantage as
only meshed in the selected region are tagged for updating.
2020-09-14 21:19:36 +10:00
Sybren A. Stüvel
ee97add4c4 Alembic export: write custom properties
Write custom properties (aka ID properties) to Alembic, to the
`.userProperties` compound property.

Manifest Task: https://developer.blender.org/T50725

Scalar properties (so single-value/non-array properties) are written as
single-element array properties to Alembic. This is also what's done by
Houdini and Maya exporters, so it seems to be the standard way of doing
things. It also simplifies the implementation.

Two-dimensional arrays are flattened by concatenating all the numbers
into a single array. This is because ID properties have a limited type
system. This means that a 3x3 "matrix" could just as well be a list of
three 3D vectors.

Alembic has two container properties to store custom data:
- `.userProperties`, which is meant for properties that aren't
  necessarily understood by other software packages, and
- `.arbGeomParams`, which can contain the same kind of data as
  `.userProperties`, but can also specify that these vary per face of a
  mesh. This property is mostly intended for renderers.

Most industry packages write their custom data to `.arbGeomParams`.
However, given their goals I feel that `.userProperties` is the more
appropriate one for Blender's ID Properties.

The code is a bit more involved than I would have liked. An
`ABCAbstractWriter` has a `uniqueptr` to its `CustomPropertiesExporter`,
but the `CustomPropertiesExporter` also has a pointer back to its owning
`ABCAbstractWriter`. It's the latter pointer that I'm not too happy
with, but it has a reason. Getting the aforementioned `.userProperties`
from the Alembic library will automatically create it if it doesn't
exist already. If it's not used to actually add custom properties to, it
will crash the Alembic CLI tools (and maybe others too). This is what
the pointer back to the `ABCAbstractWriter` is used for: to get the
`.userProperties` at the last moment, when it's 100% sure at least one
custom property will be written.

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

Reviewed by: sergey, dbystedt
2020-09-14 12:49:27 +02:00
Jacques Lucke
b8a25bbd8a Cleanup: remove unused function
The last usage was removed in {rB4eda60c2d82de0d7f7ded8ddf1036aea040e9c0d}.
2020-09-14 12:24:13 +02:00
Jacques Lucke
61abd77648 Fix T80564: flow particle size is too limiting
Reviewers: sebbas

Differential Revision: https://developer.blender.org/D8888
2020-09-14 12:02:00 +02:00
Bastien Montagne
3ce06a8011 Fix T80643: Library Override: Can't change Armature Layer enabled-ness.
Armature properties still had to be made overridable.
2020-09-14 11:33:35 +02:00
Jeroen Bakker
28c2032579 Fix T80705: Single Image Texture Painting Crash
Regression introduced by {D8234}; GPU textures can be requested without
an image user.
2020-09-14 11:09:58 +02:00
Bastien Montagne
ec42daf630 Fix T80457: Library Override - Custom Property to Drive Child Particles results in Crash.
RNA diffing code was not dealing properly valid NULL PointerRNA (like
the empty texture slots of a ParticleSettings e.g., which were cause of
crash in that report).

To be backported to 2.90 and 2.83.
2020-09-14 10:31:59 +02:00
Campbell Barton
f28adaef52 Fix T80747: New vgroups on unsupported object types fails silently
Raise an exceptions when adding vertex groups to object types
that don't support it.
2020-09-14 18:25:54 +10:00
Campbell Barton
14b0f20374 Fix T80694: Crash reloading scripts from the Python console
Running `bpy.ops.script.reload()` from Python was crashing
since the operator being called was it's self freed.

Change the reload operator to defer execution - as supporting
re-registration during execution is quite involved for a corner-case.
2020-09-14 17:59:26 +10:00
Campbell Barton
c207f7c22e Cleanup: use doxy sections for imbuf 2020-09-14 17:59:21 +10:00
Jeroen Bakker
c6210f9bac DrawManager: Resolve Assert in Image Engine
Tiled texture uses different texture structure than normal textures.
Normally we add dummy textures and use them, but I found it cleaner to
have 2 shaders and use the correct shader.
2020-09-14 09:48:45 +02:00
Manuel Castilla
9bc1d7a6de Fix T72584: Hiding a collection don't hide a child object in viewport when in Local View
Hiding a collection should hide all children objects even when we are in Local
view with one of them.

Note from reviewer: We are doing this already for local collections. So
may as well do it when hiding the collections for the entire view layer.

Developer details: In function "BKE_object_is_visible_in_viewport" object flag
BASE_VISIBLE_VIEWLAYER wasn't being checked when we were in Local view,
It's now changed so that it's checked even if we are in Local view.
And this function was called by some viewport draw functions to check if it
should draw an object or not.

Maniphest Tasks: T72584

Differential Revision: https://developer.blender.org/D7894
2020-09-14 09:25:48 +02:00
Clément Foucault
0f61b27e93 DRW: Fix wrong use of GPU_blend
Use the enum instead of a boolean. Exibit n°5512 where typecast
warning would have find the error.
2020-09-14 01:10:25 +02:00
Clément Foucault
c1c53d3ae3 Cleanup: DRWManager: Remove deprecated pass_state functions
And also enable pass names when using `--debug-gpu` option.
2020-09-14 01:10:25 +02:00
Clément Foucault
ecfbc5fb55 Fix T80603 Workbench: Inverted alpha when rendering
This was caused by a left over DRWPass->state modification
that made the subsequent samples redraw without Blending enabled.
This led to incorrect blending.

The fix is to use the new API for pass instancing.
2020-09-14 01:10:25 +02:00
Howard Trickey
ab7608af1b Apply patch D8816, from Zachary(AFWS) for collection boolean operand.
Also added code so that exact solver does the whole collection at once.
This patch allows users to use a collection (as an alternative to Object)
for the boolean modifier operand, and therefore get rid of a long modifier stack.
2020-09-13 16:57:27 -04:00
Clément Foucault
3ee2ca0d3c Fix T80023 Invisible objects or glitches with object 'in front' + 'X-ray'
Rendering only to the depth buffer seems to need a valid fragment shader
with a color output on some platform.
2020-09-13 15:53:45 +02:00
Jeroen Bakker
f5ccf8727f CleanUp: Code folding
Incorrect code folding in recent commit
2020-09-13 11:15:37 +02:00
Campbell Barton
1e186cea7c Fix T77584: Edit Mode crash with shape keys created on blank mesh
Entering edit-mode after creating shape keys on a blank mesh would crash.

Regression in 9b9f84b317 which prevented initializing empty
shape keys when there is no shape key offset data available.
2020-09-13 18:11:38 +10:00
Campbell Barton
e4811cf0c3 Cleanup: unused variable 2020-09-13 18:04:46 +10:00
Campbell Barton
952212ac69 Fix printing data from an evaluated depsgraph in Python
Printing an evaluated view layer would show:
  Evaluated Scene 'Scene'

- Now __repr__ uses the __str__ fallback for evaluated data,
  as done in other situations where we can't create a string that
  would evaluate to the data.
- __str__ now shows when the data is evaluated.
- __str__ always includes the memory address
  (which was previously only shown for structs without a name).
2020-09-13 15:49:55 +10:00
Campbell Barton
ca39325826 Fix T62504: Crash accessing depsgraph from evaluated view layer
Use correct owner_id types for depsgraph view_layer properties
instead of inheriting from the Depsgraph which is set to NULL.
2020-09-13 15:28:41 +10:00
Campbell Barton
b52aeaadfb Cleanup: spelling, update function name in comments 2020-09-13 15:00:52 +10:00
Clément Foucault
2e4569abbc Fix remaining GL calls/type preventing from building due to recent cleanup 2020-09-12 19:48:52 +02:00
Clément Foucault
fe5efccd8f GPUOffscreen: Push the GL state before and after binding
This avoids wrong viewport and scissor bounds with BGL commands.
2020-09-12 17:34:51 +02:00
Clément Foucault
bf3f4da947 GPU: Fix wrong state before python callbacks
This was caused by a missing state apply.

We force the GPUState to be set after the callbacks to avoid
desync between our state tracker and the real gl state.

This fixes some issues but a better general fix for all BGL would
be better.

This fix T80297 2.91 texture alpha is not transparent
2020-09-12 17:29:37 +02:00
Clément Foucault
6bc0a8424e Cleanup: GPU: Rename GPUStateManager to StateManager to follow style 2020-09-12 16:22:34 +02:00
Clément Foucault
0639f008b6 Cleanup: GPU: Remove unused GPU_debug 2020-09-12 16:22:06 +02:00
Clément Foucault
6432fa488a Cleanup: Remove GLEW dependencies outside of GL module 2020-09-12 15:51:21 +02:00
Clément Foucault
136bdb561b GPU: Add Image Load Store extension support
This wraps the functionality used to speedup EEVEE volumetrics.

This touches the rendering code of EEVEE as it should fix a mis-usage of
the GL barrier. The barrier changed type and location, removing an
unused barrier.
2020-09-12 15:29:54 +02:00
Clément Foucault
a442da62dc BLI: Fix bitscan_forward_uint64 unix implementation 2020-09-12 15:29:54 +02:00
Campbell Barton
29af082e4a Fix T70255: Setting file browser bookmark from Python crashes
Support setting bookmarks even when the file browser
isn't the active space.
2020-09-12 17:59:26 +10:00
Campbell Barton
8c17269183 Cleanup: use C style doxygen comments 2020-09-12 16:33:34 +10:00
Campbell Barton
4c24e8e992 Cleanup: missing-variable-declarations warning 2020-09-12 16:33:27 +10:00
Campbell Barton
ad5f1d0231 Fix T71605: Crash toggling dynamic topology in background mode
Support toggling without an undo stack in background mode.
2020-09-12 13:42:32 +10:00
Campbell Barton
77f6d9dbc9 Fix missing return value in fix for T80677 2020-09-12 13:42:32 +10:00
Germano Cavalcante
4eda60c2d8 Fix T80677: Absolute grid snapping doesn't work with constraints
Regression introduced in rB546b900194f0
2020-09-11 23:02:56 -03:00
Ray Molenkamp
b00820c04d Cleanup: Fix build warning with MSVC
MSVC warns on MEM_freeN being fed a const pointer
2020-09-11 13:38:14 -06:00
Hans Goudey
a69ddea29d Cleanup: Remove unused variables and function
Somehow these changes were lost while pulling the previous commit from
the property-search-ui-v2 branch.
2020-09-11 14:26:05 -05:00
Hans Goudey
a550937116 UI: Use operator to set property editor's pinned data-block
This commit removes the custom callback that's currently used to set the
property editor's pinned data, replacing it with an operator. This means
"pin" button doesn't have to be defined in C.

Differential Revision: https://developer.blender.org/D8376
2020-09-11 14:08:38 -05:00
Germano Cavalcante
e22e302837 Fix T80623: Correct Face Attributes affecting modes not listed
Some transform modes (such as Mirror) are not listed to have UV corrected
during the transformation.

It messed up the UV of all of these.
2020-09-11 15:41:15 -03:00
Sebastián Barschkis
1e3057f177 GPUTexture: Return NULL texture if data grid is NULL too
In a recent update to the fluids modifier (rB03c2439d96e8), I introduced a flush call that sets all grids to NULL if the frame is outside of the allowed frame range. This way, the texture creation function must also check if the data grid is NULL before trying to create a texture.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D8872
2020-09-11 18:57:56 +02:00
Joseph Brandenburg
ad70d4b095 Constraints: Child-Of, set inverse matrix upon creation
Set the inverse matrix when the Child Of constraint is created. This
prevents the bone/object from jumping away when the constraint is added,
improving usability.

Reviewed by: sybren

Differential Revision: https://developer.blender.org/D8851
2020-09-11 15:19:06 +02:00
Campbell Barton
f3224bbc0f OpenSubdiv: initialize in background-mode
Previously this was initialized with OpenGL, however this uses a
more proper/complete implementation it is not only for OpenGL.
2020-09-11 20:41:51 +10:00
Jacques Lucke
08002eb865 Cleanup: remove unused includes 2020-09-11 12:08:12 +02:00
Campbell Barton
d96b141666 Fix T79464: Crash adding objects without an active screen
Running add-objects operator without an active screen would crash
as CTX_data_edit_object would return NULL in this case.

This could happen when adding objects from frame-change handlers for e.g.

In the case of adding new objects there is no need for a context lookup,
pass this directly to ED_object_editmode_exit_ex.
2020-09-11 20:04:34 +10:00
Jacques Lucke
c27d00cde0 Refactor: move CacheFile .blend I/O to IDTypeInfo callbacks 2020-09-11 11:57:54 +02:00
Jacques Lucke
f8ef7f045c Refactor: move Sound .blend I/O to IDTypeInfo callbacks 2020-09-11 11:52:37 +02:00
Sergey Sharybin
55efa1795f Particles: Allow python to write hair keys
Add a function HairKey.co_object_set() which can be used to modify hair
keys positions in a way that hair strands respects the new coordinates,
without doing extra trickery with edit mode toggle. The naming comes
from existing HairKey.co_object().

The usage is a bit tricky:

- The function is to be called on the hair key from an original object.
- The arguments are to be passed from evaluated object.

Basically:

  hair_key_orig.co_object_set(object_eval, modifier_eval, particle_eval)

This is required because coordinate space conversion needs to know
evaluated state of the hair system in order to access hair space
matrix. It is a deliberate choice to not pass dependency graph and not
to do lookup of evaluated ID on every call of co_object_set() to keep
performance on a manageable levels.

One requirement is that the hair strands are to be calculated once, by,
for example, toggling particle edit mode. Without this there will be no
`particles` to access hair keys from in the original object.

Such functionality is something what got lost during 2.80 development
and is something what is needed here at the studio.

Below is the file with more complete example: convert strands from mesh
edges to actual particle system hair strands. The viewport refresh is
sometimes missing, and this does not seem to be related to this specific
change.

{F8858104}

Differential Revision: https://developer.blender.org/D8849
2020-09-11 11:49:34 +02:00
Jacques Lucke
218e9e76a8 Refactor: move Simulation .blend I/O to IDTypeInfo callbacks 2020-09-11 11:46:26 +02:00