// 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