Commit Graph

104672 Commits

Author SHA1 Message Date
Miguel Pozo
f1c7089a2f Fix #114001: EEVEE-Next: Wrong compositing with volumes+transparency
Ensure the correct framebuffer is bound in transparent_ps.
2023-11-13 16:52:58 +01:00
Lukas Tönne
2bf46b3189 Fix #114582: Replace unknown node types with an 'undefined' node
When loading an unknown node type from a newer Blender version, the node
storage data cannot be properly loaded. Re-saving the file will then
crash if saving with the same node type idname, since new Blender
versions cannot find the expected storage data.

Loading in older versions should replace unknown node types with a dummy
"Undefined" node that will get loaded as `NodeTypeUndefined` in newer
versions as well. Custom node types are exempted from this since they
store all data as generic ID properties and can always be fully
serialized.

Pull Request: https://projects.blender.org/blender/blender/pulls/114803
2023-11-13 16:36:42 +01:00
Hans Goudey
00551a3ed2 Fix: Auto smooth versioning node group doesn't show in data-block picker
The group needs to be explicitly marked as a modifier.
2023-11-13 16:15:58 +01:00
Miguel Pozo
f32699369d Merge branch 'blender-v4.0-release' 2023-11-13 15:36:27 +01:00
Miguel Pozo
aef7a17aa5 Fix #114189: Workbench: VR Session crashes on exit
Ensure there's a valid GPU context when freeing a wm_surface.

Pull Request: https://projects.blender.org/blender/blender/pulls/114795
2023-11-13 15:35:11 +01:00
Bastien Montagne
d94281d7af Fix rare crashes when reading files with multi-levels of libraries.
Some left-over code from old refactoring/improvements of old addresses
remapping in library reading code was causing some wrong remapping
between different IDs.

The code was actually not doing what its comment was describing, since
it would cause a random remapping to a different new address than the
expected one:

Initial state, before removed buggy line:
`old_addr_1 -> new_addr_1`
`old_addr_2 -> new_addr_2`

End state, if `old_addr_2` == `new_addr_1`:
`old_addr_1 -> new_addr_2`
`old_addr_2 -> new_addr_2`

From the description of the removed line, that behavior was actually
already covered by adding the remapping rule in the line above, since
adding a remapping overwrite an existing one if needed, so the line
above would do (in case a placeholder ID existed before the actual ID
got read):

Initial state, before adding new remapping rule:
`old_addr_1 -> new_addr_placeholder_1`

End state, after adding remapping to newly read ID:
`old_addr_1 -> new_addr_1`

NOTE: Noticed thanks to rare failures of the liboverride tests on
buildbots. The issue was less than 1%-reproducible with a debug build
and ASAN, but had about 2-4% repducibility with release builds.

Pull Request: https://projects.blender.org/blender/blender/pulls/114784
2023-11-13 15:01:58 +01:00
Germano Cavalcante
b98bc26173 Fix #114714: Rotating the View can drastically change the view's position when Auto Depth or Orbit Arround Select is set
Caused by 6faa39edb7

In that commit it was assumed that the view offset does not need to be
updated if the operator is `V3D_OP_MODE_ROTATE` instead of simply
checking `this->use_dyn_ofs`.

Since `use_dyn_ofs` is always `True` when using Auto Depth or Orbit
Arround Select, the offset should always be updated in these cases.

Pull Request: https://projects.blender.org/blender/blender/pulls/114726
2023-11-13 14:30:14 +01:00
georgiy.m.markelov@gmail.com
08bd7e29df MaterialX: add clamp, steps, smooth step for Map Range node
Co-authored-by: Bogdan Nagirniak <bodyan@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/114635
2023-11-13 14:27:44 +01:00
Jeroen Bakker
7813c94461 Vulkan: Initialize Pipeline State
The initial pipeline state was not set and could lead to undetected
state changes.

This fixes several issues, including:
* Fix incorrect colors in the UI, that would be used everywhere, and
  could be fixed by restarting Blender.
* Overlay extra objects where drawn below the grid.

Pull Request: https://projects.blender.org/blender/blender/pulls/114792
2023-11-13 14:02:13 +01:00
Hans Goudey
e7cee02e4d Merge branch 'blender-v4.0-release' 2023-11-13 12:50:34 +01:00
Hans Goudey
5b094ee770 Fix #114623: Node group asset added with wrong position from header
We need to make sure the operator is invoked from the main
region, not the header region which gives the wrong location.

Pull Request: https://projects.blender.org/blender/blender/pulls/114789
2023-11-13 12:49:42 +01:00
Hans Goudey
e10ac17fdb Fix #114737: Curves: Random selection crash in curve select mode
Inverting an index mask needs to use the correct "full" index range.

