Blender  V3.3
particles.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2011-2022 Blender Foundation */
3 
4 #ifndef __PARTICLES_H__
5 #define __PARTICLES_H__
6 
7 #include "util/array.h"
8 #include "util/types.h"
9 
10 #include "graph/node.h"
11 
13 
14 class Device;
15 class DeviceScene;
16 class Progress;
17 class Scene;
18 
19 /* Particle System */
20 
21 struct Particle {
22  int index;
23  float age;
24  float lifetime;
27  float size;
30 };
31 
32 class ParticleSystem : public Node {
33  public:
35 
38 
39  void tag_update(Scene *scene);
40 
42 };
43 
44 /* ParticleSystem Manager */
45 
47  bool need_update_;
48 
49  public:
52 
53  void device_update_particles(Device *device,
54  DeviceScene *dscene,
55  Scene *scene,
56  Progress &progress);
57  void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress);
58  void device_free(Device *device, DeviceScene *dscene);
59 
60  void tag_update(Scene *scene);
61 
62  bool need_update() const;
63 };
64 
66 
67 #endif /* __PARTICLES_H__ */
float float4[4]
void device_free(Device *device, DeviceScene *dscene)
void tag_update(Scene *scene)
void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)
void device_update_particles(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
Scene scene
#define NODE_DECLARE
Definition: node_type.h:135
array< Particle > particles
Definition: particles.h:41
NODE_DECLARE ParticleSystem()
void tag_update(Scene *scene)
float age
Definition: particles.h:23
float lifetime
float3 location
Definition: particles.h:25
float size
Definition: particles.h:27
float4 rotation
Definition: particles.h:26
float3 velocity
Definition: particles.h:28
float3 angular_velocity
Definition: particles.h:29
int index
Definition: particles.h:22