Compare commits

..

2 commits

Author SHA1 Message Date
1fb9da7282 Update Rust crate rusqlite to 0.33.0 2025-03-02 09:02:39 +00:00
834b06e34d Fix pipeline and vertex buffer 2025-03-02 09:05:31 +01:00

View file

@ -1,6 +1,6 @@
mod vertex; mod vertex;
use std::{path::PathBuf, sync::Arc}; use std::{path::PathBuf, sync::Arc, time::Duration};
use anyhow::Result; use anyhow::Result;
use ecs::*; use ecs::*;
@ -94,8 +94,24 @@ impl SkyBox {
.add_descriptor_set_layout(&descriptor_set_layout) .add_descriptor_set_layout(&descriptor_set_layout)
.build(context.device().clone())?; .build(context.device().clone())?;
let pipeline = let vertex_shader = ShaderModule::from_slice(
Self::create_pipeline(context, sample_count, &render_target, &pipeline_layout)?; context.device().clone(),
include_bytes!("../shader/skybox.vert.spv"),
)?;
let fragment_shader = ShaderModule::from_slice(
context.device().clone(),
include_bytes!("../shader/skybox.frag.spv"),
)?;
let pipeline = Self::create_pipeline(
context,
sample_count,
&render_target,
&pipeline_layout,
&vertex_shader,
&fragment_shader,
)?;
let descriptor_pool = DescriptorPool::builder() let descriptor_pool = DescriptorPool::builder()
.set_layout(descriptor_set_layout) .set_layout(descriptor_set_layout)
@ -124,17 +140,32 @@ impl SkyBox {
.map(|t| VertexPoint::new(t[0] as f32, t[1] as f32, t[2] as f32)) .map(|t| VertexPoint::new(t[0] as f32, t[1] as f32, t[2] as f32))
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let cube_buffer = Buffer::builder() let command_buffer = CommandBuffer::new_primary()
.set_memory_usage(MemoryUsage::GpuOnly) .build(context.device().clone(), context.queue().clone())?;
.set_sharing_mode(VK_SHARING_MODE_EXCLUSIVE)
.set_usage(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT) let cube_buffer = SingleSubmit::builder(&command_buffer, context.queue(), |recorder| {
.set_data(&cube_mesh) Buffer::builder()
.build(context.device().clone())?; .set_memory_usage(MemoryUsage::CpuToGpu)
.set_usage(VK_BUFFER_USAGE_TRANSFER_SRC_BIT)
.set_data(&cube_mesh)
.build(context.device().clone())?
.into_device_local(
recorder,
VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
)
})
.wait_for_timeout(Duration::from_secs(2))
.submit()?;
let me = Self { let me = Self {
_cube_map: cube_map, _cube_map: cube_map,
cube_buffer, cube_buffer,
vertex_shader,
fragment_shader,
render_target, render_target,
pipeline, pipeline,
descriptor_set, descriptor_set,
@ -195,11 +226,18 @@ impl SkyBox {
sample_count: VkSampleCountFlags, sample_count: VkSampleCountFlags,
render_target: &TargetMode<RenderTarget>, render_target: &TargetMode<RenderTarget>,
pipeline_layout: &Arc<PipelineLayout>, pipeline_layout: &Arc<PipelineLayout>,
vertex_shader: &Arc<ShaderModule<Vertex>>,
fragment_shader: &Arc<ShaderModule<Fragment>>,
) -> Result<TargetMode<Arc<Pipeline>>> { ) -> Result<TargetMode<Arc<Pipeline>>> {
render_target.execute(|render_target| { render_target.execute(|render_target| {
Pipeline::new_graphics() Pipeline::new_graphics()
.set_vertex_shader::<VertexPoint>(vertex_shader.clone())
.set_fragment_shader(fragment_shader.clone())
.input_assembly(VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, false)
.default_multisample(sample_count) .default_multisample(sample_count)
.default_color_blend(vec![VkPipelineColorBlendAttachmentState::default()])
.default_rasterization(VK_CULL_MODE_NONE, VK_FRONT_FACE_CLOCKWISE) .default_rasterization(VK_CULL_MODE_NONE, VK_FRONT_FACE_CLOCKWISE)
.whole_area(render_target.width(), render_target.height())
.build( .build(
context.device().clone(), context.device().clone(),
pipeline_layout, pipeline_layout,
@ -245,6 +283,6 @@ impl TScene for SkyBox {
window_height: f32, window_height: f32,
images: &TargetMode<Vec<Arc<Image>>>, images: &TargetMode<Vec<Arc<Image>>>,
) -> Result<()> { ) -> Result<()> {
todo!() Ok(())
} }
} }