Commit Graph

11885 Commits

Author SHA1 Message Date
Hans Goudey
f1c0249f34 Mesh: Move material indices to a generic attribute
This patch moves material indices from the mesh `MPoly` struct to a
generic integer attribute. The builtin material index was already
exposed in geometry nodes, but this makes it a "proper" attribute
accessible with Python and visible in the "Attributes" panel.

The goals of the refactor are code simplification and memory and
performance improvements, mainly because the attribute doesn't have
to be stored and processed if there are no materials. However, until
4.0, material indices will still be read and written in the old
format, meaning there may be a temporary increase in memory usage.

Further notes:
* Completely removing the `MPoly.mat_nr` after 4.0 may require
  changes to DNA or introducing a new `MPoly` type.
* Geometry nodes regression tests didn't look at material indices,
  so the change reveals a bug in the realize instances node that I fixed.
* Access to material indices from the RNA `MeshPolygon` type is slower
  with this patch. The `material_index` attribute can be used instead.
* Cycles is changed to read from the attribute instead.
* BMesh isn't changed in this patch. Theoretically it could be though,
  to save 2 bytes per face when less than two materials are used.
* Eventually we could use a 16 bit integer attribute type instead.

Ref T95967

Differential Revision: https://developer.blender.org/D15675
2022-08-31 09:09:01 -05:00
Xavier Hallade
3e73afb536 Merge branch 'blender-v3.3-release' 2022-08-31 15:34:44 +02:00
Xavier Hallade
b1231e616a Cycles: Enforce Windows driver version requirements for sycl
sycl/L0 runtime reports compute-runtime version since Intel graphics
driver 101.3268 on Windows, when querying driver version from sycl.
Prior to this driver, it was 0. Now we can bump minimum requirement to
this one and filter-out devices returning 0.

Maniphest Tasks: T100648
2022-08-31 15:33:16 +02:00
Campbell Barton
60576fba11 Fix resource leak dropping files in GHOST/Win32
Early returns in error cases missed calling ReleaseStgMedium for
getDropDataAsFilenames, getDropDataAsString & getDropDataAsString.
2022-08-31 16:28:32 +10:00
Campbell Barton
a0ff2be199 Cleanup: remove pointless strcpy return value check 2022-08-31 16:12:24 +10:00
Campbell Barton
ff651a08b5 Fix returning a freed context when initialization fails for GHOST/Win32 2022-08-31 14:55:47 +10:00
Campbell Barton
4df3cf020b Fix uninitialized variable use for ID3D11RenderTargetView
When 'm_render_target' was NULL, backbuffer_res would be used without
being assigned. While it seems likely this code-path is rarely used
(if at all), resolve the logical error.
2022-08-31 14:55:47 +10:00
Campbell Barton
065a1cd0b1 Cleanup: check GetKeyboardState succeeds before using it's values
Quiets compiler warning.
2022-08-31 14:55:39 +10:00
Campbell Barton
e9d4a20a59 Cleanup: tablet press could fall through to release on GHOST/Win32
Introduced in [0], checking the logic here, there seems to be no reason
a press event should ever run release logic, relocate break statement.

In practice this was unlikely to cause problems as peeking into press
events would need to fail, peeking into release would need to succeed.
Even so, better avoid accidental fall through in switch statements.

[0]: 6f158f834d
2022-08-31 14:36:44 +10:00
Campbell Barton
8bfb65e254 Cleanup: remove 'else' after return 2022-08-31 14:36:44 +10:00
Campbell Barton
c4a16389bc Cleanup: use bool for GHOST_SystemWin32::setConsoleWindowState return 2022-08-31 14:36:44 +10:00
Charlie Jolly
bfa0ee13d5 Node: Mix node
This patch is a response to T92588 and is implemented
as a Function/Shader node.

This node has support for Float, Vector and Color data types.

For Vector it supports uniform and non-uniform mixing.

For Color it now has the option to remove factor clamping.

It replaces the Mix RGB for Shader and Geometry node trees.

As discussed in T96219, this patch converts existing nodes
in .blend files. The old node is still available in the
Python API but hidden from the menus.

Reviewed By: HooglyBoogly, JacquesLucke, simonthommes, brecht

Maniphest Tasks: T92588

Differential Revision: https://developer.blender.org/D13749
2022-08-31 00:13:57 +01:00
Campbell Barton
fdc332981e Cleanup: simplify comparison, clarify comment 2022-08-30 21:20:26 +10:00
Campbell Barton
c29d63aa5e Cleanup: spelling in comments 2022-08-30 16:22:49 +10:00
Campbell Barton
24b8ccaa94 Cleanup: format 2022-08-30 16:22:49 +10:00
Brecht Van Lommel
7fbf72f148 Build: automatically disable WITH_GHOST_WAYLAND if missing libraries
Same as other build options, don't make it a hard requirement to have
Wayland libraries installed when it gets enabled by default.

