Commit Graph

8835 Commits

Author SHA1 Message Date
Clément Foucault
b76cc897b6 Cleanu: GPU: Address GLSL warnings 2024-11-13 12:38:00 +01:00
Clément Foucault
1aea4fb5c7 GPU: GLSL C++ shaders: Silence unuseful warnings 2024-11-13 12:37:00 +01:00
Clément Foucault
29b3df7504 GPU: GLSL compilation as C++ for draw intern shaders
Allow compilation of shaders using C++ for linting and
IDE support.

Related #127983

Pull Request: https://projects.blender.org/blender/blender/pulls/130193
2024-11-13 12:32:39 +01:00
Clément Foucault
582ea0eb40 Fix: Overlay-Next: Crash when selecting object 2024-11-13 11:37:28 +01:00
Miguel Pozo
31ba9b798b Fix #130054: HDRI Preview rendering black if no visible mesh is in the scene
Ensure the probes views are set.

Pull Request: https://projects.blender.org/blender/blender/pulls/130190
2024-11-12 21:22:43 +01:00
Hans Goudey
ce68e3de15 Cleanup: Overlay: Follow style guide for private class variable naming
Pull Request: https://projects.blender.org/blender/blender/pulls/130191
2024-11-12 21:21:50 +01:00
Hans Goudey
04db9697ae Cleanup: Overlay: Remove double map lookup 2024-11-12 13:48:44 -05:00
Clément Foucault
091004f1b8 GPU: GLSL compilation as C++ for gpu static shaders
Allow compilation of shaders using C++ for linting and
IDE support.

Related #127983

Pull Request: https://projects.blender.org/blender/blender/pulls/128724
2024-11-12 18:53:34 +01:00
Hans Goudey
85f5b22f64 Cleanup: Draw: Remove double negative checking mesh extract type 2024-11-12 11:57:24 -05:00
Hans Goudey
f379acb2bf Cleanup: Draw: Use enum class for mesh extract type 2024-11-12 11:57:24 -05:00
Clément Foucault
6de277d732 Fix: Overlay Next: Incorrect display of facing overlay on transparent textures in solid mode
Based on #128166 with prepass logic fix.
2024-11-12 17:32:03 +01:00
Bastien Montagne
b325142d17 Merge branch 'blender-v4.3-release' 2024-11-12 16:55:40 +01:00
Bastien Montagne
0b3a7cbe69 Cleanup: Move BKE_image.h and related headers to C++.
NOTE: This also required some changes to Cycles code itself, who is now
directly including `BKE_image.hh` instead of declaring a few prototypes
of these functions in its `blender/utils.h` header (due to C++ functions
names mangling, this was not working anymore).

Pull Request: https://projects.blender.org/blender/blender/pulls/130174
2024-11-12 16:53:54 +01:00
Clément Foucault
c99d4f15e1 Merge branch 'blender-v4.3-release' 2024-11-12 15:34:27 +01:00
Clément Foucault
e3a960ef2e Fix #129889: EEVEE: Lightprobe Volume bake is non-deterministic
Turns out the sampling module was not initialized when
computing lighting which resulted in undefined shadow location.
In some cases even producing NaN position which would make the
shadow disappear.

Basically, anything returned by `sampling_rng_nD_get` was returning
garbage, and on some occasion, it could be a negative number and
produce NaN if passed into `sample_disk` or any `sqrt`.

ASAN did not catch it because the uninitialized data load
was done on the GPU.

I ran the render tests and, minor difference aside, they all match.

#### Follow Up:
This raises the concern that we have no assertion for correctly
using some modules. At the very least, we should have some
mechanism to catch uninitialized buffer. Investigating this
was a pain au chocolat.

Pull Request: https://projects.blender.org/blender/blender/pulls/130150
2024-11-12 15:29:17 +01:00
Clément Foucault
df07e91dff Fix: Overlay: Assert when using selection
Caused by copying texture content to a texture
with different format.
2024-11-12 15:25:55 +01:00
Falk David
0a51b9a357 Merge branch 'blender-v4.3-release' 2024-11-12 14:45:19 +01:00
Pratik Borhade
22d94df4cf Fix: GPv3: "Only In Multiframe" overlay not working
There were some issues in the code that sets up the draw calls.
The `only_lines` option needs to consider multi frame editing.

Resolves #129873.

