15#include <vsg/core/Array.h>
16#include <vsg/core/Array2D.h>
17#include <vsg/core/Array3D.h>
18#include <vsg/core/Mask.h>
19#include <vsg/core/Value.h>
37 class MatrixTransform;
41 class VertexIndexDraw;
48 class DirectionalLight;
51 class InstrumentationNode;
52 class RegionOfInterest;
63 class AnimationSampler;
66 class TransformSampler;
80 class BindDescriptorSet;
81 class BindDescriptorSets;
82 class BindViewDescriptorSets;
84 class DescriptorBuffer;
85 class DescriptorImage;
87 class BindVertexBuffers;
88 class BindIndexBuffer;
89 class BindComputePipeline;
90 class BindGraphicsPipeline;
91 class BindRayTracingPipeline;
92 class GraphicsPipeline;
93 class ComputePipeline;
94 class RayTracingPipeline;
98 class GraphicsPipelineState;
99 class VertexInputState;
100 class InputAssemblyState;
101 class TessellationState;
103 class RasterizationState;
104 class MultisampleState;
105 class DepthStencilState;
106 class ColorBlendState;
109 class ClearAttachments;
110 class ClearColorImage;
111 class ClearDepthStencilImage;
113 class ResetQueryPool;
116 class WriteTimestamp;
117 class CopyQueryPoolResults;
121 class DrawMeshTasksIndirect;
122 class DrawMeshTasksIndirectCount;
127 class ExposeWindowEvent;
128 class ConfigureWindowEvent;
129 class CloseWindowEvent;
134 class KeyReleaseEvent;
136 class ButtonPressEvent;
137 class ButtonReleaseEvent;
140 class TouchDownEvent;
142 class TouchMoveEvent;
143 class ScrollWheelEvent;
144 class TerminateEvent;
148 class ShaderCompileSettings;
153 class SecondaryCommandGraph;
159 class RelativeViewMatrix;
160 class TrackingViewMatrix;
161 class ProjectionMatrix;
164 class RelativeProjection;
165 class EllipsoidPerspective;
169 class Instrumentation;
178 traversalMask(
rhs.traversalMask),
179 overrideMask(
rhs.overrideMask) {}
181 Mask traversalMask = MASK_ALL;
182 Mask overrideMask = MASK_OFF;
186 virtual void apply(
const Object&);
187 virtual void apply(
const Objects&);
188 virtual void apply(
const External&);
189 virtual void apply(
const Data&);
195 virtual void apply(
const intValue&);
231 virtual void apply(
const intArray&);
316 virtual void apply(
const Node&);
318 virtual void apply(
const Commands&);
319 virtual void apply(
const Group&);
321 virtual void apply(
const LOD&);
322 virtual void apply(
const PagedLOD&);
325 virtual void apply(
const CullNode&);
328 virtual void apply(
const Geometry&);
332 virtual void apply(
const Layer&);
333 virtual void apply(
const Bin&);
334 virtual void apply(
const Switch&);
335 virtual void apply(
const Light&);
344 virtual void apply(
const Text&);
356 virtual void apply(
const Joint&);
362 virtual void apply(
const Image&);
363 virtual void apply(
const Command&);
395 virtual void apply(
const Draw&);
403 virtual void apply(
const EndQuery&);
413 virtual void apply(
const UIEvent&);
420 virtual void apply(
const KeyEvent&);
439 virtual void apply(
const Camera&);
443 virtual void apply(
const View&);
444 virtual void apply(
const Viewer&);
446 virtual void apply(
const LookAt&);
458 bool is_compatible(
const std::type_info& type)
const noexcept override {
return typeid(
ConstVisitor) == type || Object::is_compatible(type); }
467 void Array<T>::accept(ConstVisitor& visitor)
const { visitor.apply(*
this); }
471 void Array2D<T>::accept(ConstVisitor& visitor)
const { visitor.apply(*
this); }
475 void Array3D<T>::accept(ConstVisitor& visitor)
const { visitor.apply(*
this); }
AmbientLight represents an ambient light source.
Definition AmbientLight.h:24
AnimationGroup node provides a list of child nodes and a list of animations to animate them.
Definition AnimationGroup.h:24
Animation class that controls a single animation made up of one more samplers.
Definition Animation.h:44
Base class for animation samplers that sample animation data and set associated scene graph objects.
Definition Animation.h:24
BeginQuery command encapsulates vkCmdBeginQuery call and associated functionality.
Definition BeginQuery.h:22
BindComputePipeline state command encapsulates the vkCmdBindPipeline call for a ComputePipeline.
Definition ComputePipeline.h:65
Definition BindDescriptorSet.h:92
BindDescriptorSets state command encapsulates vkCmdBindDescriptorSets call and associated settings fo...
Definition BindDescriptorSet.h:25
BindGraphicsPipeline state command encapsulates the vkCmdBindPipeline call for a GraphicsPipeline.
Definition GraphicsPipeline.h:109
BindIndexBuffer command encapsulates vkCmdBindIndexBuffer call and associated settings.
Definition BindIndexBuffer.h:28
BindRayTracingPipeline state command encapsulates vkCmdBindPipeline for a RayTracingPipeline.
Definition RayTracingPipeline.h:85
BindVertexBuffers command encapsulates vkCmdBindVertexBuffers call and associated settings.
Definition BindVertexBuffers.h:25
Definition ViewDependentState.h:53
BufferInfo encapsulates the settings that map to VkDescriptorBufferInfo.
Definition BufferInfo.h:27
ClearAttachments command encapsulates vkCmdClearAttachments functionality and associated settings.
Definition ClearAttachments.h:22
ClearColorImage command encapsulates vkCmdClearColorImage functionality and associated settings.
Definition ClearImage.h:23
ClearDepthStencilImage command encapsulates vkCmdClearDepthStencilImage functionality and associated ...
Definition ClearImage.h:38
CloseWindowEvent represents a window close event.
Definition WindowEvent.h:87
ColorBlendState encapsulates VkPipelineColorBlendStateCreateInfo settings passed when setting up Grap...
Definition ColorBlendState.h:22
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
Base class for encapsulating nodes that have Vulkan objects associated with them that will need compi...
Definition Compilable.h:23
ComputePipeline encapsulates compute VkPipeline and the VkComputePipelineCreateInfo settings used to ...
Definition ComputePipeline.h:24
Definition ConstVisitor.h:172
CopyQueryPoolResults commands encapsulates vkCmdCopyQueryPoolResults and associated settings.
Definition CopyQueryPoolResults.h:23
CullNode that enables view frustum culling on a list of children.
Definition CullGroup.h:23
Definition DepthSorted.h:27
DepthStencilState encapsulates VkPipelineDepthStencilStateCreateInfo settings passed when setting up ...
Definition DepthStencilState.h:22
Definition DescriptorBuffer.h:24
Definition Descriptor.h:26
Definition DescriptorImage.h:24
DescriptorSet encapsulates VkDescriptorSet and VkDescriptorSetAllocateInfo settings used to describe ...
Definition DescriptorSet.h:26
DirectionalLight represents a directional light source - used for light sources that are treated as i...
Definition DirectionalLight.h:24
Draw command encapsulates vkCmdDraw call and associated settings.
Definition Draw.h:24
DrawIndexed command encapsulates vkCmdDrawIndexed call and associated settings.
Definition DrawIndexed.h:24
Definition DrawMeshTasks.h:22
DrawMeshTasksIndirectCount command encapsulates vkCmdDrawMeshTasksIndirectCountEXT call and associate...
Definition DrawMeshTasksIndirectCount.h:23
DrawMeshTasksIndirect command encapsulates vkCmdDrawMeshTasksIndirectEXT call and associated paramete...
Definition DrawMeshTasksIndirect.h:23
DynamicState encapsulates VkPipelineDynamicStateCreateInfo settings passed when setting up GraphicsPi...
Definition DynamicState.h:22
Definition ProjectionMatrix.h:157
encapsulation of vkCmdEndQuery
Definition EndQuery.h:22
ExposeWindowEvent represents a window expose event.
Definition WindowEvent.h:41
FocusInEvent represents a window acquiring focus event.
Definition WindowEvent.h:98
FocusOutEvent represents a window losing focus event.
Definition WindowEvent.h:109
Definition ApplicationEvent.h:37
FrameStamp represents the time and frame count of a specific frame.
Definition FrameStamp.h:22
GraphicsPipeline encapsulates graphics VkPipeline and the VkGraphicsPipelineCreateInfo settings used ...
Definition GraphicsPipeline.h:56
Definition GraphicsPipeline.h:29
Group node provides a list of children.
Definition Group.h:24
Image class encapsulates VkImage and VkImageCreateInfo settings used to set it up.
Definition Image.h:25
ImageInfo class provides the VkDescriptorImageInfo settings used when setting up vsg::/vkDescriptorIm...
Definition ImageInfo.h:23
ImageView class encapsulates VkImageView and VkImageViewCreateInfo settings used to set it up.
Definition ImageView.h:25
base class for Instrumentation implentations
Definition Instrumentation.h:51
InstrumentationNode enables instrumentation of a subgraph.
Definition InstrumentationNode.h:24
Animation sampler for acumulating vsg::Joint hierarchies and assigned accumulated transform matrices ...
Definition JointSampler.h:23
KeyEvent is a base class for key events.
Definition KeyEvent.h:286
KeyPressEvent represents a key press event.
Definition KeyEvent.h:309
KeyReleaseEvent represents a key release event.
Definition KeyEvent.h:320
Layer node is used to control which bin to place the subgraph in and what sort value to assign.
Definition Layer.h:23
LookAt is a ViewMatrix that implements the gluLookAt model for specifying the view matrix.
Definition ViewMatrix.h:36
Animation sampler for morphing geometry, implementation not yet completed.
Definition MorphSampler.h:48
MoveEvent represents a pointer move event.
Definition PointerEvent.h:89
MultisampleState encapsulates VkPipelineMultisampleStateCreateInfo settings passed when setting up Gr...
Definition MultisampleState.h:22
Simple container class that has a list of vsg::Object as children.
Definition Objects.h:25
Orthographic is a ProjectionMatrix that implements the glOrtho model for setting the projection matri...
Definition ProjectionMatrix.h:82
Perspective is a ProjectionMatrix that implements the gluPerspective model for setting the projection...
Definition ProjectionMatrix.h:41
PointLight represents a local point light source where all light radiants event from the light positi...
Definition PointLight.h:24
PointerEvent is a base class for mouse pointer events.
Definition PointerEvent.h:34
ProjectionMatrix is a base class for specifying the Camera projection matrix and its inverse.
Definition ProjectionMatrix.h:24
Definition QuadGroup.h:29
QueryPool encapsulates the VkQueryPool and the VkQueryPoolCreateInfo settings used to set it up.
Definition QueryPool.h:23
RasterizationState encapsulates VkPipelineRasterizationStateCreateInfo settings passed when setting u...
Definition RasterizationState.h:22
Definition RayTracingPipeline.h:26
RegionOfInterest node is inform applications/algorithms extents that should take account of.
Definition RegionOfInterest.h:23
RelativeProjection is a ProjectionMatrix that decorates another ProjectionMatrix and pre-multiplies i...
Definition ProjectionMatrix.h:129
RelativeViewMatrix is a ViewMatrix that decorates another ViewMatrix and pre-multiplies its transform...
Definition ViewMatrix.h:98
Definition RenderGraph.h:28
RenderPass encapsulation of VkRenderPass.
Definition RenderPass.h:86
ResetQueryPool command encapsulates vkCmdResetQueryPool functionality.
Definition ResetQueryPool.h:23
ResourceHints provides settings that help preallocation of Vulkan resources and memory.
Definition ResourceHints.h:23
SecondaryCommandGraph is a specialization of CommandGraph that provides Vulkan secondary command buff...
Definition SecondaryCommandGraph.h:25
Definition ShaderModule.h:28
ShaderStage encapsulates VkPipelineShaderStageCreateInfo settings passed when setting up GraphicsPipe...
Definition ShaderStage.h:24
SpotLight represents a local point light source whose intensity varies as a spot light.
Definition SpotLight.h:24
Definition StateCommand.h:24
Definition StateGroup.h:32
Definition StateSwitch.h:22
Switch node for toggling on/off recording of children.
Definition Switch.h:25
TerminateEvent represents an application termination event.
Definition ApplicationEvent.h:24
TessellationState encapsulates VkPipelineTessellationStateCreateInfo settings passed when setting up ...
Definition TessellationState.h:22
Definition TextGroup.h:27
Definition TextLayout.h:35
Definition TextTechnique.h:25
TouchDownEvent represents a touch down event.
Definition TouchEvent.h:45
TouchEvent is a base class for touch events.
Definition TouchEvent.h:24
TouchMoveEvent represents a touch move event.
Definition TouchEvent.h:67
TouchUpEvent represents a touch up event.
Definition TouchEvent.h:56
Definition ViewMatrix.h:121
UIEvent is a base class for user interface events.
Definition UIEvent.h:28
Definition VertexDraw.h:25
Definition VertexIndexDraw.h:25
View is a Group class that pairs a Camera that defines the view with a subgraph that defines the scen...
Definition View.h:36
ViewMatrix is a base class for specifying the Camera view matrix and its inverse.
Definition ViewMatrix.h:23
ViewportState encapsulates VkPipelineViewportStateCreateInfo settings passed when setting up Graphics...
Definition ViewportState.h:24
WindowEvent is the base class for events related to a window.
Definition WindowEvent.h:24
WriteTimestamp command encapsulates vkCmdWriteTimestamp call and settings passed to it.
Definition WriteTimestamp.h:22
std container adapter for allocating with MEMORY_AFFINITY_NODES
Definition Allocator.h:138