Unravel Engine C++ Reference
Loading...
Searching...
No Matches
particle_gpu_schema.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
particle_types.h
"
4
5
#include <cstdint>
6
7
namespace
unravel
8
{
9
namespace
ps_soa
10
{
11
13
enum class
particle_sim_backend
: uint8_t
14
{
15
cpu
= 0,
16
gpu
= 1,
17
};
18
20
constexpr
uint16_t
k_gpu_instance_stride
= 96;
21
constexpr
uint32_t
k_gpu_instance_floats
=
k_gpu_instance_stride
/
sizeof
(float);
22
constexpr
uint32_t
k_gpu_sim_floats_per_particle
= 20;
23
constexpr
uint32_t
k_gpu_sim_vec4s_per_particle
= 5;
24
constexpr
uint32_t
k_gpu_lut_size
= 256;
25
constexpr
uint32_t
k_gpu_cs_threads
= 64;
26
37
struct
gpu_sim_particle
38
{
39
float
start_x
,
start_y
,
start_z
,
life
;
40
float
end0_x
,
end0_y
,
end0_z
,
lifespan
;
41
float
end1_x
,
end1_y
,
end1_z
,
scale_start
;
42
float
scale_end
,
texsheet_seed
,
pad0
,
pad1
;
43
float
rot_x
,
rot_y
,
rot_z
,
rot_w
;
44
};
45
46
static_assert
(
sizeof
(
gpu_sim_particle
) ==
k_gpu_sim_floats_per_particle
*
sizeof
(float),
47
"gpu_sim_particle size mismatch"
);
48
50
struct
gpu_pack_uniforms
51
{
52
float
opacity
= 1.0f;
53
float
color_intensity
= 1.0f;
54
float
avg_system_scale
= 1.0f;
55
float
render_mode
= 0.0f;
56
57
float
pivot_x
= 0.5f;
58
float
pivot_y
= 0.5f;
59
float
particle_count
= 0.0f;
60
float
features
= 0.0f;
61
62
float
scale3d_x
= 1.0f;
63
float
scale3d_y
= 1.0f;
64
float
scale3d_z
= 1.0f;
65
float
tex_sheet_cycles
= 0.0f;
66
67
float
tex_tiles_x
= 1.0f;
68
float
tex_tiles_y
= 1.0f;
69
float
tex_sheet_randomize
= 0.0f;
70
float
pad0
= 0.0f;
71
72
float
size_by_speed_min
= 1.0f;
73
float
size_by_speed_max
= 1.0f;
74
float
inv_size_speed_span
= 0.0f;
75
float
size_speed_min
= 0.0f;
76
77
float
inv_color_speed_span
= 0.0f;
78
float
color_speed_min
= 0.0f;
79
float
pad1
= 0.0f;
80
float
pad2
= 0.0f;
81
82
float
local_to_world
[16]{};
83
};
84
85
inline
auto
gpu_feature_mask
(
emitter_feature
features) -> uint32_t
86
{
87
return
static_cast<
uint32_t
>
(features);
88
}
89
90
}
// namespace ps_soa
91
}
// namespace unravel
unravel::ps_soa::k_gpu_sim_vec4s_per_particle
constexpr uint32_t k_gpu_sim_vec4s_per_particle
Definition
particle_gpu_schema.h:23
unravel::ps_soa::k_gpu_cs_threads
constexpr uint32_t k_gpu_cs_threads
Definition
particle_gpu_schema.h:25
unravel::ps_soa::k_gpu_instance_floats
constexpr uint32_t k_gpu_instance_floats
Definition
particle_gpu_schema.h:21
unravel::ps_soa::particle_sim_backend
particle_sim_backend
Selects CPU vs resident-GPU simulation backend.
Definition
particle_gpu_schema.h:14
unravel::ps_soa::particle_sim_backend::gpu
@ gpu
unravel::ps_soa::particle_sim_backend::cpu
@ cpu
unravel::ps_soa::k_gpu_lut_size
constexpr uint32_t k_gpu_lut_size
Definition
particle_gpu_schema.h:24
unravel::ps_soa::k_gpu_instance_stride
constexpr uint16_t k_gpu_instance_stride
GPU instance row matches vs_particle_instanced i_data0..i_data5 (96 bytes).
Definition
particle_gpu_schema.h:20
unravel::ps_soa::gpu_feature_mask
auto gpu_feature_mask(emitter_feature features) -> uint32_t
Definition
particle_gpu_schema.h:85
unravel::ps_soa::emitter_feature
emitter_feature
Feature bits baked from authoring desc for specialized update/render paths.
Definition
particle_types.h:84
unravel::ps_soa::render_mode
render_mode
Billboard / facing mode. Ordinals match legacy RenderMode.
Definition
particle_types.h:67
unravel::ps_soa::k_gpu_sim_floats_per_particle
constexpr uint32_t k_gpu_sim_floats_per_particle
Definition
particle_gpu_schema.h:22
unravel
Definition
crash.cpp:21
particle_types.h
unravel::ps_soa::gpu_pack_uniforms
Uniform vec4 packing for compute (set as float[4] arrays).
Definition
particle_gpu_schema.h:51
unravel::ps_soa::gpu_pack_uniforms::scale3d_z
float scale3d_z
Definition
particle_gpu_schema.h:64
unravel::ps_soa::gpu_pack_uniforms::tex_tiles_x
float tex_tiles_x
Definition
particle_gpu_schema.h:67
unravel::ps_soa::gpu_pack_uniforms::tex_sheet_randomize
float tex_sheet_randomize
Definition
particle_gpu_schema.h:69
unravel::ps_soa::gpu_pack_uniforms::opacity
float opacity
Definition
particle_gpu_schema.h:52
unravel::ps_soa::gpu_pack_uniforms::local_to_world
float local_to_world[16]
Definition
particle_gpu_schema.h:82
unravel::ps_soa::gpu_pack_uniforms::inv_color_speed_span
float inv_color_speed_span
Definition
particle_gpu_schema.h:77
unravel::ps_soa::gpu_pack_uniforms::avg_system_scale
float avg_system_scale
Definition
particle_gpu_schema.h:54
unravel::ps_soa::gpu_pack_uniforms::particle_count
float particle_count
Definition
particle_gpu_schema.h:59
unravel::ps_soa::gpu_pack_uniforms::pad0
float pad0
Definition
particle_gpu_schema.h:70
unravel::ps_soa::gpu_pack_uniforms::inv_size_speed_span
float inv_size_speed_span
Definition
particle_gpu_schema.h:74
unravel::ps_soa::gpu_pack_uniforms::pivot_y
float pivot_y
Definition
particle_gpu_schema.h:58
unravel::ps_soa::gpu_pack_uniforms::tex_sheet_cycles
float tex_sheet_cycles
Definition
particle_gpu_schema.h:65
unravel::ps_soa::gpu_pack_uniforms::color_intensity
float color_intensity
Definition
particle_gpu_schema.h:53
unravel::ps_soa::gpu_pack_uniforms::pad1
float pad1
Definition
particle_gpu_schema.h:79
unravel::ps_soa::gpu_pack_uniforms::pad2
float pad2
Definition
particle_gpu_schema.h:80
unravel::ps_soa::gpu_pack_uniforms::color_speed_min
float color_speed_min
Definition
particle_gpu_schema.h:78
unravel::ps_soa::gpu_pack_uniforms::size_by_speed_min
float size_by_speed_min
Definition
particle_gpu_schema.h:72
unravel::ps_soa::gpu_pack_uniforms::features
float features
Definition
particle_gpu_schema.h:60
unravel::ps_soa::gpu_pack_uniforms::tex_tiles_y
float tex_tiles_y
Definition
particle_gpu_schema.h:68
unravel::ps_soa::gpu_pack_uniforms::pivot_x
float pivot_x
Definition
particle_gpu_schema.h:57
unravel::ps_soa::gpu_pack_uniforms::size_speed_min
float size_speed_min
Definition
particle_gpu_schema.h:75
unravel::ps_soa::gpu_pack_uniforms::scale3d_y
float scale3d_y
Definition
particle_gpu_schema.h:63
unravel::ps_soa::gpu_pack_uniforms::scale3d_x
float scale3d_x
Definition
particle_gpu_schema.h:62
unravel::ps_soa::gpu_pack_uniforms::size_by_speed_max
float size_by_speed_max
Definition
particle_gpu_schema.h:73
unravel::ps_soa::gpu_sim_particle
Packed sim particle for compute (80 bytes / 5 x vec4).
Definition
particle_gpu_schema.h:38
unravel::ps_soa::gpu_sim_particle::pad1
float pad1
Definition
particle_gpu_schema.h:42
unravel::ps_soa::gpu_sim_particle::life
float life
Definition
particle_gpu_schema.h:39
unravel::ps_soa::gpu_sim_particle::end0_z
float end0_z
Definition
particle_gpu_schema.h:40
unravel::ps_soa::gpu_sim_particle::rot_w
float rot_w
Definition
particle_gpu_schema.h:43
unravel::ps_soa::gpu_sim_particle::texsheet_seed
float texsheet_seed
Definition
particle_gpu_schema.h:42
unravel::ps_soa::gpu_sim_particle::start_x
float start_x
Definition
particle_gpu_schema.h:39
unravel::ps_soa::gpu_sim_particle::pad0
float pad0
Definition
particle_gpu_schema.h:42
unravel::ps_soa::gpu_sim_particle::end0_x
float end0_x
Definition
particle_gpu_schema.h:40
unravel::ps_soa::gpu_sim_particle::rot_z
float rot_z
Definition
particle_gpu_schema.h:43
unravel::ps_soa::gpu_sim_particle::start_z
float start_z
Definition
particle_gpu_schema.h:39
unravel::ps_soa::gpu_sim_particle::rot_x
float rot_x
Definition
particle_gpu_schema.h:43
unravel::ps_soa::gpu_sim_particle::rot_y
float rot_y
Definition
particle_gpu_schema.h:43
unravel::ps_soa::gpu_sim_particle::end1_x
float end1_x
Definition
particle_gpu_schema.h:41
unravel::ps_soa::gpu_sim_particle::scale_start
float scale_start
Definition
particle_gpu_schema.h:41
unravel::ps_soa::gpu_sim_particle::end1_y
float end1_y
Definition
particle_gpu_schema.h:41
unravel::ps_soa::gpu_sim_particle::lifespan
float lifespan
Definition
particle_gpu_schema.h:40
unravel::ps_soa::gpu_sim_particle::end1_z
float end1_z
Definition
particle_gpu_schema.h:41
unravel::ps_soa::gpu_sim_particle::start_y
float start_y
Definition
particle_gpu_schema.h:39
unravel::ps_soa::gpu_sim_particle::scale_end
float scale_end
Definition
particle_gpu_schema.h:42
unravel::ps_soa::gpu_sim_particle::end0_y
float end0_y
Definition
particle_gpu_schema.h:40
engine
engine
rendering
particles
ps
particle_gpu_schema.h
Generated by
1.12.0