Pull Request: https://projects.blender.org/blender/blender/pulls/114785
2023-11-13 12:45:28 +01:00
Bastien Montagne
89d67df37b Merge branch 'blender-v4.0-release' 2023-11-13 12:44:59 +01:00
Michael Kowalski
f2d15d4fd1 Fix: USD: Wrong UsdUVTexture rgb output type.
This fixes a bug where the rgb UsdUVTexture shader output
attributes were created with incorrect type color3f when
connected to UsdPreviewSurface diffuseColor and emissiveColor
inputs. The UsdPreviewSurface specification requires the
UsdUVTexture rgb output to be of type float3.

This was happening because the UsdUVTexture outputs were created
implicitly by the call to UsdShadeInput::ConnectToSource().  I.e.,
because the diffuseColor and emissiveColor inputs are of type
color3f, this was the type assigned by default to the rgb source
attributes as well.

Now explicitly creating the UsdUVTexture shader output attributes
with the correct types.

Pull Request: https://projects.blender.org/blender/blender/pulls/114728
2023-11-13 12:44:21 +01:00
Omar Emara
c98308a77e Fix #113653: Compositor superfluously executes on scene changes
The compositor executes superfluously on scene changes when adding or
removing objects.

This was due to an explicit handling of a certain notifier, which was
introduced in commit 1e948b251d. The exact reasoning behind the
addition is unknown, so this patch removes it until we have an informed
decision to keep it.
2023-11-13 13:33:22 +02:00
Jeroen Bakker
99d97d9993 Vulkan: Fix Depth Texture Data Conversion
Devices that don't support GPU_DEPTH_COMPONENT24 natively will use
GPU_DEPTH_COMPONENT32F in stead. When done the current code path raised
an error as the conversion type wasn't set.

Issue detected on AMD RX5700 device.

Pull Request: https://projects.blender.org/blender/blender/pulls/114786
2023-11-13 12:26:45 +01:00
Sergey Sharybin
0746435cdd Depsgraph: Remove misleading FPS counter
It was weird concept which was calculating scene FPS, but from
the depgraph side. It was misleading, especially for the initial
evaluation of FPS of nan.

If we want FPS counters this needs to be done on a higher level
in the code.

Pull Request: https://projects.blender.org/blender/blender/pulls/114782
2023-11-13 11:54:40 +01:00
Sergey Sharybin
db16038f4f Depsgraph: Log depsgraph name for timing summary
No functional changes, just makes logs more clear.
2023-11-13 11:54:39 +01:00
Sergey Sharybin
c723c69ede Compositor: Set dependency graph debug name
No functional changes on user level, just makes reading
timing information easier.
2023-11-13 11:54:39 +01:00
Iliya Katueshenock
4f03d502e6 Cleanup: Remove iostreams include from timeit header
Continuation of #110986

Pull Request: https://projects.blender.org/blender/blender/pulls/111010
2023-11-13 10:42:29 +01:00
Hans Goudey
df960e5fc3 Cleanup: Use C++ math functions in mesh normals code
Pull Request: https://projects.blender.org/blender/blender/pulls/114777
2023-11-13 10:32:01 +01:00
Jeroen Bakker
37d04f030d Cleanup: Make format 2023-11-13 08:12:39 +01:00
Ray Molenkamp
3816fcd861 Fix: build error with MSVC
BLI_math_base.h is still required to get defines like M_PI
2023-11-12 08:36:39 -07:00
Antonio Vazquez
7c899d2271 GPv3: Set caps operator
This operator is similar to V2 GPENCIL_OT_caps_set to set the type of cap used by the stroke curve.

Related to #113977

Pull Request: https://projects.blender.org/blender/blender/pulls/113978
2023-11-12 14:13:13 +01:00
Iliya Katueshenock
5c52d42350 Cleanup: Geometry Nodes: Early returns in Shortest Edge Paths node
Pull Request: https://projects.blender.org/blender/blender/pulls/114684
2023-11-11 23:50:58 +01:00
Hans Goudey
0d1831cd2e Cleanup: Small cleanups to mesh normals calculation
- Use consistent data fetch order
- Slightly tweak whitespace
- Use C++ vector type and math function
2023-11-11 22:41:21 +01:00
Hans Goudey
6273205c93 Fix: Debug build error after previous commit
To avoid including the C header in the C++ header, reference
the define by name for now.
2023-11-11 22:15:02 +01:00
Hans Goudey
583bd9662e Cleanup: Remove C header from C++ math header
Remove some redundancy between headers, more fully
separate the C++ headers from the older C headers.

