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
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.
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.
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.
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).
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
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.
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
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
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
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.
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