From c8d4da62b632f6cc4b545990d05c5b3e575a292e Mon Sep 17 00:00:00 2001 From: Asuro Date: Sun, 24 Oct 2021 19:27:37 +0200 Subject: [PATCH] it works again!! --- shaders/text.frag | 4 ---- shaders/text.frag.spv | Bin 1492 -> 1320 bytes shaders/text.vert | 4 ---- shaders/text.vert.spv | Bin 2048 -> 1876 bytes src/input.rs | 1 + src/vulkan/framebuffers.rs | 1 - src/vulkan/gameobject.rs | 14 +++++++------- src/vulkan/mod.rs | 2 +- src/vulkan/pipelines.rs | 10 +++++----- 9 files changed, 14 insertions(+), 22 deletions(-) diff --git a/shaders/text.frag b/shaders/text.frag index fbc98ab..1170b49 100644 --- a/shaders/text.frag +++ b/shaders/text.frag @@ -1,10 +1,6 @@ #version 450 #extension GL_ARB_separate_shader_objects : enable -layout(push_constant) uniform PushConstants { - mat4 model; -} push; - layout(binding = 0, set = 0) uniform ObjectUniformData { mat4 view; mat4 projection; diff --git a/shaders/text.frag.spv b/shaders/text.frag.spv index d4aa6e87514458d346dd4a6a74579d56acb245b8..40904a0e155cff13e44df7d31cd620cc2774fce4 100644 GIT binary patch delta 462 zcmcb@y@HFEnMs+Qfq{{Mi-ChdZX)kZd3FYA1_lQIq^#8BlF+=&wEUu6m&B4p1_lN; z237{?$&QS|k{}g~3=9kfMfo6QnfZAjSq=v2$+?X3q99pj1_p+b%-mE4us(JM>B$Qj zr5U9s?`2e%1Tt04&1-b}PswaFq-o&oD43GcYhXfYq?V)u8KRVqjo^>zgddENlz10VIl0 z3DFJm4amd;NG7r{Ky0}H6PujKENloe0pvH3>JJPI4DJlfVEaL)x-+ma$TBc6D1p2N zmSbU%-Mo}pno(4ofrUW|98?SpAj{+!I2oiTGqMV+f<$3hfq{iVhJk?rWEjXIYbalK IvL)+m0Hc~P6aWAK delta 617 zcmZ3%b%mRknMs+Qfq{{Mi-ChdaU$5RZX@p)51C9K>W}U}FG@ zF@h8qGd-guz97Fi6Q+)fL2hy* zqdKG9+k$k1 zL=h?>x|tam7(gZ-Kr#^&1|YEuFtN!GnS>2NCa^(Oe}MW7BnC3ooq>fxfq{WR3FHZ| z91DZOW>scs#(Ftu07x=0FeosvFi0~nFmN(3fCI%E$_K?FNKBl8g+Ue^+YAgKhsiN; og1rdR3&S8MfYiV+$V_<#1_qEbK+XY~3F3pC!^FTac{0mX0Ne^W2><{9 diff --git a/shaders/text.vert b/shaders/text.vert index 99a9784..1792918 100644 --- a/shaders/text.vert +++ b/shaders/text.vert @@ -1,10 +1,6 @@ #version 450 #extension GL_ARB_separate_shader_objects : enable -layout(push_constant) uniform PushConstants { - mat4 model; -} push; - layout(binding = 0, set = 0) uniform ObjectUniformData { mat4 view; mat4 projection; diff --git a/shaders/text.vert.spv b/shaders/text.vert.spv index d27da4fc0b962de412e772f6e543fba5c2a83bba..4a5fc54a243ea5270c3579fee305f90f22928846 100644 GIT binary patch delta 37 tcmZn=xWdQF%%sfDz`)4B#lXQ}x{;TkX>$Zq3FBq~mJ5uVdDy-%0swdC2bur? delta 190 zcmcb@*C4>l%%sfDz`)4B#lXQ}v5}Xb$%>VMjlq bool { match self.virtual_buttons.get(button_code) { Some(virtual_button) => { diff --git a/src/vulkan/framebuffers.rs b/src/vulkan/framebuffers.rs index f76e237..cb6d9b1 100644 --- a/src/vulkan/framebuffers.rs +++ b/src/vulkan/framebuffers.rs @@ -4,7 +4,6 @@ use vulkano::device::Device; use vulkano::format::Format; use vulkano::image::view::ImageView; use vulkano::image::{AttachmentImage, ImageUsage, SampleCount, SwapchainImage}; -use vulkano::pipeline::viewport::Viewport; use vulkano::render_pass::{Framebuffer, FramebufferAbstract, RenderPass}; use winit::window::Window; use vulkano::swapchain::Swapchain; diff --git a/src/vulkan/gameobject.rs b/src/vulkan/gameobject.rs index 3cb5298..3d75653 100644 --- a/src/vulkan/gameobject.rs +++ b/src/vulkan/gameobject.rs @@ -8,11 +8,7 @@ use crate::input::InputState; use crate::vulkan::TextureHandle; use crate::vulkan::{MeshHandle, VulkanRenderer}; -use super::pipelines::{vs, vs_text}; - -pub trait PushConstant {} -impl PushConstant for vs::ty::PushConstants {} -impl PushConstant for vs_text::ty::PushConstants {} +use super::pipelines::vs; #[derive(Clone)] pub struct GameObject { @@ -28,6 +24,10 @@ pub struct GameObject { pub visible: bool, } +pub enum PushConstantType { + MeshPC(vs::ty::PushConstants), +} + impl GameObject { pub fn new(mesh: MeshHandle) -> GameObject { GameObject { mesh_index: mesh.index, textures: mesh.textures, position: Vector3::new(0.0, 0.0, 0.0), @@ -65,8 +65,8 @@ impl GameObject { self.rotation = self.rotation * Quaternion::from(Euler::new(Deg(x), Deg(y), Deg(z))); } - pub fn get_push_constants(&self) -> Box { - Box::new(vs::ty::PushConstants { + pub fn get_push_constants(&self) -> PushConstantType { + PushConstantType::MeshPC(vs::ty::PushConstants { model: self.get_model_matrix().into(), is_selected: if self.is_selected { 1 } else { 0 }, }) diff --git a/src/vulkan/mod.rs b/src/vulkan/mod.rs index 8ad6bb4..be7b3a7 100644 --- a/src/vulkan/mod.rs +++ b/src/vulkan/mod.rs @@ -322,7 +322,7 @@ impl VulkanRenderer { fn create_command_buffer(self: &mut Self, fb_index: usize, uniform_buffer_data: vs::ty::ObjectUniformData, game_objects: &Vec) -> Arc { // General setup let mut builder = AutoCommandBufferBuilder::primary(self.device.clone(), self.queue.family(), CommandBufferUsage::OneTimeSubmit).unwrap(); - // builder.update_buffer(self.uniform_buffers[fb_index].clone(), uniform_buffer_data).unwrap(); + builder.update_buffer(self.uniform_buffers[fb_index].clone(), Arc::new(uniform_buffer_data)).unwrap(); if self.render_config.msaa_samples > 0 { builder.begin_render_pass(self.framebuffers[fb_index].clone(), SubpassContents::Inline, vec![ClearValue::None, ClearValue::Float([0.0, 0.0, 0.0, 1.0]), ClearValue::Depth(1.0)]).unwrap(); } else { diff --git a/src/vulkan/pipelines.rs b/src/vulkan/pipelines.rs index faf02d5..5b83b22 100644 --- a/src/vulkan/pipelines.rs +++ b/src/vulkan/pipelines.rs @@ -9,7 +9,7 @@ use crate::vulkan::Vertex; use crate::vulkan::GameData; use crate::VulkanRenderer; -use super::TextureHandle; +use super::{TextureHandle, gameobject::PushConstantType}; type RP = Arc; type GP = Arc; @@ -142,15 +142,16 @@ impl Drawcall for DefaultShader { for i in 0..game_objects.len() { let game_object = &game_objects[i]; let mesh = &game_data.meshes[game_object.mesh_index]; - let push_constants = game_object.get_push_constants(); - builder + if let PushConstantType::MeshPC(mesh_push) = game_object.get_push_constants() { + builder .bind_pipeline_graphics(self.pipeline.clone()) .bind_descriptor_sets(PipelineBindPoint::Graphics, self.pipeline.layout().clone(), 0, game_object.descriptor_sets[fb_index].clone()) .bind_vertex_buffers(0, mesh.vertex_buffer.clone()) .bind_index_buffer(mesh.index_buffer.clone()) - .push_constants(self.pipeline.layout().clone(), 0, push_constants) + .push_constants(self.pipeline.layout().clone(), 0, mesh_push) .draw_indexed(mesh.index_buffer.len() as u32, 1, 0, 0, 0).unwrap(); + } } } @@ -341,7 +342,6 @@ impl Drawcall for TextShader { .bind_descriptor_sets(PipelineBindPoint::Graphics, self.pipeline.layout().clone(), 0, game_object.descriptor_sets[fb_index].clone()) .bind_vertex_buffers(0, mesh.vertex_buffer.clone()) .bind_index_buffer(mesh.index_buffer.clone()) - .push_constants(self.pipeline.layout().clone(), 0, game_object.get_push_constants()) .draw_indexed(mesh.index_buffer.len() as u32, 1, 0, 0, 0).unwrap(); } }