mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-04 12:15:16 +02:00
Add shouldRender functor to render args
This commit is contained in:
parent
f8042e299e
commit
9d4ded1fb3
2 changed files with 12 additions and 8 deletions
|
@ -113,13 +113,10 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont
|
|||
|
||||
// TODO: some entity types (like lights) might want to be rendered even
|
||||
// when they are outside of the view frustum...
|
||||
|
||||
float distance = args->_viewFrustum->distanceToCamera(bound.calcCenter());
|
||||
|
||||
bool outOfView = args->_viewFrustum->boxInFrustum(bound) == ViewFrustum::OUTSIDE;
|
||||
if (!outOfView) {
|
||||
bool bigEnoughToRender = true; //_viewState->shouldRenderMesh(bound.getLargestDimension(), distance);
|
||||
|
||||
bool bigEnoughToRender = (args->_shouldRender) ? args->_shouldRender(args, bound) : true;
|
||||
|
||||
if (bigEnoughToRender) {
|
||||
outItems.push_back(id); // One more Item to render
|
||||
args->_itemsRendered++;
|
||||
|
@ -129,8 +126,7 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont
|
|||
} else {
|
||||
args->_itemsOutOfView++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct ItemBound {
|
||||
|
|
|
@ -12,8 +12,11 @@
|
|||
#ifndef hifi_RenderArgs_h
|
||||
#define hifi_RenderArgs_h
|
||||
|
||||
class ViewFrustum;
|
||||
#include <functional>
|
||||
|
||||
class AABox;
|
||||
class OctreeRenderer;
|
||||
class ViewFrustum;
|
||||
namespace gpu {
|
||||
class Batch;
|
||||
class Context;
|
||||
|
@ -21,6 +24,8 @@ class Context;
|
|||
|
||||
class RenderArgs {
|
||||
public:
|
||||
typedef std::function<bool(const RenderArgs* args, const AABox& bounds)> ShoudRenderFunctor;
|
||||
|
||||
enum RenderMode { DEFAULT_RENDER_MODE, SHADOW_RENDER_MODE, DIFFUSE_RENDER_MODE, NORMAL_RENDER_MODE, MIRROR_RENDER_MODE };
|
||||
|
||||
enum RenderSide { MONO, STEREO_LEFT, STEREO_RIGHT };
|
||||
|
@ -40,6 +45,7 @@ public:
|
|||
RenderSide renderSide = MONO,
|
||||
DebugFlags debugFlags = RENDER_DEBUG_NONE,
|
||||
gpu::Batch* batch = nullptr,
|
||||
ShoudRenderFunctor shouldRender = nullptr,
|
||||
|
||||
int elementsTouched = 0,
|
||||
int itemsRendered = 0,
|
||||
|
@ -66,6 +72,7 @@ public:
|
|||
_renderSide(renderSide),
|
||||
_debugFlags(debugFlags),
|
||||
_batch(batch),
|
||||
_shouldRender(shouldRender),
|
||||
|
||||
_elementsTouched(elementsTouched),
|
||||
_itemsRendered(itemsRendered),
|
||||
|
@ -94,6 +101,7 @@ public:
|
|||
RenderSide _renderSide;
|
||||
DebugFlags _debugFlags;
|
||||
gpu::Batch* _batch;
|
||||
ShoudRenderFunctor _shouldRender;
|
||||
|
||||
int _elementsTouched;
|
||||
int _itemsRendered;
|
||||
|
|
Loading…
Reference in a new issue