 layout(location = 1) out vec4 position;
 layout(location = 2) out vec4 outputColor2;
 layout(location = 3) out vec4 position2;
+layout(location = 4) out vec4 outputColor3;
+layout(location = 5) out vec4 position3;
+layout(location = 6) out vec4 outputColor4;
+layout(location = 7) out vec4 position4;
 layout(depth_any) out float gl_FragDepth;
 
 uniform vec3 backgroundColor = vec3(1.0, 1.0, 1.0);

  }

  vec4 world = inverseViewMatrix * endPos_eye;
  float endDistance = dot(world, farPlane);
  if (endDistance < 0)
  {
    setPositionAndDepth(viewMatrix * vec4(world.xyz - endDistance * farPlane.xyz, 1.0f));
    outputColor = vec4(0);
  }

  for (--age; age < maxAge; age++)  // all fragments

      nextFragment.eyePos : segmentStartPos_eye;

    vec4 world = inverseViewMatrix * endPos_eye;
    endDistance = dot(world, layerPlane1);
    if (startDistance >= 0 && endDistance < 0)
    {
      vec4 startWorld = inverseViewMatrix * segmentStartPos_eye;
      vec3 dir = world.xyz - startWorld.xyz;
      float alpha = - dot(startWorld, layerPlane1) / dot(dir, layerPlane1.xyz);
      vec4 endPosCut_eye = viewMatrix * (startWorld + alpha * vec4(dir, 0));
      if (activeObjectCount > 0)
      {
