载入中...
搜索中...
未找到
ComputeShader.h
浏览该文件的文档.
1#pragma once
2
3#include <array>
4#include <cstdint>
5
6namespace eve::gpgpu {
7
8class GpuBuffer;
9
16public:
17 static constexpr int kMaxBindings = 8;
18 static constexpr int kMaxFloats = 32;
19 static constexpr uint32_t kPushConstantBytes = uint32_t(kMaxFloats * sizeof(float));
20
21 ComputeShader() = default;
22 virtual ~ComputeShader() = default;
23
24 ComputeShader(const ComputeShader &) = delete;
26
28 virtual void bindBuffer(int binding, GpuBuffer *buffer) = 0;
29 virtual GpuBuffer *getBoundBuffer(int binding) const = 0;
30
31 virtual void setFloat(int index, float value) = 0;
32 virtual float getFloat(int index) const = 0;
33
34 virtual void clearBindings() = 0;
35
36 const float *pushConstantData() const { return push_.data(); }
37
38protected:
39 std::array<float, kMaxFloats> push_{};
40};
41
42} // namespace eve::gpgpu
std::string value
Backend-agnostic compute program. Bind storage buffers then dispatch via Gpgpu::dispatch....
static constexpr int kMaxBindings
static constexpr int kMaxFloats
std::array< float, kMaxFloats > push_
ComputeShader(const ComputeShader &)=delete
virtual void setFloat(int index, float value)=0
virtual GpuBuffer * getBoundBuffer(int binding) const =0
static constexpr uint32_t kPushConstantBytes
virtual ~ComputeShader()=default
virtual void clearBindings()=0
ComputeShader & operator=(const ComputeShader &)=delete
const float * pushConstantData() const
virtual float getFloat(int index) const =0
virtual void bindBuffer(int binding, GpuBuffer *buffer)=0
Bind a storage buffer to set=0 binding. binding in [0, kMaxBindings).
Backend-agnostic GPU buffer for compute (storage) or CPU staging transfers. Squirrel-owned; derived c...
Definition GpuBuffer.h:16