Solves long-standing issue when dependencies of disabled modifiers are evaluated. Simple test case: no drivers or animation. Manually enabling modifier is expected to bring FPS up, enabling modifier will bring FPS (sine evaluation can not be avoided) F13336690 More complex test case: modifier visibility is driven by an animated property. In am ideal world FPS during property being zero is fast and when property is 1 the FPS is low. F13336691. Differential Revision: https://developer.blender.org/D15625
30 lines
938 B
C++
30 lines
938 B
C++
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
* Copyright 2022 Blender Foundation. All rights reserved. */
|
|
|
|
/** \file
|
|
* \ingroup depsgraph
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
struct Depsgraph;
|
|
|
|
namespace blender::deg {
|
|
|
|
struct Depsgraph;
|
|
struct IDNode;
|
|
|
|
/* Evaluate actual node visibility flags based on the current state of object's visibility
|
|
* restriction flags. */
|
|
void deg_evaluate_object_node_visibility(::Depsgraph *depsgraph, IDNode *id_node);
|
|
|
|
/* Update node visibility flags based on actual modifiers mode flags. */
|
|
void deg_evaluate_object_modifiers_mode_node_visibility(::Depsgraph *depsgraph, IDNode *id_node);
|
|
|
|
/* Flush both static and dynamic visibility flags from leaves up to the roots, making it possible
|
|
* to know whether a node has affect on something (potentially) visible. */
|
|
void deg_graph_flush_visibility_flags(Depsgraph *graph);
|
|
void deg_graph_flush_visibility_flags_if_needed(Depsgraph *graph);
|
|
|
|
} // namespace blender::deg
|