From 79287459381ecacab55ce719f72128833156b419 Mon Sep 17 00:00:00 2001 From: griffi-gh Date: Wed, 8 May 2024 15:02:16 +0200 Subject: [PATCH] players :3 --- assets-src/playermodel1.blend | Bin 1127504 -> 1127504 bytes assets/playermodel1.obj | 30 ++++----- kubi/shaders/entities.wgsl | 12 +++- kubi/src/rendering.rs | 1 + kubi/src/rendering/entities.rs | 24 ++++---- kubi/src/rendering/entities/instance.rs | 77 ++++++++++++++++++++++++ kubi/src/rendering/entities/pipeline.rs | 3 + 7 files changed, 118 insertions(+), 29 deletions(-) create mode 100644 kubi/src/rendering/entities/instance.rs diff --git a/assets-src/playermodel1.blend b/assets-src/playermodel1.blend index d9449fb3e5df560ed0a845c4ad4da0226b24210a..1f49949e72f90600ba3d76dea2a8cc03b4382120 100644 GIT binary patch delta 83766 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 delta 84334 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 U@S8@`GBB4{d0x zIcza&I|g3fA0hJfz-TLTGH!1diraciTsI z2ougMdi$`2y}XuzQ|kTo5IV4r`HS{de=X4;;)F~3m_KA7_t=%1!;Qbv1`QiCjGrK8 zV02J*xNUTZK;fDsI@Cs>=5WQMHHX{?sD;=FLQ)KfhtKvmK>o4p5bra$_9PO+Anxj9&2~YNq9iBhHCYevG z{x+_w_t!><0~qbA{(LKfIN_y%(Vr>OUi`f3Z^hbre;FbAi}vo%27~_+#0hV0>*L4u zc&j@c(owE=m;kbk$2x4iTf#Ff&CNw@j&Qm1aQ;f=7d5+a7Kpp0@Z|Q*?UUkO%lBTf z9ld-{mh>@q7NJ@e6(D-^p^+@J3eO*5+>xYxPa>;#%zI-BY-xRSneU zvvZ4gaqz~6YIM#jgfOeL#Lzxw37f#*JFo26tV?QLcD`5jw&LeCZ^*cW&^1Ht9D{Xk z&sOa?qF@74z3j9d(ch{LJ0ARkLqaQeZXU({o5LPxp&RJstvffrvCU=N-5c_d{b&E{ z#r-7?;y)kj%=f#H&~U%r$X_i^FdMgbf9}WQ`2IQi-L+TZqQ%W{-r;1k?)1yg_7+?m zS!lm7)kWEv2M!qCbYQOodnMa%mc~16zj+&l1+$k8EuliV|Cw~p@*4*<4lI-xjBb9Z ze-g9fJ-tr4XrJbj3ZK}Mn)1MXn=dbJU-?K0oSdP!DnnuFHrs`D6PwTOm%T55CHL+9 zD)FA@T0TU8{`NXwL$lp)axXoh>yct>5x&dU9nid8ajeIgWnIU}FZ)zuklcF3z20Bc z@$;209n@_9^|PO+?0@U04U89-G}~{tOdefmD56DS<$eQxmdsPzV&Bf$f51tFzm><& zZW>#}6Pi={wcYgwM>D&_$}oS@fUoqK@JHO}3inNH{&IM}xljLa|J=eM{d(S$Czk4E zckJbgYA^Y~rwMw|NibDL72m;KLObbpA=;Nppe`ygd3Mvz#qt;a|GV4h*^xboDK;>U zdiMr;hn9r@H*LTTgT3`{TSSamr5nAt_oxB0cjckgIn)WrKD)^=3(h` p{iKP0>{ zeL&Obh&w-tpWP4ndyBv9r~%2YPH=, @location(1) position: vec3, @location(2) normal: vec3, + @location(3) mat_row0: vec4, + @location(4) mat_row1: vec4, + @location(5) mat_row2: vec4, + @location(6) mat_row3: vec4, } struct VertexOutput { @@ -21,8 +25,14 @@ struct VertexOutput { fn vs_main( in: VertexInput, ) -> VertexOutput { + let inst_mat = mat4x4( + in.mat_row0, + in.mat_row1, + in.mat_row2, + in.mat_row3, + ); var out: VertexOutput; - out.clip_position = camera.view_proj * vec4(in.position, 1.0); + out.clip_position = camera.view_proj * (inst_mat * vec4(in.position, 1.0)); out.uv = in.uv; out.normal = in.normal; return out; diff --git a/kubi/src/rendering.rs b/kubi/src/rendering.rs index 4b8c2f9..7c5736e 100644 --- a/kubi/src/rendering.rs +++ b/kubi/src/rendering.rs @@ -54,6 +54,7 @@ pub fn update_rendering_late() -> Workload { ( camera_uniform::update_camera_uniform_buffer, selection_box::update_selection_box_render_state.run_if(is_ingame), + entities::update_entities_render_state.run_if(is_ingame), ).into_workload() } diff --git a/kubi/src/rendering/entities.rs b/kubi/src/rendering/entities.rs index a91e2bb..84865cf 100644 --- a/kubi/src/rendering/entities.rs +++ b/kubi/src/rendering/entities.rs @@ -6,19 +6,24 @@ use crate::{ use super::{camera_uniform::CameraUniformBuffer, depth::DepthTexture, RenderCtx}; +mod instance; mod pipeline; #[derive(Unique)] pub struct EntitiesRenderState { pub pipeline: wgpu::RenderPipeline, + pub instance_buffer: instance::InstanceBuffer, } pub fn init_entities_render_state(storages: AllStoragesView) { storages.add_unique(EntitiesRenderState { pipeline: storages.run(pipeline::init_entities_pipeline), + instance_buffer: storages.run(instance::create_instance_buffer), }); } +pub use instance::update_instance_buffer as update_entities_render_state; + // TODO: entity models pub fn render_entities( ctx: &mut RenderCtx, @@ -26,11 +31,11 @@ pub fn render_entities( depth: UniqueView, prefabs: UniqueView, camera_ubo: UniqueView, - camera: View, - settings: UniqueView, - entities: View, - transform: View, ) { + if state.instance_buffer.count == 0 { + return + } + let mut rpass = ctx.encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: Some("rpass_draw_entities"), color_attachments: &[Some(wgpu::RenderPassColorAttachment { @@ -56,14 +61,7 @@ pub fn render_entities( rpass.set_bind_group(0, &prefabs.player_model_diffuse_bind_group, &[]); rpass.set_bind_group(1, &camera_ubo.camera_bind_group, &[]); rpass.set_vertex_buffer(0, prefabs.player_model.vertex.slice(..)); + rpass.set_vertex_buffer(1, state.instance_buffer.buffer.slice(..)); rpass.set_index_buffer(prefabs.player_model.index.slice(..), wgpu::IndexFormat::Uint32); - rpass.draw_indexed(0..prefabs.player_model.index_len, 0, 0..1); - - // let (camera_id, _camera) = camera.iter().with_id().next().expect("No cameras in the scene"); - - // for (entity_id, (_, trans)) in (&entities, &transform).iter().with_id() { - // //skip rendering camera holder (as the entity would block the view) - // if entity_id == camera_id { continue } - - // } + rpass.draw_indexed(0..prefabs.player_model.index_len, 0, 0..state.instance_buffer.count); } diff --git a/kubi/src/rendering/entities/instance.rs b/kubi/src/rendering/entities/instance.rs new file mode 100644 index 0000000..271949a --- /dev/null +++ b/kubi/src/rendering/entities/instance.rs @@ -0,0 +1,77 @@ +use bytemuck::{Pod, Zeroable}; +use kubi_shared::{entity::Entity, transform::Transform}; +use renderer::Renderer; +use shipyard::{EntityId, IntoIter, IntoWithId, UniqueView, UniqueViewMut, View}; + +use crate::{camera::Camera, rendering::renderer}; + +use super::EntitiesRenderState; + +#[derive(Clone, Copy, Pod, Zeroable)] +#[repr(C, packed)] +pub struct InstanceData { + pub mat: [f32; 4 * 4], +} + +impl InstanceData { + pub const LAYOUT: wgpu::VertexBufferLayout<'static> = wgpu::VertexBufferLayout { + array_stride: std::mem::size_of::() as wgpu::BufferAddress, + step_mode: wgpu::VertexStepMode::Instance, + attributes: &wgpu::vertex_attr_array![ + 3 => Float32x4, + 4 => Float32x4, + 5 => Float32x4, + 6 => Float32x4, + ], + }; +} + +pub struct InstanceBuffer { + pub count: u32, + pub buffer: wgpu::Buffer, +} + +pub fn create_instance_buffer( + renderer: UniqueView, +) -> InstanceBuffer { + let buffer = renderer.device().create_buffer(&wgpu::BufferDescriptor { + label: Some("instance_buffer"), + size: 255 * std::mem::size_of::() as u64, + usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::COPY_DST, + mapped_at_creation: false, + }); + InstanceBuffer { count: 0, buffer } +} + +pub fn update_instance_buffer( + renderer: UniqueView, + mut state: UniqueViewMut, + entities: View, + transforms: View, + camera: View, +) { + //Get id of the camera entity (this assumes a single camera entity) + let cam_id = (&camera) + .iter().with_id().next() + .map(|(x, _)| x) + .unwrap_or(EntityId::dead()); + + // Create a list of instance data for all entities except ones that have camera attached + let mut instances = Vec::with_capacity(entities.len() - 1); + for (id, (_, trans)) in (&entities, &transforms).iter().with_id() { + if id == cam_id { continue } + instances.push(InstanceData { + mat: trans.0.to_cols_array(), + }); + } + + state.instance_buffer.count = instances.len() as u32; + + if !instances.is_empty() { + renderer.queue().write_buffer( + &state.instance_buffer.buffer, + 0, + bytemuck::cast_slice(&instances) + ); + } +} diff --git a/kubi/src/rendering/entities/pipeline.rs b/kubi/src/rendering/entities/pipeline.rs index 40f61a8..b7e8e42 100644 --- a/kubi/src/rendering/entities/pipeline.rs +++ b/kubi/src/rendering/entities/pipeline.rs @@ -2,6 +2,8 @@ use shipyard::UniqueView; use wgpu::include_wgsl; use crate::{prefabs::{GpuPrefabs, ModelVertex}, rendering::{camera_uniform::CameraUniformBuffer, Renderer}}; +use super::instance::InstanceData; + pub fn init_entities_pipeline( renderer: UniqueView, prefabs: UniqueView, @@ -27,6 +29,7 @@ pub fn init_entities_pipeline( entry_point: "vs_main", buffers: &[ ModelVertex::LAYOUT, + InstanceData::LAYOUT, ], }, fragment: Some(wgpu::FragmentState {