9#ifndef RESOURCELAYOUT_H
10#define RESOURCELAYOUT_H
31 return "u_TextureCube";
33 return "u_Texture2DArray";
35 return "u_DepthTexture";
78 return m_type == other.m_type &&
85 return !(*
this == other);
88 constexpr explicit operator bool() const noexcept {
132 return !(*
this == other);
148 template<
typename... Args>
180 return static_cast<int>(i);
189 return static_cast<int>(i);
209 template<
typename... Rest>
211 for (
size_t i = 0; i < other.m_textureCount; ++i) {
215 for (
size_t i = 0; i < other.m_samplerCount; ++i) {
221 template<
typename... Rest>
227 template<
typename... Rest>
242 struct hash<
FCT::TextureElement>
245 std::size_t seed = 0;
247 if (element.getName() !=
nullptr) {
248 boost::hash_combine(seed, std::string(element.getName()));
251 boost::hash_combine(seed,
static_cast<std::size_t
>(element.getType()));
252 boost::hash_combine(seed,
static_cast<uint32_t
>(element.getShaderStages()));
253 boost::hash_combine(seed,
static_cast<std::size_t
>(element.getUpdateFrequency()));
constexpr void processArgs(const ResourceLayout &other, Rest &&... rest) noexcept
constexpr ResourceLayout(Args &&... args) noexcept
constexpr size_t getSamplerCount() const noexcept
constexpr const TextureElement & getTexture(size_t index) const noexcept
constexpr size_t getTextureCount() const noexcept
static constexpr size_t MaxElements
constexpr void processArgs() noexcept
constexpr const SamplerElement & getSampler(size_t index) const noexcept
constexpr void processArgs(const SamplerElement &element, Rest &&... rest) noexcept
constexpr int findSamplerIndex(const char *name) const noexcept
constexpr TextureElement findTexture(const char *name) const noexcept
TextureElement m_textures[MaxElements]
constexpr void addSampler(const SamplerElement &element) noexcept
constexpr SamplerElement findSampler(const char *name) const noexcept
constexpr void processArgs(const TextureElement &element, Rest &&... rest) noexcept
constexpr void addTexture(const TextureElement &element) noexcept
constexpr ResourceLayout() noexcept
SamplerElement m_samplers[MaxElements]
constexpr int findTextureIndex(const char *name) const noexcept
UpdateFrequency m_updateFrequency
constexpr SamplerElement(const char *name, UpdateFrequency updateFreq) noexcept
constexpr ShaderStages getShaderStages() const noexcept
constexpr SamplerElement(const char *name, ShaderStages stages) noexcept
constexpr SamplerElement(const char *name) noexcept
constexpr UpdateFrequency getUpdateFrequency() const noexcept
bool operator==(const SamplerElement &other) const noexcept
constexpr SamplerElement() noexcept
constexpr const char * getName() const noexcept
bool operator!=(const SamplerElement &other) const noexcept
constexpr SamplerElement(const char *name, ShaderStages stages, UpdateFrequency updateFreq) noexcept
constexpr ShaderStages getShaderStages() const noexcept
constexpr const char * getName() const noexcept
bool operator==(const TextureElement &other) const noexcept
constexpr TextureElement(TextureType type) noexcept
UpdateFrequency m_updateFrequency
bool operator!=(const TextureElement &other) const noexcept
constexpr TextureType getType() const noexcept
constexpr UpdateFrequency getUpdateFrequency() const noexcept
constexpr TextureElement(const TextureElement &other) noexcept
constexpr TextureElement(TextureType type, const char *name, ShaderStages stages, UpdateFrequency updateFreq=UpdateFrequency::PerFrame) noexcept
constexpr TextureElement(TextureType type, const char *name) noexcept
constexpr TextureElement(const char *name) noexcept
constexpr TextureElement() noexcept
constexpr TextureElement(TextureType type, const char *name, UpdateFrequency updateFreq) noexcept
constexpr bool StringEquals(const char *a, const char *b) noexcept
constexpr const char * GetTextureDefaultName(TextureType type)
std::size_t operator()(const FCT::TextureElement &element) const noexcept