From 15e8989bef03330e8f6cb386e8e3b993ab171268 Mon Sep 17 00:00:00 2001 From: Werner Date: Mon, 8 Nov 2021 12:17:40 -0300 Subject: [PATCH] Update project --- Cargo.toml | 18 +- Resources/Cube.mtl => Content/SM_Cube.mtl | 2 +- Resources/Cube.obj => Content/SM_Cube.obj | 2 +- {Resources => Content}/T_Normal.png | Bin {Resources => Content}/T_White.png | Bin Examples/Cubes.rs | 316 ++++++++++++ Examples/Triangle.rs | 206 ++++++++ Resources/T_Stone.png | Bin 180326 -> 0 bytes Resources/Tree.png | Bin 28134 -> 0 bytes Shaders/{Texture.wgsl => Cubes.wgsl} | 4 +- Shaders/{Rainbow.wgsl => Triangle.wgsl} | 4 +- Source/Camera/Camera.rs | 20 + .../{Camera.rs => Camera/CameraController.rs} | 57 +-- Source/Camera/CameraUniform.rs | 24 + Source/Camera/mod.rs | 20 + Source/Display.rs | 65 +++ Source/Main.rs | 5 - Source/Rainbow.rs | 307 ------------ Source/{ => Render}/DrawModel.rs | 24 +- Source/{ => Render}/Instance.rs | 4 +- Source/{ => Render}/Material.rs | 2 +- Source/{ => Render}/Mesh.rs | 0 Source/{ => Render}/Model.rs | 10 +- Source/{ => Render}/Texture.rs | 28 +- Source/Render/Vertex.rs | 3 + Source/Render/mod.rs | 27 ++ Source/Runtime.rs | 109 +++++ Source/State.rs | 13 + Source/Vertex.rs | 3 - Source/lib.rs | 451 +----------------- 30 files changed, 873 insertions(+), 851 deletions(-) rename Resources/Cube.mtl => Content/SM_Cube.mtl (93%) rename Resources/Cube.obj => Content/SM_Cube.obj (98%) rename {Resources => Content}/T_Normal.png (100%) rename {Resources => Content}/T_White.png (100%) create mode 100644 Examples/Cubes.rs create mode 100644 Examples/Triangle.rs delete mode 100644 Resources/T_Stone.png delete mode 100644 Resources/Tree.png rename Shaders/{Texture.wgsl => Cubes.wgsl} (97%) rename Shaders/{Rainbow.wgsl => Triangle.wgsl} (93%) create mode 100644 Source/Camera/Camera.rs rename Source/{Camera.rs => Camera/CameraController.rs} (68%) create mode 100644 Source/Camera/CameraUniform.rs create mode 100644 Source/Camera/mod.rs create mode 100644 Source/Display.rs delete mode 100644 Source/Main.rs delete mode 100644 Source/Rainbow.rs rename Source/{ => Render}/DrawModel.rs (70%) rename Source/{ => Render}/Instance.rs (96%) rename Source/{ => Render}/Material.rs (85%) rename Source/{ => Render}/Mesh.rs (100%) rename Source/{ => Render}/Model.rs (95%) rename Source/{ => Render}/Texture.rs (87%) create mode 100644 Source/Render/Vertex.rs create mode 100644 Source/Render/mod.rs create mode 100644 Source/Runtime.rs create mode 100644 Source/State.rs delete mode 100644 Source/Vertex.rs diff --git a/Cargo.toml b/Cargo.toml index 2bdfa4b..644cf82 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,22 +7,18 @@ license = "MIT" edition = "2021" publish = false -default-run = "Renderer" - [lib] -name = "Renderer" +name = "Graphics" crate-type = ["rlib"] path = "Source/lib.rs" -[[bin]] -name = "Renderer" -path = "Source/Main.rs" -doc = false +[[example]] +name = "Cubes" +path = "Examples/Cubes.rs" -[[bin]] -name = "Rainbow" -path = "Source/Rainbow.rs" -doc = false +[[example]] +name = "Triangle" +path = "Examples/Triangle.rs" [dependencies] anyhow = "1.0" diff --git a/Resources/Cube.mtl b/Content/SM_Cube.mtl similarity index 93% rename from Resources/Cube.mtl rename to Content/SM_Cube.mtl index 7f75f49..11b997a 100644 --- a/Resources/Cube.mtl +++ b/Content/SM_Cube.mtl @@ -11,4 +11,4 @@ Ni 1.450000 d 1.000000 illum 2 map_Bump T_Normal.png -map_Kd T_Stone.png +map_Kd T_White.png diff --git a/Resources/Cube.obj b/Content/SM_Cube.obj similarity index 98% rename from Resources/Cube.obj rename to Content/SM_Cube.obj index 0c1b243..6dd3c0b 100644 --- a/Resources/Cube.obj +++ b/Content/SM_Cube.obj @@ -1,6 +1,6 @@ # Blender v2.93.1 OBJ File: 'Cube.blend' # www.blender.org -mtllib Cube.mtl +mtllib SM_Cube.mtl o Cube v 1.000000 1.000000 -1.000000 v -1.000000 1.000000 -1.000000 diff --git a/Resources/T_Normal.png b/Content/T_Normal.png similarity index 100% rename from Resources/T_Normal.png rename to Content/T_Normal.png diff --git a/Resources/T_White.png b/Content/T_White.png similarity index 100% rename from Resources/T_White.png rename to Content/T_White.png diff --git a/Examples/Cubes.rs b/Examples/Cubes.rs new file mode 100644 index 0000000..6dbeb65 --- /dev/null +++ b/Examples/Cubes.rs @@ -0,0 +1,316 @@ +#![allow(non_snake_case)] +#![allow(unused_variables)] + +use anyhow::Result; +use cgmath::prelude::*; +use std::path::PathBuf; +use std::time::Duration; +use wgpu::util::DeviceExt; +use winit::event::*; +use Graphics::Camera::*; +use Graphics::Render::*; +use Graphics::{Display, Runtime, State}; + +struct Cubes { + render_pipeline: wgpu::RenderPipeline, + obj_model: Model, + camera: Camera, + camera_controller: CameraController, + camera_uniform: CameraUniform, + camera_buffer: wgpu::Buffer, + camera_bind_group: wgpu::BindGroup, + instances: Vec, + instance_buffer: wgpu::Buffer, + depth_texture: Texture, +} + +impl State for Cubes { + fn Init(display: &Display) -> Result { + let texture_bind_group_layout = + display + .device + .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + entries: &[ + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::Texture { + multisampled: false, + view_dimension: wgpu::TextureViewDimension::D2, + sample_type: wgpu::TextureSampleType::Float { filterable: true }, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 1, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::Sampler { + comparison: false, + filtering: true, + }, + count: None, + }, + ], + label: Some("texture_bind_group_layout"), + }); + + // Camera + + let camera = Camera { + eye: (0.0, 5.0, -10.0).into(), + target: (0.0, 0.0, 0.0).into(), + up: cgmath::Vector3::unit_y(), + aspect: display.config.width as f32 / display.config.height as f32, + fovy: 45.0, + znear: 0.1, + zfar: 100.0, + }; + + let camera_controller = CameraController::New(0.2); + + let mut camera_uniform = CameraUniform::New(); + camera_uniform.UpdateViewProjection(&camera); + + let camera_buffer = display + .device + .create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Camera Buffer"), + contents: bytemuck::cast_slice(&[camera_uniform]), + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, + }); + + const SPACE_BETWEEN: f32 = 3.0; + let instances = (0..NUM_INSTANCES_PER_ROW) + .flat_map(|z| { + (0..NUM_INSTANCES_PER_ROW).map(move |x| { + let x = SPACE_BETWEEN * (x as f32 - NUM_INSTANCES_PER_ROW as f32 / 2.0); + let z = SPACE_BETWEEN * (z as f32 - NUM_INSTANCES_PER_ROW as f32 / 2.0); + + let position = cgmath::Vector3 { x, y: 0.0, z }; + + let rotation = if position.is_zero() { + cgmath::Quaternion::from_axis_angle( + cgmath::Vector3::unit_z(), + cgmath::Deg(0.0), + ) + } else { + cgmath::Quaternion::from_axis_angle(position.normalize(), cgmath::Deg(45.0)) + }; + + Instance { position, rotation } + }) + }) + .collect::>(); + + let instance_data = instances.iter().map(Instance::ToRaw).collect::>(); + let instance_buffer = + display + .device + .create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Instance Buffer"), + contents: bytemuck::cast_slice(&instance_data), + usage: wgpu::BufferUsages::VERTEX, + }); + + let camera_bind_group_layout = + display + .device + .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + 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, + }], + label: Some("camera_bind_group_layout"), + }); + + let camera_bind_group = display + .device + .create_bind_group(&wgpu::BindGroupDescriptor { + layout: &camera_bind_group_layout, + entries: &[wgpu::BindGroupEntry { + binding: 0, + resource: camera_buffer.as_entire_binding(), + }], + label: Some("camera_bind_group"), + }); + + // Model + + let obj_model = Model::Load( + &display.device, + &display.queue, + &texture_bind_group_layout, + PathBuf::from("./Content/SM_Cube.obj"), + ) + .unwrap(); + + // Shader + + let shader = display + .device + .create_shader_module(&wgpu::ShaderModuleDescriptor { + label: Some("shader.wgsl"), + source: wgpu::ShaderSource::Wgsl(include_str!("../Shaders/Cubes.wgsl").into()), + }); + + // Texture + + let depth_texture = + Texture::CreateDepthTexture(&display.device, &display.config, "depth_texture"); + + // Pipeline + + let render_pipeline_layout = + display + .device + .create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: Some("Render Pipeline Layout"), + bind_group_layouts: &[&texture_bind_group_layout, &camera_bind_group_layout], + push_constant_ranges: &[], + }); + + let render_pipeline = + display + .device + .create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: Some("Render Pipeline"), + layout: Some(&render_pipeline_layout), + vertex: wgpu::VertexState { + module: &shader, + entry_point: "main", + buffers: &[ModelVertex::GetDescriptor(), InstanceRaw::GetDescriptor()], + }, + fragment: Some(wgpu::FragmentState { + module: &shader, + entry_point: "main", + targets: &[wgpu::ColorTargetState { + format: display.config.format, + blend: Some(wgpu::BlendState { + color: wgpu::BlendComponent::REPLACE, + alpha: wgpu::BlendComponent::REPLACE, + }), + write_mask: wgpu::ColorWrites::ALL, + }], + }), + primitive: wgpu::PrimitiveState { + topology: wgpu::PrimitiveTopology::TriangleList, + strip_index_format: None, + front_face: wgpu::FrontFace::Ccw, + cull_mode: Some(wgpu::Face::Back), + // Setting this to anything other than Fill requires Features::NON_FILL_POLYGON_MODE + polygon_mode: wgpu::PolygonMode::Fill, + // Requires Features::DEPTH_CLAMPING + clamp_depth: false, + // Requires Features::CONSERVATIVE_RASTERIZATION + conservative: false, + }, + depth_stencil: Some(wgpu::DepthStencilState { + format: Texture::DEPTH_FORMAT, + depth_write_enabled: true, + depth_compare: wgpu::CompareFunction::Less, + stencil: wgpu::StencilState::default(), + bias: wgpu::DepthBiasState::default(), + }), + multisample: wgpu::MultisampleState { + count: 1, + mask: !0, + alpha_to_coverage_enabled: false, + }, + }); + + Ok(Self { + render_pipeline, + obj_model, + camera, + camera_controller, + camera_buffer, + camera_bind_group, + camera_uniform, + instances, + instance_buffer, + depth_texture, + }) + } + + fn Input(&mut self, display: &Display, event: &WindowEvent) -> bool { + self.camera_controller.ProcessEvents(event) + } + + fn Update(&mut self, display: &Display, delta: Duration) { + self.camera_controller.UpdateCamera(&mut self.camera); + self.camera_uniform.UpdateViewProjection(&self.camera); + display.queue.write_buffer( + &self.camera_buffer, + 0, + bytemuck::cast_slice(&[self.camera_uniform]), + ); + } + + fn Resize(&mut self, display: &Display) { + self.depth_texture = + Texture::CreateDepthTexture(&display.device, &display.config, "depth_texture"); + } + + fn Draw(&mut self, display: &mut Display) -> Result<(), wgpu::SurfaceError> { + let output = display.surface.get_current_texture().unwrap(); + let view = output + .texture + .create_view(&wgpu::TextureViewDescriptor::default()); + + let mut encoder = display + .device + .create_command_encoder(&wgpu::CommandEncoderDescriptor { + label: Some("Render Encoder"), + }); + + { + let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: Some("Render Pass"), + color_attachments: &[wgpu::RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color { + r: 0.1, + g: 0.2, + b: 0.3, + a: 1.0, + }), + store: true, + }, + }], + depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment { + view: &self.depth_texture.view, + depth_ops: Some(wgpu::Operations { + load: wgpu::LoadOp::Clear(1.0), + store: true, + }), + stencil_ops: None, + }), + }); + + render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..)); + render_pass.set_pipeline(&self.render_pipeline); + render_pass.DrawModelInstanced( + &self.obj_model, + 0..self.instances.len() as u32, + &self.camera_bind_group, + ); + } + + display.queue.submit(std::iter::once(encoder.finish())); + output.present(); + + Ok(()) + } +} + +fn main() -> Result<()> { + Runtime::Execute::() +} diff --git a/Examples/Triangle.rs b/Examples/Triangle.rs new file mode 100644 index 0000000..d41ef71 --- /dev/null +++ b/Examples/Triangle.rs @@ -0,0 +1,206 @@ +#![allow(non_snake_case)] +#![allow(unused_variables)] + +use anyhow::Result; +use bytemuck::{Pod, Zeroable}; +use std::time::Duration; +use wgpu::util::DeviceExt; +use winit::event::*; +use Graphics::Render::*; +use Graphics::{Display, Runtime, State}; + +#[repr(C)] +#[derive(Copy, Clone, Debug, Pod, Zeroable)] +struct TriangleVertex { + position: [f32; 3], + color: [f32; 3], +} + +impl Vertex for TriangleVertex { + fn GetDescriptor<'a>() -> wgpu::VertexBufferLayout<'a> { + wgpu::VertexBufferLayout { + array_stride: std::mem::size_of::() as wgpu::BufferAddress, + step_mode: wgpu::VertexStepMode::Vertex, + attributes: &[ + wgpu::VertexAttribute { + offset: 0, + shader_location: 0, + format: wgpu::VertexFormat::Float32x3, + }, + wgpu::VertexAttribute { + offset: std::mem::size_of::<[f32; 3]>() as wgpu::BufferAddress, + shader_location: 1, + format: wgpu::VertexFormat::Float32x3, + }, + ], + } + } +} + +#[rustfmt::skip] +const VERTICES: &[TriangleVertex] = &[ + TriangleVertex { position: [0.0, 0.5, 0.0], color: [1.0, 0.0, 0.0] }, + TriangleVertex { position: [-0.5, -0.5, 0.0], color: [0.0, 1.0, 0.0] }, + TriangleVertex { position: [0.5, -0.5, 0.0], color: [0.0, 0.0, 1.0] }, +]; + +#[rustfmt::skip] +const INDICES: &[u16] = &[ + 0, 1, 2, +]; + +struct Triangle { + render_pipeline: wgpu::RenderPipeline, + vertex_buffer: wgpu::Buffer, + index_buffer: wgpu::Buffer, + num_indices: u32, +} + +impl State for Triangle { + fn Init(display: &Display) -> Result { + // Shader + + let shader = display + .device + .create_shader_module(&wgpu::ShaderModuleDescriptor { + label: Some("Shader"), + source: wgpu::ShaderSource::Wgsl(include_str!("../Shaders/Triangle.wgsl").into()), + }); + + // Pipeline + + let render_pipeline_layout = + display + .device + .create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: Some("Render Pipeline Layout"), + bind_group_layouts: &[], + push_constant_ranges: &[], + }); + + let render_pipeline = + display + .device + .create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: Some("Render Pipeline"), + layout: Some(&render_pipeline_layout), + vertex: wgpu::VertexState { + module: &shader, + entry_point: "main", + buffers: &[TriangleVertex::GetDescriptor()], + }, + fragment: Some(wgpu::FragmentState { + // 3. + module: &shader, + entry_point: "main", + targets: &[wgpu::ColorTargetState { + // 4. + format: display.config.format, + blend: Some(wgpu::BlendState::REPLACE), + write_mask: wgpu::ColorWrites::ALL, + }], + }), + primitive: wgpu::PrimitiveState { + topology: wgpu::PrimitiveTopology::TriangleList, // 1. + strip_index_format: None, + front_face: wgpu::FrontFace::Ccw, // 2. + cull_mode: Some(wgpu::Face::Back), + // Setting this to anything other than Fill requires Features::NON_FILL_POLYGON_MODE + polygon_mode: wgpu::PolygonMode::Fill, + // Requires Features::DEPTH_CLAMPING + clamp_depth: false, + // Requires Features::CONSERVATIVE_RASTERIZATION + conservative: false, + }, + depth_stencil: None, // 1. + multisample: wgpu::MultisampleState { + count: 1, // 2. + mask: !0, // 3. + alpha_to_coverage_enabled: false, // 4. + }, + }); + + let vertex_buffer = display + .device + .create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertex Buffer"), + contents: bytemuck::cast_slice(VERTICES), + usage: wgpu::BufferUsages::VERTEX, + }); + + let index_buffer = display + .device + .create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Index Buffer"), + contents: bytemuck::cast_slice(INDICES), + usage: wgpu::BufferUsages::INDEX, + }); + + let num_indices = INDICES.len() as u32; + + Ok(Self { + render_pipeline, + vertex_buffer, + index_buffer, + num_indices, + }) + } + + fn Input(&mut self, display: &Display, event: &WindowEvent) -> bool { + false + } + + fn Update(&mut self, display: &Display, delta: Duration) {} + + fn Resize(&mut self, display: &Display) {} + + fn Draw(&mut self, display: &mut Display) -> Result<(), wgpu::SurfaceError> { + let output = display.surface.get_current_texture().unwrap(); + let view = output + .texture + .create_view(&wgpu::TextureViewDescriptor::default()); + + let mut encoder = display + .device + .create_command_encoder(&wgpu::CommandEncoderDescriptor { + label: Some("Render Encoder"), + }); + + { + let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: Some("Render Pass"), + color_attachments: &[ + // This is what [[location(0)]] in the fragment shader targets + wgpu::RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color { + r: 0.0, + g: 0.0, + b: 0.0, + a: 1.0, + }), + store: true, + }, + }, + ], + depth_stencil_attachment: None, + }); + + render_pass.set_pipeline(&self.render_pipeline); + render_pass.set_vertex_buffer(0, self.vertex_buffer.slice(..)); + render_pass.set_index_buffer(self.index_buffer.slice(..), wgpu::IndexFormat::Uint16); + render_pass.draw_indexed(0..self.num_indices, 0, 0..1); + } + + display.queue.submit(std::iter::once(encoder.finish())); + output.present(); + + Ok(()) + } +} + +fn main() -> Result<()> { + Runtime::Execute::() +} diff --git a/Resources/T_Stone.png b/Resources/T_Stone.png deleted file mode 100644 index 52089f49a35d2405d6ca9bc34e6175a5139c2df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180326 zcmV)LK)Jt(P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf6951U69E94oEQKA|D{PpK~#8NJpE;m zW$Bh32!>iMsp?f#zLyLUk-^N&9PZ)a?%~YL%*@Qp%uM0I%*mNAAJv0mwWO9x8jYsM ztlOq%#(K=wthGa_AIHx1>+ToM`S#jtZTi-nzj_iU&K<&;OUH2T$_aS-yC6L`5&5N= zD6cIhf|1*4@ON>8LAsgk(r;2_|!TgF>bSQlNJkZ!w zgPGZJ+`GSumezWtr6<}^S6_+BsuDD})S<4i3h{|?m|LDlMQtU5!h>HTBrGYcIC$+=ETqwqos;kMQ2wpW%~@@50gT0^I$b zaLxT9Vp2kpkP(T%a8Ee7U4*CaHTVX);QYlSIC5+!&YU}dQ|I<$$DZ{#es;fopRt)C zboRCLvy`K{wh9$h<*2MIM_G9hIy+jBnVE=+iacay#h|Pt9l1GC$jysEX?YTIa-&gD z7>~A&D%3X?BRe+<`2`t>j0r_lOgN66IF8)>JU&-~@Q4^><`g0(AsK~5C1`4CMonEU zdir`XIzEQ(-X4sMjbdnI81st@m|K{~!qOrJh6e3#OUug;6Bi5rKtHr}HK3#_55?65 zsA?)lLV7%6Q(~~^&^}ytx(Ww37kKdRJOhJ~o?i(6@F@6%gu^>10*6nZ!;#}>aQgfu z96o-^K2Kw78;Z*-kXKa9>mQ5g_&B6xWg@3A7qLlkh>VNE6~69uHz#}C-ra|x(J72i z&7;1l9RkC`F$$T*3*IJ&Q`SZeqTE<_X)ZE(ZLc_AhP#gkLLx&k z#Ou{RJcQcD7NlfkBO*Eh0l^VCbN&h(oNgd2Di+Re?sn)qU39pF4?g`6d-m+Z`t=*| z^Pj(q&6~GkyU`Y6kdzw7zxTm)R|hz`T;>1o#i65nubUT^cZ&#?c{ zcAPqU1Q#!z!HJVc%MYEB5Z&fyAU3 z3=a39tfCYJrG>~V&PR4Z4jh~v;S=bKkce>j2M6J*({(tx-oOn{AG@*f$!WOe;szIY zFC?X8e|J$iI6E?zv2GpF{!)BQ3o z5J2|r{frm;0xs)@9@v1r`!^C?4r1Gmby&OZ1FT#B33lz-32$E?E(%A2M;-!$!jP3) zgn_|PRMk`yG+L38l0tAghl2+X5-g6w#l;0dA%XDr_C{DlC;|fmarx>coIH8b{_gDA zv)Hj~E4J<2fFt}o?|t$PoV~6gF)bbe;r{Rq@kK^n7Lqd3;2A_!GnP6XMV33%UW@mxlRfp@i=IDa3@Msj3 zm7DR`x3&_5^HEV(gU0q&^oY5tS)Ygjp;xc6A6(T$;9)Tf|h)qa^hj)O1oVR}f9Z42SD$0?PnTn0uHsSd3jdBXBnuhE<<5)9#Ya0k(d&T_@rn=#fH&Qq#`vV9?@~3d_LOF-hM9pZr=P~Kg7gF zaQ(UB*zrSVdxwwggM;HmT)KP~`}S|gp1oUf?!r-m%xSKlQ*d^@M6hv$o5vNnx?RGW zg3>%LloS+|7ofD79-n9%n;c0a^dedXAUPuuh2^=Zp|{qTF5!jGE=)&Uatwka^d&

