33#ifndef DVD_RENDER_PASS_CULLER_H_
34#define DVD_RENDER_PASS_CULLER_H_
43class SceneRenderState;
89template<
typename T = VisibleNode,
size_t N = Config::MAX_VISIBLE_NODES>
98 std::memcpy(
_nodes.data() +
_index, other._nodes.data(), other._index *
sizeof(T));
109 const size_t lastPos =
_index.fetch_sub(1);
110 assert(idx <= lastPos);
116 [[nodiscard]]
size_t size() const noexcept {
return _index.load(); }
119 [[nodiscard]]
const T&
node(
const size_t idx)
const noexcept
121 assert(idx <
_index.load());
125 [[nodiscard]] T&
node(
const size_t idx)
noexcept
127 assert(idx <
_index.load());
Handle console commands that start with a forward slash.
@ CULL_AGAINST_CLIPPING_PLANES
eastl::vector< Type > vector
constexpr T toBit(const T X)
Converts an arbitrary positive integer value to a bitwise value used for masks.
vector< VisibleNode > FeedBackContainer
vec4< U16 > _lodThresholds
FrustumClipPlanes _clippingPlanes
vec3< F32 > _cameraEyePos
static void FrustumCull(const NodeCullParams ¶ms, U16 cullFlags, const SceneGraph &sceneGraph, const SceneState &sceneState, PlatformContext &context, VisibleNodeList<> &nodesOut)
static void PostCullNodes(const NodeCullParams ¶ms, U16 cullFlags, U32 filterMask, VisibleNodeList<> &nodesInOut)
static void ToVisibleNodes(const Camera *camera, const vector< SceneGraphNode * > &nodes, VisibleNodeList<> &nodesOut)
static U32 FilterMask(const PlatformContext &context) noexcept
static void FrustumCullNode(SceneGraphNode *currentNode, const NodeCullParams ¶ms, U16 cullFlags, U8 recursionLevel, VisibleNodeList<> &nodes)
This method performs the visibility check on the given node and all of its children and adds them to ...
void remove(const size_t idx)
void append(const VisibleNodeList &other) noexcept
std::array< T, N > Container
bufferPtr data() const noexcept
void append(const T &node) noexcept
VisibleNodeList & operator=(const VisibleNodeList &other)
size_t size() const noexcept
T & node(const size_t idx) noexcept
const T & node(const size_t idx) const noexcept
std::atomic_size_t _index