Also fixes wayland-protocols not being found on the buildbot.
2022-08-29 19:51:07 +02:00
Brecht Van Lommel
74caf77361 Cycles: add option to specify OptiX runtime root directory
This allows individual users or Linux distributions to specify a directory
Cycles will automatically look for the OptiX include folder, to compile kernels
at runtime.

It is still possible to override this with the OPTIX_ROOT_DIR environment
variable at runtime.

Based on patch by Sebastian Parborg.

Ref D15792
2022-08-29 19:50:20 +02:00
Brecht Van Lommel
42cff95519 Cycles: disable Scrambling Distance UI when using Sobol Burley
Contributed by Alaska.

Differential Revision: https://developer.blender.org/D15794
2022-08-29 19:45:58 +02:00
Brecht Van Lommel
21acfbe348 Cleanup: move Cycles display driver context handling to render module
This is highly coupled to Blender logic so doesn't belong in Cycles.
2022-08-29 19:45:58 +02:00
Brecht Van Lommel
ff27457240 Allocator: add MEM_cnew_array
This is a more C++ friendly version MEM_calloc_arrayN, like MEM_cnew is for
MEM_callocN. For cases where data structures are still C and Vector or Array
don't work.
2022-08-29 19:45:58 +02:00
Nikita Sirgienko
658ff994c5 Merge branch 'blender-v3.3-release' 2022-08-29 19:21:49 +02:00
Nikita Sirgienko
805d1063a0 Cycles: Remove "return" and "assert" from oneAPI kernel code 2022-08-29 19:18:50 +02:00
Nikita Sirgienko
48e1a66af0 Merge branch 'blender-v3.3-release' 2022-08-29 18:21:56 +02:00
Nikita Sirgienko
1cd8ca49f9 Cycles: Increased minimum supported driver for Windows in oneAPI 2022-08-29 18:10:56 +02:00
Campbell Barton
d41acc23e1 CMake: include missing header files 2022-08-27 14:32:50 +10:00
Campbell Barton
bfca876c05 CMake: cleanup, rename INC_HD_CYCLES to SRC_HD_CYCLES_HEADERS
Our convention is to use `INC_*` for include directories,
this caused `make check_cmake` to incorrectly fail as it expected
these files to be include directories.
2022-08-27 14:32:50 +10:00
Campbell Barton
f7027f2253 Cleanup: simplify key input handling for GHOST/Win32
- Don't create utf8 text for key release events.
- Reduce variable scope.
2022-08-27 13:47:17 +10:00
Campbell Barton
95162e7157 Cleanup: add missing braces for GHOST/Win32 2022-08-27 13:11:34 +10:00
Campbell Barton
955032ffb0 Cleanup: use C style comments for GHOST/Win32 text 2022-08-27 11:24:49 +10:00
Campbell Barton
37d835f0bc Fix T100582: Windows-10 Switching Desktops locks Ctrl Key
Regression in recent fix for T66088 [0]. caused by much older problem
introduced with [1] & [2].

Unlike other platforms, as of [1] GHOST/Win32 was keeping track of the
pressed modifier keys.

Since GHOST/Win32 cleared the modifier state on window activation [2]
and only changes to modifier state would generate key events, activating
the window and releasing the modifier would not send the release event.

Resolve this by removing the stored modifier state from GHOST/Win32,
always passing modifier press/release events through to Blender
(matching other GHOST back-ends).
Instead, use key-repeat detection to prevent repeated modifier keys
from being generated - an alternate solution to T26446.

[0]: 8bc76bf4b9
[1]: d6b43fed31
[2]: 6b987910e4
2022-08-27 07:36:00 +10:00
Bastien Montagne
167e2fda15 Merge branch 'blender-v3.3-release' 2022-08-26 18:09:05 +02:00
Luis Pereira
763cafc2b1 Fix T55284: error in Hybrid MultiFractal Musgrave texture
The calculation was revised to address two issues:
* Discontinuities occurring when detail was a non-integer greater than 2.
* Levels of detail in the interval [0,1) repeating the levels of detail in
  the interval [1,2).

This fixes Cycles, Eevee and geometry nodes.

