From: Peter Schaefer Date: Fri, 20 May 2016 15:47:38 +0000 (+0200) Subject: optional culling (light calculation without) X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=0b5a7acc30e1ac0c4aa1646f621a44977a68f8b8;p=cgue_weave.git optional culling (light calculation without) --- diff --git a/Weave/Scene/Scene.cpp b/Weave/Scene/Scene.cpp index 87051d8..0f1ea4f 100644 --- a/Weave/Scene/Scene.cpp +++ b/Weave/Scene/Scene.cpp @@ -240,7 +240,7 @@ void Scene::draw() const glClear(GL_DEPTH_BUFFER_BIT); Shader::getShader(SH_SHADOWDIR)->useShader(); dirLight->useLight(); - drawSceneObjects(); + drawSceneObjects(DRAW_Model,false); camera.useCamera(); render->useBuffer(); Shader::getShader(SH_LIGHTING)->useShader(); @@ -332,13 +332,13 @@ void Scene::draw() const } -void Scene::drawSceneObjects(drawTarget _target) const +void Scene::drawSceneObjects(drawTarget _target, bool _culling) const { /*TODO: Z-Order (Back2Front)*/ for (auto i = SceneObjects.cbegin(); i != SceneObjects.cend(); ++i) { - if (Graphix::testEffect(EF_FRUSTUM_CULLING)) + if (Graphix::testEffect(EF_FRUSTUM_CULLING)&&_culling) { auto result = camera.frustum_sphere((*i)->getPosition() + (*i)->gModel()->getBox().center(), (*i)->gModel()->getBox().radius()); if (result == camera.FC_OUTSIDE) diff --git a/Weave/Scene/Scene.h b/Weave/Scene/Scene.h index a3072b7..2726bcc 100644 --- a/Weave/Scene/Scene.h +++ b/Weave/Scene/Scene.h @@ -53,7 +53,7 @@ protected: std::list SceneObjects; std::set ShaderSet; - void drawSceneObjects(drawTarget target = DRAW_Model) const; + void drawSceneObjects(drawTarget target = DRAW_Model, bool culling = true) const; float currenttime;