Pull Request: https://projects.blender.org/blender/blender/pulls/129944
2024-11-12 14:44:31 +01:00
Clément Foucault
b17af94e2e EEVEE: Use packed type for codegen structs
This reduces register pressure on mac.

Mr Elephant 17.9s > 17.2s (4% speedup)

Extracted from #116728

Pull Request: https://projects.blender.org/blender/blender/pulls/129605
2024-11-12 12:58:58 +01:00
Hans Goudey
312052112a Cleanup: Remove references to legacy Grease Pencil type
See #123468.

Pull Request: https://projects.blender.org/blender/blender/pulls/130151
2024-11-11 19:11:03 +01:00
Clément Foucault
6e16447145 EEVEE: Add assertion that all random numbers are between 0 and 1
This ensures the result of the random number generator is
well defined and that we can trust the output to feed into
functions like `sqrt`.
2024-11-11 18:42:22 +01:00
Falk David
e356a45d20 Merge branch 'blender-v4.3-release' 2024-11-11 12:18:32 +01:00
Pratik Borhade
83396c86fc Fix #130084: GPv3: Disable overlay does not work in sculpt mode
The cache population call was missing the "hide overlay" check.

Pull Request: https://projects.blender.org/blender/blender/pulls/130109
2024-11-11 12:08:13 +01:00
Clément Foucault
63a91c8d82 Fix: DRW: Tests: GPU backend error because of missing resources 2024-11-10 23:47:21 +01:00
Clément Foucault
9dbfa1f81c Merge branch 'blender-v4.3-release' 2024-11-08 18:49:52 +01:00
Clément Foucault
03d31a3717 Fix #128712: Workbench: Crash dragging window to another screen
The crash was caused by the texture wrapper being out of date.
This happened after workbench finished rendering AntiAliasing and
going into blit-result-only mode. Doing so was causing a use after
free caught by ASAN.

But this only partially fix the bug as workbench render then becomes
uninitialized (black most likely) after dragging the window to the
second monitor. This is because the TAA texture gets recreated since
the new viewport resolution doesn't match the old one. But this
recreation does not tag as a viewport update so the TAA stays in
blit-result-only mode.

Detecting the viewport resolution change at the engine init level
seems the safest option for now, and it fixes the remaining issue.

To be backported to 4.2.

Pull Request: https://projects.blender.org/blender/blender/pulls/130043
2024-11-08 18:47:20 +01:00
Lukas Tönne
021e010a07 Merge branch 'blender-v4.3-release' 2024-11-08 10:22:58 +01:00
Pratik Borhade
0fd2c747fc Fix #126076: GPv3: Strokes in multi-frame mode always use onion skinning colors
`grease_pencil_layer_final_tint_and_alpha_get` wrongly sets custom
 onion skinning color to "gpLayerTint"

Pull Request: https://projects.blender.org/blender/blender/pulls/129960
2024-11-08 08:12:31 +01:00
John Kiril Swenson
25f34c0614 Merge branch 'blender-v4.3-release' 2024-11-07 22:48:15 -06:00
YimingWu
54d957a44e Fix #129873: GPv3: Missing material name overlay
The option of showing material name overlay is present but the feature
was missing in GPv3. This fix adds material name overlay back for GPv3.

Pull Request: https://projects.blender.org/blender/blender/pulls/129936
2024-11-08 05:05:32 +01:00
Clément Foucault
62a5671587 Cleanup: DRW: Remove unused shader functions 2024-11-08 00:27:42 +01:00
Jeroen Bakker
48e3402aaf Merge branch 'blender-v4.3-release' 2024-11-07 14:43:39 +01:00
Jeroen Bakker
8887a5ed71 Fix: EEVEE: Better description light probe reduced size message
When the light volume probe cannot be allocated a pool of a different
size is used. A message is displayed to the user. This PR improves the
message by adding the previous size as well.

Ref #129889

Pull Request: https://projects.blender.org/blender/blender/pulls/129963
2024-11-07 14:42:55 +01:00
Falk David
5ba1a376e5 Merge branch 'blender-v4.3-release' 2024-11-07 12:02:47 +01:00
Clément Foucault
a43a209959 Fix #129567: GPv3: Incorrect wireframe for strokes
First this make the wire batch use the same set of drawing that the main
gpencil batch uses (as they share the same VBO data, they need to use
the same drawings).

