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
13namespace ne {
14 class Pipeline;
15 class GpuResource;
16 class UploadBuffer;
17 class ShaderCpuWriteResourceManager;
18
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
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
Definition: PipelineManager.h:97
Definition: ShaderResource.h:27
std::string sResourceName
Definition: ShaderResource.h:82
virtual std::optional< Error > changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse)=0
std::string getResourceName() const
Definition: ShaderResource.cpp:12
virtual std::optional< Error > onAfterAllPipelinesRefreshedResources()=0
Definition: ShaderResource.h:86
virtual std::optional< Error > useNewTexture(std::unique_ptr< TextureHandle > pTextureToUse)=0