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&);
192 virtual void apply(
const stringValue&);
193 virtual void apply(
const wstringValue&);
194 virtual void apply(
const boolValue&);
195 virtual void apply(
const intValue&);
196 virtual void apply(
const uintValue&);
197 virtual void apply(
const floatValue&);
198 virtual void apply(
const doubleValue&);
199 virtual void apply(
const vec2Value&);
200 virtual void apply(
const vec3Value&);
201 virtual void apply(
const vec4Value&);
202 virtual void apply(
const dvec2Value&);
203 virtual void apply(
const dvec3Value&);
204 virtual void apply(
const dvec4Value&);
205 virtual void apply(
const bvec2Value&);
206 virtual void apply(
const bvec3Value&);
207 virtual void apply(
const bvec4Value&);
208 virtual void apply(
const ubvec2Value&);
209 virtual void apply(
const ubvec3Value&);
210 virtual void apply(
const ubvec4Value&);
211 virtual void apply(
const svec2Value&);
212 virtual void apply(
const svec3Value&);
213 virtual void apply(
const svec4Value&);
214 virtual void apply(
const usvec2Value&);
215 virtual void apply(
const usvec3Value&);
216 virtual void apply(
const usvec4Value&);
217 virtual void apply(
const ivec2Value&);
218 virtual void apply(
const ivec3Value&);
219 virtual void apply(
const ivec4Value&);
220 virtual void apply(
const uivec2Value&);
221 virtual void apply(
const uivec3Value&);
222 virtual void apply(
const uivec4Value&);
223 virtual void apply(
const mat4Value&);
224 virtual void apply(
const dmat4Value&);
227 virtual void apply(
const byteArray&);
228 virtual void apply(
const ubyteArray&);
229 virtual void apply(
const shortArray&);
230 virtual void apply(
const ushortArray&);
231 virtual void apply(
const intArray&);
232 virtual void apply(
const uintArray&);
233 virtual void apply(
const floatArray&);
234 virtual void apply(
const doubleArray&);
235 virtual void apply(
const vec2Array&);
236 virtual void apply(
const vec3Array&);
237 virtual void apply(
const vec4Array&);
238 virtual void apply(
const dvec2Array&);
239 virtual void apply(
const dvec3Array&);
240 virtual void apply(
const dvec4Array&);
241 virtual void apply(
const bvec2Array&);
242 virtual void apply(
const bvec3Array&);
243 virtual void apply(
const bvec4Array&);
244 virtual void apply(
const svec2Array&);
245 virtual void apply(
const svec3Array&);
246 virtual void apply(
const svec4Array&);
247 virtual void apply(
const ivec2Array&);
248 virtual void apply(
const ivec3Array&);
249 virtual void apply(
const ivec4Array&);
250 virtual void apply(
const ubvec2Array&);
251 virtual void apply(
const ubvec3Array&);
252 virtual void apply(
const ubvec4Array&);
253 virtual void apply(
const usvec2Array&);
254 virtual void apply(
const usvec3Array&);
255 virtual void apply(
const usvec4Array&);
256 virtual void apply(
const uivec2Array&);
257 virtual void apply(
const uivec3Array&);
258 virtual void apply(
const uivec4Array&);
259 virtual void apply(
const mat4Array&);
260 virtual void apply(
const dmat4Array&);
261 virtual void apply(
const block64Array&);
262 virtual void apply(
const block128Array&);
265 virtual void apply(
const ubyteArray2D&);
266 virtual void apply(
const ushortArray2D&);
267 virtual void apply(
const uintArray2D&);
268 virtual void apply(
const floatArray2D&);
269 virtual void apply(
const doubleArray2D&);
270 virtual void apply(
const vec2Array2D&);
271 virtual void apply(
const vec3Array2D&);
272 virtual void apply(
const vec4Array2D&);
273 virtual void apply(
const dvec2Array2D&);
274 virtual void apply(
const dvec3Array2D&);
275 virtual void apply(
const dvec4Array2D&);
276 virtual void apply(
const bvec2Array2D&);
277 virtual void apply(
const bvec3Array2D&);
278 virtual void apply(
const bvec4Array2D&);
279 virtual void apply(
const svec2Array2D&);
280 virtual void apply(
const svec3Array2D&);
281 virtual void apply(
const svec4Array2D&);
282 virtual void apply(
const ivec2Array2D&);
283 virtual void apply(
const ivec3Array2D&);
284 virtual void apply(
const ivec4Array2D&);
285 virtual void apply(
const ubvec2Array2D&);
286 virtual void apply(
const ubvec3Array2D&);
287 virtual void apply(
const ubvec4Array2D&);
288 virtual void apply(
const usvec2Array2D&);
289 virtual void apply(
const usvec3Array2D&);
290 virtual void apply(
const usvec4Array2D&);
291 virtual void apply(
const uivec2Array2D&);
292 virtual void apply(
const uivec3Array2D&);
293 virtual void apply(
const uivec4Array2D&);
294 virtual void apply(
const block64Array2D&);
295 virtual void apply(
const block128Array2D&);
298 virtual void apply(
const ubyteArray3D&);
299 virtual void apply(
const ushortArray3D&);
300 virtual void apply(
const uintArray3D&);
301 virtual void apply(
const floatArray3D&);
302 virtual void apply(
const doubleArray3D&);
303 virtual void apply(
const vec2Array3D&);
304 virtual void apply(
const vec3Array3D&);
305 virtual void apply(
const vec4Array3D&);
306 virtual void apply(
const dvec2Array3D&);
307 virtual void apply(
const dvec3Array3D&);
308 virtual void apply(
const dvec4Array3D&);
309 virtual void apply(
const ubvec2Array3D&);
310 virtual void apply(
const ubvec3Array3D&);
311 virtual void apply(
const ubvec4Array3D&);
312 virtual void apply(
const block64Array3D&);
313 virtual void apply(
const block128Array3D&);
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