Then we skip drawing the onion frames by nullifying the indices in the
index buffer. A better way would be to skip these strokes or drawing
but that can be done later and seems more bug prone.

Pull Request: https://projects.blender.org/blender/blender/pulls/129920
2024-11-07 12:01:36 +01:00
Falk David
8abd686863 Merge branch 'blender-v4.3-release' 2024-11-07 11:58:44 +01:00
Falk David
ffd80047ee Fix #124725: GPv3: Masked layers not rendered correctly with onion skinning
The issue was that the masks for the current frame would be
rendered for a different frame.
Unfortunately, we can't easily render masks for the onion
skinned frames correctly at the moment.

The fix makes it so that we render the mask only for the current frame.

Pull Request: https://projects.blender.org/blender/blender/pulls/129878
2024-11-07 11:54:33 +01:00
Hans Goudey
ba03407e33 Cleanup: Subdiv: Remove unnecessary C-API header
Use the topology refiner header directly.
Followup for 5e46e3d28a.

Pull Request: https://projects.blender.org/blender/blender/pulls/129941
2024-11-07 10:36:53 +01:00
Jeroen Bakker
b5414f716f Merge branch 'blender-v4.3-release' 2024-11-07 09:17:08 +01:00
Jeroen Bakker
bc480f05d5 Draw: Reduce overhead of sharing meshes without attributes
When using a lot of instances the requested and needed attributes
are merged. This process uses a lock even when no work needs to be
done.

By early exiting the merging process when no work needs to be done
the performance of navigating 60k cubes went from 17.5 fps to 18.3 fps.

Detected when researching #126391.

Pull Request: https://projects.blender.org/blender/blender/pulls/129791
2024-11-07 08:31:08 +01:00
Clément Foucault
5c80fb17e0 GPU: Add support for shader assert
This allows to use `assert()` directly inside shader source.

The current implementation is just replacing it with a printf
that gives some information about the location of the assert.

It is not that much more helpful than a printf with a condition.
What is useful is that they are disabled by default. So they
can be sprinkle around and only turned on during debugging.

Adding shader name inside the assert report is not trivial and
could be added later (the shader name is only known at compile
time which is too late for string parsing).

Adding which drawcall produced the assert isn't trivial either.
It would require flushing the printf buffer for each drawcall
which might force synchronization and remove bugs.

Pull Request: https://projects.blender.org/blender/blender/pulls/129728
2024-11-06 20:29:01 +01:00
Hans Goudey
ab2f0f8876 Cleanup: Remove redundant "is edit mode" check in drawing code
Because everything is logical-and here, these two variables are redundant.

Pull Request: https://projects.blender.org/blender/blender/pulls/129915
2024-11-06 18:36:54 +01:00
Campbell Barton
5f14c70a19 Merge branch 'blender-v4.3-release' 2024-11-06 10:52:00 +11:00
Campbell Barton
96ac7b7ff3 Merge branch 'blender-v4.3-release' 2024-11-06 10:51:53 +11:00
Campbell Barton
a1dfd51fae Cleanup: rename SceneEEVEE::gtao_quality -> fast_gi_quality
Avoid confusion from misleading/incorrect names, see: #129830.
2024-11-06 10:49:58 +11:00
Campbell Barton
6ccbafc5dc Cleanup: spelling in comments 2024-11-06 10:49:51 +11:00
Laurynas Duburas
d9b6f095b6 Fix #129858: Curves: Edit mode selection highlight missing
Makes only Bezier handles dependent on View3DOverlay.display_handle property.
Handles of NURBS, Catmull and Poly curves are always shown.

Pull Request: https://projects.blender.org/blender/blender/pulls/129874
2024-11-05 19:19:11 +01:00
Clément Foucault
351575bc83 Fix: EEVEE: Depth of Field regression
Fix regression introduced by d712be0662
2024-11-05 18:19:59 +01:00
Clément Foucault
8c0bd61342 Merge branch 'blender-v4.3-release' 2024-11-05 17:40:49 +01:00
Clément Foucault
32f4754a38 Fix: EEVEE: Volume: Assert on MacOS with high resolution
This would happen if the viewport with large enough
and a tile resolution of 1:1 was choosen.

This changes the fallback behavior from simply clamping
the resolution (which did break a lot of math downstream),
to simply finding the next largest tile size that fits
the hardware requirements.
2024-11-05 17:40:06 +01:00