Vulkan-Hpp
RayTracing.cpp File Reference
#include <vulkan/vulkan.hpp>
#include <GLFW/glfw3.h>
#include <numeric>
#include <random>
#include <sstream>
#include <vulkan/vulkan_to_string.hpp>
#include "../utils/shaders.hpp"
#include "../utils/utils.hpp"
#include "CameraManipulator.hpp"
#include "SPIRV/GlslangToSpv.h"
#include <glm/glm.hpp>
#include <glm/gtc/matrix_inverse.hpp>
#include <glm/gtc/matrix_transform.hpp>

Go to the source code of this file.

Classes

struct  GeometryInstanceData
 
struct  AccelerationStructureData
 
struct  PerFrameData
 
struct  UniformBufferObject
 
struct  Material
 
struct  Vertex
 
struct  AppInfo
 

Macros

#define GLM_FORCE_DEPTH_ZERO_TO_ONE
 
#define GLM_FORCE_RADIANS
 
#define GLM_ENABLE_EXPERIMENTAL
 
#define IMGUI_VK_QUEUED_FRAMES   2
 

Functions

AccelerationStructureData createAccelerationStructureData (vk::PhysicalDevice const &physicalDevice, vk::Device const &device, vk::CommandBuffer const &commandBuffer, std::vector< std::pair< vk::AccelerationStructureNV, glm::mat4x4 >> const &instances, std::vector< vk::GeometryNV > const &geometries)
 
template<typename T >
random (T minValue=std::numeric_limits< T >::min(), T maxValue=std::numeric_limits< T >::max())
 
glm::vec3 randomVec3 (float minValue, float maxValue)
 
uint32_t roundUp (uint32_t value, uint32_t alignment)
 
int main (int, char **)
 

Variables

const size_t MaterialStride = ( ( sizeof( Material ) + 15 ) / 16 ) * 16
 
const size_t VertexStride = ( ( sizeof( Vertex ) + 15 ) / 16 ) * 16
 

Macro Definition Documentation

◆ GLM_ENABLE_EXPERIMENTAL

#define GLM_ENABLE_EXPERIMENTAL

Definition at line 43 of file RayTracing.cpp.

◆ GLM_FORCE_DEPTH_ZERO_TO_ONE

#define GLM_FORCE_DEPTH_ZERO_TO_ONE

Definition at line 41 of file RayTracing.cpp.

◆ GLM_FORCE_RADIANS

#define GLM_FORCE_RADIANS

Definition at line 42 of file RayTracing.cpp.

◆ IMGUI_VK_QUEUED_FRAMES

#define IMGUI_VK_QUEUED_FRAMES   2

Definition at line 530 of file RayTracing.cpp.

Function Documentation

◆ createAccelerationStructureData()

AccelerationStructureData createAccelerationStructureData ( vk::PhysicalDevice const &  physicalDevice,
vk::Device const &  device,
vk::CommandBuffer const &  commandBuffer,
std::vector< std::pair< vk::AccelerationStructureNV, glm::mat4x4 >> const &  instances,
std::vector< vk::GeometryNV > const &  geometries 
)

Definition at line 101 of file RayTracing.cpp.

◆ main()

int main ( int  ,
char **   
)

Definition at line 648 of file RayTracing.cpp.

◆ random()

template<typename T >
T random ( minValue = std::numeric_limits<T>::min(),
maxValue = std::numeric_limits<T>::max() 
)

Definition at line 628 of file RayTracing.cpp.

◆ randomVec3()

glm::vec3 randomVec3 ( float  minValue,
float  maxValue 
)

Definition at line 636 of file RayTracing.cpp.

◆ roundUp()

uint32_t roundUp ( uint32_t  value,
uint32_t  alignment 
)

Definition at line 643 of file RayTracing.cpp.

Variable Documentation

◆ MaterialStride

const size_t MaterialStride = ( ( sizeof( Material ) + 15 ) / 16 ) * 16

Definition at line 218 of file RayTracing.cpp.

◆ VertexStride

const size_t VertexStride = ( ( sizeof( Vertex ) + 15 ) / 16 ) * 16

Definition at line 230 of file RayTracing.cpp.