5<`%vCK?zrykKtxJ_e}K1rNT=&p;YFmAL1kp7ps~3Q)3a0P8SF(q zku)tk9htc~C@3j5ualgfMnrEiuO!dkH#BPJ^6EM}SJyWnr#J_N6$L1-D>E;Vnv;Tp z@_Y2d>781 z-iK>Wrx6w9hqSa9xVvA&mCNT49O94b*RLTvI~$9O%a|CS!NlY&28YJ+=+P@oPR*ge zzaLMYKEUHg575Nxkx7FM4GY8#S7&}kUwF9Ru-A!<2t!_e7ILyPk)4x{k>NqyTwO#@ ze;W!*GRdaOFf!GLj_xK5j`fqtbnrgLBPA;XLHyq|vX7k764bSIptZLjrL_&Hq_<4Z z&NG7ziHN4Lhhunrg5GqThFMDXm2E)m?(JouETb9ag6|vV|5ue6BZyB(;^zxPWK

  • *Z|VVMgEBfMNn+Ee*J#vja`t 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 D;T5;R diff --git a/Shaders/Texture.wgsl b/Shaders/Cubes.wgsl similarity index 97% rename from Shaders/Texture.wgsl rename to Shaders/Cubes.wgsl index 225f93b..e5a1dc9 100644 --- a/Shaders/Texture.wgsl +++ b/Shaders/Cubes.wgsl @@ -1,4 +1,4 @@ -// Vertex shader +// Vertex struct InstanceInput { [[location(5)]] model_matrix_0: vec4; @@ -44,7 +44,7 @@ fn main( return out; } -// Fragment shader +// Fragment [[group(0), binding(0)]] var t_diffuse: texture_2d; diff --git a/Shaders/Rainbow.wgsl b/Shaders/Triangle.wgsl similarity index 93% rename from Shaders/Rainbow.wgsl rename to Shaders/Triangle.wgsl index 162691c..0a712b4 100644 --- a/Shaders/Rainbow.wgsl +++ b/Shaders/Triangle.wgsl @@ -1,4 +1,4 @@ -// Vertex shader +// Vertex struct VertexInput { [[location(0)]] position: vec3; @@ -20,7 +20,7 @@ fn main( return out; } -// Fragment shader +// Fragment [[stage(fragment)]] fn main(in: VertexOutput) -> [[location(0)]] vec4 { diff --git a/Source/Camera/Camera.rs b/Source/Camera/Camera.rs new file mode 100644 index 0000000..5302ea9 --- /dev/null +++ b/Source/Camera/Camera.rs @@ -0,0 +1,20 @@ +use super::OPENGL_TO_WGPU_MATRIX; + +pub struct Camera { + pub eye: cgmath::Point3, + pub target: cgmath::Point3, + pub up: cgmath::Vector3, + pub aspect: f32, + pub fovy: f32, + pub znear: f32, + pub zfar: f32, +} + +impl Camera { + pub fn BuildViewProjectionMatrix(&self) -> cgmath::Matrix4 { + let view = cgmath::Matrix4::look_at_rh(self.eye, self.target, self.up); + let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar); + + OPENGL_TO_WGPU_MATRIX * proj * view + } +} diff --git a/Source/Camera.rs b/Source/Camera/CameraController.rs similarity index 68% rename from Source/Camera.rs rename to Source/Camera/CameraController.rs index 6695b1e..76a8558 100644 --- a/Source/Camera.rs +++ b/Source/Camera/CameraController.rs @@ -1,55 +1,6 @@ -use bytemuck::{Pod, Zeroable}; +use super::Camera; use winit::event::*; -#[rustfmt::skip] -pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4 = cgmath::Matrix4::new( - 1.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0, 0.0, - 0.0, 0.0, 0.5, 0.0, - 0.0, 0.0, 0.5, 1.0, -); - -pub struct Camera { - pub eye: cgmath::Point3, - pub target: cgmath::Point3, - pub up: cgmath::Vector3, - pub aspect: f32, - pub fovy: f32, - pub znear: f32, - pub zfar: f32, -} - -impl Camera { - pub fn build_view_projection_matrix(&self) -> cgmath::Matrix4 { - let view = cgmath::Matrix4::look_at_rh(self.eye, self.target, self.up); - let proj = cgmath::perspective(cgmath::Deg(self.fovy), self.aspect, self.znear, self.zfar); - - OPENGL_TO_WGPU_MATRIX * proj * view - } -} - -// This is so we can store this in a buffer -#[repr(C)] -#[derive(Debug, Copy, Clone, Pod, Zeroable)] -pub struct CameraUniform { - // We can't use cgmath with bytemuck directly so we'll have - // to convert the Matrix4 into a 4x4 f32 array - pub view_proj: [[f32; 4]; 4], -} - -impl CameraUniform { - pub fn new() -> Self { - use cgmath::SquareMatrix; - Self { - view_proj: cgmath::Matrix4::identity().into(), - } - } - - pub fn update_view_proj(&mut self, camera: &Camera) { - self.view_proj = camera.build_view_projection_matrix().into(); - } -} - pub struct CameraController { pub speed: f32, pub is_up_pressed: bool, @@ -61,7 +12,7 @@ pub struct CameraController { } impl CameraController { - pub fn new(speed: f32) -> Self { + pub fn New(speed: f32) -> Self { Self { speed, is_up_pressed: false, @@ -73,7 +24,7 @@ impl CameraController { } } - pub fn process_events(&mut self, event: &WindowEvent) -> bool { + pub fn ProcessEvents(&mut self, event: &WindowEvent) -> bool { match event { WindowEvent::KeyboardInput { input: @@ -117,7 +68,7 @@ impl CameraController { } } - pub fn update_camera(&self, camera: &mut Camera) { + pub fn UpdateCamera(&self, camera: &mut Camera) { use cgmath::InnerSpace; let forward = camera.target - camera.eye; diff --git a/Source/Camera/CameraUniform.rs b/Source/Camera/CameraUniform.rs new file mode 100644 index 0000000..da5a76c --- /dev/null +++ b/Source/Camera/CameraUniform.rs @@ -0,0 +1,24 @@ +use super::Camera; +use bytemuck::{Pod, Zeroable}; +use cgmath::SquareMatrix; + +// This is so we can store this in a buffer +#[repr(C)] +#[derive(Debug, Copy, Clone, Pod, Zeroable)] +pub struct CameraUniform { + // We can't use cgmath with bytemuck directly so we'll have + // to convert the Matrix4 into a 4x4 f32 array + pub view_proj: [[f32; 4]; 4], +} + +impl CameraUniform { + pub fn New() -> Self { + Self { + view_proj: cgmath::Matrix4::identity().into(), + } + } + + pub fn UpdateViewProjection(&mut self, camera: &Camera) { + self.view_proj = camera.BuildViewProjectionMatrix().into(); + } +} diff --git a/Source/Camera/mod.rs b/Source/Camera/mod.rs new file mode 100644 index 0000000..b9bbdde --- /dev/null +++ b/Source/Camera/mod.rs @@ -0,0 +1,20 @@ +/// Matrix to scale and translate from OpenGL coordinate system to WGPU. +#[rustfmt::skip] +pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4 = cgmath::Matrix4::new( + 1.0, 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0, 0.0, + 0.0, 0.0, 0.5, 0.0, + 0.0, 0.0, 0.5, 1.0, +); + +#[path = "Camera.rs"] +mod _Camera; +pub use self::_Camera::*; + +#[path = "CameraController.rs"] +mod _CameraController; +pub use self::_CameraController::*; + +#[path = "CameraUniform.rs"] +mod _CameraUniform; +pub use self::_CameraUniform::*; diff --git a/Source/Display.rs b/Source/Display.rs new file mode 100644 index 0000000..cc64e75 --- /dev/null +++ b/Source/Display.rs @@ -0,0 +1,65 @@ +use anyhow::Result; +use winit::window::Window; + +/// A handler to system window and render adapter. +pub struct Display { + pub surface: wgpu::Surface, + pub window: Window, + pub config: wgpu::SurfaceConfiguration, + pub device: wgpu::Device, + pub queue: wgpu::Queue, +} + +impl Display { + pub async fn New(window: Window) -> Result { + let size = window.inner_size(); + + let instance = wgpu::Instance::new(wgpu::Backends::all()); + let surface = unsafe { instance.create_surface(&window) }; + + let adapter = instance + .request_adapter(&wgpu::RequestAdapterOptions { + power_preference: wgpu::PowerPreference::default(), + compatible_surface: Some(&surface), + force_fallback_adapter: false, + }) + .await + .unwrap(); + + let (device, queue) = adapter + .request_device( + &wgpu::DeviceDescriptor { + label: None, + features: wgpu::Features::empty(), + limits: wgpu::Limits::default(), + }, + None, + ) + .await + .unwrap(); + + let config = wgpu::SurfaceConfiguration { + usage: wgpu::TextureUsages::RENDER_ATTACHMENT, + format: surface.get_preferred_format(&adapter).unwrap(), + width: size.width, + height: size.height, + present_mode: wgpu::PresentMode::Fifo, + }; + + surface.configure(&device, &config); + + Ok(Self { + surface, + window, + config, + device, + queue, + }) + } + + pub fn Resize(&mut self, width: u32, height: u32) { + self.config.width = width; + self.config.height = height; + self.surface.configure(&self.device, &self.config); + } +} diff --git a/Source/Main.rs b/Source/Main.rs deleted file mode 100644 index 6ceac9e..0000000 --- a/Source/Main.rs +++ /dev/null @@ -1,5 +0,0 @@ -#![allow(non_snake_case)] - -fn main() { - Renderer::Main(); -} diff --git a/Source/Rainbow.rs b/Source/Rainbow.rs deleted file mode 100644 index 796aaa1..0000000 --- a/Source/Rainbow.rs +++ /dev/null @@ -1,307 +0,0 @@ -#![allow(non_snake_case)] - -use bytemuck::{Pod, Zeroable}; -use wgpu::util::DeviceExt; -use winit::dpi::LogicalSize; -use winit::event::*; -use winit::event_loop::{ControlFlow, EventLoop}; -use winit::window::Window; -use winit::window::WindowBuilder; - -#[repr(C)] -#[derive(Copy, Clone, Debug, Pod, Zeroable)] -struct Vertex { - position: [f32; 3], - color: [f32; 3], -} - -impl Vertex { - fn desc<'a>() -> wgpu::VertexBufferLayout<'a> { - wgpu::VertexBufferLayout { - array_stride: std::mem::size_of::() as wgpu::BufferAddress, - step_mode: wgpu::VertexStepMode::Vertex, - attributes: &[ - wgpu::VertexAttribute { - offset: 0, - shader_location: 0, - format: wgpu::VertexFormat::Float32x3, - }, - wgpu::VertexAttribute { - offset: std::mem::size_of::<[f32; 3]>() as wgpu::BufferAddress, - shader_location: 1, - format: wgpu::VertexFormat::Float32x3, - }, - ], - } - } -} - -#[rustfmt::skip] -const VERTICES: &[Vertex] = &[ - Vertex { position: [0.0, 0.5, 0.0], color: [1.0, 0.0, 0.0] }, - Vertex { position: [-0.5, -0.5, 0.0], color: [0.0, 1.0, 0.0] }, - Vertex { position: [0.5, -0.5, 0.0], color: [0.0, 0.0, 1.0] }, -]; - -#[rustfmt::skip] -const INDICES: &[u16] = &[ - 0, 1, 2, -]; - -struct State { - surface: wgpu::Surface, - device: wgpu::Device, - queue: wgpu::Queue, - config: wgpu::SurfaceConfiguration, - size: winit::dpi::PhysicalSize, - render_pipeline: wgpu::RenderPipeline, - vertex_buffer: wgpu::Buffer, - index_buffer: wgpu::Buffer, - num_indices: u32, -} - -impl State { - async fn new(window: &Window) -> Self { - let size = window.inner_size(); - - // The instance is a handle to our GPU - // Backends::all => Vulkan + Metal + DX12 + Browser WebGPU - let instance = wgpu::Instance::new(wgpu::Backends::all()); - - let surface = unsafe { instance.create_surface(window) }; - - let adapter = instance - .request_adapter(&wgpu::RequestAdapterOptions { - power_preference: wgpu::PowerPreference::HighPerformance, - compatible_surface: Some(&surface), - force_fallback_adapter: false, - }) - .await - .unwrap(); - - let (device, queue) = adapter - .request_device( - &wgpu::DeviceDescriptor { - features: wgpu::Features::empty(), - limits: wgpu::Limits::default(), - label: None, - }, - None, // Trace path - ) - .await - .unwrap(); - - let config = wgpu::SurfaceConfiguration { - usage: wgpu::TextureUsages::RENDER_ATTACHMENT, - format: surface.get_preferred_format(&adapter).unwrap(), - width: size.width, - height: size.height, - present_mode: wgpu::PresentMode::Fifo, - }; - - surface.configure(&device, &config); - - let shader = device.create_shader_module(&wgpu::ShaderModuleDescriptor { - label: Some("Shader"), - source: wgpu::ShaderSource::Wgsl(include_str!("../Shaders/Rainbow.wgsl").into()), - }); - - let render_pipeline_layout = - device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { - label: Some("Render Pipeline Layout"), - bind_group_layouts: &[], - push_constant_ranges: &[], - }); - - let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { - label: Some("Render Pipeline"), - layout: Some(&render_pipeline_layout), - vertex: wgpu::VertexState { - module: &shader, - entry_point: "main", - buffers: &[Vertex::desc()], - }, - fragment: Some(wgpu::FragmentState { - // 3. - module: &shader, - entry_point: "main", - targets: &[wgpu::ColorTargetState { - // 4. - format: config.format, - blend: Some(wgpu::BlendState::REPLACE), - write_mask: wgpu::ColorWrites::ALL, - }], - }), - primitive: wgpu::PrimitiveState { - topology: wgpu::PrimitiveTopology::TriangleList, // 1. - strip_index_format: None, - front_face: wgpu::FrontFace::Ccw, // 2. - cull_mode: Some(wgpu::Face::Back), - // Setting this to anything other than Fill requires Features::NON_FILL_POLYGON_MODE - polygon_mode: wgpu::PolygonMode::Fill, - // Requires Features::DEPTH_CLAMPING - clamp_depth: false, - // Requires Features::CONSERVATIVE_RASTERIZATION - conservative: false, - }, - depth_stencil: None, // 1. - multisample: wgpu::MultisampleState { - count: 1, // 2. - mask: !0, // 3. - alpha_to_coverage_enabled: false, // 4. - }, - }); - - let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { - label: Some("Vertex Buffer"), - contents: bytemuck::cast_slice(VERTICES), - usage: wgpu::BufferUsages::VERTEX, - }); - - let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { - label: Some("Index Buffer"), - contents: bytemuck::cast_slice(INDICES), - usage: wgpu::BufferUsages::INDEX, - }); - - let num_indices = INDICES.len() as u32; - - Self { - surface, - device, - queue, - config, - size, - render_pipeline, - vertex_buffer, - index_buffer, - num_indices, - } - } - - pub fn resize(&mut self, new_size: winit::dpi::PhysicalSize) { - if new_size.width > 0 && new_size.height > 0 { - self.size = new_size; - self.config.width = new_size.width; - self.config.height = new_size.height; - self.surface.configure(&self.device, &self.config); - } - } - - fn input(&mut self, _event: &WindowEvent) -> bool { - false - } - - fn update(&mut self) {} - - fn render(&mut self) -> Result<(), wgpu::SurfaceError> { - let output = self.surface.get_current_texture()?; - let view = output - .texture - .create_view(&wgpu::TextureViewDescriptor::default()); - - let mut encoder = self - .device - .create_command_encoder(&wgpu::CommandEncoderDescriptor { - label: Some("Render Encoder"), - }); - - { - let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: Some("Render Pass"), - color_attachments: &[ - // This is what [[location(0)]] in the fragment shader targets - wgpu::RenderPassColorAttachment { - view: &view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear(wgpu::Color { - r: 0.0, - g: 0.0, - b: 0.0, - a: 1.0, - }), - store: true, - }, - }, - ], - depth_stencil_attachment: None, - }); - - render_pass.set_pipeline(&self.render_pipeline); - render_pass.set_vertex_buffer(0, self.vertex_buffer.slice(..)); - render_pass.set_index_buffer(self.index_buffer.slice(..), wgpu::IndexFormat::Uint16); - render_pass.draw_indexed(0..self.num_indices, 0, 0..1); - } - - // submit will accept anything that implements IntoIter - self.queue.submit(std::iter::once(encoder.finish())); - output.present(); - - Ok(()) - } -} - -fn main() { - env_logger::init(); - - let event_loop = EventLoop::new(); - - let window = WindowBuilder::new() - .with_title("Renderer") - .with_inner_size(LogicalSize::new(1280, 720)) - .build(&event_loop) - .unwrap(); - - // State::new uses async code, so we're going to wait for it to finish - let mut state = pollster::block_on(State::new(&window)); - - event_loop.run(move |event, _, control_flow| { - match event { - Event::WindowEvent { - ref event, - window_id, - } if window_id == window.id() => { - if !state.input(event) { - match event { - WindowEvent::CloseRequested - | WindowEvent::KeyboardInput { - input: - KeyboardInput { - state: ElementState::Pressed, - virtual_keycode: Some(VirtualKeyCode::Escape), - .. - }, - .. - } => *control_flow = ControlFlow::Exit, - WindowEvent::Resized(physical_size) => { - state.resize(*physical_size); - } - WindowEvent::ScaleFactorChanged { new_inner_size, .. } => { - state.resize(**new_inner_size); - } - _ => {} - } - } - } - Event::RedrawRequested(_) => { - state.update(); - match state.render() { - Ok(_) => {} - // Reconfigure the surface if lost - Err(wgpu::SurfaceError::Lost) => state.resize(state.size), - // The system is out of memory, we should probably quit - Err(wgpu::SurfaceError::OutOfMemory) => *control_flow = ControlFlow::Exit, - // All other errors (Outdated, Timeout) should be resolved by the next frame - Err(e) => eprintln!("{:?}", e), - } - } - Event::MainEventsCleared => { - // RedrawRequested will only trigger once, unless we manually - // request it. - window.request_redraw(); - } - _ => {} - } - }); -} diff --git a/Source/DrawModel.rs b/Source/Render/DrawModel.rs similarity index 70% rename from Source/DrawModel.rs rename to Source/Render/DrawModel.rs index deb8bf1..fad8920 100644 --- a/Source/DrawModel.rs +++ b/Source/Render/DrawModel.rs @@ -1,22 +1,22 @@ -use crate::{Material, Mesh, Model}; +use super::{Material, Mesh, Model}; use std::ops::Range; pub trait DrawModel<'a> { - fn draw_mesh( + fn DrawMesh( &mut self, mesh: &'a Mesh, material: &'a Material, camera_bind_group: &'a wgpu::BindGroup, ); - fn draw_mesh_instanced( + fn DrawMeshInstanced( &mut self, mesh: &'a Mesh, material: &'a Material, instances: Range, camera_bind_group: &'a wgpu::BindGroup, ); - fn draw_model(&mut self, model: &'a Model, camera_bind_group: &'a wgpu::BindGroup); - fn draw_model_instanced( + fn DrawModel(&mut self, model: &'a Model, camera_bind_group: &'a wgpu::BindGroup); + fn DrawModelInstanced( &mut self, model: &'a Model, instances: Range, @@ -25,16 +25,16 @@ pub trait DrawModel<'a> { } impl<'a> DrawModel<'a> for wgpu::RenderPass<'a> { - fn draw_mesh( + fn DrawMesh( &mut self, mesh: &'a Mesh, material: &'a Material, camera_bind_group: &'a wgpu::BindGroup, ) { - self.draw_mesh_instanced(mesh, material, 0..1, camera_bind_group); + self.DrawMeshInstanced(mesh, material, 0..1, camera_bind_group); } - fn draw_mesh_instanced( + fn DrawMeshInstanced( &mut self, mesh: &'a Mesh, material: &'a Material, @@ -48,11 +48,11 @@ impl<'a> DrawModel<'a> for wgpu::RenderPass<'a> { self.draw_indexed(0..mesh.num_elements, 0, instances); } - fn draw_model(&mut self, model: &'a Model, camera_bind_group: &'a wgpu::BindGroup) { - self.draw_model_instanced(model, 0..1, camera_bind_group); + fn DrawModel(&mut self, model: &'a Model, camera_bind_group: &'a wgpu::BindGroup) { + self.DrawModelInstanced(model, 0..1, camera_bind_group); } - fn draw_model_instanced( + fn DrawModelInstanced( &mut self, model: &'a Model, instances: Range, @@ -60,7 +60,7 @@ impl<'a> DrawModel<'a> for wgpu::RenderPass<'a> { ) { for mesh in &model.meshes { let material = &model.materials[mesh.material]; - self.draw_mesh_instanced(mesh, material, instances.clone(), camera_bind_group); + self.DrawMeshInstanced(mesh, material, instances.clone(), camera_bind_group); } } } diff --git a/Source/Instance.rs b/Source/Render/Instance.rs similarity index 96% rename from Source/Instance.rs rename to Source/Render/Instance.rs index 3b65423..398fcc6 100644 --- a/Source/Instance.rs +++ b/Source/Render/Instance.rs @@ -16,7 +16,7 @@ pub struct Instance { } impl Instance { - pub fn to_raw(&self) -> InstanceRaw { + pub fn ToRaw(&self) -> InstanceRaw { InstanceRaw { model: (cgmath::Matrix4::from_translation(self.position) * cgmath::Matrix4::from(self.rotation)) @@ -32,7 +32,7 @@ pub struct InstanceRaw { } impl InstanceRaw { - pub fn desc<'a>() -> wgpu::VertexBufferLayout<'a> { + pub fn GetDescriptor<'a>() -> wgpu::VertexBufferLayout<'a> { wgpu::VertexBufferLayout { array_stride: mem::size_of::() as wgpu::BufferAddress, // We need to switch from using a step mode of Vertex to Instance diff --git a/Source/Material.rs b/Source/Render/Material.rs similarity index 85% rename from Source/Material.rs rename to Source/Render/Material.rs index 07df852..0e03bbc 100644 --- a/Source/Material.rs +++ b/Source/Render/Material.rs @@ -1,4 +1,4 @@ -use crate::Texture; +use super::Texture; pub struct Material { pub name: String, diff --git a/Source/Mesh.rs b/Source/Render/Mesh.rs similarity index 100% rename from Source/Mesh.rs rename to Source/Render/Mesh.rs diff --git a/Source/Model.rs b/Source/Render/Model.rs similarity index 95% rename from Source/Model.rs rename to Source/Render/Model.rs index 4620dbf..637e964 100644 --- a/Source/Model.rs +++ b/Source/Render/Model.rs @@ -1,5 +1,5 @@ -use crate::Texture; -use crate::{Material, Mesh, Vertex}; +use super::Texture; +use super::{Material, Mesh, Vertex}; use anyhow::Result; use bytemuck::{Pod, Zeroable}; use std::path::Path; @@ -12,7 +12,7 @@ pub struct Model { } impl Model { - pub fn load>( + pub fn Load>( device: &wgpu::Device, queue: &wgpu::Queue, layout: &wgpu::BindGroupLayout, @@ -36,7 +36,7 @@ impl Model { for mat in obj_materials { let diffuse_path = mat.diffuse_texture; let diffuse_texture = - Texture::load(device, queue, containing_folder.join(diffuse_path))?; + Texture::Load(device, queue, containing_folder.join(diffuse_path))?; let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { layout, @@ -112,7 +112,7 @@ pub struct ModelVertex { } impl Vertex for ModelVertex { - fn desc<'a>() -> wgpu::VertexBufferLayout<'a> { + fn GetDescriptor<'a>() -> wgpu::VertexBufferLayout<'a> { use std::mem; wgpu::VertexBufferLayout { array_stride: mem::size_of::() as wgpu::BufferAddress, diff --git a/Source/Texture.rs b/Source/Render/Texture.rs similarity index 87% rename from Source/Texture.rs rename to Source/Render/Texture.rs index 66a29a9..9eb1c7c 100644 --- a/Source/Texture.rs +++ b/Source/Render/Texture.rs @@ -2,6 +2,21 @@ use anyhow::*; use image::GenericImageView; use std::path::Path; +/// Texture coordinates. +/// +/// ```no_run +/// (0.0) (1.0) +/// V1 ----------------- V2 +/// | / | +/// | Q1 / | +/// | / | +/// | / | +/// | / | +/// | / Q2 | +/// | / | +/// V3 ----------------- V4 +/// (0.1) (1.1) +/// ``` pub struct Texture { pub texture: wgpu::Texture, pub view: wgpu::TextureView, @@ -10,7 +25,8 @@ pub struct Texture { impl Texture { pub const DEPTH_FORMAT: wgpu::TextureFormat = wgpu::TextureFormat::Depth32Float; - pub fn load>( + + pub fn Load>( device: &wgpu::Device, queue: &wgpu::Queue, path: P, @@ -20,20 +36,20 @@ impl Texture { let label = path_copy.to_str(); let img = image::open(path)?; - Self::from_image(device, queue, &img, label) + Self::FromImage(device, queue, &img, label) } - pub fn from_bytes( + pub fn FromBytes( device: &wgpu::Device, queue: &wgpu::Queue, bytes: &[u8], label: &str, ) -> Result { let img = image::load_from_memory(bytes)?; - Self::from_image(device, queue, &img, Some(label)) + Self::FromImage(device, queue, &img, Some(label)) } - pub fn from_image( + pub fn FromImage( device: &wgpu::Device, queue: &wgpu::Queue, img: &image::DynamicImage, @@ -93,7 +109,7 @@ impl Texture { }) } - pub fn create_depth_texture( + pub fn CreateDepthTexture( device: &wgpu::Device, config: &wgpu::SurfaceConfiguration, label: &str, diff --git a/Source/Render/Vertex.rs b/Source/Render/Vertex.rs new file mode 100644 index 0000000..d563843 --- /dev/null +++ b/Source/Render/Vertex.rs @@ -0,0 +1,3 @@ +pub trait Vertex { + fn GetDescriptor<'a>() -> wgpu::VertexBufferLayout<'a>; +} diff --git a/Source/Render/mod.rs b/Source/Render/mod.rs new file mode 100644 index 0000000..9745912 --- /dev/null +++ b/Source/Render/mod.rs @@ -0,0 +1,27 @@ +#[path = "DrawModel.rs"] +mod _DrawModel; +pub use self::_DrawModel::*; + +#[path = "Instance.rs"] +mod _Instance; +pub use self::_Instance::*; + +#[path = "Material.rs"] +mod _Material; +pub use self::_Material::*; + +#[path = "Model.rs"] +mod _Model; +pub use self::_Model::*; + +#[path = "Mesh.rs"] +mod _Mesh; +pub use self::_Mesh::*; + +#[path = "Texture.rs"] +mod _Texture; +pub use self::_Texture::*; + +#[path = "Vertex.rs"] +mod _Vertex; +pub use self::_Vertex::*; diff --git a/Source/Runtime.rs b/Source/Runtime.rs new file mode 100644 index 0000000..24d060d --- /dev/null +++ b/Source/Runtime.rs @@ -0,0 +1,109 @@ +use crate::{Display, State}; +use anyhow::Result; +use std::time::Instant; +use winit::dpi::LogicalSize; +use winit::event::*; +use winit::event_loop::{ControlFlow, EventLoop}; +use winit::window::WindowBuilder; + +/// Runtime state executor and event loop. +pub struct Runtime; + +impl Runtime { + pub fn Execute() -> Result<()> { + env_logger::init(); + + let event_loop = EventLoop::new(); + + let window = WindowBuilder::new() + .with_title("Graphics") + .with_inner_size(LogicalSize::new(1280, 720)) + .build(&event_loop)?; + + let mut display = pollster::block_on(Display::New(window))?; + + let mut app = T::Init(&display)?; + + let mut last_update = Instant::now(); + + let mut is_resumed = true; + let mut is_focused = true; + let mut is_redraw_requested = true; + + event_loop.run(move |event, _, control_flow| { + *control_flow = if is_resumed && is_focused { + ControlFlow::Poll + } else { + ControlFlow::Wait + }; + + match event { + Event::Resumed => is_resumed = true, + Event::Suspended => is_resumed = false, + Event::RedrawRequested(window_id) => { + if window_id == display.window.id() { + let now = Instant::now(); + let delta = now - last_update; + last_update = now; + + app.Update(&display, delta); + + match app.Draw(&mut display) { + Ok(_) => {} + // Reconfigure the surface if lost + Err(wgpu::SurfaceError::Lost) => { + let size = display.window.inner_size(); + display.Resize(size.width, size.height); + app.Resize(&display); + } + // The system is out of memory, we should probably quit + Err(wgpu::SurfaceError::OutOfMemory) => { + *control_flow = ControlFlow::Exit + } + // All other errors (Outdated, Timeout) should be resolved by the next frame + Err(e) => eprintln!("{:?}", e), + } + + is_redraw_requested = false; + } + } + Event::MainEventsCleared => { + if is_focused && is_resumed && !is_redraw_requested { + display.window.request_redraw(); + is_redraw_requested = true; + } else { + // Freeze time while the app is not in the foreground + last_update = Instant::now(); + } + } + Event::WindowEvent { event, window_id } if window_id == display.window.id() => { + if !app.Input(&display, &event) { + match event { + WindowEvent::CloseRequested + | WindowEvent::KeyboardInput { + input: + KeyboardInput { + state: ElementState::Pressed, + virtual_keycode: Some(VirtualKeyCode::Escape), + .. + }, + .. + } => *control_flow = ControlFlow::Exit, + WindowEvent::Focused(focused) => is_focused = focused, + WindowEvent::ScaleFactorChanged { new_inner_size, .. } => { + display.Resize(new_inner_size.width, new_inner_size.height); + app.Resize(&display); + } + WindowEvent::Resized(physical_size) => { + display.Resize(physical_size.width, physical_size.height); + app.Resize(&display); + } + _ => {} + } + } + } + _ => {} + } + }) + } +} diff --git a/Source/State.rs b/Source/State.rs new file mode 100644 index 0000000..24164ff --- /dev/null +++ b/Source/State.rs @@ -0,0 +1,13 @@ +use crate::Display; +use anyhow::Result; +use std::time::Duration; +use winit::event::*; + +/// Represents a application with reactive state. +pub trait State: Sized + 'static { + fn Init(display: &Display) -> Result; + fn Input(&mut self, display: &Display, event: &WindowEvent) -> bool; + fn Update(&mut self, display: &Display, delta: Duration); + fn Resize(&mut self, display: &Display); + fn Draw(&mut self, display: &mut Display) -> Result<(), wgpu::SurfaceError>; +} diff --git a/Source/Vertex.rs b/Source/Vertex.rs deleted file mode 100644 index 4ec298f..0000000 --- a/Source/Vertex.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub trait Vertex { - fn desc<'a>() -> wgpu::VertexBufferLayout<'a>; -} diff --git a/Source/lib.rs b/Source/lib.rs index 8e2fd1a..0a98d61 100644 --- a/Source/lib.rs +++ b/Source/lib.rs @@ -1,445 +1,16 @@ #![allow(non_snake_case)] -#[path = "Camera.rs"] -mod _Camera; -pub use self::_Camera::*; +pub mod Camera; +pub mod Render; -#[path = "DrawModel.rs"] -mod _DrawModel; -pub use self::_DrawModel::*; +#[path = "Display.rs"] +mod _Display; +pub use self::_Display::*; -#[path = "Instance.rs"] -mod _Instance; -pub use self::_Instance::*; +#[path = "Runtime.rs"] +mod _Runtime; +pub use self::_Runtime::*; -#[path = "Material.rs"] -mod _Material; -pub use self::_Material::*; - -#[path = "Model.rs"] -mod _Model; -pub use self::_Model::*; - -#[path = "Mesh.rs"] -mod _Mesh; -pub use self::_Mesh::*; - -#[path = "Texture.rs"] -mod _Texture; -pub use self::_Texture::*; - -#[path = "Vertex.rs"] -mod _Vertex; -pub use self::_Vertex::*; - -use bytemuck::{Pod, Zeroable}; -use cgmath::prelude::*; -use image::GenericImageView; -use std::mem; -use std::path::PathBuf; -use wgpu::util::DeviceExt; -use winit::dpi::LogicalSize; -use winit::event::*; -use winit::event_loop::{ControlFlow, EventLoop}; -use winit::window::Window; -use winit::window::WindowBuilder; - -pub struct State { - surface: wgpu::Surface, - device: wgpu::Device, - queue: wgpu::Queue, - config: wgpu::SurfaceConfiguration, - size: winit::dpi::PhysicalSize, - render_pipeline: wgpu::RenderPipeline, - obj_model: Model, - camera: Camera, - camera_controller: CameraController, - camera_uniform: CameraUniform, - camera_buffer: wgpu::Buffer, - camera_bind_group: wgpu::BindGroup, - instances: Vec, - instance_buffer: wgpu::Buffer, - depth_texture: Texture, -} - -impl State { - async fn new(window: &Window) -> Self { - let size = window.inner_size(); - - // The instance is a handle to our GPU - // BackendBit::PRIMARY => Vulkan + Metal + DX12 + Browser WebGPU - let instance = wgpu::Instance::new(wgpu::Backends::all()); - - let surface = unsafe { instance.create_surface(window) }; - - let adapter = instance - .request_adapter(&wgpu::RequestAdapterOptions { - power_preference: wgpu::PowerPreference::default(), - compatible_surface: Some(&surface), - force_fallback_adapter: false, - }) - .await - .unwrap(); - - let (device, queue) = adapter - .request_device( - &wgpu::DeviceDescriptor { - label: None, - features: wgpu::Features::empty(), - limits: wgpu::Limits::default(), - }, - None, - ) - .await - .unwrap(); - - let config = wgpu::SurfaceConfiguration { - usage: wgpu::TextureUsages::RENDER_ATTACHMENT, - format: surface.get_preferred_format(&adapter).unwrap(), - width: size.width, - height: size.height, - present_mode: wgpu::PresentMode::Fifo, - }; - - surface.configure(&device, &config); - - let texture_bind_group_layout = - device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { - entries: &[ - wgpu::BindGroupLayoutEntry { - binding: 0, - visibility: wgpu::ShaderStages::FRAGMENT, - ty: wgpu::BindingType::Texture { - multisampled: false, - view_dimension: wgpu::TextureViewDimension::D2, - sample_type: wgpu::TextureSampleType::Float { filterable: true }, - }, - count: None, - }, - wgpu::BindGroupLayoutEntry { - binding: 1, - visibility: wgpu::ShaderStages::FRAGMENT, - ty: wgpu::BindingType::Sampler { - comparison: false, - filtering: true, - }, - count: None, - }, - ], - label: Some("texture_bind_group_layout"), - }); - - // Camera - - let camera = Camera { - eye: (0.0, 5.0, -10.0).into(), - target: (0.0, 0.0, 0.0).into(), - up: cgmath::Vector3::unit_y(), - aspect: config.width as f32 / config.height as f32, - fovy: 45.0, - znear: 0.1, - zfar: 100.0, - }; - let camera_controller = CameraController::new(0.2); - - let mut camera_uniform = CameraUniform::new(); - camera_uniform.update_view_proj(&camera); - - let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { - label: Some("Camera Buffer"), - contents: bytemuck::cast_slice(&[camera_uniform]), - usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, - }); - - const SPACE_BETWEEN: f32 = 3.0; - let instances = (0..NUM_INSTANCES_PER_ROW) - .flat_map(|z| { - (0..NUM_INSTANCES_PER_ROW).map(move |x| { - let x = SPACE_BETWEEN * (x as f32 - NUM_INSTANCES_PER_ROW as f32 / 2.0); - let z = SPACE_BETWEEN * (z as f32 - NUM_INSTANCES_PER_ROW as f32 / 2.0); - - let position = cgmath::Vector3 { x, y: 0.0, z }; - - let rotation = if position.is_zero() { - cgmath::Quaternion::from_axis_angle( - cgmath::Vector3::unit_z(), - cgmath::Deg(0.0), - ) - } else { - cgmath::Quaternion::from_axis_angle(position.normalize(), cgmath::Deg(45.0)) - }; - - Instance { position, rotation } - }) - }) - .collect::>(); - - let instance_data = instances.iter().map(Instance::to_raw).collect::>(); - let instance_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { - label: Some("Instance Buffer"), - contents: bytemuck::cast_slice(&instance_data), - usage: wgpu::BufferUsages::VERTEX, - }); - - let camera_bind_group_layout = - device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { - 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, - }], - label: Some("camera_bind_group_layout"), - }); - - let camera_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { - layout: &camera_bind_group_layout, - entries: &[wgpu::BindGroupEntry { - binding: 0, - resource: camera_buffer.as_entire_binding(), - }], - label: Some("camera_bind_group"), - }); - - // Model - - let obj_model = Model::load( - &device, - &queue, - &texture_bind_group_layout, - PathBuf::from("./Resources/Cube.obj"), - ) - .unwrap(); - - // Shader - - let shader = device.create_shader_module(&wgpu::ShaderModuleDescriptor { - label: Some("shader.wgsl"), - source: wgpu::ShaderSource::Wgsl(include_str!("../Shaders/Texture.wgsl").into()), - }); - - // Texture - - let depth_texture = Texture::create_depth_texture(&device, &config, "depth_texture"); - - // Pipeline - - let render_pipeline_layout = - device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { - label: Some("Render Pipeline Layout"), - bind_group_layouts: &[&texture_bind_group_layout, &camera_bind_group_layout], - push_constant_ranges: &[], - }); - - let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { - label: Some("Render Pipeline"), - layout: Some(&render_pipeline_layout), - vertex: wgpu::VertexState { - module: &shader, - entry_point: "main", - buffers: &[ModelVertex::desc(), InstanceRaw::desc()], - }, - fragment: Some(wgpu::FragmentState { - module: &shader, - entry_point: "main", - targets: &[wgpu::ColorTargetState { - format: config.format, - blend: Some(wgpu::BlendState { - color: wgpu::BlendComponent::REPLACE, - alpha: wgpu::BlendComponent::REPLACE, - }), - write_mask: wgpu::ColorWrites::ALL, - }], - }), - primitive: wgpu::PrimitiveState { - topology: wgpu::PrimitiveTopology::TriangleList, - strip_index_format: None, - front_face: wgpu::FrontFace::Ccw, - cull_mode: Some(wgpu::Face::Back), - // Setting this to anything other than Fill requires Features::NON_FILL_POLYGON_MODE - polygon_mode: wgpu::PolygonMode::Fill, - // Requires Features::DEPTH_CLAMPING - clamp_depth: false, - // Requires Features::CONSERVATIVE_RASTERIZATION - conservative: false, - }, - depth_stencil: Some(wgpu::DepthStencilState { - format: Texture::DEPTH_FORMAT, - depth_write_enabled: true, - depth_compare: wgpu::CompareFunction::Less, - stencil: wgpu::StencilState::default(), - bias: wgpu::DepthBiasState::default(), - }), - multisample: wgpu::MultisampleState { - count: 1, - mask: !0, - alpha_to_coverage_enabled: false, - }, - }); - - Self { - surface, - device, - queue, - config, - size, - render_pipeline, - obj_model, - camera, - camera_controller, - camera_buffer, - camera_bind_group, - camera_uniform, - instances, - instance_buffer, - depth_texture, - } - } - - pub fn resize(&mut self, new_size: winit::dpi::PhysicalSize) { - if new_size.width > 0 && new_size.height > 0 { - self.size = new_size; - self.config.width = new_size.width; - self.config.height = new_size.height; - self.surface.configure(&self.device, &self.config); - } - self.depth_texture = - Texture::create_depth_texture(&self.device, &self.config, "depth_texture"); - } - - fn input(&mut self, event: &WindowEvent) -> bool { - self.camera_controller.process_events(event) - } - - fn update(&mut self) { - self.camera_controller.update_camera(&mut self.camera); - self.camera_uniform.update_view_proj(&self.camera); - self.queue.write_buffer( - &self.camera_buffer, - 0, - bytemuck::cast_slice(&[self.camera_uniform]), - ); - } - - fn render(&mut self) -> Result<(), wgpu::SurfaceError> { - let output = self.surface.get_current_texture()?; - let view = output - .texture - .create_view(&wgpu::TextureViewDescriptor::default()); - - let mut encoder = self - .device - .create_command_encoder(&wgpu::CommandEncoderDescriptor { - label: Some("Render Encoder"), - }); - - { - let mut render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { - label: Some("Render Pass"), - color_attachments: &[wgpu::RenderPassColorAttachment { - view: &view, - resolve_target: None, - ops: wgpu::Operations { - load: wgpu::LoadOp::Clear(wgpu::Color { - r: 0.1, - g: 0.2, - b: 0.3, - a: 1.0, - }), - store: true, - }, - }], - depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment { - view: &self.depth_texture.view, - depth_ops: Some(wgpu::Operations { - load: wgpu::LoadOp::Clear(1.0), - store: true, - }), - stencil_ops: None, - }), - }); - - render_pass.set_vertex_buffer(1, self.instance_buffer.slice(..)); - render_pass.set_pipeline(&self.render_pipeline); - render_pass.draw_model_instanced( - &self.obj_model, - 0..self.instances.len() as u32, - &self.camera_bind_group, - ); - } - - self.queue.submit(std::iter::once(encoder.finish())); - output.present(); - - Ok(()) - } -} - -#[doc(hidden)] -pub fn Main() { - env_logger::init(); - - let event_loop = EventLoop::new(); - - let window = WindowBuilder::new() - .with_title("Renderer") - .with_inner_size(LogicalSize::new(1280, 720)) - .build(&event_loop) - .unwrap(); - - // State::new uses async code, so we're going to wait for it to finish - let mut state = pollster::block_on(State::new(&window)); - - event_loop.run(move |event, _, control_flow| { - match event { - Event::WindowEvent { - ref event, - window_id, - } if window_id == window.id() => { - if !state.input(event) { - match event { - WindowEvent::CloseRequested - | WindowEvent::KeyboardInput { - input: - KeyboardInput { - state: ElementState::Pressed, - virtual_keycode: Some(VirtualKeyCode::Escape), - .. - }, - .. - } => *control_flow = ControlFlow::Exit, - WindowEvent::Resized(physical_size) => { - state.resize(*physical_size); - } - WindowEvent::ScaleFactorChanged { new_inner_size, .. } => { - state.resize(**new_inner_size); - } - _ => {} - } - } - } - Event::RedrawRequested(_) => { - state.update(); - match state.render() { - Ok(_) => {} - // Reconfigure the surface if lost - Err(wgpu::SurfaceError::Lost) => state.resize(state.size), - // The system is out of memory, we should probably quit - Err(wgpu::SurfaceError::OutOfMemory) => *control_flow = ControlFlow::Exit, - // All other errors (Outdated, Timeout) should be resolved by the next frame - Err(e) => eprintln!("{:?}", e), - } - } - Event::MainEventsCleared => { - // RedrawRequested will only trigger once, unless we manually - // request it. - window.request_redraw(); - } - _ => {} - } - }); -} +#[path = "State.rs"] +mod _State; +pub use self::_State::*;