Differential Revision: https://developer.blender.org/D15785
2022-08-26 17:27:43 +02:00
Campbell Barton
a3e1a9e2aa Cleanup: spelling in comments, format 2022-08-26 12:47:21 +10:00
Campbell Barton
ef51825c06 Fix incorrect UI scaling after changing monitors DPI under Wayland
Add a GHOST_kEventWindowDPIHintChanged event to ensure the UI is
properly updated.
2022-08-26 12:37:08 +10:00
Sergey Sharybin
d4764a385a Merge branch 'blender-v3.3-release' 2022-08-25 11:50:55 +02:00
Sergey Sharybin
9c2bc57cbd Fix Cycles oneAPI for a newer DPC++ compiler version 2022-08-25 11:50:22 +02:00
Campbell Barton
a604ed0068 Fix accessing freed memory for GHOST/Wayland clipboard access 2022-08-25 10:52:36 +10:00
Brecht Van Lommel
61896947d4 Merge branch 'blender-v3.3-release' 2022-08-24 15:39:52 +02:00
Brecht Van Lommel
e65f0337e9 Fix WITH_CYCLES_ONEAPI_BINARIES issues with make release
Fix typo in blender_release.cmake, and ensure that "make release" still works
when ocloc is not available. While a fatal error is useful for debugging, the
current convention is to disable features, especially in cases like this where
there is no simple way to make the feature work.

Differential Revision: https://developer.blender.org/D15774
2022-08-24 15:38:27 +02:00
Campbell Barton
ee60aa9d01 Cleanup: match names between functions & declarations 2022-08-23 11:05:50 +10:00
Jacques Lucke
de00b892a7 Merge branch 'blender-v3.3-release' 2022-08-22 16:13:30 +02:00
Sonny Campbell
8265d08e7f Fix T90706: crash when deleting fluid sim geometry
Differential Revision: https://developer.blender.org/D15299
2022-08-22 16:00:39 +02:00
Brecht Van Lommel
6b9209ddfa Merge branch 'blender-v3.3-release' 2022-08-19 21:02:02 +02:00
Brecht Van Lommel
51b79e4775 Fix T96133: Cycles viewport render crash with NVIDIA GPUs on macOS 2022-08-19 20:40:44 +02:00
Brecht Van Lommel
4b62970dd3 Cleanup: replace CHECK_TYPE macro with static_assert
To avoid conflicts with BLI headers and simplify code.
2022-08-19 20:36:02 +02:00
Nathan Vegdahl
a06c9b5ca8 Cycles: add Sobol-Burley sampling pattern
Based on the paper "Practical Hash-based Owen Scrambling" by Brent Burley,
2020, Journal of Computer Graphics Techniques.

It is distinct from the existing Sobol sampler in two important ways:
* It is Owen scrambled, which gives it a much better convergence rate in many
  situations.
* It uses padding for higher dimensions, rather than using higher Sobol
  dimensions directly. In practice this is advantagous because high-dimensional
  Sobol sequences have holes in their sampling patterns that don't resolve
  until an unreasonable number of samples are taken. (See Burley's paper for
  details.)

The pattern reduces noise in some benchmark scenes, however it is also slower,
particularly on the CPU. So for now Progressive Multi-Jittered sampling remains
the default.

Differential Revision: https://developer.blender.org/D15679
2022-08-19 16:27:22 +02:00
Germano Cavalcante
e4f1d71908 Fix T89399: Mouse wrapping causes erratic movement
As mentioned in T89399, "the source of this bug is that cursor wrap
moves the cursor, but when it later checks the mouse position it hasn't
yet been updated, so it re-wraps".

As far as I could see, this happens for two reasons:
1. During the first warp, there are already other mousemove events in the queue with an outdated position.
2. Sometimes Windows occasionally and inexplicably ignores `SetCursorPos()` or `SendInput()` events. (See [1])

The solution consists in checking if the cursor is inside the bounds right after wrapping.
If it's not inside, it indicates that the wrapping either didn't work or the event is out of date.
In these cases do not change the "accum" values.

1. f317d619cc/src/video/windows/SDL_windowsmouse.c (L255))

Maniphest Tasks: T89399

Differential Revision: https://developer.blender.org/D15707
2022-08-19 10:09:58 -03:00
Brecht Van Lommel
9961aae1e6 Merge branch 'blender-v3.3-release' 2022-08-18 20:31:34 +02:00
Brecht Van Lommel
6a4f4810f3 Fix T100246: Cycles GPU render error when adding AO node during viewport render 2022-08-18 20:04:22 +02:00
Brecht Van Lommel
e11c899e71 Cycles: disable Metal inlining optimization on Apple GPUs
This gave a 1.1x speedup, however also leads to very long compile times
that make it seems like Blender has stopped working.

This can be brought back in the future behind an option that users can
explicitly enabled.

Fix T100102

Ref D14923, D14763, T92212
2022-08-18 20:01:29 +02:00