New update: i tried changing the data i send to the GPU to vec4, giving w the value 1.0f, and i send it like this:
// Position
glBindBuffer(GL_ARRAY_BUFFER, this->positionBuffer);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, this->positionBuffer);
glBufferData(GL_ARRAY_BUFFER, this->nParticles * sizeof(glm::vec4), &this->positions[0], GL_DYNAMIC_DRAW);```
but the result is even weirder. Now It's creating groups of particles like in the picture.