X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fzsortedscene.cpp;h=46b14dbb6a672dbfd044b1ffa7463695e9212244;hp=5cbd202133902d1581c7c1be3e2ea118c38ae7da;hb=HEAD;hpb=50a0c7fd661fe6bfa3f929ad66e47cfab4a0fb87 diff --git a/source/zsortedscene.cpp b/source/zsortedscene.cpp deleted file mode 100644 index 5cbd2021..00000000 --- a/source/zsortedscene.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include "camera.h" -#include "renderer.h" -#include "zsortedscene.h" - -using namespace std; - -namespace Msp { -namespace GL { - -ZSortedScene::ZSortedScene(): - order(BACK_TO_FRONT), - reference(FURTHEST) -{ } - -void ZSortedScene::set_order(SortOrder o) -{ - order = o; -} - -void ZSortedScene::set_reference(DepthReference r) -{ - reference = r; -} - -void ZSortedScene::render(Renderer &renderer, const Tag &tag) const -{ - const Camera *camera = renderer.get_camera(); - if(!camera) - return SimpleScene::render(renderer, tag); - - const Matrix &view_matrix = camera->get_matrix(); - - std::vector sorted_renderables; - sorted_renderables.reserve(renderables.size()); - - float radius_factor = 1.0f-reference; - float sign = order*2.0f-1.0f; - - setup_cullers(renderer); - for(RenderableSet::const_iterator i=renderables.begin(); i!=renderables.end(); ++i) - if(!cull(renderer, **i)) - { - float z = 0; - if(const Matrix *model_matrix = (*i)->get_matrix()) - { - if(const Geometry::BoundingSphere *bsphere = (*i)->get_bounding_sphere()) - z = (view_matrix**model_matrix*compose(bsphere->get_center(), 1.0f)).z+bsphere->get_radius()*radius_factor; - else - z = (view_matrix**model_matrix*Vector4(0.0f, 0.0f, 0.0f, 1.0f)).z; - } - sorted_renderables.push_back(DepthRenderable(z*sign, *i)); - } - - sort(sorted_renderables.begin(), sorted_renderables.end()); - - for(vector::const_iterator i=sorted_renderables.begin(); i!=sorted_renderables.end(); ++i) - i->renderable->render(renderer, tag); -} - - -ZSortedScene::DepthRenderable::DepthRenderable(float d, const Renderable *r): - depth(d), - renderable(r) -{ } - -} // namespace GL -} // namespace Msp