Pull Request: https://projects.blender.org/blender/blender/pulls/114705
2023-11-11 21:09:54 +01:00
Campbell Barton
8b4c9b294a Cleanup: quiet warning building WITH_GMP=OFF 2023-11-11 19:53:46 +11:00
Campbell Barton
7d99be77f7 Cleanup: rename data -> ghost_data in wm_playanim
Follow naming convention used elsewhere in wm_playanim.cc.
2023-11-11 19:52:30 +11:00
Germano Cavalcante
172221e7fb Fix #114714: Rotating the View can drastically change the view's position when Auto Depth or Orbit Arround Select is set
Caused by 6faa39edb7

In that commit it was assumed that the view offset does not need to be
updated if the operator is `V3D_OP_MODE_ROTATE` instead of simply
checking `this->use_dyn_ofs`.

Since `use_dyn_ofs` is always `True` when using Auto Depth or Orbit
Arround Select, the offset should always be updated in these cases.
2023-11-10 19:07:25 -03:00
Iliya Katueshenock
8618547dfe Cleanup: Geometry Nodes: General topology map creation in Shortest Edge Paths
Use general util to build mesh topology map instead of array of vectors.
This util can be optimized in future by better multithreading and new
algorithms with better CPU catch heuristics. For now this will provide
better usage of memory without a lot of small allocations.

Pull Request: https://projects.blender.org/blender/blender/pulls/114683
2023-11-10 15:20:56 +01:00
Jeroen Bakker
2a24e29241 Vulkan: Convert 3 Component Texture Formats
3 component texture formats are often not supported by vulkan devices.
Sometimes the support is less than 5%. The 4 components variants have
more than 90% support.

This PR builds on top of the existing vulkan data conversion to add
the ability to convert between RGB16F<=>RGBA16F and RGB32F<=>RGBA32F
texture formats.

This allows using color management other then Standard/sRGB. Most places
the 3 component texture formats are phased out, but OCIO, external
render engines and real time compositor uses them.

