Commit Graph

94542 Commits

Author SHA1 Message Date
Brecht Van Lommel
b9998541e1 Fix part of T100626: Cycles not using tiles for baking
Leading to excessive memory usage compared to Blender 2.93. There's still
some avoidable memory usage remaining, due to the full float buffer in the
new image editor drawing and not loading the cached EXR from disk in tiles.

Main difficulty was handling multi-image baking and disk caches, which is
solved by associating a unique layer name with each image so it can be
matched when reading back the image from the disk.

Also some minor header changes to be able to use RE_MAXNAME in RE_bake.h.
2022-08-31 20:04:14 +02:00
Joseph Eagar
d7b33cd8c8 Sculpt: Fix T100479: Memory corruption in sculpt_boundary_edit_data_init 2022-08-31 10:20:30 -07:00
Hans Goudey
70f1711324 Mesh: Remove unnecessary copy in modifier stack
These few lines making a copy of the final mesh were confusing.
The goal (I'm fairly certain) is to make sure the cage mesh and final
mesh aren't shared when applying the vertex coordinates to the final
mesh. This can be done more simply though, in a way that avoids
duplicating the final mesh if it already isn't shared.

This works well in some basic tests with different modifiers. Though
I doubt it was really a bottleneck anywhere, simplifying the modifier
stack internals is always nice.

Differential Revision: https://developer.blender.org/D15814
2022-08-31 12:12:09 -05:00
Hans Goudey
91d9f46aec Cleanup: Use const for node data in compositor
Push the const usage a bit further for compositor nodes, so that they
are more explicit about not modifying original nodes from the editor.

Differential Revision: https://developer.blender.org/D15822
2022-08-31 12:06:13 -05:00
Joseph Eagar
fae955fdb1 Fix merge error. 2022-08-31 10:04:23 -07:00
Joseph Eagar
ab8240fcff Fix submodule refs 2022-08-31 10:02:42 -07:00
Joseph Eagar
373e69b94e Merge branch 'blender-v3.3-release' 2022-08-31 09:46:33 -07:00
Joseph Eagar
cdc0be48c9 Cleanup: fix warnings from vcol limit commit 2022-08-31 09:43:52 -07:00
Jacques Lucke
e6557785ed Fix: crash on undo due to missing node declaration
This was broken in {rB25e307d725d0b924fb0e87e4ffde84f915b74310}.
2022-08-31 18:35:07 +02:00
Joseph Eagar
0a4249561c Fix compile error from merge. 2022-08-31 09:08:35 -07:00
Alexander Gavrilov
2f729bc111 Fix T98525: depsgraph for indirectly referenced ID Properties in drivers.
If the RNA path of a Single Property variable goes through a pointer
to a different ID, the property should be attached to that ID using
the owner reference in the RNA pointer. This already happened when
building some, but not all of the relations and nodes.

This patch fixes the remaining cases.

Differential Revision: https://developer.blender.org/D15323
2022-08-31 19:00:38 +03:00
Joseph Eagar
f987d9b758 Merge branch 'blender-v3.3-release' 2022-08-31 08:33:23 -07:00
Dalai Felinto
30ec628d43 UI: Fix Geometry Nodes "Is Face Planar" name
Old name: "Face is Planar"
New name: "Is Face Planar"

This follows the current convention (Is Shade Smooth, Is Viewport, ...).
2022-08-31 17:31:04 +02:00
Dalai Felinto
db98007c3a UI: Fix Geometry Nodes "Mesh to Volume" name (typo)
Old name: "Mesh To Volume"
New name: "Mesh to Volume"

This is consistent with what we do for the other nodes
(Mesh to Curve, Mesh to Points).
2022-08-31 17:30:39 +02:00
Joseph Eagar
a6ba8e5f38 Core: Remove color attribute limit from CustomData API
Note: does not fix the limit in PBVH draw which is
caused by VBO limits not MAX_MCOL.
2022-08-31 08:29:16 -07:00
Omar Emara
2a13ce1e61 Fix T100700: Compositor crashes when disabled then enabled
The viewport compositor crashes when it is disabled then enabled after
the compositor node tree is edited.

This happens because the compositor engine uses the view_update callback
of the draw engine type to detect changes in the node tree and reset its
state for future evaluation. However, the draw manager only calls the
view_update callback for enabled engines, so the compositor never
receives the needed updates to properly reset its state and then crashes
at draw time.

This patch call the view_update callback for all registered engines
regardless if they are enabled or not, that way, they always receive
the potentially important updated needed to maintain a correct state.

Aside from the compositor engine, this change affects the EEVEE and
Workbench engines because they are the only engines that utilizes this
callback. However, both of them only reset a flag that is checked at
draw time. So the change should have no side effects. For the EEVEE
engine, we just add a null check in case it was not instanced, while
Workbench already have the appropriate null check.

Differential Revision: https://developer.blender.org/D15821

Reviewed By: Clement Foucault
2022-08-31 16:59:54 +02:00
Antonio Vazquez
ae79bc490a GPencil: Apply Brush Size to Outline thickness while drawing
The new factor allows to apply the current brush size to the
external stroke perimeter conversion done in draw mode.
2022-08-31 16:18:08 +02:00
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
Thomas Dinges
d4d14df38c Release schedule: Blender 3.3 RC
The branch is now in Bcon4, critical bug fixes only.
2022-08-31 16:08:26 +02:00
Sergey Sharybin
310a43bcac Cleanup: Resolve unused-lambda-capture warning 2022-08-31 15:20:45 +02:00
Sergey Sharybin
ac20970bc2 Depsgraph: optimize out evaluation of hidden objects
This change makes it so that objects which are temporary hidden from
the viewport (the icon toggle in outliner) do not affect on the
performance of the viewport.

The attached file demonstrates the issue. Before this change hiding
the object does not change FPS, after this change FPS goes high when
the object is hidden.

F13435936

Changing the object temporary visibility is already expected to tag
scene for bases updates, which flushes down the stream to the object
visibility update. So the only remaining topic was to ensure the
graph does a special round of visibility update on such changes.

Differential Revision: https://developer.blender.org/D15813
2022-08-31 15:11:18 +02:00
Sergey Sharybin
5a1b733a67 Fix unnecessary modifier visibility re-evaluation
While it is hard to measure the performance impact accurately, there
is no need to perform per-modifier string lookup on every frame update.

Implemented as an exceptional case in the code which flushes updates to
the entire component. Sounds a bit suboptimal, but there are already
other exception cases handled in the function.

Differential Revision: https://developer.blender.org/D15812
2022-08-31 15:11:18 +02:00
Julian Eisel
c1e342136d UI: Add shift-click hint to library overrides button tooltip
This information was missing and made the feature hard to discover.
2022-08-31 15:04:43 +02:00
Bastien Montagne
773241add9 Merge branch 'blender-v3.3-release' 2022-08-31 14:47:52 +02:00
Bastien Montagne
24fe659224 LibOverride: Replace linked objects by their overrides when created from 3DView.
From the 3DView code has basically no knowledge of collection hierarchy,
so we can either not remap any local usage of linked objects that are
being overridden, or remap them in all their local collections.

The second behavior makes most sense in the vast majority of cases.

Note that this was only an issue when directly linking and overriding
objects, not when doing so through collections.
2022-08-31 14:44:55 +02:00
Jacques Lucke
4b9d7b71e0 Fix: incorrect detection of used sockets 2022-08-31 14:41:57 +02:00
Jacques Lucke
627e8ad682 Fix: missing vector clear
Otherwise, these vectors are never cleared, leading to crashes
down the line.
2022-08-31 13:57:08 +02:00
Jacques Lucke
d3f07998ed Cleanup: simplify debugging
This makes it easy to set breakpoints where false is returned.
2022-08-31 13:57:08 +02:00
Bastien Montagne
81d82427b5 Merge branch 'blender-v3.3-release' 2022-08-31 12:38:13 +02:00
Bastien Montagne
d210ab90d4 Fix crash in liboverride operations from the Outliner.
Checks for 'invalid' selected IDs that need to be skipped were
incomplete, and one was missing the actual return statement.
2022-08-31 12:36:54 +02:00
Jacques Lucke
25e307d725 Nodes: move NodeTreeRef functionality into node runtime data
The purpose of `NodeTreeRef` was to speed up various queries on a read-only
`bNodeTree`. Not that we have runtime data in nodes and sockets, we can also
store the result of some queries there. This has some benefits:
* No need for a read-only separate node tree data structure which increased
  complexity.
* Makes it easier to reuse cached queries in more parts of Blender that can
  benefit from it.

A downside is that we loose some type safety that we got by having different
types for input and output sockets, as well as internal and non-internal links.

This patch also refactors `DerivedNodeTree` so that it does not use
`NodeTreeRef` anymore, but uses `bNodeTree` directly instead.

To provide a convenient API (that is also close to what `NodeTreeRef` has), a
new approach is implemented: `bNodeTree`, `bNode`, `bNodeSocket` and `bNodeLink`
now have C++ methods declared in `DNA_node_types.h` which are implemented in
`BKE_node_runtime.hh`. To make this work, `makesdna` now skips c++ sections when
parsing dna header files.

No user visible changes are expected.

Differential Revision: https://developer.blender.org/D15491
2022-08-31 12:16:13 +02:00
Clément Foucault
5a60535a20 GPUCapabilities: Add GPU_shader_draw_parameters_support
This checks for the availability of `gl_BaseInstanceARB` or equivalent.

Disabling for any workaround that disables shader_image_load_store_support
as a preventive measure.
2022-08-31 11:35:18 +02:00
Jacques Lucke
41f439a737 Merge branch 'blender-v3.3-release' 2022-08-31 10:29:35 +02:00
Jacques Lucke
6177d9f0c8 Fix: reverse uv lookup fails due to floating point accuracy issues
The case when the query uv is almost on an edge but outside of any
triangle was handled before. Now the case where the query uv is
almost on an edge but inside more than one triangle is handled as well.
2022-08-31 10:28:35 +02:00
Aras Pranckevicius
68f234b8ab Cleanup: obj: simplify import/export syntax handling code
I want to add support for PBR materials extension to OBJ, but the way
current I/O code syntax handling was done made it quite cumbersome
to extend the number of MTL textures/parameters.

Simplify all that by removing FormatHandler template on "syntax"
that gets routed through keyword enums, and instead just have
simple `write_obj_*` and `write_mtl_*` functions.

Simplify MTLMaterial to not contain a map of textures (that is always
fully filled with all possible textures), instead now there's
a simple array. Rename `tex_map_XX` to `MTLTexMap`.

All this does not affect behavior or performance, but it does result
in 170 fewer lines of code, and saves a couple kilobytes of executable
size.
2022-08-31 11:18:34 +03:00
Campbell Barton
70035e6473 Cleanup: break before the default case in switch statements
While missing the break before a default that only breaks isn't
an error, it means adding new cases needs to remember to add the
break for an existing case, changing the default case will also
result in an unintended fall-through.

Also avoid `default:;` and add an explicit break.
2022-08-31 16:01:29 +10:00
Campbell Barton
0f8ebd21e3 Cleanup: reduce scope, quiet unused variable warnings
When building without thumbnails some variables weren't used,
reduce their scope as well as the BlPath sub-string.
2022-08-31 14:26:47 +10:00
Campbell Barton
876d1bfe4e Cleanup: quiet MSVC warning using flag flag operations on boolean
While harmless it wasn't clear if other bits might be set but ignored,
assign the value instead.
2022-08-31 14:26:46 +10:00
Campbell Barton
68d85ce208 Cleanup: format 2022-08-31 13:52:44 +10:00
Campbell Barton
cae50c83c6 Cleanup: split font datafile loading into a function
Also use more descriptive/conventional variable names.
2022-08-31 12:50:08 +10:00
Campbell Barton
657b92c888 BLF: use existing stat from 'direntry' for directory check 2022-08-31 12:42:41 +10:00
YimingWu
dc733cf17d Merge branch 'blender-v3.3-release' 2022-08-31 10:02:45 +08:00
YimingWu
fec90a5d58 GPencil: Fix sharp_threshold property in sample stroke operator
The property registration was missing in the operator, now fixed.
2022-08-31 10:02:09 +08:00
YimingWu
66fecfcda6 LineArt: Fix (unreported) wrong index in weight transfer
Line art now uses global index for vertices but needs to have
local index in order to do correct weight transfer.
2022-08-31 10:02:09 +08: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
Hans Goudey
0331a8c67c Cleanup: Remove redundant addition of attribute
The radius attribute is aleady added in `pointcloud_random`.
2022-08-30 17:03:04 -05:00
Hans Goudey
b5bc086864 Cleanup: Avoid using geometry component unnecessarily 2022-08-30 17:00:36 -05:00
Hans Goudey
7bfabc6444 Cleanup: Remove unused point cloud function
This can be done more intuitively with a "copy parameters" function
like `curves_copy_parameters` or `BKE_mesh_copy_parameters` anyway.
2022-08-30 16:52:30 -05:00
Hans Goudey
d94a11ed79 Curves: Avoid unnecessarily initializing new positions layer
When creating a curves data-block, one is expected to set the new
position values. We can slightly improve performance by avoiding
doing that redundantly.

Similar to cccc6d6905.
2022-08-30 16:49:24 -05:00
Hans Goudey
4c91c24bc7 Attributes: Avoid unnecessarily initializing new attributes
The "write_only" (i.e. no reading) API function expects the caller to
set values for all new attribute elements, so using calloc or setting
 the default value first is redundant. In theory this can improve
performance by avoiding an extra pass over the array. I observed a
6% improvement in a basic test with the mesh to points node:
from 47.9ms to 45ms on average.

See 25237d2625 for more info.
Similar to cccc6d6905.
2022-08-30 16:45:00 -05:00