summaryrefslogtreecommitdiffstats
path: root/engine/render
diff options
context:
space:
mode:
Diffstat (limited to 'engine/render')
-rw-r--r--engine/render/mesh.rs21
-rw-r--r--engine/render/vulkan/data.rs35
-rw-r--r--engine/render/vulkan/pipeline_forward.rs3
3 files changed, 28 insertions, 31 deletions
diff --git a/engine/render/mesh.rs b/engine/render/mesh.rs
index 0f11de07..19e9f25d 100644
--- a/engine/render/mesh.rs
+++ b/engine/render/mesh.rs
@@ -24,9 +24,24 @@ use vulkano::sync::GpuFuture;
use crate::vulkan::data;
+#[derive(Default, Copy, Clone, Debug)]
+pub struct Vertex {
+ pub pos: [f32; 3],
+ pub normal: [f32; 3],
+ pub tex: [f32; 2],
+}
+
+impl Vertex {
+ pub fn new(pos: [f32; 3], normal: [f32; 3], tex: [f32; 2]) -> Self {
+ Self {
+ pos, normal, tex,
+ }
+ }
+}
+
#[derive(Debug)]
pub struct Mesh {
- vertices: Arc<Vec<data::Vertex>>,
+ vertices: Arc<Vec<Vertex>>,
indices: Arc<Vec<u16>>,
// vulkan buffers cache
vulkan: Mutex<Option<data::VertexData>>,
@@ -34,7 +49,7 @@ pub struct Mesh {
impl Mesh {
pub fn new(
- vertices: Arc<Vec<data::Vertex>>,
+ vertices: Arc<Vec<Vertex>>,
indices: Arc<Vec<u16>>,
) -> Self {
Self {
@@ -47,7 +62,7 @@ impl Mesh {
&self,
graphics_queue: Arc<vd::Queue>,
) -> (
- Arc<vb::ImmutableBuffer<[data::Vertex]>>,
+ Arc<vb::ImmutableBuffer<[Vertex]>>,
Arc<vb::ImmutableBuffer<[u16]>>,
) {
let mut cache = self.vulkan.lock().unwrap();
diff --git a/engine/render/vulkan/data.rs b/engine/render/vulkan/data.rs
index ae33116e..d1a9d287 100644
--- a/engine/render/vulkan/data.rs
+++ b/engine/render/vulkan/data.rs
@@ -16,26 +16,7 @@
use std::sync::Arc;
-use vulkano::buffer as vb;
-use vulkano::image as vm;
-use vulkano::format::Format;
-
-use cgmath as cgm;
-
-#[derive(Default, Copy, Clone, Debug)]
-pub struct Vertex {
- pos: [f32; 3],
- normal: [f32; 3],
- tex: [f32; 2],
-}
-
-impl Vertex {
- pub fn new(pos: [f32; 3], normal: [f32; 3], tex: [f32; 2]) -> Self {
- Self {
- pos, normal, tex,
- }
- }
-}
+use crate::mesh::Vertex;
vulkano::impl_vertex!(Vertex, pos, normal, tex);
#[derive(Default, Copy, Clone)]
@@ -44,7 +25,7 @@ pub struct Instance {
}
impl Instance {
- pub fn new(model: &cgm::Matrix4<f32>) -> Self {
+ pub fn new(model: &cgmath::Matrix4<f32>) -> Self {
let slice: &[f32; 16] = model.as_ref();
Self {
model: slice.clone(),
@@ -61,26 +42,26 @@ pub struct OmniLight {
#[derive(Copy, Clone, Debug)]
pub struct PushConstantObject {
- pub view: cgm::Matrix4<f32>,
+ pub view: cgmath::Matrix4<f32>,
}
#[derive(Copy, Clone, Debug)]
pub struct FragmentUniformBufferObject {
- pub camera_pos: cgm::Vector4<f32>,
+ pub camera_pos: cgmath::Vector4<f32>,
pub omni_lights: [OmniLight; 4],
}
#[derive(Clone, Debug)]
pub struct Textures {
// diffuse: RGB
- pub diffuse: Arc<vm::ImmutableImage<Format>>,
+ pub diffuse: Arc<vulkano::image::ImmutableImage<vulkano::format::Format>>,
// roughness: R
- pub roughness: Arc<vm::ImmutableImage<Format>>,
+ pub roughness: Arc<vulkano::image::ImmutableImage<vulkano::format::Format>>,
}
pub struct VertexData {
- pub vbuffer: Arc<vb::ImmutableBuffer<[Vertex]>>,
- pub ibuffer: Arc<vb::ImmutableBuffer<[u16]>>,
+ pub vbuffer: Arc<vulkano::buffer::ImmutableBuffer<[Vertex]>>,
+ pub ibuffer: Arc<vulkano::buffer::ImmutableBuffer<[u16]>>,
}
impl std::fmt::Debug for VertexData {
diff --git a/engine/render/vulkan/pipeline_forward.rs b/engine/render/vulkan/pipeline_forward.rs
index 4c98abb7..0781d634 100644
--- a/engine/render/vulkan/pipeline_forward.rs
+++ b/engine/render/vulkan/pipeline_forward.rs
@@ -30,6 +30,7 @@ use vulkano::pipeline::shader as vps;
use vulkano::pipeline::vertex as vpv;
use vulkano::sampler as vs;
+use crate::mesh::Vertex;
use crate::vulkan::data;
use crate::vulkan::shaders;
use crate::vulkan::pipeline;
@@ -180,7 +181,7 @@ impl Forward {
// against most existing software and practices. This might bite us in the ass at some
// point in the future.
let pipeline = Arc::new(vp::GraphicsPipeline::start()
- .vertex_input(vpv::OneVertexOneInstanceDefinition::<data::Vertex, data::Instance>::new())
+ .vertex_input(vpv::OneVertexOneInstanceDefinition::<Vertex, data::Instance>::new())
.vertex_shader(vertex_shader.entry_point(), ())
.triangle_list()
.primitive_restart(false)