Change compatible look check so that if the view contains
explicitly configured looks the non-explicit looks are not
added to the list.
In practice this means that if there are looks "Low Contrast"
and "AgX - Low Contrast" only the latter one is considered to
be compatible with the "AgX" view.
Ref #110685
Pull Request: https://projects.blender.org/blender/blender/pulls/111229
This transform generates code `if ( gamma != vec3(1., 1., 1.) )`
which is not compatible with Metal.
This patch adds an extra OCIO code processing which converts syntax
to a portable version. It only handles this specific case for the
processing performance reasons.
To reproduce the issue add the following look at the end of the
config.ocio:
```
- !<Look>
name: Grading
process_space: Filmic Log
description: TEST
transform: !<GroupTransform>
children:
- !<GradingPrimaryTransform>
style: log
contrast: {rgb: [0.7, 0.7, 0.7], master: 1}
saturation: 1.15
pivot: {contrast: -0.2}
```
Ref #110685
Pull Request: https://projects.blender.org/blender/blender/pulls/111231
While currently the only way to reproduce the issue is to modify
the default OCIO configuration, change the view (which does yet
validate look on change) and save-reload, it seems to be a good
thing to validate anyway, to be more future-proof.
Pull Request: https://projects.blender.org/blender/blender/pulls/111209
If the new view transform does not support the currently configured
look reset look to the default None, similar to the color management
verification on .blend file open.
Currently it is not a problem as all views support the same set of
looks. But with an upcoming addition of AgX it will no longer be
true.
Ref #110685
Pull Request: https://projects.blender.org/blender/blender/pulls/111185
Recent patches added a variable `resolution_scale`
This variable defines how many points on the x or y axis to add.
However I find the name confusing.
Instead of that, change it to `pixels_per_unit`
and move the `points_per_pixel` factor
to `calculate_bezt_draw_resolution`
no functional changes
Pull Request: https://projects.blender.org/blender/blender/pulls/111037
`select hierarchy` is treated in similar way as we're selecting single element from outliner.
When `object_select_hierarchy_fn` is called for the first time, we clear select flag for all elements
in `outliner_item_select`. This causes issue when `select hierarchy` is called for multiple elements.
So fix is to not touch select and activate flags when `OL_ITEM_RECURSIVE` flag is set.
This also fixes the hierarchy selection when "sync select" is OFF.
Old Differential Revision: https://archive.blender.org/developer/D16804
Pull Request: https://projects.blender.org/blender/blender/pulls/104737
Splitting interface stages based on the interpolation of its
attributes.
Then naming convention that have been used:
* use `interp` as instance name when using smooth interpolation
* use `interp_noperspective` when using no perpective interpolation
* use `interp_flat` when using flat interpolation
The same suffix will be added to the struct names.
The naming convention will be added to the GLSL code style and
applied to other shaders as well.
Pull Request: https://projects.blender.org/blender/blender/pulls/111210
shaderc generates an error when a struct containing an int type
isn't qualified as flat. We work around this issue by changing the
interpolation mode to flat during code generation.
Pull Request: https://projects.blender.org/blender/blender/pulls/111211
Prevent a segmentation fault when the viewport is set to 'Material Preview'
mode, drawing textures, and Blender built with `WITH_OPENCOLORIO=OFF`.
Most `IMB_colormanagement_...` functions assume that the `colorspace`
pointer can be `nullptr`, but the internal function
`colormanage_ensure_srgb_scene_linear_info()` does not, causing a crash.
Since this check can be done in multiple places, I picked one that seems
consistent with the rest of the code.
Pull Request: https://projects.blender.org/blender/blender/pulls/111144
This PR cleans up the Stage Interface code generation and use the
correct interpolation qualifier. This is a cleanup/fix before we can
start converting shaders stage interfaces to be compatible with vulkan.
Ref: #111138 for more information about vulkan compatibility
Pull Request: https://projects.blender.org/blender/blender/pulls/111207
A difference was detected between stage interfaces between OpenGL and Vulkan
that are not compatible with our current API.
**OpenGL**
In OpenGL an stage interface struct can have different interpolation qualifiers
per attribute.
```glsl
struct MyStageInterface {
smooth vec4 color;
flat int face_flag;
};
layout(..) MyStageInterface interp;
```
**Vulkan**
In vulkan the interpolation qualifier isn't supported on attribute
level and needs to be added to the struct.
```glsl
struct MyStageInterface {
vec4 color;
};
struct MyStageInterface_flat {
int face_flag;
};
layout(..) smooth MyStageInterface interp;
layout(..) flat MyStageInterface_flat interp_flat;
```
This patch reports shaders that are incompatible with Vulkan so they can be
patched. Report is only done in debug mode and when using the vulkan backend.
After all shaders are patched an error will be raised so developers will
known immediately when incompatibility are created.
Making the shaders compatible and adding the error will be done in future
patches.
**Python**
Via Python gpu module (gpu.types.GPUShaderCreateInfo) it isn't possible
to construct an incompatible shader as instance names cannot be set
via the API. So this isn't a breaking change.
Pull Request: https://projects.blender.org/blender/blender/pulls/111138
This PR fixes an compilation error where sstream used to be included
on a higher level, but has been removed and we need to include them
where they are actually used.
This wasn't detected as most developers don't have the vulkan backend
active.
Pull Request: https://projects.blender.org/blender/blender/pulls/111203
Regression in [0] which caused `execinfo.h` not to be detected by CMake.
Setting a default variable for other platforms prevented the new
variable from being set.
[0]: f197b1a1f1
The `Find*.cmake` modules originally used uppercase commands to match
CMake's own conventions. Since then CMake uses lower-case and even
within our own find modules, using all uppercase wasn't done
consistently. Opt for lowercase everywhere.
Previously FREETYPE_LIBRARIES would sometimes contain
BROTLI libraries, since some configurations set them separately,
declare them separately under all configurations to avoid
changes to one platform breaking others.
Also quiets uninitialized variable warning.
Allow dragging items from Outliner to other windows. Disables EdgePan
operator when entering new window. Canceling the drop redraws target
area and resets all modal cursors. But this does not fix incorrect
mouse cursor during operations on the remote target window.
Pull Request: https://projects.blender.org/blender/blender/pulls/105196
Updates sphinx and the them to the latest versions
This commit also removes 'babel' from the list of requirements, babel is only important for internationalization.
This commit allows both `rna_enum_` and `rna_node_`to be used for enum prefixes
This also fixes one enum by adding `rna_` to the prefix.
Together these changes fix the API documentation generation.
The default vignette effect introduces issues reported several times
on various hardware configurations.
It would still be nice to figure out the issue and fix it in the
vignette effect code. For now, simply use single-color in the
default theme.
As agreed during the 2023-08-15 User Interface Module meeting.
Fixes#93627Closes#106699