Blender
V4.3
intern
cycles
scene
procedural.h
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2
*
3
* SPDX-License-Identifier: Apache-2.0 */
4
5
#pragma once
6
7
#include "
graph/node.h
"
8
9
CCL_NAMESPACE_BEGIN
10
11
class
Progress
;
12
class
Scene
;
13
14
/* A Procedural is a Node which can create other Nodes before rendering starts.
15
*
16
* The Procedural is supposed to be the owner of any nodes that it creates. It can also create
17
* Nodes directly in the Scene (through Scene.create_node), it should still be set as the owner of
18
* those Nodes.
19
*/
20
class
Procedural
:
public
Node
,
public
NodeOwner
{
21
public
:
22
NODE_ABSTRACT_DECLARE
23
24
explicit
Procedural
(
const
NodeType
*type);
25
virtual
~Procedural
();
26
27
/* Called each time the ProceduralManager is tagged for an update, this function is the entry
28
* point for the data generated by this Procedural. */
29
virtual
void
generate
(
Scene
*scene,
Progress
&progress) = 0;
30
31
/* Create a node and set this Procedural as the owner. */
32
template
<
typename
T> T *
create_node
()
33
{
34
T *node =
new
T
();
35
node->set_owner(
this
);
36
return
node
;
37
}
38
39
/* Delete a Node created and owned by this Procedural. */
40
template
<
typename
T>
void
delete_node
(T *node)
41
{
42
assert(node->get_owner() ==
this
);
43
delete
node
;
44
}
45
};
46
47
class
ProceduralManager
{
48
bool
need_update_;
49
50
public
:
51
ProceduralManager
();
52
~ProceduralManager
();
53
54
void
update
(
Scene
*scene,
Progress
&progress);
55
56
void
tag_update
();
57
58
bool
need_update
()
const
;
59
};
60
61
CCL_NAMESPACE_END
ProceduralManager
Definition
procedural.h:47
ProceduralManager::need_update
bool need_update() const
Definition
procedural.cpp:65
ProceduralManager::ProceduralManager
ProceduralManager()
Definition
procedural.cpp:24
ProceduralManager::update
void update(Scene *scene, Progress &progress)
Definition
procedural.cpp:31
ProceduralManager::tag_update
void tag_update()
Definition
procedural.cpp:60
ProceduralManager::~ProceduralManager
~ProceduralManager()
Definition
procedural.cpp:29
Procedural
Definition
procedural.h:20
Procedural::~Procedural
virtual ~Procedural()
Definition
procedural.cpp:22
Procedural::create_node
T * create_node()
Definition
procedural.h:32
Procedural::generate
virtual void generate(Scene *scene, Progress &progress)=0
Procedural::delete_node
void delete_node(T *node)
Definition
procedural.h:40
Procedural::Procedural
NODE_ABSTRACT_DECLARE Procedural(const NodeType *type)
Definition
procedural.cpp:20
Progress
Definition
progress.h:21
node
OperationNode * node
Definition
deg_builder_cycle.cc:39
CCL_NAMESPACE_END
#define CCL_NAMESPACE_END
Definition
device/cuda/compat.h:10
node.h
T
#define T
Definition
mball_tessellate.cc:273
CCL_NAMESPACE_BEGIN
Definition
python.cpp:44
NODE_ABSTRACT_DECLARE
#define NODE_ABSTRACT_DECLARE
Definition
node_type.h:160
NodeOwner
Definition
graph/node.h:86
NodeType
Definition
node_type.h:100
Node
Definition
graph/node.h:90
Scene
Definition
DNA_scene_types.h:1988
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0