载入中...
搜索中...
未找到
BindGroupLayoutBuilder.h
浏览该文件的文档.
1#pragma once
2
4
5#include <vector>
6
7namespace eve::graphics::webgpu {
8
17public:
20
22 BindGroupLayoutBuilder &buffer(uint32_t binding, wgpu::ShaderStage visibility,
23 wgpu::BufferBindingType type, bool dynamicOffset,
24 uint64_t minBindingSize) {
25 wgpu::BindGroupLayoutEntry e{};
26 e.binding = binding;
27 e.visibility = visibility;
28 e.buffer = {nullptr, type, dynamicOffset, minBindingSize};
29 entries_.push_back(std::move(e));
30 return *this;
31 }
32
34 BindGroupLayoutBuilder &texture(uint32_t binding, wgpu::ShaderStage visibility,
35 wgpu::TextureSampleType sampleType,
36 wgpu::TextureViewDimension dim, bool multisampled = false) {
37 wgpu::BindGroupLayoutEntry e{};
38 e.binding = binding;
39 e.visibility = visibility;
40 e.texture = {nullptr, sampleType, dim, multisampled};
41 entries_.push_back(std::move(e));
42 return *this;
43 }
44
46 BindGroupLayoutBuilder &sampler(uint32_t binding, wgpu::ShaderStage visibility,
47 wgpu::SamplerBindingType type) {
48 wgpu::BindGroupLayoutEntry e{};
49 e.binding = binding;
50 e.visibility = visibility;
51 e.sampler = {nullptr, type};
52 entries_.push_back(std::move(e));
53 return *this;
54 }
55
57 size_t entryCount() const { return entries_.size(); }
58
60 wgpu::BindGroupLayout build(const wgpu::Device &device, const char *label) const;
61
62private:
63 std::vector<wgpu::BindGroupLayoutEntry> entries_;
64};
65
66} // namespace eve::graphics::webgpu
std::string label
vkb::Device & device
eve::action::ActionVfxBinding binding
Fluent builder for wgpu::BindGroupLayout.
BindGroupLayoutBuilder & texture(uint32_t binding, wgpu::ShaderStage visibility, wgpu::TextureSampleType sampleType, wgpu::TextureViewDimension dim, bool multisampled=false)
Append a sampled-texture binding.
BindGroupLayoutBuilder & buffer(uint32_t binding, wgpu::ShaderStage visibility, wgpu::BufferBindingType type, bool dynamicOffset, uint64_t minBindingSize)
Append a buffer binding (uniform / storage / read-only storage).
wgpu::BindGroupLayout build(const wgpu::Device &device, const char *label) const
Create the bind group layout. Throws on null device.
BindGroupLayoutBuilder()=default
Default: empty layout with no entries.
size_t entryCount() const
Number of entries accumulated so far.
BindGroupLayoutBuilder & sampler(uint32_t binding, wgpu::ShaderStage visibility, wgpu::SamplerBindingType type)
Append a sampler binding (filtering or comparison).