Polyphase Game Engine
Loading...
Searching...
No Matches
RayTracer.h
Go to the documentation of this file.
1#pragma once
2
3#include "VulkanUtils.h"
4#include "MultiBuffer.h"
5#include "DescriptorSet.h"
6#include "Pipeline.h"
7#include "PipelineConfigs.h"
8#include "VramAllocator.h"
9#include "DestroyQueue.h"
10#include "Buffer.h"
11#include "Image.h"
12#include "SmartPointer.h"
13
15{
16public:
17
22
23 void PathTraceWorld();
24
25 void BeginLightBake();
26 void UpdateLightBake();
27 void EndLightBake();
30
31 Image* GetPathTraceImage();
33
35
36protected:
37
39 std::vector<RayTraceTriangle>& triangleData,
40 std::vector<RayTraceMesh>& meshData,
41 std::vector<RayTraceLight>& lightData,
42 int32_t* outBakeMeshIndex = nullptr);
44
47 void FinalizeLightBake();
48
51
52protected:
53
54 // Ray Tracing Resources
55 DescriptorSet* mPathTraceDescriptorSet = nullptr;
56 Buffer* mRayTraceTriangleBuffer = nullptr;
57 Buffer* mRayTraceMeshBuffer = nullptr;
58 Buffer* mRayTraceLightBuffer = nullptr;
59 UniformBuffer* mRayTraceUniformBuffer = nullptr;
60 Buffer* mLightBakeVertexBuffer = nullptr;
61 DescriptorSet* mBakeDiffuseDescriptorSet = nullptr;
62 Buffer* mBakeAverageBuffer = nullptr;
63 Buffer* mBakeDiffuseTriangleBuffer = nullptr;
64 Image* mPathTraceImage = nullptr;
65 std::vector<Image*> mTextureImages;
66
67 // Path Tracing and Light Baking state
68 uint32_t mAccumulatedFrames = 0;
69 glm::vec3 mPathTracePrevCameraPos = { 0.0f, 0.0f, 0.0f };
70 glm::vec3 mPathTracePrevCameraRot = { 0.0f, 0.0f, 0.0f };
72 std::vector<NodePtr> mLightBakeNodes;
73 std::vector<LightBakeResult> mLightBakeResults;
74 int32_t mBakingCompIndex = -1;
76 int64_t mBakedFrame = -1;
77 uint32_t mTotalDiffusePasses = 1;
78};
79
LightBakePhase
Definition VulkanTypes.h:383
Definition RayTracer.h:15
bool IsLightBakeInProgress()
Definition RayTracer.cpp:616
uint32_t mTotalDiffusePasses
Definition RayTracer.h:77
void FinalizeLightBake()
Definition RayTracer.cpp:994
LightBakePhase mLightBakePhase
Definition RayTracer.h:71
Image * GetPathTraceImage()
Definition RayTracer.cpp:664
void ReadbackLightBakeResults()
Definition RayTracer.cpp:922
Buffer * mRayTraceLightBuffer
Definition RayTracer.h:58
void EndLightBake()
Definition RayTracer.cpp:601
DescriptorSet * mBakeDiffuseDescriptorSet
Definition RayTracer.h:61
void BindPathTraceDescriptorSet()
Definition RayTracer.cpp:1026
glm::vec3 mPathTracePrevCameraPos
Definition RayTracer.h:69
std::vector< LightBakeResult > mLightBakeResults
Definition RayTracer.h:73
void DispatchNextLightBake()
Definition RayTracer.cpp:674
Buffer * mBakeAverageBuffer
Definition RayTracer.h:62
Image * mPathTraceImage
Definition RayTracer.h:64
Buffer * mRayTraceMeshBuffer
Definition RayTracer.h:57
DescriptorSet * mPathTraceDescriptorSet
Definition RayTracer.h:55
Buffer * mLightBakeVertexBuffer
Definition RayTracer.h:60
glm::vec3 mPathTracePrevCameraRot
Definition RayTracer.h:70
void UpdateBakeVertexData()
Definition RayTracer.cpp:340
void DestroyStaticRayTraceResources()
Definition RayTracer.cpp:35
std::vector< NodePtr > mLightBakeNodes
Definition RayTracer.h:72
void DispatchNextBakeDiffuse()
Definition RayTracer.cpp:760
void CreateDynamicRayTraceResources()
Definition RayTracer.cpp:62
int64_t mBakedFrame
Definition RayTracer.h:76
void DestroyDynamicRayTraceResources()
Definition RayTracer.cpp:85
void BeginLightBake()
Definition RayTracer.cpp:476
void PathTraceWorld()
Definition RayTracer.cpp:398
int32_t mBakingCompIndex
Definition RayTracer.h:74
void UpdateLightBake()
Definition RayTracer.cpp:523
uint32_t mAccumulatedFrames
Definition RayTracer.h:68
int32_t mNextBakingCompIndex
Definition RayTracer.h:75
Buffer * mBakeDiffuseTriangleBuffer
Definition RayTracer.h:63
void UpdateRayTracingScene(std::vector< RayTraceTriangle > &triangleData, std::vector< RayTraceMesh > &meshData, std::vector< RayTraceLight > &lightData, int32_t *outBakeMeshIndex=nullptr)
Definition RayTracer.cpp:94
LightBakePhase GetLightBakePhase() const
Definition RayTracer.cpp:669
UniformBuffer * mRayTraceUniformBuffer
Definition RayTracer.h:59
void BindBakeDiffuseDescriptorSet()
Definition RayTracer.cpp:1042
Buffer * mRayTraceTriangleBuffer
Definition RayTracer.h:56
float GetLightBakeProgress()
Definition RayTracer.cpp:625
std::vector< Image * > mTextureImages
Definition RayTracer.h:65
void CreateStaticRayTraceResources()
Definition RayTracer.cpp:17