Blender V5.0
BKE_compute_contexts.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
18
19#include <optional>
20
22
24
25struct bNode;
26struct bNodeTree;
28
29namespace blender::nodes {
30class Closure;
31}
32
33namespace blender::bke {
34
36 private:
38 int modifier_uid_;
40 const NodesModifierData *nmd_ = nullptr;
41
42 public:
45
46 int modifier_uid() const
47 {
48 return modifier_uid_;
49 }
50
51 const NodesModifierData *nmd() const
52 {
53 return nmd_;
54 }
55
56 private:
57 ComputeContextHash compute_hash() const override;
58 void print_current_in_line(std::ostream &stream) const override;
59};
60
62 private:
63 int32_t node_id_;
64
66 const bNodeTree *tree_ = nullptr;
67
68 public:
71 const bNodeTree *tree = nullptr);
72
74 {
75 return node_id_;
76 }
77
78 const bNodeTree *tree() const
79 {
80 return tree_;
81 }
82
83 const bNode *node() const;
84
85 private:
86 ComputeContextHash compute_hash() const override;
87 void print_current_in_line(std::ostream &stream) const override;
88};
89
94
96 private:
97 int32_t output_node_id_;
98
99 public:
102
104 {
105 return output_node_id_;
106 }
107
108 private:
109 ComputeContextHash compute_hash() const override;
110 void print_current_in_line(std::ostream &stream) const override;
111};
112
114 private:
115 int32_t output_node_id_;
116 int iteration_;
117
118 public:
121
123 {
124 return output_node_id_;
125 }
126
127 int iteration() const
128 {
129 return iteration_;
130 }
131
132 private:
133 ComputeContextHash compute_hash() const override;
134 void print_current_in_line(std::ostream &stream) const override;
135};
136
138 private:
139 int32_t output_node_id_;
140 int index_;
141
142 public:
145 int index);
147 const bNode &node,
148 int index);
149
151 {
152 return output_node_id_;
153 }
154
155 int index() const
156 {
157 return index_;
158 }
159
160 private:
161 ComputeContextHash compute_hash() const override;
162 void print_current_in_line(std::ostream &stream) const override;
163};
164
166 private:
167 std::optional<nodes::ClosureSourceLocation> closure_source_location_;
168
169 public:
171 const ComputeContext *parent,
173 const bNodeTree *tree = nullptr,
174 const std::optional<nodes::ClosureSourceLocation> &closure_source_location = std::nullopt);
175
176 std::optional<nodes::ClosureSourceLocation> closure_source_location() const
177 {
178 return closure_source_location_;
179 }
180
185 bool is_recursive() const;
186};
187
189 private:
191 const bNodeTree *tree_ = nullptr;
192
193 public:
197
198 const bNodeTree *tree() const
199 {
200 return tree_;
201 }
202
203 private:
204 ComputeContextHash compute_hash() const override;
205 void print_current_in_line(std::ostream &stream) const override;
206};
207
209 private:
210 const bNodeTree *tree_ = nullptr;
211
212 public:
213 ShaderComputeContext(const ComputeContext *parent = nullptr, const bNodeTree *tree = nullptr);
214
215 private:
216 ComputeContextHash compute_hash() const override;
217 void print_current_in_line(std::ostream &stream) const override;
218};
219
220} // namespace blender::bke
ComputeContext(const ComputeContext *parent)
const ComputeContext * parent() const
EvaluateClosureComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr, const std::optional< nodes::ClosureSourceLocation > &closure_source_location=std::nullopt)
std::optional< nodes::ClosureSourceLocation > closure_source_location() const
ForeachGeometryElementZoneComputeContext(const ComputeContext *parent, int32_t output_node_id, int index)
NodeComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr)
const NodesModifierData * nmd() const
ModifierComputeContext(const ComputeContext *parent, const NodesModifierData &nmd)
NodeComputeContext(const ComputeContext *parent, int32_t node_id, const bNodeTree *tree=nullptr)
RepeatZoneComputeContext(const ComputeContext *parent, int32_t output_node_id, int iteration)
ShaderComputeContext(const ComputeContext *parent=nullptr, const bNodeTree *tree=nullptr)
SimulationZoneComputeContext(const ComputeContext *parent, int output_node_id)
KDTree_3d * tree