+ if(const Geometry::BoundingSphere<float, 3> *bsphere = i->renderable->get_bounding_sphere())
+ i->depth = dot(*matrix*bsphere->get_center()-camera_pos, look_dir)+bsphere->get_radius()*radius_factor;
+ else
+ i->depth = dot(*matrix*Vector3()-camera_pos, look_dir);
+ i->depth *= sign;
+ }
+ else
+ i->depth = 0;
+ }
+
+ for(SortedArray::iterator i=sorted_cache.begin(), j=i; i!=sorted_cache.end(); ++i)
+ if(i->in_frustum)
+ {
+ if(i!=j)
+ swap(*i, *j);
+
+ if(j!=sorted_cache.begin() && *j<*(j-1))