3#include <initializer_list>
33 std::initializer_list<Asset> assets)
45 other._bindGroup =
nullptr;
75 std::vector<wgpu::BindGroupEntry> entries;
76 entries.reserve(
_assets.size());
77 for (
const auto &asset :
_assets)
98 descriptor.layout = layout;
100 descriptor.entryCount =
static_cast<uint32_t
>(
_entries.size());
116 entry.buffer =
nullptr;
117 entry.sampler =
nullptr;
118 entry.textureView =
nullptr;
127 auto &buffer = gpuBufferContainer.Get(asset.
name);
128 entry.buffer = buffer->GetBuffer();
129 entry.size = buffer->GetBuffer().getSize();
134 auto &sampler = samplerContainer.Get(asset.
name);
135 entry.sampler = sampler.GetSampler();
140 auto &texture = textureContainer.GetOrDefault(asset.
name);
141 entry.textureView = texture.GetDefaultView();
The core is the place where all the data of the engine is stored. It contains the registry (entities)...
Definition Core.hpp:33
TResource & GetResource()
Get a reference of a resource.
Definition Core.inl:14
Definition BindGroupCreationError.hpp:7
void _RefreshBindGroupEntries(Engine::Core &core)
Definition BindGroup.hpp:67
std::vector< wgpu::BindGroupEntry > _CreateBindGroupEntries(Engine::Core &core)
Definition BindGroup.hpp:73
std::vector< Asset > _assets
Definition BindGroup.hpp:153
std::string _name
Definition BindGroup.hpp:152
wgpu::BindGroup _CreateBindGroup(Engine::Core &core)
Definition BindGroup.hpp:91
void Refresh(Engine::Core &core)
Definition BindGroup.hpp:60
uint32_t GetLayoutIndex() const
Definition BindGroup.hpp:56
wgpu::BindGroupEntry _CreateBindGroupEntry(Engine::Core &core, const Asset &asset)
Definition BindGroup.hpp:113
BindGroup(const BindGroup &other)=delete
std::vector< wgpu::BindGroupEntry > _entries
Definition BindGroup.hpp:154
const std::vector< wgpu::BindGroupEntry > & GetEntries() const
Definition BindGroup.hpp:58
BindGroup(BindGroup &&other) noexcept
Definition BindGroup.hpp:41
void _RefreshBindGroup(Engine::Core &core)
Definition BindGroup.hpp:84
wgpu::BindGroup _bindGroup
Definition BindGroup.hpp:155
entt::hashed_string _shaderId
Definition BindGroup.hpp:150
const wgpu::BindGroup & GetBindGroup() const
Definition BindGroup.hpp:54
~BindGroup()
Definition BindGroup.hpp:48
uint32_t _layoutIndex
Definition BindGroup.hpp:151
BindGroup(Engine::Core &core, std::string_view name, entt::hashed_string shaderId, uint32_t layoutIndex, std::initializer_list< Asset > assets)
Definition BindGroup.hpp:32
DeviceContext deviceContext
Definition Context.hpp:43
Definition Texture.hpp:110
Definition AGPUBuffer.hpp:6
Object::Resource::ResourceManager< Sampler > SamplerContainer
SamplerContainer is a resource that stores Sampler resources.
Definition SamplerContainer.hpp:17
Object::Resource::ResourceManager< std::unique_ptr< AGPUBuffer > > GPUBufferContainer
GPUBufferContainer is a resource that stores GPUBuffer resources.
Definition GPUBufferContainer.hpp:17
Object::Resource::ResourceManager< Shader > ShaderContainer
ShaderContainer is a resource that stores Shader resources.
Definition ShaderContainer.hpp:17
Object::Resource::ResourceManager< Texture > TextureContainer
TextureContainer is a resource that stores Texture resources.
Definition TextureContainer.hpp:17
constexpr DefaultFlag Default
Definition webgpu.hpp:78
StringView(const std::string_view &cpp)
Definition webgpu.hpp:618
Definition BindGroup.hpp:19
entt::hashed_string name
Definition BindGroup.hpp:28
uint32_t binding
Definition BindGroup.hpp:26
Type
Definition BindGroup.hpp:20
@ Sampler
Definition BindGroup.hpp:22
@ Buffer
Definition BindGroup.hpp:21
@ Texture
Definition BindGroup.hpp:23
Type type
Definition BindGroup.hpp:27
uint64_t size
Definition BindGroup.hpp:29
auto & GetDevice()
Definition DeviceContext.hpp:13