Files
test2/source/blender/modifiers/MOD_nodes.hh
Jacques Lucke 3ccfa65245 Geometry Nodes: support packing bakes into .blend files
Previously, it was only possible to bake to disk with geometry nodes. This patch
adds support for storing the baked data directly in the .blend file.

By default, new bakes are stored in the .blend file now. Whether a new bake
should be packed or stored on disk can be configured in two places: in the
properties of the bake node and in the bake panel of the modifier. These
settings don't affect existing bakes, only the next bake.

To unpack or pack an individual bake, there is a new operator button next to the
bake button. The icon and the label below indicate where the bake is currently
stored. The label now also contains the size of the bake.

To unpack or pack all bakes, the `File > External Data > Pack Resources / Unpack
Resources` operators can be used. The unpack operator also has a new title that
mentions the number if individual files separate from the number of bakes. This
works better than just listing a number of files because a bake can consist of
many files.

Pull Request: https://projects.blender.org/blender/blender/pulls/124230
2024-09-20 16:18:12 +02:00

47 lines
1.4 KiB
C++

/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
struct NodesModifierData;
struct Object;
struct NodesModifierPackedBake;
namespace blender::bke::bake {
struct ModifierCache;
}
namespace blender::nodes::geo_eval_log {
class GeoModifierLog;
}
/**
* Rebuild the list of properties based on the sockets exposed as the modifier's node group
* inputs. If any properties correspond to the old properties by name and type, carry over
* the values.
*/
void MOD_nodes_update_interface(Object *object, NodesModifierData *nmd);
namespace blender {
struct NodesModifierRuntime {
/**
* Contains logged information from the last evaluation.
* This can be used to help the user to debug a node tree.
* This is a shared pointer because we might want to keep it around in some cases after the
* evaluation (e.g. for gizmo backpropagation).
*/
std::shared_ptr<nodes::geo_eval_log::GeoModifierLog> eval_log;
/**
* Simulation cache that is shared between original and evaluated modifiers. This allows the
* original modifier to be removed, without also removing the simulation state which may still be
* used by the evaluated modifier.
*/
std::shared_ptr<bke::bake::ModifierCache> cache;
};
void nodes_modifier_data_block_destruct(NodesModifierDataBlock *data_block, bool do_id_user);
void nodes_modifier_packed_bake_free(NodesModifierPackedBake *packed_bake);
} // namespace blender