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
14namespace dragon {
22} // namespace dragon
23
24
25namespace mce {
26
27class Texture;
28class ImmediateBuffer;
29
30template <typename T>
32
33template <typename T>
35
36class Buffer;
37
38template <typename T>
40
41template <typename T>
42struct ResourceBlockTemplate {
43 std::shared_ptr<typename ResourceHandleTrackerValidator<T>::DescriptionType> mDebugInfoBlock;
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 ----
55template <>
56struct ResourceHandleTrackerValidator<dragon::ResolvedTextureResource> {
57 using DescriptionType = dragon::TextureDescription;
58 using TrackerType = PerFrameHandleTracker;
59};
60
61// ---- Image ----
62template <>
63struct ResourceHandleTrackerValidator<dragon::ResolvedImageResource> {
64 using DescriptionType = dragon::ImageDescription;
65 using TrackerType = PerFrameHandleTracker;
66};
67
68// ---- ImmediateBuffer ----
69template <>
71 using DescriptionType = dragon::BufferDescription;
72 using TrackerType = PerFrameHandleTracker;
73};
74
75
76template <>
78 std::variant<std::monostate, mce::Texture, mce::ClientResourcePointer<dragon::ResolvedTextureResource>>> {
79 using DescriptionType = mce::ResourceServiceTextureDescription;
80 using TrackerType = PerFrameHandleTracker;
81};
82
83
84template <>
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
94template <>
95struct ResourceHandleTrackerValidator<dragon::ResolvedVertexBufferResource> {
96 using DescriptionType = dragon::BufferDescription;
97 using TrackerType = UncheckedHandleTracker;
98};
99
100template <>
101struct ResourceHandleTrackerValidator<dragon::ResolvedIndexBufferResource> {
102 using DescriptionType = dragon::BufferDescription;
103 using TrackerType = UncheckedHandleTracker;
104};
105
106template <>
107struct ResourceHandleTrackerValidator<dragon::ResolvedShaderBufferResource> {
108 using DescriptionType = dragon::BufferDescription;
109 using TrackerType = UncheckedHandleTracker;
110};
111
112template <>
113struct ResourceHandleTrackerValidator<dragon::ResolvedAccelerationStructureResource> {
114 using DescriptionType = dragon::BufferDescription;
115 using TrackerType = UncheckedHandleTracker;
116};
117
118template <>
119struct ResourceHandleTrackerValidator<dragon::ResolvedMaterialResource> {
120 using DescriptionType = dragon::MaterialDescription;
121 using TrackerType = UncheckedHandleTracker;
122};
123
124} // namespace mce
Definition ResolvedImageResource.h:7
Definition ResolvedMaterialResource.h:7
Definition ResolvedTextureResource.h:7
Definition Buffer.h:7
Definition ClientResourcePointer.h:10
Definition ImmediateBuffer.h:7
Definition PerFrameHandleTracker.h:9
Definition ServerResourcePointer.h:10
Definition Texture.h:7
Definition UncheckedHandleTracker.h:7
STL namespace.
Definition BufferDescription.h:7
Definition ImageDescription.h:7
Definition MaterialDescription.h:7
Definition ResolvedAccelerationStructureResource.h:7
Definition ResolvedIndexBufferResource.h:7
Definition ResolvedShaderBufferResource.h:7
Definition ResolvedVertexBufferResource.h:7
Definition TextureDescription.h:7
Definition ResourceBlockTemplate.h:39
Definition ResourceServiceTextureDescription.h:7