LeviLamina
Loading...
Searching...
No Matches
ResourceBlockTemplate.h
1
#pragma once
2
3
#include "mc/_HeaderOutputPredefine.h"
4
5
#include "mc/deps/core/checked_resource_service/PerFrameHandleTracker.h"
6
#include "mc/deps/core/checked_resource_service/UncheckedHandleTracker.h"
7
#include "mc/deps/minecraft_renderer/resources/ResourceServiceTextureDescription.h"
8
#include "mc/external/render_dragon/resources/BufferDescription.h"
9
#include "mc/external/render_dragon/resources/ImageDescription.h"
10
#include "mc/external/render_dragon/resources/MaterialDescription.h"
11
#include "mc/external/render_dragon/resources/TextureDescription.h"
12
13
14
namespace
dragon {
15
class
ResolvedTextureResource
;
16
class
ResolvedImageResource
;
17
class
ResolvedMaterialResource
;
18
struct
ResolvedVertexBufferResource
;
19
struct
ResolvedIndexBufferResource
;
20
struct
ResolvedShaderBufferResource
;
21
struct
ResolvedAccelerationStructureResource
;
22
}
// namespace dragon
23
24
25
namespace
mce {
26
27
class
Texture
;
28
class
ImmediateBuffer
;
29
30
template
<
typename
T>
31
class
ClientResourcePointer
;
32
33
template
<
typename
T>
34
class
ServerResourcePointer
;
35
36
class
Buffer
;
37
38
template
<
typename
T>
39
struct
ResourceHandleTrackerValidator
;
40
41
template
<
typename
T>
42
struct
ResourceBlockTemplate {
43
std::shared_ptr<typename ResourceHandleTrackerValidator<T>::DescriptionType> mDebugInfoBlock;
44
typename
ResourceHandleTrackerValidator<T>::TrackerType
mTrackingBlock;
45
std::unique_ptr<T> mResource;
46
47
ResourceBlockTemplate() : mDebugInfoBlock(), mTrackingBlock(), mResource(std::make_unique<T>()) {}
48
~ResourceBlockTemplate() =
default
;
49
50
void
reset();
51
T* get()
const
;
52
};
53
54
// ---- Texture ----
55
template
<>
56
struct
ResourceHandleTrackerValidator
<dragon::ResolvedTextureResource> {
57
using
DescriptionType =
dragon::TextureDescription
;
58
using
TrackerType =
PerFrameHandleTracker
;
59
};
60
61
// ---- Image ----
62
template
<>
63
struct
ResourceHandleTrackerValidator
<dragon::ResolvedImageResource> {
64
using
DescriptionType =
dragon::ImageDescription
;
65
using
TrackerType =
PerFrameHandleTracker
;
66
};
67
68
// ---- ImmediateBuffer ----
69
template
<>
70
struct
ResourceHandleTrackerValidator
<mce::
ImmediateBuffer
> {
71
using
DescriptionType =
dragon::BufferDescription
;
72
using
TrackerType =
PerFrameHandleTracker
;
73
};
74
75
76
template
<>
77
struct
ResourceHandleTrackerValidator
<
78
std
::variant<std::monostate, mce::Texture, mce::ClientResourcePointer<dragon::ResolvedTextureResource>>> {
79
using
DescriptionType =
mce::ResourceServiceTextureDescription
;
80
using
TrackerType =
PerFrameHandleTracker
;
81
};
82
83
84
template
<>
85
struct
ResourceHandleTrackerValidator
<
std
::variant<
86
std::monostate,
87
mce::Buffer,
88
mce::ClientResourcePointer<dragon::ResolvedVertexBufferResource>,
89
mce::ClientResourcePointer<dragon::ResolvedIndexBufferResource>>> {
90
using
DescriptionType =
dragon::BufferDescription
;
91
using
TrackerType =
PerFrameHandleTracker
;
92
};
93
94
template
<>
95
struct
ResourceHandleTrackerValidator
<dragon::ResolvedVertexBufferResource> {
96
using
DescriptionType =
dragon::BufferDescription
;
97
using
TrackerType =
UncheckedHandleTracker
;
98
};
99
100
template
<>
101
struct
ResourceHandleTrackerValidator
<dragon::ResolvedIndexBufferResource> {
102
using
DescriptionType =
dragon::BufferDescription
;
103
using
TrackerType =
UncheckedHandleTracker
;
104
};
105
106
template
<>
107
struct
ResourceHandleTrackerValidator
<dragon::ResolvedShaderBufferResource> {
108
using
DescriptionType =
dragon::BufferDescription
;
109
using
TrackerType =
UncheckedHandleTracker
;
110
};
111
112
template
<>
113
struct
ResourceHandleTrackerValidator
<dragon::ResolvedAccelerationStructureResource> {
114
using
DescriptionType =
dragon::BufferDescription
;
115
using
TrackerType =
UncheckedHandleTracker
;
116
};
117
118
template
<>
119
struct
ResourceHandleTrackerValidator
<dragon::ResolvedMaterialResource> {
120
using
DescriptionType =
dragon::MaterialDescription
;
121
using
TrackerType =
UncheckedHandleTracker
;
122
};
123
124
}
// namespace mce
dragon::ResolvedImageResource
Definition
ResolvedImageResource.h:7
dragon::ResolvedMaterialResource
Definition
ResolvedMaterialResource.h:7
dragon::ResolvedTextureResource
Definition
ResolvedTextureResource.h:7
mce::Buffer
Definition
Buffer.h:7
mce::ClientResourcePointer
Definition
ClientResourcePointer.h:10
mce::ImmediateBuffer
Definition
ImmediateBuffer.h:7
mce::PerFrameHandleTracker
Definition
PerFrameHandleTracker.h:9
mce::ServerResourcePointer
Definition
ServerResourcePointer.h:10
mce::Texture
Definition
Texture.h:7
mce::UncheckedHandleTracker
Definition
UncheckedHandleTracker.h:7
std
STL namespace.
dragon::BufferDescription
Definition
BufferDescription.h:7
dragon::ImageDescription
Definition
ImageDescription.h:7
dragon::MaterialDescription
Definition
MaterialDescription.h:7
dragon::ResolvedAccelerationStructureResource
Definition
ResolvedAccelerationStructureResource.h:7
dragon::ResolvedIndexBufferResource
Definition
ResolvedIndexBufferResource.h:7
dragon::ResolvedShaderBufferResource
Definition
ResolvedShaderBufferResource.h:7
dragon::ResolvedVertexBufferResource
Definition
ResolvedVertexBufferResource.h:7
dragon::TextureDescription
Definition
TextureDescription.h:7
mce::ResourceHandleTrackerValidator
Definition
ResourceBlockTemplate.h:39
mce::ResourceServiceTextureDescription
Definition
ResourceServiceTextureDescription.h:7
src
mc
external
render_dragon
resources
ResourceBlockTemplate.h
Generated on
for LeviLamina by
1.16.1