Pull Request: https://projects.blender.org/blender/blender/pulls/114708
2023-11-10 15:19:24 +01:00
Hans Goudey
5052e0d407 Mesh: Make vertex normal calculation deterministic
Currently, atomic additions in vertex normal calculation introduce
non-determinism that can influence the result of other operations,
sometimes causing non-reproduceable renders (in cases like #100250
and #101726). This is because the order used during threading when
accumulating face normals changes.

This commit fixes that non-determinism, using a vertex to face topology
map to calculate vertex normals without atomics. When the map is already
available, this can be faster too.

In the longer term future, this method of vertex normal calculation
means it will be easier to do partial recalculations when only part
of a mesh changes. That might be essential for cases like transforming
small selections in a non-BMesh edit mode.

As an experiment I tried a "fast" code path that avoids weighting face
normals by the corresponding corner angle when averaging them to
create vertex normals. This significantly reduces the necessary
computation and memory bandwidth for vertex normal calculation.
The results are shown below too, but it's not part of this PR.

I measured the FPS with two smooth shaded 16 million face grids:
|                                  | Before | After | After (fast) |
| -------------------------------- | ------ | ----- | ------------ |
| Created from scratch every frame | 0.96   | 0.91  | 0.92         |
| Deformed by geometry nodes       | 0.99   | 1.32  | 1.40         |

Though many other things besides normals are being tested here,
it's clear that the performance difference isn't that large either way,
though there is an observable regression with meshes created from
scratch, and there is a noticeable improvement when the topology
stays the same and is persistent.

Pull Request: https://projects.blender.org/blender/blender/pulls/111718
2023-11-10 15:19:01 +01:00
Bastien Montagne
cb5f650a5a Merge branch 'blender-v4.0-release' 2023-11-10 14:41:46 +01:00
Bastien Montagne
c688b03847 Fix (studio-reported) VSE prefetch process taking seconds to stop.
When VSE cache is invalidated (on most VSE edit operation e.g.), or
Blender quits, in some cases (complex and very long edits), the
prefetch job would block several seconds after being requested to stop.

This was because one codepath would keep looping over all frames without
checking for the `stop` flag.
2023-11-10 14:29:44 +01:00
Hans Goudey
70074a7d46 Cleanup: Follow style guide in new math function, use std:: namespace 2023-11-10 14:21:43 +01:00
Germano Cavalcante
9bf673a37d Fix #114215: Scanfill sometimes fails to identify holes
The problem is in the way of identifying "fast" intersections through bounds.

In the existing code, before testing the intersections (to identify
holes) the polys are sorted according to the bounds
(in the order x1 < x2 || y1 < y2).

Then a for loop is used on the order returned by sort.

Each time the bound of a polygon intersects with another, it is joined
and the bound is added.

The problem with this solution is that some bounds may not intersect
with the first, but could intersect one that is joined to the first,
which, as it is cleared, makes the intersection undetected.

The solution is to remove this code with `qsort` and create a
"target_map" that identifies a source polygon and a dest polygon.

Pull Request: https://projects.blender.org/blender/blender/pulls/114600
2023-11-10 12:56:20 +01:00
Jeroen Bakker
cc04bcd792 Vulkan: Reusing Textures from Pool
This PR solves an issue when using texture pools with textures that are not
natively supported by the device. In the previous implementation the
internal `Texture::format_` was changed. Any check if the texture could
be reused would fail as its format would be different that the requested one.

This PR fixes this by separating the requested format `Texture::format_` and
how it is stored on the GPU `VKTexture::device_format_`.

This solves the next artifacts:
* Workbench flickering artifacts on AMD/Intel GPUs
* Workbench TAA on AMD/Intel GPUs
* Overlays were not always drawn fully solid

Pull Request: https://projects.blender.org/blender/blender/pulls/114697
2023-11-10 12:52:34 +01:00
Jeroen Bakker
0c9433bf44 Vulkan: Retarget Depth Range
OpenGL uses a depth range between -1 and 1, which is then normalized.
Metal & Vulkan uses a depth range between 0 and 1, which is already normalized.

The final plan would be to default to a depth range between 0 and 1, but
for now the depth ranges are retargetted so they won't be clipped away.

This solves the next issues for users:
- Navigate control will be rendered correctly
- Ortographic view clipping artifacts
- EEVEE light evaluation

Retargetting happens at the end of the vertex stage or when a geometry
stage is present at the end of the geometry stage. Derivatives using
depth would have a different value compared to OpenGL, but would match
Metal backend. OpenGL performs clipping and generates derivatives based
on the original depth value.

`gl_FragCoord` and clipping would have some precision differences as clipping
and normalizing are done in a different order but would match Metal.

Geometry shaders should use `gpu_EmitVertex` to ensure that the retargetting
is done per vertex.

Pull Request: https://projects.blender.org/blender/blender/pulls/114669
2023-11-10 12:32:06 +01:00
Christoph Lendenfeld
06bcbc644c Refactor: extract function from insert_keyframe_value
No functional changes.

Extract code from the function `insert_keyframe_value`
to make it easier to use in other places.
I created a new function `remap_driver_frame` that
removes 3 parameters from the function.
And I removed the requirement for a `ReportList`
by just returning false and letting the caller
create a message.

Pull Request: https://projects.blender.org/blender/blender/pulls/114700
2023-11-10 12:22:45 +01:00
Pratik Borhade
66bd65c5f2 Merge branch 'blender-v4.0-release' 2023-11-10 16:19:08 +05:30
Pratik Borhade
ab2198d77b Fix #114687: Orbit opposite changes view to perspective
When `VIEWOPS_FLAG_PERSP_ENSURE` is set, it switches view to
perspective in `ED_view3d_persp_ensure` which is incorrect for orbit
operation.

Pull Request: https://projects.blender.org/blender/blender/pulls/114698
2023-11-10 11:41:28 +01:00
Pratik Borhade
270fc860cf Fix #114685: GP time offset modifier doesn't work if the animation is 1 frame long
This is due to the early return of current frame when start and end of
custom range is same
2023-11-10 16:07:05 +05:30
Julian Eisel
9638dfbe43 Merge branch 'blender-v4.0-release' 2023-11-10 11:34:16 +01:00
Julian Eisel
c05faeb053 Fix #114432: Custom themes overridden by default theme
Code was copying the default theme over the active theme, instead of
selectively updating a single theme option to fix #113683.

Pull Request: https://projects.blender.org/blender/blender/pulls/114675
2023-11-10 11:33:15 +01:00
Jeroen Bakker
672f14fee5 Cleanup: Make format 2023-11-10 11:07:04 +01:00
Hans Goudey
cda624032d Merge branch 'blender-v4.0-release' 2023-11-10 09:19:03 +01:00
Hans Goudey
821060f75a Fix #114686: Cannot execute node tool operators
A stupid mistake in 871c717c6e caused node tools to trigger
the unsupported warning for data-blocks for geometry sockets as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/114693
2023-11-10 09:18:04 +01:00
nutti
cf41153798 Docs: include cls in bpy.utils.unregister_class
Ref: !114523
2023-11-10 14:32:23 +11:00