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