Commit Graph

108041 Commits

Author SHA1 Message Date
Pratik Borhade
209db414e0 Fix #119860: Undo crash in asset browser poll function
`asset_lib` is null when calling undo in active file browser space.
This causes crash in `asset undo poll`. So exit out of the poll function
when active file space is filebrowser.

Pull Request: https://projects.blender.org/blender/blender/pulls/119870
2024-03-25 14:00:38 +01:00
Pratik Borhade
f6190dcf9f Merge branch 'blender-v4.1-release' 2024-03-25 18:28:23 +05:30
Pratik Borhade
436b9a5aae Fix #119862: poly build crash when adding first vertex in empty geometry
object_index is not found (-1) when all mesh data is deleted hence it
crashes when accessing base from the vector at index -1.
So skip the further execution to prevent crash.

Pull Request: https://projects.blender.org/blender/blender/pulls/119865
2024-03-25 13:55:57 +01:00
Germano Cavalcante
f66cb1e635 UI: rename 'Snap With' and 'Snap To' to 'Snap Base' and 'Snap Target'
Since the `Set Snap Base` feature has been implemented, it would be
convenient to reflect the use of the term `Snap Base` in other areas in
the UI.

Pull Request: https://projects.blender.org/blender/blender/pulls/119723
2024-03-25 13:35:52 +01:00
Hans Goudey
b1c85fa78c Fix: Python import error for GPUVertBuf
Caused by fe76d8c946
2024-03-25 08:10:48 -04:00
Campbell Barton
ab93a426a0 Fix assert from recent cleanup
Change from [0] didn't account for edit-meshes without faces.

[0]: 3805974b6f
2024-03-25 22:28:53 +11:00
Pratik Borhade
2e8259e4d4 GPv3: Clean loose points in draw mode menu
Include `clean loose` operator in draw mode menu.
And move this operator inside `Cleanup menu` (same as GPv2)

Pull Request: https://projects.blender.org/blender/blender/pulls/119782
2024-03-25 12:17:03 +01:00
Aras Pranckevicius
26337b9fb4 Metal: implement support for compressed textures
Noticed lack of it via #119793. Now DDS images using BC1/BC2/BC3
(aka DXT1/DXT3/DXT5) formats can keep on being GPU compressed
on Metal too, just like e.g. on OpenGL.

Pull Request: https://projects.blender.org/blender/blender/pulls/119835
2024-03-25 11:40:20 +01:00
Sergey Sharybin
7e2d54e786 Fix: Assert when exiting Metal rendered viewport
This commit fixes the following assert:
  mtl_command_buffer.mm:165, submit(), at 'MTLBackend::get()->is_inside_render_boundary()'

It happens when toggling rendered state of viewport on macOS, and is
caused by incorrect order of setting active GPU context to null and
calling GPU_render_end.

This change makes the flow of GPU_render_{beign, end} and GPU context
activation closer to what it is in the draw manager's functions
DRW_render_context_{enable, disable}.

Pull Request: https://projects.blender.org/blender/blender/pulls/119868
2024-03-25 11:28:28 +01:00
Sybren A. Stüvel
8f015d3bfc Modeling: Merge Vertices, correct spelling of report
Fix the "Merge Vertices" report, replacing "vertice(s)" with either
"vertex" or "vertices". The singular "vertice" is not a word in English,
and thus the regular "append (s)" approach is incorrect.

Pull Request: https://projects.blender.org/blender/blender/pulls/119863
2024-03-25 10:18:13 +01:00
Lukas Stockner
05a9f96446 Fix: Add missing callback reset in RE_InitRenderCB
This caused an ASan abort while looking into #101993.

From what I can tell, the issue is that when you click the render button on
the Render Layer node, RENDER_OT_render sets the callback. Then, when you
hit F12 later, it reuses the Render from before, including the callback,
but the corresponding handle has been freed already.
2024-03-25 01:38:55 +01:00
Harley Acheson
b545770f5c UI: Adjustments to Minimum Area Sizes
When areas are dragged very small we want the (visual) vertical minimum
to equal header height, and the horizontal minimum to be equal to the
Properties nav area width. This PR just makes these adjust correctly
with changes of resolution scale and line width.

