15#include <vsg/core/Mask.h>
16#include <vsg/core/Object.h>
17#include <vsg/core/type_name.h>
18#include <vsg/maths/mat4.h>
38 class MatrixTransform;
42 class VertexIndexDraw;
50 class CulledPagedLODs;
54 class RegionOfInterest;
55 class ViewDependentState;
58 class DirectionalLight;
62 class RecordedCommandBuffers;
63 class Instrumentation;
76 template<
typename...
Args>
82 std::size_t sizeofObject()
const noexcept override {
return sizeof(
RecordTraversal); }
85 Mask traversalMask = MASK_ALL;
86 Mask overrideMask = MASK_OFF;
103 FrameStamp* getFrameStamp() {
return _frameStamp; }
108 void apply(
const Object&
object);
111 void apply(
const Group& group);
112 void apply(
const QuadGroup& quadGroup);
113 void apply(
const LOD& lod);
114 void apply(
const PagedLOD& pagedLOD);
115 void apply(
const TileDatabase& tileDatabase);
116 void apply(
const CullGroup& cullGroup);
117 void apply(
const CullNode& cullNode);
118 void apply(
const DepthSorted& depthSorted);
119 void apply(
const Layer& layer);
120 void apply(
const Switch& sw);
121 void apply(
const RegionOfInterest& roi);
124 void apply(
const VertexDraw& vid);
125 void apply(
const VertexIndexDraw& vid);
126 void apply(
const Geometry& vid);
129 void apply(
const Light& light);
130 void apply(
const AmbientLight& light);
131 void apply(
const DirectionalLight& light);
132 void apply(
const PointLight& light);
133 void apply(
const SpotLight& light);
136 void apply(
const Transform& transform);
137 void apply(
const MatrixTransform& mt);
140 void apply(
const Joint& joint);
143 void apply(
const StateGroup&
object);
146 void apply(
const Commands& commands);
147 void apply(
const Command& command);
150 void apply(
const Bin& bin);
151 void apply(
const View& view);
152 void apply(
const CommandGraph& commandGraph);
154 void addToBin(int32_t binNumber,
double value,
const Node* node);
160 std::vector<std::pair<dmat4, const RegionOfInterest*>> regionsOfInterest;
163 virtual ~RecordTraversal();
165 ref_ptr<FrameStamp> _frameStamp;
166 ref_ptr<State> _state;
169 ref_ptr<DatabasePager> _databasePager;
170 ref_ptr<CulledPagedLODs> _culledPagedLODs;
172 int32_t _minimumBinNumber = 0;
173 std::vector<ref_ptr<Bin>> _bins;
174 ref_ptr<ViewDependentState> _viewDependentState;
CommandBuffer encapsulates VkCommandBuffer.
Definition CommandBuffer.h:27
FrameStamp represents the time and frame count of a specific frame.
Definition FrameStamp.h:22
RecordTraversal traverses a scene graph doing view frustum culling and invoking state/commands to rec...
Definition RecordTraversal.h:69
State * getState()
get the current State object used to track state and projection/modelview matrices for the current su...
Definition RecordTraversal.h:94
uint32_t deviceID() const
get the current DeviceID for the current subgraph being traversed
CommandBuffer * getCommandBuffer()
get the current CommandBuffer for the current subgraph being traversed
ref_ptr< RecordedCommandBuffers > recordedCommandBuffers
Container for CommandBuffers that have been recorded in current frame.
Definition RecordTraversal.h:91
vsg::State is used by vsg::RecordTraversal to manage state stacks, projection and modelview matrices ...
Definition State.h:228
std container adapter for allocating with MEMORY_AFFINITY_NODES
Definition Allocator.h:138