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>
66 VSG_type_name(vsg::RecordTraversal);
69 class VSG_DECLSPEC RecordTraversal :
public Object
72 explicit RecordTraversal(uint32_t in_maxSlot = 2,
const std::set<Bin*>& in_bins = {});
74 RecordTraversal(
const RecordTraversal&) =
delete;
75 RecordTraversal& operator=(
const RecordTraversal& rhs) =
delete;
77 template<
typename... Args>
83 std::size_t sizeofObject()
const noexcept override {
return sizeof(RecordTraversal); }
84 const char* className()
const noexcept override {
return type_name<RecordTraversal>(); }
86 Mask traversalMask = MASK_ALL;
87 Mask overrideMask = MASK_OFF;
104 FrameStamp* getFrameStamp() {
return _frameStamp; }
109 void apply(
const Object&
object);
112 void apply(
const Group& group);
113 void apply(
const QuadGroup& quadGroup);
114 void apply(
const LOD& lod);
115 void apply(
const PagedLOD& pagedLOD);
116 void apply(
const TileDatabase& tileDatabase);
117 void apply(
const CullGroup& cullGroup);
118 void apply(
const CullNode& cullNode);
119 void apply(
const DepthSorted& depthSorted);
120 void apply(
const Layer& layer);
121 void apply(
const Switch& sw);
122 void apply(
const RegionOfInterest& roi);
125 void apply(
const VertexDraw& vid);
126 void apply(
const VertexIndexDraw& vid);
127 void apply(
const Geometry& vid);
130 void apply(
const Light& light);
131 void apply(
const AmbientLight& light);
132 void apply(
const DirectionalLight& light);
133 void apply(
const PointLight& light);
134 void apply(
const SpotLight& light);
137 void apply(
const Transform& transform);
138 void apply(
const MatrixTransform& mt);
139 void apply(
const CoordinateFrame& cf);
142 void apply(
const Joint& joint);
145 void apply(
const StateGroup&
object);
148 void apply(
const Commands& commands);
149 void apply(
const Command& command);
152 void apply(
const Bin& bin);
153 void apply(
const View& view);
154 void apply(
const CommandGraph& commandGraph);
156 void addToBin(int32_t binNumber,
double value,
const Node* node);
162 std::vector<std::pair<dmat4, const RegionOfInterest*>> regionsOfInterest;
165 virtual ~RecordTraversal();
167 ref_ptr<FrameStamp> _frameStamp;
168 ref_ptr<State> _state;
171 ref_ptr<DatabasePager> _databasePager;
172 ref_ptr<CulledPagedLODs> _culledPagedLODs;
174 int32_t _minimumBinNumber = 0;
175 std::vector<ref_ptr<Bin>> _bins;
176 ref_ptr<ViewDependentState> _viewDependentState;
AmbientLight represents an ambient light source.
Definition AmbientLight.h:24
CommandBuffer encapsulates VkCommandBuffer.
Definition CommandBuffer.h:27
CommandGraph is a group node that sits at the top of the scene graph and manages the recording of its...
Definition CommandGraph.h:28
Command base class for encapsulating vkCmd* calls and associated settings.
Definition Command.h:23
CoordinateFrame provides support for astronomically large coordinates.
Definition CoordinateFrame.h:22
CullNode that enables view frustum culling on a list of children.
Definition CullGroup.h:23
Class used by the DatabasePager to keep track of PagedLOD nodes.
Definition DatabasePager.h:33
Definition DepthSorted.h:27
DirectionalLight represents a directional light source - used for light sources that are treated as i...
Definition DirectionalLight.h:24
FrameStamp represents the time and frame count of a specific frame.
Definition FrameStamp.h:22
Group node provides a list of children.
Definition Group.h:24
base class for Instrumentation implentations
Definition Instrumentation.h:51
Layer node is used to control which bin to place the subgraph in and what sort value to assign.
Definition Layer.h:23
PointLight represents a local point light source where all light radiants event from the light positi...
Definition PointLight.h:24
Definition QuadGroup.h:29
State * getState()
get the current State object used to track state and projection/modelview matrices for the current su...
Definition RecordTraversal.h:95
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:92
Thread safe container class.
Definition CommandBuffer.h:87
RegionOfInterest node is inform applications/algorithms extents that should take account of.
Definition RegionOfInterest.h:23
SpotLight represents a local point light source whose intensity varies as a spot light.
Definition SpotLight.h:24
Definition StateGroup.h:32
vsg::State is used by vsg::RecordTraversal to manage state stacks, projection and modelview matrices ...
Definition State.h:228
Switch node for toggling on/off recording of children.
Definition Switch.h:25
Definition TileDatabase.h:80
Definition VertexDraw.h:25
Definition VertexIndexDraw.h:25
Definition ViewDependentState.h:106
View is a Group class that pairs a Camera that defines the view with a subgraph that defines the scen...
Definition View.h:36