Monopoly — Portage moderne
0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
StudioEnvironmentGPU.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <SDL3/SDL_gpu.h>
4
#include <cstdint>
5
#include <expected>
6
#include <filesystem>
7
#include <span>
8
#include <string>
9
#include <vector>
10
11
namespace
monopoly::engine
12
{
13
enum class
StudioEnvironmentErrorCode
{
FileRead
,
InvalidAsset
,
UnsupportedFormat
,
GPUCreation
,
GPUUpload
};
14
struct
StudioEnvironmentError
15
{
16
StudioEnvironmentErrorCode
code
{};
17
std::string
detail
;
18
};
19
// MSTUDIO\0, six little-endian u32 fields: version, width, mip count,
20
// face count, format (1 = linear RGBA16F), payload size. Mip-major faces
21
// +X,-X,+Y,-Y,+Z,-Z; tightly packed rows, full chain, roughness=mip/(mips-1).
22
struct
StudioEnvironmentData
23
{
24
std::uint32_t
width
{};
25
std::uint32_t
mipCount
{};
26
std::vector<std::uint8_t>
rgba16f
;
27
};
28
[[
nodiscard
]] std::expected<StudioEnvironmentData, StudioEnvironmentError>
29
parseStudioEnvironment
(std::span<const std::uint8_t>
bytes
);
30
[[
nodiscard
]] std::expected<StudioEnvironmentData, StudioEnvironmentError>
31
readStudioEnvironment
(
const
std::filesystem::path&
path
);
32
33
class
StudioEnvironmentGPU
final
34
{
35
public
:
36
StudioEnvironmentGPU
() =
default
;
37
~StudioEnvironmentGPU
();
38
StudioEnvironmentGPU
(
const
StudioEnvironmentGPU
&) =
delete
;
39
StudioEnvironmentGPU
&
operator=
(
const
StudioEnvironmentGPU
&) =
delete
;
40
StudioEnvironmentGPU
(
StudioEnvironmentGPU
&&)
noexcept
;
41
StudioEnvironmentGPU
&
operator
=(
StudioEnvironmentGPU
&&)
noexcept
;
42
[[
nodiscard
]]
static
std::expected<
StudioEnvironmentGPU
,
StudioEnvironmentError
>
43
upload
(
SDL_GPUDevice
*,
const
StudioEnvironmentData
&);
44
[[
nodiscard
]]
static
std::expected<
StudioEnvironmentGPU
,
StudioEnvironmentError
>
45
blackFallback
(
SDL_GPUDevice
*);
46
void
reset
()
noexcept
;
47
[[
nodiscard
]]
SDL_GPUTexture
*
texture
()
const
noexcept
{
return
texture_; }
48
[[
nodiscard
]]
SDL_GPUSampler
*
sampler
()
const
noexcept
{
return
sampler_; }
49
private
:
50
[[
nodiscard
]]
static
std::expected<StudioEnvironmentGPU, StudioEnvironmentError>
51
uploadInternal(
SDL_GPUDevice
*,
const
StudioEnvironmentData
&,
bool
fallback
);
52
SDL_GPUDevice
* device_{};
53
SDL_GPUTexture
* texture_{};
54
SDL_GPUSampler
* sampler_{};
55
};
56
}
bytes
std::vector< std::byte > bytes
Definition
BoardTextureRuntime.cpp:15
index
unsigned index
Definition
ModernIBarSkin.cpp:25
path
std::string path
Definition
StartupResources.cpp:24
monopoly::engine::StudioEnvironmentGPU
Definition
StudioEnvironmentGPU.hpp:34
monopoly::engine::StudioEnvironmentGPU::upload
static std::expected< StudioEnvironmentGPU, StudioEnvironmentError > upload(SDL_GPUDevice *, const StudioEnvironmentData &)
Definition
StudioEnvironmentGPU.cpp:123
monopoly::engine::StudioEnvironmentGPU::texture
SDL_GPUTexture * texture() const noexcept
Definition
StudioEnvironmentGPU.hpp:47
monopoly::engine::StudioEnvironmentGPU::StudioEnvironmentGPU
StudioEnvironmentGPU(const StudioEnvironmentGPU &)=delete
monopoly::engine::StudioEnvironmentGPU::StudioEnvironmentGPU
StudioEnvironmentGPU()=default
monopoly::engine::StudioEnvironmentGPU::blackFallback
static std::expected< StudioEnvironmentGPU, StudioEnvironmentError > blackFallback(SDL_GPUDevice *)
Definition
StudioEnvironmentGPU.cpp:226
monopoly::engine::StudioEnvironmentGPU::~StudioEnvironmentGPU
~StudioEnvironmentGPU()
Definition
StudioEnvironmentGPU.cpp:101
monopoly::engine::StudioEnvironmentGPU::sampler
SDL_GPUSampler * sampler() const noexcept
Definition
StudioEnvironmentGPU.hpp:48
monopoly::engine::StudioEnvironmentGPU::reset
void reset() noexcept
Definition
StudioEnvironmentGPU.cpp:115
monopoly::engine::StudioEnvironmentGPU::operator=
StudioEnvironmentGPU & operator=(const StudioEnvironmentGPU &)=delete
monopoly::engine
Definition
Engine.cpp:135
monopoly::engine::StudioEnvironmentErrorCode
StudioEnvironmentErrorCode
Definition
StudioEnvironmentGPU.hpp:13
monopoly::engine::StudioEnvironmentErrorCode::FileRead
@ FileRead
monopoly::engine::StudioEnvironmentErrorCode::GPUCreation
@ GPUCreation
monopoly::engine::StudioEnvironmentErrorCode::InvalidAsset
@ InvalidAsset
monopoly::engine::StudioEnvironmentErrorCode::UnsupportedFormat
@ UnsupportedFormat
monopoly::engine::StudioEnvironmentErrorCode::GPUUpload
@ GPUUpload
monopoly::engine::readStudioEnvironment
std::expected< StudioEnvironmentData, StudioEnvironmentError > readStudioEnvironment(const std::filesystem::path &path)
Definition
StudioEnvironmentGPU.cpp:80
monopoly::engine::parseStudioEnvironment
std::expected< StudioEnvironmentData, StudioEnvironmentError > parseStudioEnvironment(std::span< const std::uint8_t > bytes)
Definition
StudioEnvironmentGPU.cpp:52
monopoly::engine::StudioEnvironmentData
Definition
StudioEnvironmentGPU.hpp:23
monopoly::engine::StudioEnvironmentData::rgba16f
std::vector< std::uint8_t > rgba16f
Definition
StudioEnvironmentGPU.hpp:26
monopoly::engine::StudioEnvironmentData::width
std::uint32_t width
Definition
StudioEnvironmentGPU.hpp:24
monopoly::engine::StudioEnvironmentData::mipCount
std::uint32_t mipCount
Definition
StudioEnvironmentGPU.hpp:25
monopoly::engine::StudioEnvironmentError
Definition
StudioEnvironmentGPU.hpp:15
monopoly::engine::StudioEnvironmentError::detail
std::string detail
Definition
StudioEnvironmentGPU.hpp:17
monopoly::engine::StudioEnvironmentError::code
StudioEnvironmentErrorCode code
Definition
StudioEnvironmentGPU.hpp:16
StudioEnvironmentGPU.hpp
Generated by
1.9.8