载入中...
搜索中...
未找到
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
22 ComputeShader() = default;
24 virtual ~ComputeShader() = default;
25
26 ComputeShader(const ComputeShader &) = delete;
28
30 virtual void bindBuffer(int binding, GpuBuffer *buffer) = 0;
32 virtual GpuBuffer *getBoundBuffer(int binding) const = 0;
33
35 virtual void setFloat(int index, float value) = 0;
37 virtual float getFloat(int index) const = 0;
38
40 virtual void clearBindings() = 0;
41
43 const float *pushConstantData() const { return push_.data(); }
44
45protected:
46 std::array<float, kMaxFloats> push_{};
47};
48
49} // namespace eve::gpgpu
double value
std::unique_ptr< gpgpu::GpuBuffer > buffer
Definition OnnxGpgpu.cpp:26
eve::action::ActionVfxBinding binding
uint32_t index
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
Sets the float.
ComputeShader()=default
Constructs a ComputeShader.
virtual GpuBuffer * getBoundBuffer(int binding) const =0
Returns the bound buffer.
static constexpr uint32_t kPushConstantBytes
virtual ~ComputeShader()=default
Releases ComputeShader resources.
virtual void clearBindings()=0
Clears bindings.
ComputeShader & operator=(const ComputeShader &)=delete
const float * pushConstantData() const
Pushes constant data.
virtual float getFloat(int index) const =0
Returns the float.
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:18
Fluids module — interactive surface fluid simulation.
Definition Fluids.h:34