Blender  V3.3
procedural.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2011-2022 Blender Foundation */
3 
4 #include "scene/procedural.h"
5 #include "scene/scene.h"
6 #include "scene/stats.h"
7 
8 #include "util/foreach.h"
9 #include "util/progress.h"
10 
12 
14 {
15  NodeType *type = NodeType::add("procedural_base", NULL);
16  return type;
17 }
18 
20 {
21 }
22 
24 {
25 }
26 
28 {
29  need_update_ = true;
30 }
31 
33 {
34 }
35 
37 {
38  if (!need_update()) {
39  return;
40  }
41 
42  progress.set_status("Updating Procedurals");
43 
44  scoped_callback_timer timer([scene](double time) {
45  if (scene->update_stats) {
46  scene->update_stats->procedurals.times.add_entry({"update", time});
47  }
48  });
49 
50  foreach (Procedural *procedural, scene->procedurals) {
51  if (progress.get_cancel()) {
52  return;
53  }
54 
55  procedural->generate(scene, progress);
56  }
57 
58  if (progress.get_cancel()) {
59  return;
60  }
61 
62  need_update_ = false;
63 }
64 
66 {
67  need_update_ = true;
68 }
69 
71 {
72  return need_update_;
73 }
74 
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
bool need_update() const
Definition: procedural.cpp:70
void update(Scene *scene, Progress &progress)
Definition: procedural.cpp:36
virtual ~Procedural()
Definition: procedural.cpp:23
virtual void generate(Scene *scene, Progress &progress)=0
NODE_ABSTRACT_DECLARE Procedural(const NodeType *type)
Definition: procedural.cpp:19
void set_status(const string &status_, const string &substatus_="")
Definition: progress.h:248
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
double time
Scene scene
CCL_NAMESPACE_BEGIN NODE_ABSTRACT_DEFINE(Procedural)
Definition: procedural.cpp:13
static NodeType * add(const char *name, CreateFunc create, Type type=NONE, const NodeType *base=NULL)
vector< Procedural * > procedurals
Definition: scene.h:219
SceneUpdateStats * update_stats
Definition: scene.h:249