Monopoly — Portage moderne
0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
World3DPipeline.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
World3DShaderAssets.hpp
"
4
5
#include <SDL3/SDL_gpu.h>
6
7
#include <expected>
8
#include <filesystem>
9
#include <optional>
10
#include <string>
11
12
namespace
monopoly::engine
13
{
14
enum class
World3DPipelineErrorCode
15
{
16
MissingDevice
,
17
InvalidColorFormat
,
18
UnsupportedDepthFormat
,
19
ShaderLoadFailed
,
20
PipelineCreateFailed
21
};
22
23
struct
World3DPipelineError
24
{
25
World3DPipelineErrorCode
code
{};
26
std::string
detail
;
27
std::optional<World3DShaderError>
shaderError
;
28
};
29
30
[[
nodiscard
]] std::optional<SDL_GPUTextureFormat>
31
chooseWorld3DDepthFormat
(
SDL_GPUDevice
* device)
noexcept
;
32
class
World3DPipeline
final
33
{
34
public
:
35
World3DPipeline
() =
default
;
36
~World3DPipeline
();
37
World3DPipeline
(
const
World3DPipeline
&) =
delete
;
38
World3DPipeline
&
operator=
(
const
World3DPipeline
&) =
delete
;
39
World3DPipeline
(
World3DPipeline
&&
other
)
noexcept
;
40
World3DPipeline
&
operator=
(
World3DPipeline
&&
other
)
noexcept
;
41
42
[[
nodiscard
]]
static
std::expected<
World3DPipeline
,
43
World3DPipelineError
>
load
(
44
SDL_GPUDevice
* device,
45
const
std::filesystem::path&
shaderDirectory
,
46
SDL_GPUTextureFormat
colorFormat
,
47
bool
modernPBR
=
false
,
48
SDL_GPUSampleCount
samples
=
SDL_GPU_SAMPLECOUNT_1
);
49
50
[[
nodiscard
]]
SDL_GPUGraphicsPipeline
*
handle
()
const
noexcept
51
{
return
pipeline_; }
52
[[
nodiscard
]]
SDL_GPUGraphicsPipeline
*
shadowHandle
()
const
noexcept
53
{
return
shadowPipeline_; }
54
[[
nodiscard
]]
SDL_GPUGraphicsPipeline
*
doubleSidedHandle
()
const
noexcept
55
{
return
doubleSidedPipeline_; }
56
[[
nodiscard
]]
SDL_GPUTextureFormat
depthFormat
()
const
noexcept
57
{
return
depthFormat_; }
58
[[
nodiscard
]]
const
World3DShaderSet
&
shaders
()
const
noexcept
59
{
return
shaders_; }
60
61
void
reset
()
noexcept
;
62
63
private
:
64
SDL_GPUDevice
* device_{};
65
SDL_GPUGraphicsPipeline
* pipeline_{};
66
SDL_GPUGraphicsPipeline
* shadowPipeline_{};
67
SDL_GPUGraphicsPipeline
* doubleSidedPipeline_{};
68
SDL_GPUTextureFormat
depthFormat_{
SDL_GPU_TEXTUREFORMAT_INVALID
};
69
World3DShaderSet shaders_;
70
};
71
}
index
unsigned index
Definition
ModernIBarSkin.cpp:25
other
CardTag other
Definition
UDPennyVoice.cpp:18
World3DShaderAssets.hpp
monopoly::engine::World3DPipeline
Definition
World3DPipeline.hpp:33
monopoly::engine::World3DPipeline::handle
SDL_GPUGraphicsPipeline * handle() const noexcept
Definition
World3DPipeline.hpp:50
monopoly::engine::World3DPipeline::~World3DPipeline
~World3DPipeline()
Definition
World3DPipeline.cpp:33
monopoly::engine::World3DPipeline::operator=
World3DPipeline & operator=(const World3DPipeline &)=delete
monopoly::engine::World3DPipeline::shadowHandle
SDL_GPUGraphicsPipeline * shadowHandle() const noexcept
Definition
World3DPipeline.hpp:52
monopoly::engine::World3DPipeline::World3DPipeline
World3DPipeline(const World3DPipeline &)=delete
monopoly::engine::World3DPipeline::doubleSidedHandle
SDL_GPUGraphicsPipeline * doubleSidedHandle() const noexcept
Definition
World3DPipeline.hpp:54
monopoly::engine::World3DPipeline::depthFormat
SDL_GPUTextureFormat depthFormat() const noexcept
Definition
World3DPipeline.hpp:56
monopoly::engine::World3DPipeline::shaders
const World3DShaderSet & shaders() const noexcept
Definition
World3DPipeline.hpp:58
monopoly::engine::World3DPipeline::World3DPipeline
World3DPipeline()=default
monopoly::engine::World3DPipeline::load
static std::expected< World3DPipeline, World3DPipelineError > load(SDL_GPUDevice *device, const std::filesystem::path &shaderDirectory, SDL_GPUTextureFormat colorFormat, bool modernPBR=false, SDL_GPUSampleCount samples=SDL_GPU_SAMPLECOUNT_1)
Definition
World3DPipeline.cpp:71
monopoly::engine::World3DPipeline::reset
void reset() noexcept
Definition
World3DPipeline.cpp:55
monopoly::engine::World3DShaderSet
Definition
World3DShaderAssets.hpp:28
monopoly::engine
Definition
Engine.cpp:135
monopoly::engine::World3DPipelineErrorCode
World3DPipelineErrorCode
Definition
World3DPipeline.hpp:15
monopoly::engine::World3DPipelineErrorCode::PipelineCreateFailed
@ PipelineCreateFailed
monopoly::engine::World3DPipelineErrorCode::UnsupportedDepthFormat
@ UnsupportedDepthFormat
monopoly::engine::World3DPipelineErrorCode::InvalidColorFormat
@ InvalidColorFormat
monopoly::engine::World3DPipelineErrorCode::ShaderLoadFailed
@ ShaderLoadFailed
monopoly::engine::chooseWorld3DDepthFormat
std::optional< SDL_GPUTextureFormat > chooseWorld3DDepthFormat(SDL_GPUDevice *device) noexcept
Definition
World3DPipeline.cpp:13
monopoly::engine::MeshGPUErrorCode::MissingDevice
@ MissingDevice
monopoly::engine::World3DPipelineError
Definition
World3DPipeline.hpp:24
monopoly::engine::World3DPipelineError::detail
std::string detail
Definition
World3DPipeline.hpp:26
monopoly::engine::World3DPipelineError::code
World3DPipelineErrorCode code
Definition
World3DPipeline.hpp:25
monopoly::engine::World3DPipelineError::shaderError
std::optional< World3DShaderError > shaderError
Definition
World3DPipeline.hpp:27
World3DPipeline.hpp
Generated by
1.9.8