2#include "../core/foray_core_declares.hpp"
3#include "../rtpipe/foray_rtpipeline.hpp"
4#include "../scene/foray_scene_declares.hpp"
5#include "../util/foray_pipelinelayout.hpp"
34 virtual void Resize(
const VkExtent2D& extent)
override;
40 inline static constexpr std::string_view
OutputName =
"Rt.Output";
Context used for render processes. This object is rebuilt for every frame. /.
Definition foray_framerenderinfo.hpp:14
Wraps an image + sampler combination.
Definition foray_samplercollection.hpp:61
Helps with the creation of a VkDescriptorSetLayout and VkDescriptorSet.
Definition foray_descriptorset.hpp:15
Wraps allocation and lifetime functionality of VkImage.
Definition foray_managedimage.hpp:13
Helper class wrapping 4 SBTs (Raygen, Miss, Callable, Hitgroup) and a raytracing pipeline.
Definition foray_rtpipeline.hpp:15
Provides registries and methods as the anchor of a component based scene.
Definition foray_scene.hpp:17
Extended version of MinimalRaytracingStageBase limited to a single output image, descriptorset but pr...
Definition foray_defaultraytracingstage.hpp:22
core::CombinedImageSampler * mEnvironmentMap
(Optional) Environment Map
Definition foray_defaultraytracingstage.hpp:79
virtual void ReloadShaders() override
Calls ApiDestroyRtPipeline(), ApiCreateRtPipeline() in this order.
virtual void CreateOrUpdateDescriptors()
Creates a fully populated descriptorset. See rtbindpoints and shaders/rt_common/bindpoints....
virtual void RecordFrame(VkCommandBuffer cmdBuffer, base::FrameRenderInfo &renderInfo) override
Calls RecordFramePrepare(), RecordFrameBind(), RecordFrameTraceRays() in this order.
core::DescriptorSet mDescriptorSet
Main DescriptorSet & Layout.
Definition foray_defaultraytracingstage.hpp:86
uint32_t mRngSeedPushCOffset
If set to anything other than ~0U a uint push constant containing the current frame idx as a seed val...
Definition foray_defaultraytracingstage.hpp:96
virtual void Resize(const VkExtent2D &extent) override
Calls RenderStage::Resize(..) which resizes any image registered to mImageOutputs,...
virtual void RecordFramePrepare(VkCommandBuffer cmdBuffer, base::FrameRenderInfo &renderInfo)
Pipeline barriers.
virtual void ApiDestroyRtPipeline()=0
Destroys mPipeline and all shaders registered to RenderStage::mShaders.
virtual void ApiCustomObjectsDestroy()
Inheriting types may use this function to destroy options created during ApiCustomObjectsCreate()
Definition foray_defaultraytracingstage.hpp:59
util::PipelineLayout mPipelineLayout
The pipeline layout manages descriptorset and pushconstant layouts.
Definition foray_defaultraytracingstage.hpp:91
virtual void ApiCreateRtPipeline()=0
Inheriting types should create mPipeline here (load shaders, configure sbts, build)
core::ManagedImage * mNoiseTexture
(Optional) Noise source image
Definition foray_defaultraytracingstage.hpp:81
virtual void CreatePipelineLayout()
Creates Pipeline layout with mDescriptorSets layout and an optional single uint pushconstant (see mRn...
static constexpr std::string_view OutputName
Image Output of the Raytracing Stage.
Definition foray_defaultraytracingstage.hpp:40
virtual void DestroyDescriptors()
Destroys the descriptor set.
core::ManagedImage mOutput
Image output.
Definition foray_defaultraytracingstage.hpp:84
virtual void CreateOutputImages()
Initializes mOutput.
core::ManagedImage * GetRtOutput()
Definition foray_defaultraytracingstage.hpp:42
VkWriteDescriptorSetAccelerationStructureKHR mDescriptorAccelerationStructureInfo
DescriptorSet::SetDescriptorAt requires persistent .pNext objects.
Definition foray_defaultraytracingstage.hpp:88
virtual void RecordFrameBind(VkCommandBuffer cmdBuffer, base::FrameRenderInfo &renderInfo)
Bind pipeline and descriptorset.
virtual void RecordFrameTraceRays(VkCommandBuffer cmdBuffer, base::FrameRenderInfo &renderInfo)
Push constant and Trace rays.
virtual void ApiCustomObjectsCreate()
Inheriting types may use this function to initialize stage specific objects such as configuration Ubo...
Definition foray_defaultraytracingstage.hpp:57
void Init(core::Context *context, scene::Scene *scene, core::CombinedImageSampler *envMap=nullptr, core::ManagedImage *noiseImage=nullptr)
Nominal init for DefaultRaytracingStageBase.
scene::Scene * mScene
Provides Camera, Tlas, Geometry and Materials.
Definition foray_defaultraytracingstage.hpp:77
virtual void Destroy() override
Calls ApiDestroyRtPipeline(), mPipelineLayout.Destroy(), DestroyDescriptors(), ApiCustomObjectsDestro...
rtpipe::RtPipeline mPipeline
The pipeline manages shader binding tables.
Definition foray_defaultraytracingstage.hpp:93
Render stage base class giving a common interface for rendering processes.
Definition foray_renderstage.hpp:15
Class that holds memory ownership of a vulkan pipeline layout.
Definition foray_pipelinelayout.hpp:12
Definition foray_blitstage.hpp:4
Non owning context object.
Definition foray_context.hpp:16