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>
19#include <vsg/vk/Slots.h>
70 VSG_type_name(vsg::RecordTraversal);
73 class VSG_DECLSPEC RecordTraversal :
public Object
76 explicit RecordTraversal(
const Slots& in_maxSlots = {},
const std::set<Bin*>& in_bins = {});
78 RecordTraversal(
const RecordTraversal&) =
delete;
79 RecordTraversal& operator=(
const RecordTraversal& rhs) =
delete;
81 template<
typename... Args>
87 std::size_t sizeofObject()
const noexcept override {
return sizeof(RecordTraversal); }
88 const char* className()
const noexcept override {
return type_name<RecordTraversal>(); }
90 Mask traversalMask = MASK_ALL;
91 Mask overrideMask = MASK_OFF;
111 FrameStamp* getFrameStamp() {
return frameStamp; }
116 void apply(
const Object&
object);
119 void apply(
const Group& group);
120 void apply(
const QuadGroup& quadGroup);
121 void apply(
const LOD& lod);
122 void apply(
const PagedLOD& pagedLOD);
123 void apply(
const TileDatabase& tileDatabase);
124 void apply(
const CullGroup& cullGroup);
125 void apply(
const CullNode& cullNode);
126 void apply(
const DepthSorted& depthSorted);
127 void apply(
const Layer& layer);
128 void apply(
const Switch& sw);
129 void apply(
const RegionOfInterest& roi);
132 void apply(
const VertexDraw& vid);
133 void apply(
const VertexIndexDraw& vid);
134 void apply(
const Geometry& vid);
137 void apply(
const Light& light);
138 void apply(
const AmbientLight& light);
139 void apply(
const DirectionalLight& light);
140 void apply(
const PointLight& light);
141 void apply(
const SpotLight& light);
144 void apply(
const Transform& transform);
145 void apply(
const MatrixTransform& mt);
146 void apply(
const CoordinateFrame& cf);
149 void apply(
const Joint& joint);
152 void apply(
const InstanceNode& instanceNode);
153 void apply(
const InstanceDraw& instanceDraw);
154 void apply(
const InstanceDrawIndexed& instanceDrawIndexed);
157 void apply(
const StateGroup&
object);
160 void apply(
const Commands& commands);
161 void apply(
const Command& command);
164 void apply(
const Bin& bin);
165 void apply(
const View& view);
166 void apply(
const CommandGraph& commandGraph);
168 void addToBin(int32_t binNumber,
double value,
const Node* node);
174 std::vector<std::pair<dmat4, const RegionOfInterest*>> regionsOfInterest;
176 ref_ptr<FrameStamp> frameStamp;
177 ref_ptr<State> state;
180 ref_ptr<DatabasePager> databasePager;
181 ref_ptr<CulledPagedLODs> culledPagedLODs;
183 int32_t minimumBinNumber = 0;
184 std::vector<ref_ptr<Bin>> bins;
185 ref_ptr<ViewDependentState> viewDependentState;
188 virtual ~RecordTraversal();
AmbientLight represents an ambient light source.
Definition AmbientLight.h:24
CommandBuffer encapsulates VkCommandBuffer.
Definition CommandBuffer.h:30
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
Definition InstanceDraw.h:25
Definition InstanceDrawIndexed.h:25
Definition InstanceNode.h:34
base class for Instrumentation implementations
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:102
uint32_t deviceID() const
get the current DeviceID for the current subgraph being traversed
float intensityMinimum
Light::intensity minimum value for a light to be passed to GPU.
Definition RecordTraversal.h:94
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:99
Thread safe container class.
Definition CommandBuffer.h:86
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:250
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
max slot values used for general state and view state related State::stateStacks
Definition Slots.h:22