Commit Graph

14338 Commits

Author SHA1 Message Date
Campbell Barton
8682e4087b GHOST/Wayland: support pasting images from a copied file
Support pasting images into Blender which have been copied from a
file manager (matching macOS).
2024-10-28 13:40:26 +11:00
Campbell Barton
d367e6e2b5 Cleanup: share clipboard paste logic between text & image paste
De-duplicate low level logic that reads the clipboard in a thread.

Instead, expand the utility function for reading from the clipboard
with arguments so it can be used for images & text.
2024-10-28 13:40:25 +11:00
Campbell Barton
eb83158325 Cleanup: move URI range extraction into its own a function 2024-10-28 13:40:23 +11:00
Campbell Barton
e31366c3bb Merge branch 'blender-v4.3-release' 2024-10-28 13:33:28 +11:00
Campbell Barton
d6d612dc46 Fix memory leak pasting images in Wayland 2024-10-28 12:38:22 +11:00
Campbell Barton
f9ba08d14c Merge branch 'blender-v4.3-release' 2024-10-25 14:08:40 +11:00
Leon Marz
1a872e69f3 Fix terminating the EGL connection without a valid display
When wl_display_connect fails don't attempt to disconnect EGL,
no connection will have been made.

Ref: !129301
2024-10-25 13:55:06 +11:00
Campbell Barton
1b320d5205 Merge branch 'blender-v4.3-release' 2024-10-25 08:03:11 +11:00
Michael Jones
029cd1f739 Cycles: Remove invalid use of MetalRT accept_any_intersection in scene_intersect_local
This PR fixes a latent issue arising from invalid use of `accept_any_intersection(true)` when performing SSS ray-stepping with MetalRT. The comment incorrectly states that "we can optimize and accept the first hit", but to guarantee correct behaviour in future we need to request the closest hit.
2024-10-24 10:42:59 +01:00
Weizhen Huang
60b8fd005d Merge branch 'blender-v4.3-release' 2024-10-22 15:38:48 +02:00
Weizhen Huang
afd629bffc Cycles: make switching of sampling techniques in Draine less noticeable
Draine phase function sampling internally use Henyey-Greenstein and
Rayleigh sampling for degenerated cases, but the sampling pattern was
different between Draine and Rayleigh. The commit effectively replace
`rand` with `1 - rand` in Rayleigh sampling.

Pull Request: https://projects.blender.org/blender/blender/pulls/129261
2024-10-22 15:38:06 +02:00
Weizhen Huang
ee6f27a100 Fix: Cycles: NaN in Draine phase function when g == 0
When `g == 0`, the Draine phase function from
https://doi.org/10.1051/0004-6361/202142437 simplifies to
\[\Phi(\theta)=\frac{3}{4\pi(3+\alpha)}(1+\alpha\cos^2\theta).\]
Similar as Rayleigh sampling in https://doi.org/10.1364/JOSAA.28.002436,
The solution to the CDF of the marginal density function is
\[\cos^3\theta+a\cos\theta+b=0,\]
with
\[a=\frac{3}{\alpha},\quad b=\frac{3+\alpha}{\alpha}(2\xi_1-1),\]
which has only one real root since \(\alpha > 0\),
resulting in the sample technique
\[\cos\theta=u-\frac{1}{\alpha u}.\]

Pull Request: https://projects.blender.org/blender/blender/pulls/129259
2024-10-22 15:37:37 +02:00
Jonas Holzman
ecddcdd455 Cleanup: Objective-C: Replace usages of Nil with nil
In Objective-C, both the `Nil` and `nil` macros can be used to designate
Nullabity. However, only `nil` (with a lower case n) is commonly used,
as can be seen in documents such as the Google Objective-C Style Guide.

In this sense, this commits replaces instances of `Nil` with `nil` for
greater consistency.
2024-10-20 14:46:49 +02:00
Aras Pranckevicius
b0052aa821 ffmpeg: Support H.265 video output codec
Now can pick "H.265 / HEVC" in the video codec dropdown.

Implementation notes:
- Remap CRF value (which is for H.264) slightly to better match H.265
  CRF range (e.g. default Medium 23 -> 28).
- Set lossless mode via appropriate private param, and use 4:4:4 YUV
  format just like for some other video codecs when in lossless.
- Currently there are no built-in presets for H.265. Maybe later, especially
  if/when we'll add 10 bit or HDR videos.

Pull Request: https://projects.blender.org/blender/blender/pulls/129119
2024-10-20 10:27:33 +02:00
Campbell Barton
120a178158 Merge branch 'blender-v4.3-release' 2024-10-19 22:58:06 +11:00
Campbell Barton
cf3a6697d2 Fix #129231: GrLess key not supported on Wayland 2024-10-19 22:43:19 +11:00
Jesse Yurkovich
4f4c3f73b6 Cleanup: Replace deprecated OIIO APIs with modern ones
Noticed while helping validate the soon to be released OpenImageIO 3.x.

This cleanup makes 2 sets of changes to accommodate removed APIs [1]:
- Remove `ustringHash` since it's been defined as `std::hash<ustring>`
  for quite some time and is fully removed in 3.0.
