Compare commits

...

2 commits

Author SHA1 Message Date
6b43541877 Update Rust crate mlua to 0.10.0 2025-03-02 09:02:31 +00:00
834b06e34d Fix pipeline and vertex buffer 2025-03-02 09:05:31 +01:00
2 changed files with 49 additions and 11 deletions

View file

@ -41,7 +41,7 @@ iterchunks = "0.5.0"
reqwest = { version = "0.12.5", features = ["blocking"] }
shared_library = "0.1.9"
gltf = { version = "1.4.1", features = ["extras", "names"] }
mlua = { version = "0.9.9", features = ["lua54", "send", "vendored"] }
mlua = { version = "0.10.0", features = ["lua54", "send", "vendored"] }
public-ip = { version = "0.2.2", default-features = false, features = [
"all-providers",
"tokio-dns-resolver",

View file

@ -1,6 +1,6 @@
mod vertex;
use std::{path::PathBuf, sync::Arc};
use std::{path::PathBuf, sync::Arc, time::Duration};
use anyhow::Result;
use ecs::*;
@ -94,8 +94,24 @@ impl SkyBox {
.add_descriptor_set_layout(&descriptor_set_layout)
.build(context.device().clone())?;
let pipeline =
Self::create_pipeline(context, sample_count, &render_target, &pipeline_layout)?;
let vertex_shader = ShaderModule::from_slice(
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()
.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))
.collect::<Vec<_>>();
let cube_buffer = Buffer::builder()
.set_memory_usage(MemoryUsage::GpuOnly)
.set_sharing_mode(VK_SHARING_MODE_EXCLUSIVE)
.set_usage(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT)
let command_buffer = CommandBuffer::new_primary()
.build(context.device().clone(), context.queue().clone())?;
let cube_buffer = SingleSubmit::builder(&command_buffer, context.queue(), |recorder| {
Buffer::builder()
.set_memory_usage(MemoryUsage::CpuToGpu)
.set_usage(VK_BUFFER_USAGE_TRANSFER_SRC_BIT)
.set_data(&cube_mesh)
.build(context.device().clone())?;
.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 {
_cube_map: cube_map,
cube_buffer,
vertex_shader,
fragment_shader,
render_target,
pipeline,
descriptor_set,
@ -195,11 +226,18 @@ impl SkyBox {
sample_count: VkSampleCountFlags,
render_target: &TargetMode<RenderTarget>,
pipeline_layout: &Arc<PipelineLayout>,
vertex_shader: &Arc<ShaderModule<Vertex>>,
fragment_shader: &Arc<ShaderModule<Fragment>>,
) -> Result<TargetMode<Arc<Pipeline>>> {
render_target.execute(|render_target| {
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_color_blend(vec![VkPipelineColorBlendAttachmentState::default()])
.default_rasterization(VK_CULL_MODE_NONE, VK_FRONT_FACE_CLOCKWISE)
.whole_area(render_target.width(), render_target.height())
.build(
context.device().clone(),
pipeline_layout,
@ -245,6 +283,6 @@ impl TScene for SkyBox {
window_height: f32,
images: &TargetMode<Vec<Arc<Image>>>,
) -> Result<()> {
todo!()
Ok(())
}
}