The ED_region_panels_layout_ex function was quite long, so separating
some pieces of it can make it easier to understand and more modular.
Additionally, the parts that were split off can be reused for future
property search code.
On MacOS + Intel Iris Graphics 6100 (may affect other config too), the
texelFetch operation bypass the base mip setting of the texture object.
Using textureLod with lod = 0.0 ensure the lowest (after clamping) mip will
always be selected.
Also disable the texture filtering for this sampler to avoid unecessary
fetches.
This should fix T78653 Blender 2.83 broken Depth of Field in Viewport
Remove the condition preventing orientation from being obtained out of
the 3d View context.
Also pass the `ob` and `obedit` arguments obtained from the caller.
Debug groups makes it easier to view from where an error comes from.
The backend can also implement its own callback to make it easier to
follow the API call structure in frame debuggers.
The instance offset should be applied before scaling.
This way the scaling is done from the "collection origin".
Reviewers: zeddb, brecht
Differential Revision: https://developer.blender.org/D8889
The bounding box is not updated in the original object when the function is called using evaluated object and keeps wrong while the object is not edited or the file saved.
Reviewed By: mont29
Differential Revision: https://developer.blender.org/D8565
Notes: Minor changes done in the patch following review comments.
During undo/redo read code is expected to clear the `OB_MODE_EDIT`
bitflag of `Object.mode`, for some reasons.
This was not done anymore for re-used Objects, we need to add a special
handling case for that too.
Should be backported to 2.90 and 2.83 (will probably not be straight
forward for the latter).
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.
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
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.
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.
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.
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