- Replace `TypeDesc::Type*` types with just `Type*` as the former has
  been removed in 3.0. Cycles was using a mix of the deprecated and
  modern forms anyhow.

[1] https://github.com/AcademySoftwareFoundation/OpenImageIO/blob/main/docs/Deprecations-3.0.md

Pull Request: https://projects.blender.org/blender/blender/pulls/129136
2024-10-17 19:48:38 +02:00
Campbell Barton
c8c00f2e1a Merge branch 'blender-v4.3-release' 2024-10-17 18:17:01 +11:00
Campbell Barton
fd63b3d725 Fix #129095: Crash on wayland on startup without a "seat"
Running in a headless weston session was asserting, then crashing,
causing WITH_UI_TESTS to fail.

Resolve by accounting for a wayland sessions without a seat.
2024-10-17 18:02:07 +11:00
Sergey Sharybin
06c0bd6699 Merge branch 'blender-v4.3-release' 2024-10-16 16:29:24 +02:00
Alaska
24f2fe4880 Fix: Cycles HIP: Failing volume renders with HIP 6.1
Fix the failing rendering of volumes on Windows with HIP SDK 6.1
by reducing the optimization level.

There should be no functional or performance difference for the average
user as the Blender foundation currently does not use HIP SDK 6.1
on Windows. This change is primarily to fix issues for community members
building Blender locally.

Pull Request: https://projects.blender.org/blender/blender/pulls/128836
2024-10-16 16:28:54 +02:00
Alaska
356482ecb5 Cleanup: Fix ambiguous Unicode character warning in Cycles tree.h
Gitea would complain the apostrophe in one of the code comments in
tree.h was an ambiguous Unicode character. So fix it by swapping it
for a more common apostrophe type.
2024-10-16 21:21:57 +13:00
Xavier Hallade
610f85d9f8 Cycles: use Embree 4.3.3+ rtcGetErrorString to convert error codes 2024-10-15 19:26:04 +02:00
Sergey Sharybin
91eb980891 Merge branch 'blender-v4.3-release' 2024-10-15 11:42:48 +02:00
Mark Stead
dfc58d282b Fix #69731: Cycles: Vector Pass ignores animated FOV
This PR fixes the motion vector values when using animation of the (perspective)
camera focal length (and therefore changing the fov).

Pull Request: https://projects.blender.org/blender/blender/pulls/127442
2024-10-15 11:42:11 +02:00
Xavier Hallade
26edd760bb Merge branch 'blender-v4.3-release' 2024-10-15 10:33:11 +02:00
Xavier Hallade
2cfe69c07d Cycles: Fix error handling of BVH transfer to device
Previously, in case of a failure during BVH transfer, when running out
of memory for example, we could get an error such as "BVH failed to
migrate to the GPU due to Embree library error (no error)", because
embree error status was actually reset before being queried.
This commit fixes its propagation.

Pull Request: https://projects.blender.org/blender/blender/pulls/129022
2024-10-15 10:31:30 +02:00
Jeroen Bakker
399060aa0e Merge branch 'blender-v4.3-release' 2024-10-14 15:45:34 +02:00
Jeroen Bakker
af151e89a7 Fix: Vulkan: Unguarded Access Device Queues
Multiple threads can access the same device queue from different
threads. This could happen when doing a cycles preview render, baking
eevee volume probes or generating material previews.

This PR adds a mutex around access to the device queues.

Detected when researching #128608

Pull Request: https://projects.blender.org/blender/blender/pulls/128974
2024-10-14 15:30:11 +02:00
Campbell Barton
3350eeba62 Merge branch 'blender-v4.3-release' 2024-10-12 22:48:08 +11:00
Campbell Barton
15be0030f6 Cleanup: various non-functional C++ changes
- Avoid shadowing.
- Use default functions.
- Remove unused struct member from GpencilBatchCache.
2024-10-12 22:44:19 +11:00
Alaska
e0cd45d04a Cleanup: Readd important details to Cycles ray offsetting TODO
The ray offsetting triangle tests are not numerically identical to
those found in custom BVH implementations.
There was a TODO to fix this, but there was no explaination for why
it should be done. This fixes that.
2024-10-11 02:41:20 +13:00
Jeroen Bakker
a62fa40b58 Merge branch 'blender-v4.3-release' 2024-10-10 11:28:53 +02:00
Anthony Roberts
ef58d4ae26 Windows: Switch to ProcessorNameString for CPU identification on ARM64
This probably should always have been the value used, really.

Now, instead of reporting `Qualcomm Technologies Inc`, it reports the more informative `Snapdragon(R) X Elite - X1E78100 - Qualcomm(R) Oryon(TM) CPU` on a Thinkpad T14s Gen6 device.

