#wgpu #buffer #macro #wgpu-rs #layout #bind #dsl

wgpu_bind_dsl

一个用于描述wgpu-rs中的绑定布局的实验性宏DSL

2个版本

0.1.1 2020年5月28日
0.1.0 2020年5月22日

1514Rust模式

MIT 许可证

22KB
425

wgpu_bind_dsl

一个用于与wgpu-rs库一起工作的宏。允许使用声明性绑定描述符!

以前您必须这样描述(深呼吸)wgpu::BindLayoutDescriptor

 &wgpu::BindGroupLayoutDescriptor {
          bindings: &[
              wgpu::BindGroupLayoutEntry {
                  binding: 0, // global
                  visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT,
                  ty: wgpu::BindingType::UniformBuffer { dynamic: false },
              },
              wgpu::BindGroupLayoutEntry {
                  binding: 1, // lights
                  visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT,
                  ty: wgpu::BindingType::UniformBuffer { dynamic: false },
              },
              wgpu::BindGroupLayoutEntry {
                  binding: 2,
                  visibility: wgpu::ShaderStage::FRAGMENT,
                  ty: wgpu::BindingType::SampledTexture {
                      multisampled: false,
                      component_type: wgpu::TextureComponentType::Float,
                      dimension: wgpu::TextureViewDimension::D2Array,
                  },
              },
              wgpu::BindGroupLayoutEntry {
                  binding: 3,
                  visibility: wgpu::ShaderStage::FRAGMENT,
                  ty: wgpu::BindingType::Sampler { comparison: true },
              },
          ],
          label: None,
      }

但现在您可以简单地写出

binding_layout! {
  { Vertex |  Fragment } => {
      0 => Buffer,
      1 => Buffer,
  },
  Fragment => {
     2 => Tex2DArray<Float>,
     3 => Sampler: Cmp,
  },
};

无运行时依赖