RaytracingPipelineVk.h#
Includes#
PVRVk/DeviceVk.h
PVRVk/PipelineConfigVk.h
PVRVk/PipelineVk.h
Included By#
Namespaces#
Classes#
Source Code#
#pragma once
#include "PVRVk/PipelineVk.h"
#include "PVRVk/DeviceVk.h"
#include "PVRVk/PipelineConfigVk.h"
namespace pvrvk {
struct RaytracingPipelineCreateInfo : public PipelineCreateInfo<RaytracingPipeline>
{
public:
std::vector<PipelineShaderStageCreateInfo> stages;
std::vector<RayTracingShaderGroupCreateInfo> shaderGroups;
uint32_t maxRecursionDepth;
RaytracingPipelineCreateInfo() : PipelineCreateInfo(), maxRecursionDepth(0) {}
};
namespace impl {
class RaytracingPipeline_ : public Pipeline<RaytracingPipeline, RaytracingPipelineCreateInfo>
{
private:
friend class Device_;
class make_shared_enabler
{
protected:
make_shared_enabler() {}
friend class RaytracingPipeline_;
};
static RaytracingPipeline constructShared(const DeviceWeakPtr& device, VkPipeline vkPipeline, const RaytracingPipelineCreateInfo& desc)
{
return std::make_shared<RaytracingPipeline_>(make_shared_enabler{}, device, vkPipeline, desc);
}
public:
DECLARE_NO_COPY_SEMANTICS(RaytracingPipeline_)
RaytracingPipeline_(make_shared_enabler, const DeviceWeakPtr& device, VkPipeline vkPipeline, const RaytracingPipelineCreateInfo& desc) : Pipeline(device, vkPipeline, desc) {}
};
} // namespace impl
} // namespace pvrvk