comes together fast when you actually use the library correctly. compute works

This commit is contained in:
2020-09-18 00:19:17 -07:00
parent 34b5d7b3d0
commit e7bbf1f1db
3 changed files with 24 additions and 39 deletions

View File

@@ -1,12 +1,13 @@
use std::sync::Arc;
use specs::{Component, Join, System, VecStorage, Write, WriteStorage};
use crate::canvas::canvas_frame::CanvasFrame;
use crate::canvas::compu_frame::CompuFrame;
use crate::canvas::managed::handles::{CanvasImageHandle, CanvasTextureHandle};
use crate::PersistentState;
use crate::util::vertex::{TextureVertex3D, VertexTypeContainer, ImageVertex3D};
use crate::util::vertex::{ImageVertex3D, TextureVertex3D, VertexTypeContainer};
use crate::vkprocessor::VkProcessor;
use std::sync::Arc;
#[derive(Debug, Clone)]
pub struct Position {
@@ -81,7 +82,6 @@ impl<'a> System<'a> for RenderSystem {
mut vk_processor
): Self::SystemData) {
state.canvas_frame = CanvasFrame::new(state.window_size);
state.compu_frame = CompuFrame::new(state.window_size);
// compu_frame.add_with_image_swap(compute_buffer.clone(), compute_kernel.clone(), &compu_sprite1);
// compu_frame.add(compute_buffer.clone(), compute_kernel.clone());
@@ -98,7 +98,7 @@ impl<'a> System<'a> for RenderSystem {
let textured_vertices = vec![
VertexTypeContainer::TextureType(
generate_textured_verts(window_size, pos, size, normalized_depth),
textures.textures.get(0).unwrap().clone()
textures.textures.get(0).unwrap().clone(),
)
];
@@ -117,16 +117,17 @@ impl<'a> System<'a> for RenderSystem {
let textured_vertices = vec![
VertexTypeContainer::ImageType(
generate_image_verts(window_size, pos, size, images.image_resolutions.get(0).unwrap().clone(), normalized_depth),
images.images.get(0).unwrap().clone()
images.images.get(0).unwrap().clone(),
)
];
state.canvas_frame.add(textured_vertices);
}
let compu_frame = &state.compu_frame;
vk_processor.run(&state.surface.clone().unwrap(),
&state.canvas_frame,
&state.compu_frame);
compu_frame);
}
}
@@ -137,7 +138,6 @@ fn generate_image_verts(
image_size: (u32, u32),
depth: f32,
) -> Vec<ImageVertex3D> {
let image_size = (image_size.0 as f32, image_size.1 as f32);
// screen space position
@@ -161,27 +161,27 @@ fn generate_image_verts(
vec![
ImageVertex3D {
v_position: [ss_position.0, ss_position.1, depth], // top left
ti_position: [-0.0, -0.0]
ti_position: [-0.0, -0.0],
},
ImageVertex3D {
v_position: [ss_position.0, ss_position.1 + ss_size.1, depth], // bottom left
ti_position: [-0.0, image_size.1]
ti_position: [-0.0, image_size.1],
},
ImageVertex3D {
v_position: [ss_position.0 + ss_size.0, ss_position.1 + ss_size.1, depth], // bottom right
ti_position: [image_size.0, image_size.1]
ti_position: [image_size.0, image_size.1],
},
ImageVertex3D {
v_position: [ss_position.0, ss_position.1, depth], // top left
ti_position: [-0.0, -0.0]
ti_position: [-0.0, -0.0],
},
ImageVertex3D {
v_position: [ss_position.0 + ss_size.0, ss_position.1 + ss_size.1, depth], // bottom right
ti_position: [image_size.0, image_size.1]
ti_position: [image_size.0, image_size.1],
},
ImageVertex3D {
v_position: [ss_position.0 + ss_size.0, ss_position.1, depth], // top right
ti_position: [image_size.0, -0.0]
ti_position: [image_size.0, -0.0],
},
]
}
@@ -192,7 +192,6 @@ fn generate_textured_verts(
size: (f32, f32),
depth: f32,
) -> Vec<TextureVertex3D> {
let ss_position = (
position.0 / window_size.0 as f32 - 1.0,
position.1 / window_size.1 as f32 - 1.0