X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fscene.cpp;h=9d301fbfb0801ab3d1ea95b5104d88f81b94d902;hb=a25a5932b80e7d1c11be6b09c5e00857b9238f60;hp=6c3d2910706db98d6f2ecd7ed67b3dd771c372e8;hpb=b6fd887102ab8e4109fa2edd40b9e51f80f88410;p=libs%2Fgl.git diff --git a/source/scene.cpp b/source/scene.cpp index 6c3d2910..9d301fbf 100644 --- a/source/scene.cpp +++ b/source/scene.cpp @@ -15,12 +15,6 @@ Scene::~Scene() delete *i; } -void Scene::render(const Tag &tag) const -{ - Renderer renderer(0); - render(renderer, tag); -} - bool Scene::setup_frustum(const Renderer &renderer) const { const Camera *camera = renderer.get_camera(); @@ -66,13 +60,13 @@ bool Scene::frustum_cull(const Renderable &renderable) const return false; Vector4 center = culling_matrix*(*matrix*compose(bsphere->get_center(), 1.0f)); - Vector4 x_axis = *matrix*Vector4(1.0f, 0.0f, 0.0f, 0.0f); - float radius_sq = bsphere->get_radius()*inner_product(x_axis, x_axis); + Vector3 x_axis = (matrix->column(0)*bsphere->get_radius()).slice<3>(0); + float radius_sq = inner_product(x_axis, x_axis); for(unsigned i=0; i<6; ++i) { float distance = inner_product(center, frustum_edges[i]); - if(distance*distance>radius_sq) + if(distance>0 && distance*distance>radius_sq) return true; }