8#include <glm/gtc/type_ptr.hpp>
13 static inline std::string
prefix =
"AmbientLightBuffer_";
25 static_assert(
sizeof(AmbientLightTransfer) == (
sizeof(float) * 3),
26 "AmbientLightTransfer struct size does not match GPU requirements.");
74 "Cannot update a GPU ambient light buffer that is not created.");
101 bufferDesc.usage = wgpu::BufferUsage::CopyDst | wgpu::BufferUsage::Uniform;
105 return context.
GetDevice()->createBuffer(bufferDesc);
~AmbientLightBuffer() override
Definition AmbientLightBuffer.hpp:33
void _UpdateDebugName()
Definition AmbientLightBuffer.hpp:86
wgpu::Buffer _buffer
Definition AmbientLightBuffer.hpp:115
wgpu::Buffer _CreateBuffer(const Graphic::Resource::DeviceContext &context)
Definition AmbientLightBuffer.hpp:98
void Destroy()
Definition AmbientLightBuffer.hpp:43
void Update(Engine::Core &core) override
Definition AmbientLightBuffer.hpp:53
std::string _debugName
Definition AmbientLightBuffer.hpp:118
std::optional< Engine::Entity > _entity
Definition AmbientLightBuffer.hpp:117
bool IsCreated(Engine::Core &core) const override
Definition AmbientLightBuffer.hpp:52
void Create(Engine::Core &core) override
Definition AmbientLightBuffer.hpp:34
void SetEntity(Engine::Entity entity)
Definition AmbientLightBuffer.hpp:63
AmbientLightBuffer(Engine::Entity entity)
Definition AmbientLightBuffer.hpp:29
bool _isCreated
Definition AmbientLightBuffer.hpp:116
static std::string prefix
Definition AmbientLightBuffer.hpp:13
const wgpu::Buffer & GetBuffer() const override
Definition AmbientLightBuffer.hpp:81
void _UpdateBuffer(const Graphic::Resource::Context &context, const Object::Component::AmbientLight &ambientLightComponent)
Definition AmbientLightBuffer.hpp:108
std::string_view GetDebugName() const
Definition AmbientLightBuffer.hpp:83
AmbientLightBuffer(void)
Definition AmbientLightBuffer.hpp:31
void Destroy(Engine::Core &core) override
Definition AmbientLightBuffer.hpp:41
void SetValue(const Engine::Core &core, const Object::Component::AmbientLight &ambientLight)
Definition AmbientLightBuffer.hpp:69
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
Wrapper class providing a convenient interface for entity manipulation with the Core....
Definition Entity.hpp:20
Definition UpdateBufferError.hpp:7
Definition AGPUBuffer.hpp:7
std::optional< wgpu::Queue > queue
Definition Context.hpp:44
Definition AmbientLight.cpp:6
constexpr DefaultFlag Default
Definition webgpu.hpp:78
StringView(const std::string_view &cpp)
Definition webgpu.hpp:618
Definition AmbientLightBuffer.hpp:14
static uint32_t GPUSize()
Definition AmbientLightBuffer.hpp:22
AmbientLightTransfer(const Object::Component::AmbientLight &ambientLight)
Definition AmbientLightBuffer.hpp:17
static uint32_t CPUSize()
Definition AmbientLightBuffer.hpp:21
glm::vec3 color
Definition AmbientLightBuffer.hpp:15
Definition DeviceContext.hpp:7
auto & GetDevice()
Definition DeviceContext.hpp:13
Definition AmbientLight.hpp:7