@@ -53,13 +53,33 @@ class IRayTracingPipelineBase : public virtual core::IReferenceCounted
53
53
template <typename PipelineLayoutType, typename ShaderType>
54
54
class IRayTracingPipeline : public IPipeline <PipelineLayoutType>, public IRayTracingPipelineBase
55
55
{
56
+ using base_creation_params_t = IPipeline<PipelineLayoutType>::SCreationParams;
56
57
public:
57
58
58
59
using SGeneralShaderGroupContainer = core::smart_refctd_dynamic_array<SGeneralShaderGroup>;
59
60
using SHitShaderGroupContainer = core::smart_refctd_dynamic_array<SHitShaderGroup>;
60
61
61
- struct SCreationParams : IPipeline<PipelineLayoutType>::SCreationParams
62
+ struct SCreationParams : base_creation_params_t
62
63
{
64
+ public:
65
+ #define base_flag (F ) static_cast <uint64_t >(base_creation_params_t ::FLAGS::F)
66
+ enum class FLAGS : uint64_t
67
+ {
68
+ NONE = base_flag(NONE),
69
+ DISABLE_OPTIMIZATIONS = base_flag(DISABLE_OPTIMIZATIONS),
70
+ ALLOW_DERIVATIVES = base_flag(ALLOW_DERIVATIVES),
71
+ FAIL_ON_PIPELINE_COMPILE_REQUIRED = base_flag(FAIL_ON_PIPELINE_COMPILE_REQUIRED),
72
+ EARLY_RETURN_ON_FAILURE = base_flag(EARLY_RETURN_ON_FAILURE),
73
+ SKIP_BUILT_IN_PRIMITIVES = 1 <<12 ,
74
+ SKIP_AABBS = 1 <<13 ,
75
+ NO_NULL_ANY_HIT_SHADERS = 1 <<14 ,
76
+ NO_NULL_CLOSEST_HIT_SHADERS = 1 <<15 ,
77
+ NO_NULL_MISS_SHADERS = 1 <<16 ,
78
+ NO_NULL_INTERSECTION_SHADERS = 1 <<17 ,
79
+ ALLOW_MOTION = 1 <<20 ,
80
+ };
81
+ #undef base_flag
82
+
63
83
protected:
64
84
using SpecInfo = ShaderType::SSpecInfo;
65
85
template <typename ExtraLambda>
0 commit comments