diff --git a/projects/fire_works/shaders/generation.comp b/projects/fire_works/shaders/generation.comp index 0f8551dffdee1544dae31362a7b44f4207874940..13c21d314e2bfbd7ca22671f7feb99e41fad57af 100644 --- a/projects/fire_works/shaders/generation.comp +++ b/projects/fire_works/shaders/generation.comp @@ -136,6 +136,7 @@ void main() { particles[id].size = size * split; particles[id].color = color; particles[id].mass = events[event_id].mass / events[event_id].count; + particles[id].eventId = event_id; { const uint tid = atomicAdd(trailIndex, 1) % trails.length(); diff --git a/projects/fire_works/shaders/particle.inc b/projects/fire_works/shaders/particle.inc index f3da76332452a17256a53dabb0ade6abb0b4caea..488c9349d72ac04d48e523d5c9a97057bdfb1f78 100644 --- a/projects/fire_works/shaders/particle.inc +++ b/projects/fire_works/shaders/particle.inc @@ -8,6 +8,8 @@ struct particle_t { float size; vec3 color; float mass; + vec3 pad0; + uint eventId; }; #endif // PARTICLE_INC \ No newline at end of file diff --git a/projects/fire_works/src/main.cpp b/projects/fire_works/src/main.cpp index acd9411255e0bf33f3aa930a74d5466f8c12ca7b..ea24d23a21517f0e02ee707d5dd0204f9c36c91d 100644 --- a/projects/fire_works/src/main.cpp +++ b/projects/fire_works/src/main.cpp @@ -16,6 +16,8 @@ struct particle_t { float size; glm::vec3 color; float pad2; + glm::vec3 pad0; + uint32_t eventId; }; struct event_t { @@ -311,7 +313,7 @@ int main(int argc, const char **argv) { 100, 0, - events.size() - 1, + events.size() - 3, 0, 10.0f, @@ -319,6 +321,40 @@ int main(int argc, const char **argv) { 0.0f, 0.0f ); + + events.emplace_back( + glm::vec3(0.5, 1, 0), + 0.1f, + glm::vec3(0.0f, 1.5f, 0.0f), + 15.0f, + + 1, + 0, + UINT_MAX, + 0, + + 0.5f, + 1.0f, + 0.5f, + 0.0f + ); + + events.emplace_back( + glm::vec3(0.0f), + 1.0f, + glm::vec3(0.0f, 1.5f, 1.0f), + 8.0f, + + 150, + 0, + events.size() - 1, + 0, + + 10.0f, + 1.0f, + 0.0f, + 0.0f + ); vkcv::Buffer<event_t> eventBuffer = core.createBuffer<event_t>( vkcv::BufferType::STORAGE,