From edefd4a5e9a5ab4961e1fe8ddc99fec3b8625f21 Mon Sep 17 00:00:00 2001
From: TheJackiMonster <thejackimonster@gmail.com>
Date: Mon, 25 Jul 2022 17:57:05 +0200
Subject: [PATCH] Indentation and adding random spawnId picking

Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
 projects/fire_works/shaders/explosion.comp  | 49 ---------------------
 projects/fire_works/shaders/generation.comp | 30 ++++++-------
 2 files changed, 15 insertions(+), 64 deletions(-)
 delete mode 100644 projects/fire_works/shaders/explosion.comp

diff --git a/projects/fire_works/shaders/explosion.comp b/projects/fire_works/shaders/explosion.comp
deleted file mode 100644
index 2db4cc4f..00000000
--- a/projects/fire_works/shaders/explosion.comp
+++ /dev/null
@@ -1,49 +0,0 @@
-#version 450 core
-#extension GL_GOOGLE_include_directive : enable
-#extension GL_ARB_separate_shader_objects : enable
-
-layout(local_size_x = 4, local_size_y = 4, local_size_z = 4) in;
-
-#include "physics.inc"
-#include "event.inc"
-
-layout(set=0, binding=1, std430) buffer eventBuffer {
-    event_t events [];
-};
-
-#include "smoke.inc"
-
-layout(set=1, binding=0, std430) writeonly buffer smokeBuffer {
-    smoke_t smokes [];
-};
-
-layout(set=2, binding=0, rgba16) uniform image3D fluidImage;
-
-layout( push_constant ) uniform constants{
-    float t;
-    float dt;
-    uint smokeIndex;
-};
-
-void main() {
-    uvec3 id = gl_GlobalInvocationID;
-    ivec3 size = imageSize(fluidImage);
-
-    if (any(greaterThanEqual(id, size))) {
-        return;
-    }
-
-    uint eventID = smokes[smokeIndex].eventID;
-
-    if (eventID >= events.length()) {
-        return;
-    }
-
-    const float start = events[eventID].startTime;
-
-    if (((t - dt * 2) >= start) || (t < start)) {
-        return;
-    }
-
-    vec3 position = (vec3(id) + vec3(0.5f)) / vec3(size);
-}
diff --git a/projects/fire_works/shaders/generation.comp b/projects/fire_works/shaders/generation.comp
index 3fdbd3a8..ec0abbd3 100644
--- a/projects/fire_works/shaders/generation.comp
+++ b/projects/fire_works/shaders/generation.comp
@@ -83,29 +83,26 @@ void main() {
 
         index = atomicAdd(events[i].index, 1);
 
-        if(events[i].continuous < 1){
+        if (events[i].continuous < 1) {
             if (events[i].count > index) {
                 event_id = i;
                 break;
-            }else{
+            } else {
                 atomicAdd(events[i].index, -1);
-            } 
-        }else{
-            if(events[i].continuous > index){
+            }
+        } else {
+            if (events[i].continuous > index){
                 event_id = i;
                 break;
-            }else{
-                if(events[i].contCount > 0){
+            } else {
+                if (events[i].contCount > 0) {
                     atomicAdd(events[i].contCount, -1);
                     events[i].index = 0;
-                    }
+                }
+
                 atomicAdd(events[i].index, -1);
             }
         }
-        
-        
-
-        
     }
 
     if (event_id >= events.length()) {
@@ -131,9 +128,12 @@ void main() {
     vec3 velocity = vec3(0.0f);
     float size = events[event_id].size;
 
-    if (events[event_id].parent < events.length()) {
-        const uint spawnId = startIndex[events[event_id].parent];// + int(int(events[events[event_id].parent].count * randomData[events[event_id].index % randomData.length()]) % events[events[event_id].parent].count);
-        
+    const uint pid = events[event_id].parent;
+
+    if (pid < events.length()) {
+        const uint spawnCount = events[pid].count;
+        const uint spawnId = startIndex[pid] + (id % spawnCount);
+
         if (spawnId < particlesCopy.length()) {
             particles[id].position = particlesCopy[spawnId].position;
             velocity += particlesCopy[spawnId].velocity;
-- 
GitLab