Nameless Engine
Loading...
Searching...
No Matches
ShaderResource.h
1
#pragma once
2
3
// Standard.
4
#include <string>
5
#include <memory>
6
#include <unordered_set>
7
#include <optional>
8
9
// Custom.
10
#include "material/TextureManager.h"
11
#include "misc/Error.h"
12
13
namespace
ne {
14
class
Pipeline;
15
class
GpuResource;
16
class
UploadBuffer;
17
class
ShaderCpuWriteResourceManager;
18
27
class
ShaderResourceBase
{
28
// Only pipeline manager is expected to call `onAfterAllPipelinesRefreshedResources`.
29
friend
class
PipelineManager
;
30
31
public
:
32
virtual
~ShaderResourceBase
() =
default
;
33
50
[[nodiscard]]
virtual
std::optional<Error>
51
changeUsedPipelines
(
const
std::unordered_set<Pipeline*>& pipelinesToUse) = 0;
52
58
std::string
getResourceName
()
const
;
59
60
protected
:
67
ShaderResourceBase
(
const
std::string&
sResourceName
);
68
78
[[nodiscard]]
virtual
std::optional<Error>
onAfterAllPipelinesRefreshedResources
() = 0;
79
80
private
:
82
std::string
sResourceName
;
83
};
84
86
class
ShaderTextureResource
:
public
ShaderResourceBase
{
87
public
:
88
virtual
~ShaderTextureResource
()
override
=
default
;
89
101
[[nodiscard]]
virtual
std::optional<Error>
102
useNewTexture
(std::unique_ptr<TextureHandle> pTextureToUse) = 0;
103
104
protected
:
111
ShaderTextureResource
(
const
std::string&
sResourceName
);
112
};
113
}
// namespace ne
ne::PipelineManager
Definition:
PipelineManager.h:97
ne::ShaderResourceBase
Definition:
ShaderResource.h:27
ne::ShaderResourceBase::sResourceName
std::string sResourceName
Definition:
ShaderResource.h:82
ne::ShaderResourceBase::changeUsedPipelines
virtual std::optional< Error > changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse)=0
ne::ShaderResourceBase::getResourceName
std::string getResourceName() const
Definition:
ShaderResource.cpp:12
ne::ShaderResourceBase::onAfterAllPipelinesRefreshedResources
virtual std::optional< Error > onAfterAllPipelinesRefreshedResources()=0
ne::ShaderTextureResource
Definition:
ShaderResource.h:86
ne::ShaderTextureResource::useNewTexture
virtual std::optional< Error > useNewTexture(std::unique_ptr< TextureHandle > pTextureToUse)=0
src
engine_lib
private
shader
general
resources
ShaderResource.h
Generated by
1.9.5