engine/asset/src/rasterizer_descriptor_layouts.rs

167 lines
4.9 KiB
Rust
Raw Normal View History

2024-08-23 11:22:09 +00:00
use anyhow::Result;
use vulkan_rs::prelude::*;
use std::sync::Arc;
pub struct RasterizerDescriptorLayouts;
impl RasterizerDescriptorLayouts {
pub fn descriptor_layout(device: Arc<Device>) -> Result<Arc<DescriptorSetLayout>> {
DescriptorSetLayout::builder()
.add_layout_binding(
0,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0,
)
.add_layout_binding(
1,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.build(device)
}
pub fn bone_descriptor_layout(device: Arc<Device>) -> Result<Arc<DescriptorSetLayout>> {
DescriptorSetLayout::builder()
.add_layout_binding(
0,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0,
)
.add_layout_binding(
1,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.add_layout_binding(
3,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0,
)
.build(device)
}
pub fn color_descriptor_layout(device: Arc<Device>) -> Result<Arc<DescriptorSetLayout>> {
DescriptorSetLayout::builder()
.add_layout_binding(
0,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0,
)
.add_layout_binding(
1,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.add_layout_binding(
2,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.build(device)
}
pub fn color_bone_descriptor_layout(device: Arc<Device>) -> Result<Arc<DescriptorSetLayout>> {
DescriptorSetLayout::builder()
.add_layout_binding(
0,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0,
)
.add_layout_binding(
1,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.add_layout_binding(
2,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.add_layout_binding(
3,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0,
)
.build(device)
}
pub fn color_normal_descriptor_layout(device: Arc<Device>) -> Result<Arc<DescriptorSetLayout>> {
DescriptorSetLayout::builder()
.add_layout_binding(
0,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0,
)
.add_layout_binding(
1,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.add_layout_binding(
2,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.add_layout_binding(
4,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.build(device)
}
pub fn color_bone_normal_descriptor_layout(
device: Arc<Device>,
) -> Result<Arc<DescriptorSetLayout>> {
DescriptorSetLayout::builder()
.add_layout_binding(
0,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0,
)
.add_layout_binding(
1,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.add_layout_binding(
2,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.add_layout_binding(
3,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
VK_SHADER_STAGE_VERTEX_BIT,
0,
)
.add_layout_binding(
4,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
VK_SHADER_STAGE_FRAGMENT_BIT,
0,
)
.build(device)
}
}