Pull Request: https://projects.blender.org/blender/blender/pulls/128808
2024-10-10 10:37:17 +02:00
Campbell Barton
0cec2462cd Cleanup: remove redundant checks in Wayland drag & drop
Since #128766 was fixed, there is no need for an `in_use` check.
2024-10-10 09:14:25 +11:00
Campbell Barton
930a8b199b Merge branch 'blender-v4.3-release' 2024-10-09 22:37:38 +11:00
Campbell Barton
20756a07cd Fix #128766: crash dropping files with Wayland
Dropping files could crash ~10% of the time on some systems,
although I wasn't able to reproduce the error.

The ownership of GWL_Seat::data_offer_dnd wasn't handled correctly,
where the value could be handled by both wl_data_device_listener::leave
& drop callbacks.

Resolve by ensuring the data-offer is handled by the drop callback.
2024-10-09 22:29:16 +11:00
Campbell Barton
7dc92ab0d1 Merge branch 'blender-v4.3-release' 2024-10-09 15:36:23 +11:00
Campbell Barton
8d7c98a3c8 GHOST/Unix: always use getpwuid for home directory access
getpwuid for accessing home wasn't used when looking up the path
for older Blender versions. There is no reason for the code-paths
to differ. Use a shared utility function to access home.
2024-10-09 15:34:07 +11:00
Clément Foucault
014db2e32e Fix: GPU: Broken GPU subdivision
The file glsl_compute_kernel.glsl is not written
in our safe GLSL. Don't run the preprocessor on it.

Fixes #128735
2024-10-08 17:26:44 +02:00
Campbell Barton
7d33cd9877 GHOST/Wayland: reference the stable tablet-v2 API
The tablet API become stable in wayland-protocol 1.35

NOTE: this was reverted [0] because I missed adding the files to lib.
The files have been included, so use the stable API.

No functional changes expected.

[0]: c525e4db83
2024-10-08 09:37:52 +11:00
Lukas Stockner
11ae08157e Revert Cycles SVM state cleanup due to Mac ARM test timeout
Not sure what is happening here, needs to be checked by someone on Mac.
Let's revert for now, it's not like this is a critical change.

Pull Request: https://projects.blender.org/blender/blender/pulls/110443
2024-10-08 00:33:56 +02:00
Lukas Stockner
0a4877264d Cycles: Cleanup: Move SVM execution state into a helper struct
This packs the SVM stack, current node offset and closure weight into one struct, and just passes that to each SVM node implementation.

This way we don't have to pass the offset back and forth all over the place, and adding additional state (e.g. for layering in the future) becomes easier.

Pull Request: https://projects.blender.org/blender/blender/pulls/110443
2024-10-07 19:09:52 +02:00
Campbell Barton
c1f18be1ba Merge branch 'blender-v4.3-release' 2024-10-07 13:05:28 +11:00
Campbell Barton
6039cb17e6 Unix: use getpwuid() to access home when the variable/tilde expand fails
This was already done in GHOST, but not BKE_appdir_folder_home.

Also null check the return value from getpwuid() as it's not
guaranteed to be non-null.
2024-10-07 13:00:56 +11:00
Lukas Stockner
b8d0bef3b4 Cleanup: Cycles: Consolidate coordinate system conversions
- Deduplicate Fisheye projection code
- Replace spherical/cartesian conversions with shared helpers
- Replace transforms from/to local coordinate systems with shared helpers

The main type of repeated transform that's not covered here is `to/from_coords`, but with separate values for xy and z (e.g. BSDFs that already computed `dot(wi, N)` earlier, so they only need `dot(wi, X)` and `dot(wi, Y)` later). Could also be replaced, but it would feel weirdly specific for a helper function.

Pull Request: https://projects.blender.org/blender/blender/pulls/125999
2024-10-07 02:18:49 +02:00
Xavier Hallade
b614953971 Cycles: oneAPI: fix Linux compilation with fno-honor-nans
Previously, when compiling on Rocky Linux 8 with fno-honor-nans, compile
time was more than 5x longer than expected, and there was an unresolved
symbol to __sqrtf_finite in GPU binaries.
Once defining sqrtf in compat.h, both issues are effectively gone, this
was certainly due to problematic interactions with build system's math
library headers.
So we can remove current workaround of defining fhonor-nans, and now
have the same set of flags on both Windows and Linux.
2024-10-04 17:50:24 +02:00
Sergey Sharybin
d6b44b3a49 Merge branch 'blender-v4.3-release' 2024-10-04 12:40:20 +02:00
Alaska
0709743c0c Fix: Cycles: Rendering of the Principled BSDF when using adaptive kernel compilation
Fixes a issue where the Principled BSDF would render incorrectly if
`__SUBSURFACE__` is off. Which is common when using adaptive kernel
compilation (a unsupported Cycles feature).

Pull Request: https://projects.blender.org/blender/blender/pulls/128003
2024-10-04 12:39:03 +02:00
Clément Foucault
0bfd5e3536 GPU: Add GLSL preprocessor
This splits the GLSL processing into its own file
as it will grow in complexity.

Removes the complexity from `datatoc` and chain them
during the build process.

Rel #128076

Pull Request: https://projects.blender.org/blender/blender/pulls/128261
2024-10-04 11:33:21 +02:00