Skip to content
Snippets Groups Projects
Unverified Commit edefd4a5 authored by TheJackiMonster's avatar TheJackiMonster
Browse files

Indentation and adding random spawnId picking

parent 9a919af6
No related branches found
No related tags found
1 merge request!106Created initial firework project
#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);
}
...@@ -83,29 +83,26 @@ void main() { ...@@ -83,29 +83,26 @@ void main() {
index = atomicAdd(events[i].index, 1); index = atomicAdd(events[i].index, 1);
if(events[i].continuous < 1){ if (events[i].continuous < 1) {
if (events[i].count > index) { if (events[i].count > index) {
event_id = i; event_id = i;
break; break;
}else{ } else {
atomicAdd(events[i].index, -1); atomicAdd(events[i].index, -1);
} }
}else{ } else {
if(events[i].continuous > index){ if (events[i].continuous > index){
event_id = i; event_id = i;
break; break;
}else{ } else {
if(events[i].contCount > 0){ if (events[i].contCount > 0) {
atomicAdd(events[i].contCount, -1); atomicAdd(events[i].contCount, -1);
events[i].index = 0; events[i].index = 0;
} }
atomicAdd(events[i].index, -1); atomicAdd(events[i].index, -1);
} }
} }
} }
if (event_id >= events.length()) { if (event_id >= events.length()) {
...@@ -131,9 +128,12 @@ void main() { ...@@ -131,9 +128,12 @@ void main() {
vec3 velocity = vec3(0.0f); vec3 velocity = vec3(0.0f);
float size = events[event_id].size; float size = events[event_id].size;
if (events[event_id].parent < events.length()) { const uint pid = events[event_id].parent;
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);
if (pid < events.length()) {
const uint spawnCount = events[pid].count;
const uint spawnId = startIndex[pid] + (id % spawnCount);
if (spawnId < particlesCopy.length()) { if (spawnId < particlesCopy.length()) {
particles[id].position = particlesCopy[spawnId].position; particles[id].position = particlesCopy[spawnId].position;
velocity += particlesCopy[spawnId].velocity; velocity += particlesCopy[spawnId].velocity;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment