|
Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
|
| ▼Nforay | |
| ►Nas | |
| CBlas | A Blas (Bottom Level Acceleration Structure) is the raytracing equivalent concept of a mesh |
| CBlasInstance | A reference to a BLAS maintained by the TLAS |
| CGeometryMeta | Meta information for a Geometry (gltf equivalent = Primitive). For use in raytracing shaders |
| CGeometryMetaBuffer | Device local buffer maintaining GeometryMeta structs for all primitives/geometries for multiple BLAS |
| CTlas | Describes a top level accerlation structure. A tlas usually holds multiple Blas. A blas is an object/mesh instance together with its transformation in 3d space |
| ►Nbase | |
| CAppFrameTiming | Controls an apps render scheduling timing |
| CDefaultAppBase | Intended as base class for demo applications. Compared to MinimalAppBase it offers a complete simple vulkan setup |
| CFrameRenderInfo | Context used for render processes. This object is rebuilt for every frame. / |
| CInFlightFrame | Wraps synchronization primitives and command buffers for an inflight frame |
| CMinimalAppBase | Application base providing bare minimum of functionality (app lifetime, event handling, vulkan instance management) |
| ►CRenderLoop | Manages a single threaded, automatically balancing application lifetime |
| CFrameTime | |
| CFrameTimeAnalysis | Analysis |
| CRenderInfo | |
| ►CVulkanDevice | Wraps selection and creation of a vulkan logical device |
| CDefaultFeatures | |
| CVulkanInstance | Wraps creation and lifetime of a vulkan instance. Includes default debug callback logging setup |
| CVulkanWindowSwapchain | Combines Window, Surface and Swapchain into one managing object |
| ►Nbench | |
| CBenchmarkBase | Base class for all benchmark types |
| CBenchmarkLog | Log of a single benchmark run. All timestamps given must be relative to the same base time |
| CBenchmarkTimestamp | Timestamp combining a label / id with a timestamp in milliseconds |
| CDeviceBenchmark | A device benchmark based on Vulkans DeviceQuery Api. Timestamps are recorded in milliseconds. Timestamp names must be set in advance |
| CHostBenchmark | A host (CPU time) benchmark based on std::chrono::high_resolution_clock. Timestamps are recorded in milliseconds |
| ►Ncore | |
| CCombinedImageSampler | Wraps an image + sampler combination |
| CCommandBuffer | VkCommandBuffer wrapper |
| CContext | Non owning context object |
| ►CDescriptorSet | Helps with the creation of a VkDescriptorSetLayout and VkDescriptorSet |
| CDescriptorInfo | |
| CDeviceSyncCommandBuffer | Extension of the commandbuffer wrapper for device and/or host synchronized command buffer execution |
| CHostSyncCommandBuffer | Extension of the commandbuffer wrapper for temporary host synchronized command buffer execution |
| ►CImageLayoutCache | Tracks ImageLayouts over the course of a frame rendering process |
| CBarrier | See VkImageMemoryBarrier |
| CBarrier2 | See VkImageMemoryBarrier2 |
| ►CManagedBuffer | Wraps allocation and lifetime functionality of a VkBuffer |
| CCreateInfo | Combines all structs used for initialization |
| ►CManagedImage | Wraps allocation and lifetime functionality of VkImage |
| CCreateInfo | Combines all structs used for initialization |
| CQuickTransition | Helper struct translated to a VkImageMemoryBarrier2 struct for one-time layout transitions |
| CManagedResource | Base class enforcing common interface for all classes wrapping a device resource |
| ►CSamplerCollection | Provides sampler objects based on VkSamplerCreateInfo specifications |
| CSamplerInstance | |
| CSamplerReference | Represents a reference to a VkSampler object managed by a SamplerCollection |
| CSemaphoreReference | Wraps a wait or signal semaphore action |
| CShaderCompilerConfig | Shader compile Options struct (moved out of class to fix clang & gcc compiler bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88165) |
| ►CShaderManager | Shader manager maintains a structure of shader compilations |
| CIncludeFile | Represents a file included (nested) in a shader compilation, but not compiled by itself |
| CShaderCompilation | Represents a unique shader compilation (input source path + config => Spirv file) |
| CShaderModule | Wraps shader code driver handle (VkShaderModule). See ShaderManager for compiling shaders dynamically |
| CSwapchainImageInfo | Collects information for a swapchain image |
| CVulkanResource | ManagedResource variant which automates GetTypeName() overloading by returning a stringified version of VkObjectType |
| ►Ngltf | |
| ►CModelConverter | Type which reads glTF files and merges a scene of the file into the scene graph |
| CIndexBindings | Variables which determine how to map gltf-model indices to scene indices/pointers |
| CModelConverterOptions | Options for converting glTF models to the integrated scene graph (foray::scene::Scene) |
| ►Nosi | |
| CEvent | Base class for operating system events |
| CEventInput | Base class for events originating from input devices |
| CEventInputAnalogue | Event type for an analogue input |
| CEventInputBinary | Event type describing a binary input event |
| CEventInputDeviceAvailability | Event type describing input devices being added or removed |
| CEventInputDirectional | Event type describing a directional input event |
| CEventInputMouseMoved | Event type describing a mouse cursor movement event |
| CEventWindowCloseRequested | Event type fired when the windows closure is requested (by OS or user through OS) |
| CEventWindowFocusChanged | Event type fired when a window gains or loses focus |
| CEventWindowResized | Event type fired when a window is resized |
| CInputAnalogue | Represents a single input with a state represented by a signed 16bit integer |
| CInputBase | Base class for a single input channel of an input device |
| CInputBinary | Represents a single input with a state represented by a boolean value |
| ►CInputDevice | Wraps a generic input device (mouse, keyboard, joystick, controller ...) in a hardware agnostic way |
| CAxisJoystick | |
| CButtonJoystick | |
| CButtonKeyboard | |
| CButtonMouse | |
| CDirectionalMouseScroll | |
| CInputDirectional | Represents a stateless directional input |
| COsManager | Class of which a single instance needs to be present for interaction with the operating system via SDL |
| CUtf8Path | Utf8 encoded path wrapper |
| CWindow | Window class. Provides access to common properties of operating system level windows |
| ►Nrtpipe | |
| ►CGeneralShaderBindingTable | Shader binding table for storing raygen, miss and callable shader groups |
| CShaderGroup | General shader group |
| ►CHitShaderBindingTable | Shader binding table implementation for storing hit groups (Consist of optional closesthit, anyhit and intersect shaders) |
| CShaderGroup | |
| CRtPipeline | Helper class wrapping 4 SBTs (Raygen, Miss, Callable, Hitgroup) and a raytracing pipeline |
| ►CRtShaderCollection | Helper class to manage unique Rt ShaderModules |
| CEntry | |
| CRtShaderEnumConversions | Enum conversion methods |
| ►CShaderBindingTableBase | Shader Binding Table base class, providing functions to manage custom generic shader group data and SBT building, aswell as buffer management |
| CVectorRange | |
| ►Nscene | |
| ►Ngcomp | |
| CAnimationManager | Handles storage and playback of animations |
| CCameraManager | Manages the Camera matrix buffer and maintains a list of cameras in the scene |
| CDrawDirector | Manages a collection of mesh instances, current and previous model matrices |
| CDrawOp | Represents instanced draw operation of a single mesh |
| CGeometryStore | Stores all geometry in a single set of index and vertex buffers |
| CLightManager | Maintains a list of PunctualLight components |
| CMaterialManager | Manages a device local storage buffer providing material information for rendering |
| ►CTextureManager | Manages textures and samplers |
| CTexture | |
| CTlasManager | Manages a Tlas for a scene |
| ►Nncomp | |
| CCamera | Defines a camera with projection matrix |
| ►CFreeCameraController | A simple camera controller for free flight |
| CInputStates | |
| CMeshInstance | Defines an instance of a mesh |
| CPunctualLight | Defines a simple punctual light (directional or point) |
| CTransform | Defines a nodes transform relative to its parent (or world origin, if no parent is set) |
| CAnimation | Represents an animation, defined by atleast one channel affecting one node property each |
| CAnimationChannel | A channel is the animation of a single node property |
| CAnimationKeyframe | A set of values at a time point |
| CAnimationSampler | A collection of keyframes |
| ►CCallbackDispatcher | Type maintaining callback lists for event distribution |
| CCallbackVector | |
| CCallbackVector< TCallback, true > | |
| CCameraUboBlock | Uniform buffer object layout for camera matrices |
| ►CComponent | Base class for all types manageable by registry |
| CDrawCallback | Base class for implementing the draw callback |
| COnEventCallback | Base class for implementing the onevent callback |
| COnResizedCallback | |
| CUpdateCallback | Base class for implementing the update callback |
| CDrawPushConstant | Push Constant helper type |
| CEmissiveTriangle | A reference to an emissive triangle |
| CGlobalComponent | |
| CMaterial | Represents the default gltf pbr material type, capable of representing opaque surfaces with a metallic/roughness model including emission |
| CMesh | Type describing a single mesh object, described by multiple Primitive objects |
| CNode | A scene node. Extends the registry with hierarchical information |
| CNodeComponent | |
| CPlaybackConfig | |
| CPrimitive | "An object binding indexed or non-indexed geometry with a material." according to the glTF spec. It's a subset of a mesh and has its own set of vertices/indices as well as its own material. All mesh data is contained in one big buffer, so "First" is used to get the correct offset into the buffer |
| CRegistry | Manages a type identified list of components |
| CScene | Provides registries and methods as the anchor of a component based scene |
| CSceneDrawInfo | Temporary type passed to components when drawing the scene |
| CSceneUpdateInfo | Temporary type passed to components when updating the scene |
| CSimpleLight | Describes a simplified light source |
| CVertex | Vertex |
| CVertexComponentBinding | Binding of component to shader input location |
| CVertexInputStateBuilder | Helper for building a VkPipelineVertexInputStateCreateInfo struct |
| ►Nstages | |
| CBlitStage | Stage which performs an image blit (more capable copy from one image to another) |
| ►CComparerStage | Displays two images of any type next to each other, and get a "pipette" readout at the mouse location |
| CInputInfo | Argument struct for setting inputs |
| CPipetteValue | |
| CPushConstant | |
| CSubStage | Value between 0...1 defining the split value |
| CComputeStageBase | Base class for compute shaders |
| CDefaultRaytracingStageBase | Extended version of MinimalRaytracingStageBase limited to a single output image, descriptorset but providing built in support for scene (Camera, Tlas, Geometry, Materials), EnvironmentMap and Noise Texture |
| CDenoiserConfig | Config struct for initialization of denoiser stages |
| CDenoiserStage | Base class for denoiser implementations |
| CExternalDenoiserStage | Base class for externally computing denoiser implementations (e.g. OptiX Denoiser) |
| ►CGBufferStage | Utilizes rasterization to render a GBuffer output |
| CPerImageInfo | |
| CImageToSwapchainStage | The only purpose of this class is to copy the image onto the swapchain |
| CImguiStage | The ImguiStage renders the imgui menu on top of an existing image or the swapchain. This image is passed via the backgroundImage |
| CMinimalRaytracingStageBase | Minimalist setup for a Raytracing Stage |
| CRasterizedRenderStage | Base class for rasterized render stages (no built-in functionality) |
| CRenderStage | Render stage base class giving a common interface for rendering processes |
| ►Nutil | |
| ►Nimpl | |
| CExrLoaderCache | |
| CStbLoaderCache | |
| CBufferSection | |
| CComponentTraits | Describes the traits of a component type |
| CDualBuffer | Helper class for organizing CPU -> GPU data synchronisation. In flight data is stored on host side, and copied to GPU right before being used |
| CEnvironmentMap | Experimental type loading an environment map in spherical representation, also generates mip maps |
| CExternalSemaphore | Timeline Semaphore exposing handles for synchronization with other Apis (e.g. Cuda for OptiX denoising) |
| CHistoryImage | Helper object managing a copy of an existing image for use as history information (reprojection etc.) |
| CImageFormatTraits | Describes the traits of a VkFormat value |
| CImageFormatTraitsBase | Trait base class assembled from component trait type and component count |
| ►CImageLoader | General purpose image loader |
| CImageInfo | |
| CManagedUbo | Template class for managing a UBO. For Host -> Device synchronization this utilises a DualBuffer |
| CManagedUboBase | |
| CManagedVectorBuffer | Class maintaining a resizable array of templated classes in a managed buffer |
| CNoiseSource | Uses std::mt19937_64 to generate a r32u image of decent quality random noise |
| CPipelineBuilder | Class to quickly build a default pipeline. Ownership is transfered to caller. TODO: THIS CLASS SHOULD BE REWORKED => all properties of the pipeline should be configurable, for example by exposing the underlying structs directly, instead of individual access methods |
| CPipelineLayout | Class that holds memory ownership of a vulkan pipeline layout |
| CShaderStageCreateInfos | Helper to create a simple set of shader stage create infos, that all use main as shader start point. Usage: Create object, add stages with modules, use local variable as in place vector |
| CException | An extension of std::exception providing support for formatted error messages. Exceptions should always be catched via "catch (const std::exception& ex)", and thrown by value (Just use builtin static throw functions) |
| CNoMoveDefaults | Simple types for supressing automatic definition of duplicating move constructors & operator |
| CPolymorphic | Simple type for forcing a type to be polymorphic |
| ▼Nstd | |
| Chash< foray::osi::Utf8Path > |