Pull Request: https://projects.blender.org/blender/blender/pulls/119848
2024-03-24 19:40:18 +01:00
Hans Goudey
b54d9875ba Fix: Another Metal build error after recent refactor
Sorry for the noise, I misread the output from the PR build.
2024-03-24 13:24:03 -04:00
Hans Goudey
aa87b747c5 Fix: Additional macOS metal build error 2024-03-24 12:37:36 -04:00
Hans Goudey
e201b5e553 Fix: Debug build error after previous commit 2024-03-24 12:17:44 -04:00
Hans Goudey
fe76d8c946 Refactor: Remove unnecessary C wrappers for vertex and index buffers
Now that all relevant code is C++, the indirection from the C struct
`GPUVertBuf` to the C++ `blender::gpu::VertBuf` class just adds
complexity and necessitates a wrapper API, making more cleanups like
use of RAII or other C++ types more difficult.

This commit replaces the C wrapper structs with direct use of the
vertex and index buffer base classes. In C++ we can choose which parts
of a class are private, so we don't risk exposing too many
implementation details here.

Pull Request: https://projects.blender.org/blender/blender/pulls/119825
2024-03-24 16:38:30 +01:00
Hans Goudey
84c6ead74b Refactor: Remove unnecessary curves GPU evaluation caches
Currently we have a cache for all combinations of "strand/strip" and
the four subdivision levels. Recomputing this data should be very fast
and doesn't require re-uploading data from the CPU. Because they are
scene settings, they will be the same for all render engines too, so we
won't have a case where we're constantly requesting different values.

The extra caches just complicate code, so better to remove them. Now
the final evaluated cache remembers the settings it was created with,
and it's cleared if they are changed.

Pull Request: https://projects.blender.org/blender/blender/pulls/119804
2024-03-24 16:33:12 +01:00
Casey Bianco-Davis
cb453a5846 Fix: Debug crash upon entering edit mode.
Any valid object gets added to `object_data` so we should check if it is not empty rather then is empty.

Pull Request: https://projects.blender.org/blender/blender/pulls/119839
2024-03-24 13:11:01 +01:00
Iliya Katueshenock
9123451427 Cleanup: BLI: Redundant dereference
Redundant dereference of array element.
This code is not used currently, but i noticed issue
while using this in my branch.

Pull Request: https://projects.blender.org/blender/blender/pulls/119842
2024-03-24 11:07:00 +01:00
John Swenson
af0c42e266 Fix #118260: VSE scene strip wireframe display
The issue is that a draw call in the sequencer does not have any
knowledge of the viewport's wireframe opacity and threshold settings,
defaulting both to 0.

A similar issue #86956 implemented a quick hack to fix grease pencil
shading in VSE, so I opted to do the same here. In the future, a better
solution could be implemented to preserve the entire v3d.overlay.

I should note that I made `wireframe_threshold = 0.5f` to match the
default value given in `versioning_280.cc` but if this works better
as `1.0f` instead let me know.

Pull Request: https://projects.blender.org/blender/blender/pulls/119811
2024-03-24 08:52:47 +01:00
Hans Goudey
3805974b6f Refactor: Use C++ array for edit mesh looptris
Pull Request: https://projects.blender.org/blender/blender/pulls/119829
2024-03-23 17:43:38 +01:00
Hans Goudey
3ce8c74a57 Cleanup: Fix outdated comments about Mesh data 2024-03-23 11:47:07 -04:00
Hans Goudey
374b80b84a Cleanup: Miscellaneous cleanups to newly C++ headers 2024-03-23 10:10:52 -04:00
Hans Goudey
1dc16f909d Cleanup: Move GPU Python headers to C++ 2024-03-23 10:06:45 -04:00
Hans Goudey
a54c9b9e36 Cleanup: Move eevee_private.h to C++ 2024-03-23 09:59:23 -04:00
Hans Goudey
5cd1237594 Cleanup: Miscellaneous cleanups to newly C++ headers
Pull Request: https://projects.blender.org/blender/blender/pulls/119824
2024-03-23 14:52:00 +01:00
Hans Goudey
a099061feb Cleanup: Move remaining draw headers to C++ 2024-03-23 14:51:59 +01:00
Clément Foucault
4d502ab51d EEVEE-Next: Refactor light data packing
This allows to use unions on the C++ side and safe type
casting on the GPU side.

