// Copyright (c) Wojciech Figat. All rights reserved.
#pragma once
#if GRAPHICS_API_WEBGPU
#include "Engine/Graphics/Shaders/GPUShader.h"
#include "Engine/Graphics/Shaders/GPUConstantBuffer.h"
#include "GPUDeviceWebGPU.h"
///
/// Constant Buffer for Web GPU backend.
///
class GPUConstantBufferWebGPU : public GPUResourceWebGPU
{
public:
GPUConstantBufferWebGPU(GPUDeviceWebGPU* device, uint32 size, WGPUBuffer buffer, const StringView& name) noexcept;
~GPUConstantBufferWebGPU();
public:
WGPUBuffer Buffer;
public:
// [GPUResourceWebGPU]
void OnReleaseGPU() final override;
};
///
/// Shader for Web GPU backend.
///
class GPUShaderWebGPU : public GPUResourceWebGPU
{
private:
Array> _cbs;
public:
GPUShaderWebGPU(GPUDeviceWebGPU* device, const StringView& name)
: GPUResourceWebGPU(device, name)
{
}
protected:
// [GPUShader]
GPUShaderProgram* CreateGPUShaderProgram(ShaderStage type, const GPUShaderProgramInitializer& initializer, Span bytecode, MemoryReadStream& stream) override;
void OnReleaseGPU() override;
};
#endif