- uniform int u_particle_offset;
- uniform int u_particle_count = 100;
- uniform int u_emitter_offset;
- uniform int u_emitter_count; // Anzahl Emitter die bearbeitet werden sollen
- varying out vec3 vo_min;
- varying out vec3 vo_max;
- varying out int vo_emitterId;
- void main() {
- vec3 bbMin[u_emitter_count];
- vec3 bbMax[u_emitter_count];
- for (int e=0; e<u_emitter_count; ++e) {
- bbMin[e] = vec3(0,0,0);
- bbMax[e] = vec3(0,0,0);
- }
- for (int i=u_particle_offset; i<u_particle_count; ++i) {
- Particle p = GetParticle(i);
- int e = p.emitterId - u_emitter_offset;
- if (e >= 0 && e < u_emitter_count) {
- bbMin[e] = min(bbMin[e], p.position - p.radius);
- bbMax[e] = max(bbMax[e], p.position + p.radius);
- }
- }
- for (int e=0; e<u_emitter_count; ++e) {
- vo_min = bbMin[e];
- vo_max = bMax[e];
- vo_emitterId = u_emitter_offset + e;
- Emit_Vertex();
- }
- }