The type casting functions are statically verified at
compile time in C++.

This PR doesn't change the size of the light struct
but removes the need of packing floats in the `object_mat`.
The matrix will be changed to a `float4x3` in another PR
and will reduce the struct by 16 bytes.

This remove the need for the light parameters macros and
reveals the padding members that could be used for future
features for each type.

After this, all accesses to light type dependent data in
the shaders should be done using:
- `LightLocalData light_local_data_get(LightData light)`
- `LightSpotData light_spot_data_get(LightData light)`
- `LightAreaData light_area_data_get(LightData light)`
- `LightSunData light_sun_data_get(LightData light)`

Note that these functions are simple passthrough for Metal
since it supports `union` (but enforce for error checking
if option is enabled).

The error check on GPU is a bit costly so it is disabled
by default.

Pull Request: https://projects.blender.org/blender/blender/pulls/119713
2024-03-23 08:16:12 +01:00
Bastien Montagne
c7afb06ed0 Fix (unreported) some old files having regular IDs flagged as embedded.
It is unknown why/how this can happen, but there are some files out there
that have e.g. Objects flagged as embedded data... See e.g. the
`(Anim) Hero p23 for 2.blend` file from our cloud gallery
(https://cloud.blender.org/p/gallery/5b642e25bf419c1042056fc6).

Not much to be done, but add another checking pass at the end of
readfile process to fix these.
2024-03-23 12:55:57 +09:00
Bastien Montagne
7643bd7d89 Fix (unreported) broken GPv3 conversion code using one node socket for both input and output.
This is explicitely forbidden by an assert since 067daec270 a few days
ago, but somehow this GPv3 usage was missed then.
2024-03-23 12:02:41 +09:00
Bastien Montagne
4d973d3cf3 GPv3: Optional automatic conversion of legacy GP objects on fileload.
This adds a new exprimental option to automatically convert GP legacy
data to GPv3 one.

It supports also linking and appending cases. Conversion also happens
when opening a file linking GP legacy data saved by an older .blendfile.

Pull Request: https://projects.blender.org/blender/blender/pulls/118705
2024-03-23 03:28:57 +01:00
Hans Goudey
8b514bccd1 Cleanup: Move remaining GPU headers to C++
Pull Request: https://projects.blender.org/blender/blender/pulls/119807
2024-03-23 01:24:18 +01:00
Harley Acheson
9eb275e6eb UI: Correction to Weight of 3D Viewport Overlay Text
Currently the overlay text, like stats for example, are drawing with
the widget_label font style size but using widget's weight. This is
just because UI_fontstyle_set is not called. Without this call we can
get a jiggling of the overlay text if these two styles differ in
weight. This PR also makes an (unnoticeable) correction to the font id
used in fontstyle_set_ex. uiFontStyle's uifont_id is not always the
same id as regular font ids, but here they are confused.

Pull Request: https://projects.blender.org/blender/blender/pulls/119808
2024-03-22 21:28:55 +01:00
Brecht Van Lommel
704e62d9d7 Merge branch 'blender-v4.1-release' 2024-03-22 21:08:15 +01:00
Brecht Van Lommel
64bfe49164 Fix: RNA warning regarding description ending in period
Ref #109157
2024-03-22 20:59:15 +01:00
Brecht Van Lommel
b0b0510dbf Refactor: Access paint brush through accessor function
This will be used for brush assets in the future.

Ref #119801
2024-03-22 20:54:09 +01:00
Richard Antalik
bee70e0c03 Fix #119465: Incorrect color when changing VSE colorspace
Cached strip images were not invalidated, which caused, that these
images were kept in memory in incorrect colorspace.

Code readability was improved a bit and clarifying comments were added
to avoid confusion about what is the code supposed to do.

Pull Request: https://projects.blender.org/blender/blender/pulls/119475
2024-03-22 20:11:51 +01:00
Richard Antalik
3f4d924298 Fix #118633: View limiting does not work if VSE is uninitialized
This happened, because function returned early if `Editing` was nullptr.
However it is needed only for timeline boundbox, which is already initialized
for case where there are no strips.

Pull Request: https://projects.blender.org/blender/blender/pulls/118864
2024-03-22 20:10:53 +01:00
Hans Goudey
561dfb4022 Cleanup: Simplify naming in curves draw cache, other simplifications
- Avoid unnecessary redundancy in function and variable names
- Use more consistent variable names in some places
- Avoid duplicate null checks and incorrect "ensure" naming
- Use const in a few places
- Pass more specific arguments besides just the curves
- Remove unnecessary namespace specification
2024-03-22 14:52:22 -04:00
Miguel Pozo
def5f86cae Fix: EEVEE-Next: Material compilation
Move pcg functions to eevee_sampling_lib.
Including gpu_shader_common libs in engine code results in double  includes.
2024-03-22 18:58:12 +01:00
Harley Acheson
cfce96dafe Changes needed because of removal of a1, a1 from uibut 2024-03-22 10:31:02 -07:00
Harley Acheson
5d136692e6 Merge branch 'blender-v4.1-release' 2024-03-22 10:27:38 -07:00
Harley Acheson
986e4a8b7f Fix #119384: Outliner Edit Mode Toggle When Data is Shared
This report includes a file that demonstrates a crash when ctrl-
clicking the "dot" icon to add to the objects in edit mode. This is
because the object has a mesh shared with another object that is
already in edit mode. This PR allows editing only one object at a
time between objects that share data.

Pull Request: https://projects.blender.org/blender/blender/pulls/119704
2024-03-22 18:26:29 +01:00
Hans Goudey
00e1b2256b Merge branch 'blender-v4.1-release' 2024-03-22 12:28:51 -04:00
Hans Goudey
ed2cdc6583 Cleanup: Remove unused curves eval cache variable 2024-03-22 12:25:24 -04:00
Hans Goudey
7f4a4fa605 Fix #119787: Curves viewport attribute drawing crash
Caused by 1cca960677.

That commit stated that creating the final subdivided attribute didn't
free the "proc" attribute buffer that contains the data from the Curves
control points. However that wasn't the case, given the call to
`GPU_VERTBUF_DISCARD_SAFE` in that function. That caused a crash when
the overlay engine and EEVEE both wanted to access the VBO and it was
discarded the second time. To fix that, only regenerate the
`proc_attributes_buf` when it doesn't already exist.

This matches the "ensure" behavior that already exists for the
`cache.final[subdiv].attributes_buf` buffer, so conceptually it
seems fine.

Pull Request: https://projects.blender.org/blender/blender/pulls/119795
2024-03-22 17:19:50 +01:00
Guillermo Venegas
7fabf0d896 Fix #119778: Crash in popovers that do not support refreshing
When creating popover with `UI_popover_begin` the popover block
is created just once without a region and since `UI_popover_begin` blocks
are not support refreshing, layout panels may not be compatible
in this kind of popover since open/close state cannot be refreshed either.

Only `UILayout.popover(...)` popovers are supported to have layout panels.

Pull Request: https://projects.blender.org/blender/blender/pulls/119796
2024-03-22 17:09:02 +01:00
Sybren A. Stüvel
aafe045fa0 Refactor: Anim, context function for active/editable/selectable actions
Just some simplification with early `return` / `continue` to reduce
indentation and cognitive complexity.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/119794
2024-03-22 16:49:12 +01:00
Jeroen Bakker
463856e6c6 GPU: Remove print statement when frame capturing
When frame capturing cannot be start an error is printed to the console.
Most of the time the issue is that you're not running from within a frame
capturing environment. For example not from your IDE/GPU debugger.

The print statement is often just not that useful. Especially when
running the `WITH_GPU_DRAW_TESTS` where it floods the console.

Pull Request: https://projects.blender.org/blender/blender/pulls/119783
2024-03-22 16:27:52 +01:00
Hans Goudey
3039ea02c6 Refactor: Simplify undo object list creation, use C++ Vector
Replace the use of the `LIB_TAG_DOIT` flag which cwas used to
only process each object data ID once with a Set. Return the objects
or bases in a Vector. Now we only iterate over the view layers bases
once instead of three times.

Pull Request: https://projects.blender.org/blender/blender/pulls/119788
2024-03-22 16:24:30 +01:00