Selected tracks in the Movie Clip Editor's Dope Sheet used hard-coded color.
Added a new theme property for them, and previously hard-coded color is now just a default.
Pull Request: https://projects.blender.org/blender/blender/pulls/144265
This adds support for opening "invalid" files containing closure/bundle nodes that have
first been saved with 5.0, then resaved with 4.5. Note that loading them in 4.5 only works
after #145337.
Pull Request: https://projects.blender.org/blender/blender/pulls/145333
This patch turns node Menu options into menu inputs. This patch only
covers node operations like Filter, Distort, and so on. Pixel nodes like
Color Balance, Matte, and so on will be done in a separate patch.
Pull Request: https://projects.blender.org/blender/blender/pulls/144495
For historical reasons these were stored in sRGB space, which caused all
kinds of complexity.
* For image painting, it now properly uses the byte buffer colorspace
instead of assuming sRGB or display colorspace. This can be more expensive,
so there is a fast path for sRGB buffers (and for fixed brush colors).
* Lots of code was changed to remove conversion when painting float images
or vertex colors, and added when painting byte images.
* For non-color data, there is now no colorspace conversion between the brush
color and image pixels, and #143642 was basically reverted because of that.
Compatibility notes:
* Backwards compatibility is not perfect, as we can not determine if the
brush has non-color data in isolation. We always convert sRGB to linear,
and existing brushes configured with non-color data need to be manually
fixed.
* There is forward compatibility, the old sRGB value is still stored next
to the scene linear value.
Pull Request: https://projects.blender.org/blender/blender/pulls/144400
For a brief period it was possible to create these node interface sockets
that were both inputs and outputs. Nowadays we're implementing the
row-alignment in a different way, and we expect the input and output
status to be mutually exclusive. This PR adds versioning to properly
split such sockets.
The implementation relies on the unique identifier space being
separate for the input and output sockets.
Pull Request: https://projects.blender.org/blender/blender/pulls/144807
Supports baking to object and tangent space.
Compatible with Cycles Vector Displacement node which has the
(tangent, normal, bitangent) convention.
The viewport situation is a bit confusing: seems that Eevee
does not handle vector displacement properly and rips all faces
apart. Cycles renders the displaced object correctly.
Not entirely happy with the UI, as displacement space does not
really belong to the Output, but so doesn't Low Resolution Mesh.
Perhaps the best would be to have a separate pass to revisit the
settings, and also make it more clear what the Low Resolution Mesh
actually does.
Pull Request: https://projects.blender.org/blender/blender/pulls/145014
Implements the proposed design (with some modifications) in #135058.
## Sequencer Scene
This adds a new property called `sequencer_scene` to workspaces. This scene is used
by the video sequence editors in the current workspace for their context.
This is a first step towards "detaching" the VSE from the active scene in the window.
Each sequencer timeline editor shows the sequencer scene that is being used.
By default, when no sequencer scene is selected, the timeline and preview are empty.
Pressing the "new" button will add a new scene and assign it to the sequencer
scene for the current workspace.
## Contextual Playback
Pressing `Space` (by default) for starting the animation playback is now contextual:
depending on the context (where your mouse cursor is), the scene that is played back
might be different. E.g. with a 3D Viewport and a Sequencer open, pressing "play"
in the 3D Viewport will play the _active scene_ of the window, while pressing "play"
in the sequencer will play the _sequencer scene_.
## Time & Scene Synchronization
Additionally, this adds a toggle called "Sync Active Scene".
With the property turned on, the active scene & scene time in the window will be
synced with the time & scene of the current scene strip in the sequencer.
Note that this is _not_ bi-directional. The sequencer can change the active scene
and map time, but it's not possible the other way around since it one can have
multiple strips using the same scene (+camera, and even time!).
Currently this setting is exposed in the footer of the sequencer timeline as well
as in the workspace settings.
This allows for one of the core concepts that the story tools projects aims at: Working
in a scene (e.g. in the 3D viewport) while also working with the edit
(in the sequencer timeline).
## Some technical notes
* Undoing while playback is running will now cancel playback. This is to avoid the timer,
that points to the scene and viewlayer that are playing, to get de-synced after loading
the memfile undo step.
* When the sequencer scene is not the same as the active scene, we ensure it has
a depsgraph.
* Normally, when a `NC_SCENE` notifier points to a specific scene, the notifier is dropped
if that scene doesn't match the active one in the window. We now also check that it
doesn't match the sequencer scene in the active workspace.
* When loading older files, we need to make sure that the active workspace in a window
uses the active scene as the sequencer scene. This is to make sure that the file opens with
the same sequences open.
* Tool settings are stored per scene. To make sure the sequencer uses the tool settings for
the sequencer scene, the "context.tool_settings" and `CTX_data_tool_settings` members
are overridden in the sequence editors.
Pull Request: https://projects.blender.org/blender/blender/pulls/140271
Almost all settings were duplicated between BakeData and RenderData.
The only missing field was the bake type, which is stored as a custom
property in Cycles.
This change:
- Removes unused bake_samples and bake_biasdist.
- Migrates settings like bake_margin to BakeData.
- Switches multires baker to use bake_margin.
- Introduces bake type in the BakeData, the same way how it was
defined in RenderData::bake_mode.
Pull Request: https://projects.blender.org/blender/blender/pulls/144984
Currently, sequencer structs contain several pointers to data within
other structs. These pointers need to be remapped as the structs are
reallocated when reading from blend files. That has worked so far
because the pointers are exactly the values from the Blender session
that saved the file. WIth the implementation of #127706, the pointers
in the file aren't "real" anymore, and we can't offset them to get the
struct that contained the data.
This commit replaces these 4 mid-struct pointers to point to the
containing strips instead, and uses some trivial logic to access the
fallback root sequence channels and strips. This makes the pointer
remapping on file load possible again.
The downside is that this isn't strictly backward or forward compatible,
but only on a UI-level. The active meta-strip information will be lost,
and the sequencer will reset to displaying the root sequence.
Depends on #144624
Pull Request: https://projects.blender.org/blender/blender/pulls/144626
This patch unifies the Gamma node across editors:
- Compositor now uses the Shader Gamma node implementation.
- Geometry Nodes also uses the node as a new addition.
- UI-wise in the Compositor, only socket labels change to "Color".
Forward compatibility is broken for the compositor, and the python API
changed, since the node's ID name is now ShaderNodeGamma as opposed to
CompositorNodeGamma.
Pull Request: https://projects.blender.org/blender/blender/pulls/142414
Prior to this commit, determining the default brush asset used for a
particular mode was based on the object's mode. This is slightly
incorrect for the Image Editor, since it may be in Paint Mode no matter
the underlying object type. To fix this, use the runtime `PaintMode`
enum for determining these default values instead of `eObjectType` and
store the `PaintMode` on `PaintRuntime` for easy access.
Additionally, inside the toolsystem, prevent accidentally unsetting
the default brush by checking for the presence of the asset when
loading an `AssetWeakReference`.
Pull Request: https://projects.blender.org/blender/blender/pulls/144765
Continuing #140360, after 39c066ee53
Moving curve handle colors & size from space editors into common theme properties.
They are now shared by 3D Viewport, Image Editor, Graph Editor, and Movie Clip Editor,
instead of each of them having their own properties.
(Video in PR)
---
Details:
- NURB U/V lines, active spline, and last selected point colors were defined
in `rna_def_userdef_theme_spaces_curves` but were optional and only called by
3D viewport. Since no other editor calls that function anymore, I removed it and
moved those properties directly inside `rna_def_userdef_theme_space_view3d`.
- In Image Editor & Movie Clip Editor (Mask mode), curves don't ever show
selection colors, and Vector handles are generally never visible, that is
bug/missing in Blender in general, not a result of this PR.
- Handle vertex size were included in Dope Sheet and NLA, where handles don't
exist. Now as a side effect they're removed as well.
Pull Request: https://projects.blender.org/blender/blender/pulls/143762
Point Caches (used by particle system, cloth, boids etc.) are now
always compressed, uzing zstd coupled with lossless data filtering.
- This is both smaller cache files _and_ faster than the old
"Heavy" compression mode,
- And smaller data files and same or slightly faster speed than
using no compression at all,
- There was not much difference between compression levels once
data filtering got added, so option to pick them was removed.
- So there's no downside to just always using the compression,
which makes for a simpler UI.
- RNA change: removes PointCache.compression property.
More details and cache size / performance numbers in the PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/144356
This commit adds the option to open the Preferences editor in a
maximized area instead of a new window. This is done by adding a
"Preferences" field to the Interface > Editor > Temporary Editor
preferences. The default value is set to "New Window" keeping the
current behavior.
Implements: #142665
Pull Request: https://projects.blender.org/blender/blender/pulls/142681
- Make PTCACHE_COMPRESS_ an actual enum
- Clarify that while it looks like bitmask, it really is just an enum
- Make ptcache_file_compressed_write take similar arguments as
ptcache_file_write (item count and item size)
- All callers of ptcache_file_compressed_write were doing compressed
result memory allocation in exactly the same way; just make it happen
inside the function itself. This also makes it no longer need
the callers to do "is this zstd?" check around the call.
- The lzma "props" buffer was dynamically allocated for no good reason,
just make it a simple array, and clarify the variable names.
- Remove BLI_assert_unreachable() from ptcache_file_compressed_read;
asserts are for "impossible" situations; this one just happens any
time one opens a 4.x file with caches in 5.0.
Pull Request: https://projects.blender.org/blender/blender/pulls/144193
Maintain the active object for the 3D viewports clipboard.
This avoids the need to activate the object after pasting to edit
its materials or change modes.
Matches the behavior for notes (see !143832) and addresses #143833.
Ref !144192
Next step of #140360, continuing after 39c066ee53
Moves more animation theme properties shared by different editors to the new Common panel.
- Playhead (was shared by 7 editors)
- Marker Line (was shared by 5 editors)
- Marker Line Selected (was shared by 5 editors)
- Channel (was shared by 3 editors)
- Sub-channel (was shared by 3 editors)
- Channel Group (was shared by 2 editors)
- Active Channel Group (was shared by 2 editors)
In total, 27 properties are replaced with 7.
---
User Visible Changes:
- "Current Frame" is renamed to "Playhead". It was general sentiment among
Anim and UI modules to rename this everywhere after "Playhead Snapping" was
added, and this is first step towards that. Name is more recognizable and it's
clear it refers to UI element, rather than something as generic as "current frame".
- Channel, Sub-channel, Channel Group, and Active Channel Group colors in
Dope Sheet had alpha, but ones in Graph and NLA editors didn't. New common
property is used for all three of them and has alpha, meaning two editors gain
alpha as well, but they don't use alpha, still only Dope Sheet does.
- Channel and Sub-channel had different color in NLA and didn't match Dope Sheet
and Graph Editor, now since it's shared it has same color, which is a visual change
(slighlty lighter blue).
Pull Request: https://projects.blender.org/blender/blender/pulls/144060
Follow up to f646948ace
The repeat zone color is changed back to the color it used in 4.5, to
avoid the need for people to re-learn the color. The closure socket and
zone share the same color, which is made more yellow-ish to distinguish
it from the bundle socket color.
This PR adds a flag to the pose bone that determines its visibility.
Doing so allows to hide a pose bone and
* don't affect other instances of the same armature
* save the visibility even if the rig is linked
The visibility of the bone in object mode is now also determined by the
pose bone whereas before it was the `Bone`.
**This breaks backwards compatibility** on the Python API since the visibility property,
on the `Bone` behaves differently now as it hides the edit bone instead of the pose bone.
In order to remove all active uses of `BONE_HIDDEN_P` the changes in `armature_skinning.cc` are required.
Part of #138482
Pull Request: https://projects.blender.org/blender/blender/pulls/139167
Previously line art uses the same thickness value as found in grease
pencil before blender v4.3 for generating strokes, now everything is
migrated to using "radius", so it makes more sense to change that it to
using "radius" so it's consistent with everywhere else.
Pull Request: https://projects.blender.org/blender/blender/pulls/144121
This patch redesigns the File Output node to provide better UX and UI.
This is mainly achieved by allowing the user to create inputs by
dragging into an Extend socket and adjust existing inputs using the
familiar UI list design available in Blender. Additionally, various UI
changes were done:
- The Use Node Format option was renamed to Override Node Format for
clarity.
- Socket types are now fixed and do not change as new links are made,
allowing users to specify the exact output type and employ implicit
conversion if needed.
- The distinction between images and Multi-Layer EXR was made clearer.
- Final output paths are drawn in the UI to remove guess work.
- The Base Path was split into a Directory and a File Name.
- Panels were added to group options, include a panel for the node
format, items, and item formats.
Pull Request: https://projects.blender.org/blender/blender/pulls/141091
Replaces the `FPS` macro with `scene->frames_per_second()`.
The macro has two major issues:
* It hides that it depends on a `Scene *` variable named `scene`.
* It makes debugging harder.
This is now replaced with a member function on the scene.
Pull Request: https://projects.blender.org/blender/blender/pulls/144127
The W channel in quaternion and axis-angle F-Curves is now themeable
(defaulting to yellow), instead of incorrectly blending the X and Y axis
theme colors.
The original blending math did not take into account that the hue
channel actually wraps around, and so the blended color became blue
instead of the intended yellow.
Instead of fixing the math, the theme has been expanded for this W axis.
The default color is set to the mathematically correct yellow.
Co-authored-by: Sybren A. Stüvel <sybren@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/143211
Ref: #143441
The Map Value node was removed. During versioning, it gets replaced by
other equivalent nodes.
This PR adds a frame around the newly created nodes with a label that
clarifies the reason these nodes were added.
Pull Request: https://projects.blender.org/blender/blender/pulls/143800
This commit introduces the extension modes to the corner pin node and
further streamlines the node properties by wrapping all props in the node
storage. Therefore, the interpolation mode has been removed from the
custom properties of the node and moved into the node storage.
Right now, the extension modes only work for non-anisotropic filtering.
Pull Request: https://projects.blender.org/blender/blender/pulls/141570
The issue comes from the fact that placeholder IDs where not properly
cleared before writing, leaving all kind of potential broken pointers
once read back.
Also use the `BLO_Write_IDBuffer` for these, with dedicated 'cleanup'
logic since in their case, we want to write almost nothing.
Pull Request: https://projects.blender.org/blender/blender/pulls/143949
This removes the "Geometry" part from their name because we want to use them in
other node tree types too (see #141936).
Usually, we don't change idnames because they are the primary identifier of
nodes and is expected to stay the same. Since they are generally not shown to
users (just Python developers), it's also not urgent to change them. However, in
this specific case we have the opportunity to update the idname before the node
becomes an official feature, so it's not as bad to change it.
This patch has full backward compatibility, but no forward compatibility (for
files that used the experimental feature).
Pull Request: https://projects.blender.org/blender/blender/pulls/143823
This commit introduces the extension modes for the map UV node. The
drop-down for the extension modes is only shown if the interpolation
mode is not set to anisotropic. This is due to extension modes currently
not being supported for the anisotropic filtering.
Pull Request: https://projects.blender.org/blender/blender/pulls/143415
First part of design defined in #140360
Images in PR
This PR does two things:
- Creates new panel in theme preferences called "Common" that
doesn't belong to any editor
- Moves "Preview Range" property in common, and removes it
from animation editors.
Now, there is a single theme property for preview range, rather
than 5 for each animation editor.
Co-authored-by: Pablo Vazquez <pablo@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/140686
The new anti-aliasing feature added in 299a581b1b didn't contain
versioning for startup.blend defaults, this caused the versioning
implemented in versioning_450.cc to be used instead, which was meant
to ensure older files stay the same. This thus caused the feature to be
effectively disabled in default/factory startup files.
Pull Request: https://projects.blender.org/blender/blender/pulls/143711
The node uses anisotropic sampling (which is currently not supported for the
extension mode), so extension modes are only rendered in the node if any
other interpolation method, but anisotropic is selected.
Pull Request: https://projects.blender.org/blender/blender/pulls/143367
- Some functions that took integer arguments for proxy size enums; make
them take said enums directly.
- Add get_render_scale_factor() that calculates effective render scale,
use that in places that did manual "use either scene render scale setting
or proxy size" calculation in 5 places.
- Replace previous double with float in proxy size scale factors; all
the factors are exactly representable as floats, and all the calling
places used them as floats too.