vsg 1.1.13
VulkanSceneGraph library
Loading...
Searching...
No Matches
Visitor.h
1#pragma once
2
3/* <editor-fold desc="MIT License">
4
5Copyright(c) 2018 Robert Osfield
6
7Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
8
9The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
10
11THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12
13</editor-fold> */
14
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>
20
21namespace vsg
22{
23 // forward declare core Objects
24 class Objects;
25 class External;
26 class MipmapLayout;
27
28 // forward declare node classes
29 class Node;
30 class Commands;
31 class Group;
32 class QuadGroup;
33 class LOD;
34 class PagedLOD;
35 class StateGroup;
36 class CullGroup;
37 class CullNode;
38 class Transform;
39 class MatrixTransform;
40 class CoordinateFrame;
41 class Geometry;
42 class VertexDraw;
43 class VertexIndexDraw;
44 class DepthSorted;
45 class Layer;
46 class Bin;
47 class Switch;
48 class Light;
49 class AmbientLight;
50 class DirectionalLight;
51 class PointLight;
52 class SpotLight;
54 class RegionOfInterest;
55 class InstanceNode;
56 class InstanceDraw;
58
59 // forward declare text classes
60 class Text;
61 class TextGroup;
62 class TextTechnique;
63 class TextLayout;
64
65 // forward declare animation classes
66 class Animation;
67 class AnimationGroup;
68 class AnimationSampler;
69 class TransformSampler;
70 class CameraSampler;
71 class MorphSampler;
72 class JointSampler;
73 class Joint;
74
75 // forward declare vulkan classes
76 class BufferInfo;
77 class ImageInfo;
78 class ImageView;
79 class Image;
80 class Compilable;
81 class Command;
82 class StateCommand;
83 class StateSwitch;
84 class CommandBuffer;
85 class RenderPass;
89 class Descriptor;
90 class DescriptorBuffer;
91 class DescriptorImage;
92 class DescriptorSet;
94 class BindIndexBuffer;
98 class GraphicsPipeline;
99 class ComputePipeline;
100 class RayTracingPipeline;
101 class Draw;
102 class DrawIndexed;
103 class ShaderStage;
105 class VertexInputState;
106 class InputAssemblyState;
107 class TessellationState;
108 class ViewportState;
109 class RasterizationState;
110 class MultisampleState;
111 class DepthStencilState;
112 class ColorBlendState;
113 class DynamicState;
114 class ResourceHints;
115 class ClearAttachments;
116 class ClearColorImage;
118 class QueryPool;
119 class ResetQueryPool;
120 class BeginQuery;
121 class EndQuery;
122 class WriteTimestamp;
124
125 // forward declare rtx classes
126 class DrawMeshTasks;
129
130 // forward declare ui events classes
131 class UIEvent;
132 class WindowEvent;
133 class ExposeWindowEvent;
135 class CloseWindowEvent;
136 class FocusInEvent;
137 class FocusOutEvent;
138 class KeyEvent;
139 class KeyPressEvent;
140 class KeyReleaseEvent;
141 class PointerEvent;
142 class ButtonPressEvent;
143 class ButtonReleaseEvent;
144 class MoveEvent;
145 class TouchEvent;
146 class TouchDownEvent;
147 class TouchUpEvent;
148 class TouchMoveEvent;
149 class ScrollWheelEvent;
150 class TerminateEvent;
151 class FrameEvent;
152
153 // forward declare util classes
155
156 // forward declare viewer classes
157 class Camera;
158 class CommandGraph;
160 class RenderGraph;
161 class View;
162 class Viewer;
163 class ViewMatrix;
164 class LookAt;
165 class LookDirection;
166 class RelativeViewMatrix;
167 class TrackingViewMatrix;
168 class ProjectionMatrix;
169 class Perspective;
170 class Orthographic;
171 class RelativeProjection;
173
174 // forward declare general classes
175 class FrameStamp;
176 class Instrumentation;
177
178 class VSG_DECLSPEC Visitor : public Object
179 {
180 public:
181 Visitor();
182
183 Visitor(const Visitor& rhs, const CopyOp& copyop = {}) :
184 Object(rhs, copyop),
185 traversalMask(rhs.traversalMask),
186 overrideMask(rhs.overrideMask) {}
187
188 Mask traversalMask = MASK_ALL;
189 Mask overrideMask = MASK_OFF;
190
191 virtual Instrumentation* getInstrumentation() { return nullptr; }
192
193 virtual void apply(Object&);
194 virtual void apply(Objects&);
195 virtual void apply(External&);
196 virtual void apply(Data&);
197 virtual void apply(MipmapLayout&);
198
199 // Values
200 virtual void apply(stringValue&);
201 virtual void apply(wstringValue&);
202 virtual void apply(boolValue&);
203 virtual void apply(intValue&);
204 virtual void apply(uintValue&);
205 virtual void apply(floatValue&);
206 virtual void apply(doubleValue&);
207 virtual void apply(vec2Value&);
208 virtual void apply(vec3Value&);
209 virtual void apply(vec4Value&);
210 virtual void apply(dvec2Value&);
211 virtual void apply(dvec3Value&);
212 virtual void apply(dvec4Value&);
213 virtual void apply(bvec2Value&);
214 virtual void apply(bvec3Value&);
215 virtual void apply(bvec4Value&);
216 virtual void apply(ubvec2Value&);
217 virtual void apply(ubvec3Value&);
218 virtual void apply(ubvec4Value&);
219 virtual void apply(svec2Value&);
220 virtual void apply(svec3Value&);
221 virtual void apply(svec4Value&);
222 virtual void apply(usvec2Value&);
223 virtual void apply(usvec3Value&);
224 virtual void apply(usvec4Value&);
225 virtual void apply(ivec2Value&);
226 virtual void apply(ivec3Value&);
227 virtual void apply(ivec4Value&);
228 virtual void apply(uivec2Value&);
229 virtual void apply(uivec3Value&);
230 virtual void apply(uivec4Value&);
231 virtual void apply(mat2Value&);
232 virtual void apply(dmat2Value&);
233 virtual void apply(mat3Value&);
234 virtual void apply(dmat3Value&);
235 virtual void apply(mat4Value&);
236 virtual void apply(dmat4Value&);
237
238 // Arrays
239 virtual void apply(stringArray&);
240 virtual void apply(byteArray&);
241 virtual void apply(ubyteArray&);
242 virtual void apply(shortArray&);
243 virtual void apply(ushortArray&);
244 virtual void apply(intArray&);
245 virtual void apply(uintArray&);
246 virtual void apply(floatArray&);
247 virtual void apply(doubleArray&);
248 virtual void apply(vec2Array&);
249 virtual void apply(vec3Array&);
250 virtual void apply(vec4Array&);
251 virtual void apply(dvec2Array&);
252 virtual void apply(dvec3Array&);
253 virtual void apply(dvec4Array&);
254 virtual void apply(bvec2Array&);
255 virtual void apply(bvec3Array&);
256 virtual void apply(bvec4Array&);
257 virtual void apply(svec2Array&);
258 virtual void apply(svec3Array&);
259 virtual void apply(svec4Array&);
260 virtual void apply(ivec2Array&);
261 virtual void apply(ivec3Array&);
262 virtual void apply(ivec4Array&);
263 virtual void apply(ubvec2Array&);
264 virtual void apply(ubvec3Array&);
265 virtual void apply(ubvec4Array&);
266 virtual void apply(usvec2Array&);
267 virtual void apply(usvec3Array&);
268 virtual void apply(usvec4Array&);
269 virtual void apply(uivec2Array&);
270 virtual void apply(uivec3Array&);
271 virtual void apply(uivec4Array&);
272 virtual void apply(mat4Array&);
273 virtual void apply(dmat4Array&);
274 virtual void apply(block64Array&);
275 virtual void apply(block128Array&);
276
277 // Array2Ds
278 virtual void apply(byteArray2D&);
279 virtual void apply(ubyteArray2D&);
280 virtual void apply(shortArray2D&);
281 virtual void apply(ushortArray2D&);
282 virtual void apply(intArray2D&);
283 virtual void apply(uintArray2D&);
284 virtual void apply(floatArray2D&);
285 virtual void apply(doubleArray2D&);
286 virtual void apply(vec2Array2D&);
287 virtual void apply(vec3Array2D&);
288 virtual void apply(vec4Array2D&);
289 virtual void apply(dvec2Array2D&);
290 virtual void apply(dvec3Array2D&);
291 virtual void apply(dvec4Array2D&);
292 virtual void apply(bvec2Array2D&);
293 virtual void apply(bvec3Array2D&);
294 virtual void apply(bvec4Array2D&);
295 virtual void apply(svec2Array2D&);
296 virtual void apply(svec3Array2D&);
297 virtual void apply(svec4Array2D&);
298 virtual void apply(ivec2Array2D&);
299 virtual void apply(ivec3Array2D&);
300 virtual void apply(ivec4Array2D&);
301 virtual void apply(ubvec2Array2D&);
302 virtual void apply(ubvec3Array2D&);
303 virtual void apply(ubvec4Array2D&);
304 virtual void apply(usvec2Array2D&);
305 virtual void apply(usvec3Array2D&);
306 virtual void apply(usvec4Array2D&);
307 virtual void apply(uivec2Array2D&);
308 virtual void apply(uivec3Array2D&);
309 virtual void apply(uivec4Array2D&);
310 virtual void apply(block64Array2D&);
311 virtual void apply(block128Array2D&);
312
313 // Array3Ds
314 virtual void apply(byteArray3D&);
315 virtual void apply(ubyteArray3D&);
316 virtual void apply(shortArray3D&);
317 virtual void apply(ushortArray3D&);
318 virtual void apply(intArray3D&);
319 virtual void apply(uintArray3D&);
320 virtual void apply(floatArray3D&);
321 virtual void apply(doubleArray3D&);
322 virtual void apply(vec2Array3D&);
323 virtual void apply(vec3Array3D&);
324 virtual void apply(vec4Array3D&);
325 virtual void apply(dvec2Array3D&);
326 virtual void apply(dvec3Array3D&);
327 virtual void apply(dvec4Array3D&);
328 virtual void apply(ubvec2Array3D&);
329 virtual void apply(ubvec3Array3D&);
330 virtual void apply(ubvec4Array3D&);
331 virtual void apply(block64Array3D&);
332 virtual void apply(block128Array3D&);
333
334 // Nodes
335 virtual void apply(Node&);
336 virtual void apply(Compilable&);
337 virtual void apply(Commands&);
338 virtual void apply(Group&);
339 virtual void apply(QuadGroup&);
340 virtual void apply(LOD&);
341 virtual void apply(PagedLOD&);
342 virtual void apply(StateGroup&);
343 virtual void apply(CullGroup&);
344 virtual void apply(CullNode&);
345 virtual void apply(Transform&);
346 virtual void apply(MatrixTransform&);
347 virtual void apply(CoordinateFrame&);
348 virtual void apply(Geometry&);
349 virtual void apply(VertexDraw&);
350 virtual void apply(VertexIndexDraw&);
351 virtual void apply(DepthSorted&);
352 virtual void apply(Layer&);
353 virtual void apply(Bin&);
354 virtual void apply(Switch&);
355 virtual void apply(Light&);
356 virtual void apply(AmbientLight&);
357 virtual void apply(DirectionalLight&);
358 virtual void apply(PointLight&);
359 virtual void apply(SpotLight&);
360 virtual void apply(InstrumentationNode&);
361 virtual void apply(RegionOfInterest&);
362 virtual void apply(InstanceNode&);
363 virtual void apply(InstanceDraw&);
364 virtual void apply(InstanceDrawIndexed&);
365
366 // text
367 virtual void apply(Text&);
368 virtual void apply(TextGroup&);
369 virtual void apply(TextTechnique&);
370 virtual void apply(TextLayout&);
371
372 // animation
373 virtual void apply(Animation&);
374 virtual void apply(AnimationGroup&);
375 virtual void apply(AnimationSampler&);
376 virtual void apply(JointSampler&);
377 virtual void apply(MorphSampler&);
378 virtual void apply(TransformSampler&);
379 virtual void apply(CameraSampler&);
380 virtual void apply(Joint&);
381
382 // Vulkan nodes
383 virtual void apply(BufferInfo&);
384 virtual void apply(ImageInfo&);
385 virtual void apply(ImageView&);
386 virtual void apply(Image&);
387 virtual void apply(Command&);
388 virtual void apply(StateCommand&);
389 virtual void apply(StateSwitch&);
390 virtual void apply(CommandBuffer&);
391 virtual void apply(RenderPass&);
392 virtual void apply(BindDescriptorSet&);
393 virtual void apply(BindDescriptorSets&);
394 virtual void apply(BindViewDescriptorSets&);
395 virtual void apply(Descriptor&);
396 virtual void apply(DescriptorBuffer&);
397 virtual void apply(DescriptorImage&);
398 virtual void apply(DescriptorSet&);
399 virtual void apply(BindVertexBuffers&);
400 virtual void apply(BindIndexBuffer&);
401 virtual void apply(BindComputePipeline&);
402 virtual void apply(BindGraphicsPipeline&);
403 virtual void apply(BindRayTracingPipeline&);
404 virtual void apply(GraphicsPipeline&);
405 virtual void apply(ComputePipeline&);
406 virtual void apply(RayTracingPipeline&);
407 virtual void apply(GraphicsPipelineState&);
408 virtual void apply(ShaderStage&);
409 virtual void apply(VertexInputState&);
410 virtual void apply(InputAssemblyState&);
411 virtual void apply(TessellationState&);
412 virtual void apply(ViewportState&);
413 virtual void apply(RasterizationState&);
414 virtual void apply(MultisampleState&);
415 virtual void apply(DepthStencilState&);
416 virtual void apply(ColorBlendState&);
417 virtual void apply(DynamicState&);
418 virtual void apply(ResourceHints&);
419 virtual void apply(Draw&);
420 virtual void apply(DrawIndexed&);
421 virtual void apply(ClearAttachments&);
422 virtual void apply(ClearColorImage&);
423 virtual void apply(ClearDepthStencilImage&);
424 virtual void apply(QueryPool&);
425 virtual void apply(ResetQueryPool&);
426 virtual void apply(BeginQuery&);
427 virtual void apply(EndQuery&);
428 virtual void apply(WriteTimestamp&);
429 virtual void apply(CopyQueryPoolResults&);
430
431 // mesh shading classes
432 virtual void apply(DrawMeshTasks&);
433 virtual void apply(DrawMeshTasksIndirect&);
434 virtual void apply(DrawMeshTasksIndirectCount&);
435
436 // ui events
437 virtual void apply(UIEvent&);
438 virtual void apply(WindowEvent&);
439 virtual void apply(ExposeWindowEvent&);
440 virtual void apply(ConfigureWindowEvent&);
441 virtual void apply(CloseWindowEvent&);
442 virtual void apply(FocusInEvent&);
443 virtual void apply(FocusOutEvent&);
444 virtual void apply(KeyEvent&);
445 virtual void apply(KeyPressEvent&);
446 virtual void apply(KeyReleaseEvent&);
447 virtual void apply(PointerEvent&);
448 virtual void apply(ButtonPressEvent&);
449 virtual void apply(ButtonReleaseEvent&);
450 virtual void apply(MoveEvent&);
451 virtual void apply(TouchEvent&);
452 virtual void apply(TouchDownEvent&);
453 virtual void apply(TouchUpEvent&);
454 virtual void apply(TouchMoveEvent&);
455 virtual void apply(ScrollWheelEvent&);
456 virtual void apply(TerminateEvent&);
457 virtual void apply(FrameEvent&);
458
459 // utils
460 virtual void apply(ShaderCompileSettings&);
461
462 // app
463 virtual void apply(Camera&);
464 virtual void apply(CommandGraph&);
465 virtual void apply(SecondaryCommandGraph&);
466 virtual void apply(RenderGraph&);
467 virtual void apply(View&);
468 virtual void apply(Viewer&);
469 virtual void apply(ViewMatrix&);
470 virtual void apply(LookAt&);
471 virtual void apply(LookDirection&);
472 virtual void apply(RelativeViewMatrix&);
473 virtual void apply(TrackingViewMatrix&);
474 virtual void apply(ProjectionMatrix&);
475 virtual void apply(Perspective&);
476 virtual void apply(Orthographic&);
477 virtual void apply(RelativeProjection&);
478 virtual void apply(EllipsoidPerspective&);
479
480 // general classes
481 virtual void apply(FrameStamp&);
482
483 bool is_compatible(const std::type_info& type) const noexcept override { return typeid(Visitor) == type || Object::is_compatible(type); }
484 };
485
486 // provide Value<>::accept() implementation
487 template<typename T>
488 void Value<T>::accept(Visitor& visitor) { visitor.apply(*this); }
489
490 // provide Array<>::accept() implementation
491 template<typename T>
492 void Array<T>::accept(Visitor& visitor) { visitor.apply(*this); }
493
494 // provide Array2D<>::accept() implementation
495 template<typename T>
496 void Array2D<T>::accept(Visitor& visitor) { visitor.apply(*this); }
497
498 // provide Array3D<>::accept() implementation
499 template<typename T>
500 void Array3D<T>::accept(Visitor& visitor) { visitor.apply(*this); }
501
502} // namespace vsg
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
Definition Bin.h:24
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:111
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:54
BufferInfo encapsulates the settings that map to VkDescriptorBufferInfo.
Definition BufferInfo.h:27
ButtonPressEvent represents a button press event.
Definition PointerEvent.h:55
ButtonReleaseEvent represents a button release event.
Definition PointerEvent.h:72
Definition Camera.h:27
Animation sampler for sampling position, rotation and scale keyframes for setting camera view and pro...
Definition CameraSampler.h:111
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: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
Definition Commands.h:29
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
ConfigureWindowEvent represents a window configure event - such as changes to the size of the window.
Definition WindowEvent.h:64
CoordinateFrame provides support for astronomically large coordinates.
Definition CoordinateFrame.h:22
Definition Object.h:42
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 CullNode.h:25
Definition Data.h:115
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
Definition DynamicState.h:23
Definition ProjectionMatrix.h:190
encapsulation of vkCmdEndQuery
Definition EndQuery.h:22
ExposeWindowEvent represents a window expose event.
Definition WindowEvent.h:41
Definition External.h:31
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
Definition Geometry.h:30
GraphicsPipeline encapsulates graphics VkPipeline and the VkGraphicsPipelineCreateInfo settings used ...
Definition GraphicsPipeline.h:57
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
InputAssemblyState encapsulates VkPipelineInputAssemblyStateCreateInfo settings passed when setting u...
Definition InputAssemblyState.h:22
Definition InstanceDraw.h:25
Definition InstanceDrawIndexed.h:25
Definition InstanceNode.h:34
base class for Instrumentation implementations
Definition Instrumentation.h:51
InstrumentationNode enables instrumentation of a subgraph.
Definition InstrumentationNode.h:24
Definition Joint.h:22
Animation sampler for accumulating 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
Definition LOD.h:33
Layer node is used to control which bin to place the subgraph in and what sort value to assign.
Definition Layer.h:23
Definition Light.h:26
LookAt is a ViewMatrix that implements the gluLookAt model for specifying the view matrix.
Definition ViewMatrix.h:54
LookDirection is a ViewMatrix that uses a position and rotation to set the view matrix.
Definition ViewMatrix.h:108
Definition MatrixTransform.h:24
Definition MipmapLayout.h:24
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
Definition Node.h:24
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:102
Definition PagedLOD.h:36
Perspective is a ProjectionMatrix that implements the gluPerspective model for setting the projection...
Definition ProjectionMatrix.h:50
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:162
RelativeViewMatrix is a ViewMatrix that decorates another ViewMatrix and pre-multiplies its transform...
Definition ViewMatrix.h:136
Definition RenderGraph.h:29
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:35
ScrollWheelEvent represents a scroll wheel event.
Definition ScrollWheelEvent.h:22
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 Text.h:30
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:156
Transform node is a pure virtual base class for positioning/scaling/rotating subgraphs.
Definition Transform.h:22
Animation sampler for sampling position, rotation and scale keyframes for setting transforms/joints.
Definition TransformSampler.h:70
UIEvent is a base class for user interface events.
Definition UIEvent.h:28
Definition VertexDraw.h:25
Definition VertexIndexDraw.h:25
VertexInputState encapsulates VkPipelineVertexInputStateCreateInfo settings passed when setting up Gr...
Definition VertexInputState.h:22
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
Definition Viewer.h:33
ViewportState encapsulates VkPipelineViewportStateCreateInfo settings passed when setting up Graphics...
Definition ViewportState.h:24
Definition Visitor.h:179
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