Nameless Engine
Loading...
Searching...
No Matches
PipelineConfiguration.h
1#pragma once
2
3// Standard.
4#include <set>
5#include <optional>
6
7// Custom.
8#include "render/general/pipeline/PipelineType.hpp"
9#include "shader/general/ShaderMacro.h"
10
11namespace ne {
13 enum class PipelineShadowMappingUsage {
14 DIRECTIONAL_AND_SPOT_LIGHTS,
15 POINT_LIGHTS,
16 };
17
25 public:
26 PipelineConfiguration() = delete;
27 virtual ~PipelineConfiguration() = default;
28
34 inline std::set<ShaderMacro> getAdditionalVertexShaderMacros() const {
36 }
37
43 inline std::string_view getVertexShaderName() const { return sVertexShaderName; }
44
50 virtual std::optional<GraphicsPipelineType> getGraphicsType() const = 0;
51
59 virtual std::set<ShaderMacro> getAdditionalPixelShaderMacros() const { return {}; }
60
66 virtual std::string_view getPixelShaderName() const { return ""; }
67
73 virtual std::string_view getComputeShaderName() const { return ""; }
74
80 virtual bool isPixelBlendingEnabled() const { return false; }
81
87 virtual bool isDepthBiasEnabled() const { return false; }
88
95 virtual std::optional<PipelineShadowMappingUsage> getShadowMappingUsage() const { return {}; }
96
97 protected:
105 const std::string& sVertexShaderName, const std::set<ShaderMacro>& additionalVertexShaderMacros);
106
108 std::set<ShaderMacro> additionalVertexShaderMacros;
109
111 const std::string sVertexShaderName;
112 };
113
116 public:
118 virtual ~ColorPipelineConfiguration() override = default;
119
130 const std::string& sVertexShaderName,
131 const std::set<ShaderMacro>& additionalVertexShaderMacros,
132 const std::string& sPixelShaderName,
133 std::set<ShaderMacro> additionalPixelShaderMacros,
134 bool bUsePixelBlending);
135
141 virtual std::optional<GraphicsPipelineType> getGraphicsType() const override;
142
149 virtual std::set<ShaderMacro> getAdditionalPixelShaderMacros() const override;
150
156 virtual std::string_view getPixelShaderName() const override;
157
163 virtual bool isPixelBlendingEnabled() const override;
164
165 protected:
167 std::set<ShaderMacro> additionalPixelShaderMacros;
168
170 const std::string sPixelShaderName;
171
174 };
175
178 public:
180 virtual ~DepthPipelineConfiguration() override = default;
181
192 const std::string& sVertexShaderName,
193 const std::set<ShaderMacro>& additionalVertexShaderMacros,
194 std::optional<PipelineShadowMappingUsage> shadowMappingUsage);
195
201 virtual std::optional<GraphicsPipelineType> getGraphicsType() const override;
202
208 virtual bool isDepthBiasEnabled() const override;
209
215 virtual std::string_view getPixelShaderName() const override;
216
223 virtual std::optional<PipelineShadowMappingUsage> getShadowMappingUsage() const override;
224
225 protected:
227 const std::optional<PipelineShadowMappingUsage> shadowMappingUsage;
228 };
229
232 public:
234 virtual ~ComputePipelineConfiguration() override = default;
235
242
248 virtual std::optional<GraphicsPipelineType> getGraphicsType() const override;
249
255 virtual std::string_view getComputeShaderName() const override;
256
257 private:
259 const std::string sComputeShaderName;
260 };
261}
Definition: PipelineConfiguration.h:115
virtual std::string_view getPixelShaderName() const override
Definition: PipelineConfiguration.cpp:30
const std::string sPixelShaderName
Definition: PipelineConfiguration.h:170
virtual std::set< ShaderMacro > getAdditionalPixelShaderMacros() const override
Definition: PipelineConfiguration.cpp:26
std::set< ShaderMacro > additionalPixelShaderMacros
Definition: PipelineConfiguration.h:167
const bool bUsePixelBlending
Definition: PipelineConfiguration.h:173
virtual bool isPixelBlendingEnabled() const override
Definition: PipelineConfiguration.cpp:32
virtual std::optional< GraphicsPipelineType > getGraphicsType() const override
Definition: PipelineConfiguration.cpp:18
Definition: PipelineConfiguration.h:231
virtual std::optional< GraphicsPipelineType > getGraphicsType() const override
Definition: PipelineConfiguration.cpp:81
virtual std::string_view getComputeShaderName() const override
Definition: PipelineConfiguration.cpp:83
const std::string sComputeShaderName
Definition: PipelineConfiguration.h:259
Definition: PipelineConfiguration.h:177
virtual bool isDepthBiasEnabled() const override
Definition: PipelineConfiguration.cpp:58
virtual std::optional< GraphicsPipelineType > getGraphicsType() const override
Definition: PipelineConfiguration.cpp:46
virtual std::string_view getPixelShaderName() const override
Definition: PipelineConfiguration.cpp:60
const std::optional< PipelineShadowMappingUsage > shadowMappingUsage
Definition: PipelineConfiguration.h:227
virtual std::optional< PipelineShadowMappingUsage > getShadowMappingUsage() const override
Definition: PipelineConfiguration.cpp:70
Definition: PipelineConfiguration.h:24
virtual std::optional< PipelineShadowMappingUsage > getShadowMappingUsage() const
Definition: PipelineConfiguration.h:95
virtual std::set< ShaderMacro > getAdditionalPixelShaderMacros() const
Definition: PipelineConfiguration.h:59
virtual std::optional< GraphicsPipelineType > getGraphicsType() const =0
const std::string sVertexShaderName
Definition: PipelineConfiguration.h:111
std::set< ShaderMacro > additionalVertexShaderMacros
Definition: PipelineConfiguration.h:108
std::string_view getVertexShaderName() const
Definition: PipelineConfiguration.h:43
virtual std::string_view getComputeShaderName() const
Definition: PipelineConfiguration.h:73
virtual bool isDepthBiasEnabled() const
Definition: PipelineConfiguration.h:87
std::set< ShaderMacro > getAdditionalVertexShaderMacros() const
Definition: PipelineConfiguration.h:34
virtual std::string_view getPixelShaderName() const
Definition: PipelineConfiguration.h:66
virtual bool isPixelBlendingEnabled() const
Definition: PipelineConfiguration.h:80