From 19811a235d8b6791e4a70a89c0cd21a928de6e95 Mon Sep 17 00:00:00 2001 From: Micha White Date: Thu, 6 Oct 2022 20:31:29 -0400 Subject: Moved camera logic --- src/renderer.rs | 49 +++---------------------------------------------- 1 file changed, 3 insertions(+), 46 deletions(-) (limited to 'src/renderer.rs') diff --git a/src/renderer.rs b/src/renderer.rs index 2c26836..215dda8 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -1,7 +1,6 @@ use std::{convert::TryInto, mem::size_of, num::NonZeroU32}; use crate::{ - camera::CameraUniform, instance::InstanceId, texture::{TextureError, TextureId}, vertex::SQUARE, @@ -57,8 +56,6 @@ pub struct Renderer { instance_buffer_size: usize, instances: Vec, camera: Camera, - camera_buffer: wgpu::Buffer, - camera_bind_group: wgpu::BindGroup, textures: WgpuTextures, window: Window, } @@ -194,37 +191,7 @@ impl Renderer { // create the camera let width = window.inner_size().width; let height = window.inner_size().height; - let camera = Camera::from_size(width, height); - let camera_buffer = device.create_buffer(&wgpu::BufferDescriptor { - label: Some("Camera Uniform"), - size: size_of::() as wgpu::BufferAddress, - usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, - mapped_at_creation: false, - }); - - let camera_bind_group_layout = - device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { - label: Some("Camera Bind Group Layout"), - entries: &[wgpu::BindGroupLayoutEntry { - binding: 0, - visibility: wgpu::ShaderStages::VERTEX, - ty: wgpu::BindingType::Buffer { - ty: wgpu::BufferBindingType::Uniform, - has_dynamic_offset: false, - min_binding_size: None, - }, - count: None, - }], - }); - - let camera_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { - label: Some("Camera Bind Group"), - layout: &camera_bind_group_layout, - entries: &[wgpu::BindGroupEntry { - binding: 0, - resource: camera_buffer.as_entire_binding(), - }], - }); + let (camera, camera_bind_group_layout) = Camera::new(&device, width, height); // the vertex buffer used for rendering squares let square_vertices = SQUARE @@ -273,8 +240,6 @@ impl Renderer { instance_buffer_size, instances, camera, - camera_buffer, - camera_bind_group, textures, window, }) @@ -396,14 +361,6 @@ impl Renderer { ); } - fn refresh_camera_buffer(&mut self) { - self.queue.write_buffer( - &self.camera_buffer, - 0 as wgpu::BufferAddress, - bytemuck::cast_slice(&self.camera.to_matrix()), - ); - } - /// Renders a new frame to the window /// /// # Errors @@ -433,7 +390,7 @@ impl Renderer { .try_into() .expect("expected less than 3 billion instances"); - self.refresh_camera_buffer(); + self.camera.refresh(&self.queue); self.textures.fill_textures(&self.queue); { @@ -451,7 +408,7 @@ impl Renderer { }); render_pass.set_pipeline(&self.render_pipeline); - render_pass.set_bind_group(0, &self.camera_bind_group, &[]); + render_pass.set_bind_group(0, self.camera.bind_group(), &[]); render_pass.set_bind_group(1, self.textures.bind_group(), &[]); render_pass.set_vertex_buffer(0, self.square_vertex_buffer.slice(..)); render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..)); -- cgit v1.2.3