summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerge Bazanski <q3k@q3k.org>2021-07-11 01:44:23 +0000
committerSerge Bazanski <q3k@q3k.org>2021-07-11 01:44:23 +0000
commit88cb4cff6ebc39ee61a03b5f7ec19d4c13ffd6f3 (patch)
treeda6abdb208fccb68fd241633b98508fa8ac92f9f
parente90ebae6f6e5912d98e60b42d390f223cdf1b2a6 (diff)
downloadabrasion-master.tar.gz
abrasion-master.tar.bz2
abrasion-master.tar.xz
abrasion-master.zip
engine/render: move Vertex out of vulkanHEADmaster
-rw-r--r--engine/render/mesh.rs21
-rw-r--r--engine/render/vulkan/data.rs35
-rw-r--r--engine/render/vulkan/pipeline_forward.rs3
-rw-r--r--hsvr/main.rs66
4 files changed, 60 insertions, 65 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)
diff --git a/hsvr/main.rs b/hsvr/main.rs
index e56d8cc4..fe74022d 100644
--- a/hsvr/main.rs
+++ b/hsvr/main.rs
@@ -5,8 +5,6 @@ use ecs_macros::Access;
use engine::{
globals, input, physics, render, scripting, util,
};
-use engine::render::material;
-use engine::render::vulkan::data;
struct Main {
light1: ecs::EntityID,
@@ -21,35 +19,35 @@ impl Main {
let mut rm = render::resource::Manager::new();
let mesh = {
let vertices = Arc::new(vec![
- data::Vertex::new([-0.5, -0.5, 0.5], [ 0.0, 0.0, 1.0], [1.0, 0.0]),
- data::Vertex::new([ 0.5, -0.5, 0.5], [ 0.0, 0.0, 1.0], [0.0, 0.0]),
- data::Vertex::new([ 0.5, 0.5, 0.5], [ 0.0, 0.0, 1.0], [0.0, 1.0]),
- data::Vertex::new([-0.5, 0.5, 0.5], [ 0.0, 0.0, 1.0], [1.0, 1.0]),
-
- data::Vertex::new([ 0.5, -0.5, -0.5], [ 1.0, 0.0, 0.0], [0.0, 1.0]),
- data::Vertex::new([ 0.5, 0.5, -0.5], [ 1.0, 0.0, 0.0], [1.0, 1.0]),
- data::Vertex::new([ 0.5, 0.5, 0.5], [ 1.0, 0.0, 0.0], [1.0, 0.0]),
- data::Vertex::new([ 0.5, -0.5, 0.5], [ 1.0, 0.0, 0.0], [0.0, 0.0]),
-
- data::Vertex::new([-0.5, -0.5, -0.5], [-1.0, 0.0, 0.0], [1.0, 1.0]),
- data::Vertex::new([-0.5, 0.5, -0.5], [-1.0, 0.0, 0.0], [0.0, 1.0]),
- data::Vertex::new([-0.5, 0.5, 0.5], [-1.0, 0.0, 0.0], [0.0, 0.0]),
- data::Vertex::new([-0.5, -0.5, 0.5], [-1.0, 0.0, 0.0], [1.0, 0.0]),
-
- data::Vertex::new([-0.5, -0.5, -0.5], [ 0.0, -1.0, 0.0], [0.0, 1.0]),
- data::Vertex::new([ 0.5, -0.5, -0.5], [ 0.0, -1.0, 0.0], [1.0, 1.0]),
- data::Vertex::new([ 0.5, -0.5, 0.5], [ 0.0, -1.0, 0.0], [1.0, 0.0]),
- data::Vertex::new([-0.5, -0.5, 0.5], [ 0.0, -1.0, 0.0], [0.0, 0.0]),
-
- data::Vertex::new([-0.5, 0.5, -0.5], [ 0.0, 1.0, 0.0], [1.0, 1.0]),
- data::Vertex::new([ 0.5, 0.5, -0.5], [ 0.0, 1.0, 0.0], [0.0, 1.0]),
- data::Vertex::new([ 0.5, 0.5, 0.5], [ 0.0, 1.0, 0.0], [0.0, 0.0]),
- data::Vertex::new([-0.5, 0.5, 0.5], [ 0.0, 1.0, 0.0], [1.0, 0.0]),
-
- data::Vertex::new([-0.5, -0.5, -0.5], [ 0.0, 0.0, -1.0], [0.0, 0.0]),
- data::Vertex::new([ 0.5, -0.5, -0.5], [ 0.0, 0.0, -1.0], [1.0, 0.0]),
- data::Vertex::new([ 0.5, 0.5, -0.5], [ 0.0, 0.0, -1.0], [1.0, 1.0]),
- data::Vertex::new([-0.5, 0.5, -0.5], [ 0.0, 0.0, -1.0], [0.0, 1.0]),
+ render::mesh::Vertex::new([-0.5, -0.5, 0.5], [ 0.0, 0.0, 1.0], [1.0, 0.0]),
+ render::mesh::Vertex::new([ 0.5, -0.5, 0.5], [ 0.0, 0.0, 1.0], [0.0, 0.0]),
+ render::mesh::Vertex::new([ 0.5, 0.5, 0.5], [ 0.0, 0.0, 1.0], [0.0, 1.0]),
+ render::mesh::Vertex::new([-0.5, 0.5, 0.5], [ 0.0, 0.0, 1.0], [1.0, 1.0]),
+
+ render::mesh::Vertex::new([ 0.5, -0.5, -0.5], [ 1.0, 0.0, 0.0], [0.0, 1.0]),
+ render::mesh::Vertex::new([ 0.5, 0.5, -0.5], [ 1.0, 0.0, 0.0], [1.0, 1.0]),
+ render::mesh::Vertex::new([ 0.5, 0.5, 0.5], [ 1.0, 0.0, 0.0], [1.0, 0.0]),
+ render::mesh::Vertex::new([ 0.5, -0.5, 0.5], [ 1.0, 0.0, 0.0], [0.0, 0.0]),
+
+ render::mesh::Vertex::new([-0.5, -0.5, -0.5], [-1.0, 0.0, 0.0], [1.0, 1.0]),
+ render::mesh::Vertex::new([-0.5, 0.5, -0.5], [-1.0, 0.0, 0.0], [0.0, 1.0]),
+ render::mesh::Vertex::new([-0.5, 0.5, 0.5], [-1.0, 0.0, 0.0], [0.0, 0.0]),
+ render::mesh::Vertex::new([-0.5, -0.5, 0.5], [-1.0, 0.0, 0.0], [1.0, 0.0]),
+
+ render::mesh::Vertex::new([-0.5, -0.5, -0.5], [ 0.0, -1.0, 0.0], [0.0, 1.0]),
+ render::mesh::Vertex::new([ 0.5, -0.5, -0.5], [ 0.0, -1.0, 0.0], [1.0, 1.0]),
+ render::mesh::Vertex::new([ 0.5, -0.5, 0.5], [ 0.0, -1.0, 0.0], [1.0, 0.0]),
+ render::mesh::Vertex::new([-0.5, -0.5, 0.5], [ 0.0, -1.0, 0.0], [0.0, 0.0]),
+
+ render::mesh::Vertex::new([-0.5, 0.5, -0.5], [ 0.0, 1.0, 0.0], [1.0, 1.0]),
+ render::mesh::Vertex::new([ 0.5, 0.5, -0.5], [ 0.0, 1.0, 0.0], [0.0, 1.0]),
+ render::mesh::Vertex::new([ 0.5, 0.5, 0.5], [ 0.0, 1.0, 0.0], [0.0, 0.0]),
+ render::mesh::Vertex::new([-0.5, 0.5, 0.5], [ 0.0, 1.0, 0.0], [1.0, 0.0]),
+
+ render::mesh::Vertex::new([-0.5, -0.5, -0.5], [ 0.0, 0.0, -1.0], [0.0, 0.0]),
+ render::mesh::Vertex::new([ 0.5, -0.5, -0.5], [ 0.0, 0.0, -1.0], [1.0, 0.0]),
+ render::mesh::Vertex::new([ 0.5, 0.5, -0.5], [ 0.0, 0.0, -1.0], [1.0, 1.0]),
+ render::mesh::Vertex::new([-0.5, 0.5, -0.5], [ 0.0, 0.0, -1.0], [0.0, 1.0]),
]);
let indices = Arc::new(vec![
0, 1, 2, 2, 3, 0,
@@ -66,9 +64,9 @@ impl Main {
rm.add(render::Mesh::new(vertices, indices), Some("cube"))
};
- let material = rm.add(material::PBRMaterialBuilder {
- diffuse: material::Texture::from_image(String::from("//assets/test-128px.png")),
- roughness: material::Texture::from_image(String::from("//assets/test-128px-roughness.png")),
+ let material = rm.add(render::material::PBRMaterialBuilder {
+ diffuse: render::material::Texture::from_image(String::from("//assets/test-128px.png")),
+ roughness: render::material::Texture::from_image(String::from("//assets/test-128px-roughness.png")),
}.build(), Some("test-128px"));
let light = rm.add(render::Light::omni_test(), Some("omni"));