From b31035bf03e0843fb516bee065f9a010424ba546 Mon Sep 17 00:00:00 2001 From: tcmal Date: Sun, 25 Aug 2024 17:44:20 +0100 Subject: refactor(render): update gfx-hal and use staging and index buffers. also some minor changes to types because of deprecation and a bunch of readability improvements --- examples/render-quad/Cargo.toml | 14 ++++++ examples/render-quad/README.md | 3 ++ examples/render-quad/src/main.rs | 87 +++++++++++++++++++++++++++++++++++ examples/render-triangles/Cargo.toml | 14 ------ examples/render-triangles/README.md | 3 -- examples/render-triangles/src/main.rs | 80 -------------------------------- 6 files changed, 104 insertions(+), 97 deletions(-) create mode 100644 examples/render-quad/Cargo.toml create mode 100644 examples/render-quad/README.md create mode 100644 examples/render-quad/src/main.rs delete mode 100644 examples/render-triangles/Cargo.toml delete mode 100644 examples/render-triangles/README.md delete mode 100644 examples/render-triangles/src/main.rs (limited to 'examples') diff --git a/examples/render-quad/Cargo.toml b/examples/render-quad/Cargo.toml new file mode 100644 index 0000000..6f75543 --- /dev/null +++ b/examples/render-quad/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "render-triangles" +version = "0.1.0" +authors = ["Oscar "] + +[dependencies] +stockton-render = { path = "../../stockton-render", features = ["vulkan"] } +stockton-types = { path = "../../stockton-types" } +stockton-bsp = "2.0.0" +winit = "^0.21" +log = "0.4.0" +simple_logger = "1.0" +rand = "0.7" + diff --git a/examples/render-quad/README.md b/examples/render-quad/README.md new file mode 100644 index 0000000..c129ff6 --- /dev/null +++ b/examples/render-quad/README.md @@ -0,0 +1,3 @@ +# render-quad + +Renders a rainbow quad. The top-left corner follows your mouse. \ No newline at end of file diff --git a/examples/render-quad/src/main.rs b/examples/render-quad/src/main.rs new file mode 100644 index 0000000..d0993ea --- /dev/null +++ b/examples/render-quad/src/main.rs @@ -0,0 +1,87 @@ +// Copyright (C) Oscar Shrimpton 2019 + +// This program is free software: you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) +// any later version. + +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. + +// You should have received a copy of the GNU General Public License along +// with this program. If not, see . + +//! Renders ./example.bsp + +extern crate stockton_types; +extern crate stockton_bsp; +extern crate stockton_render; +extern crate winit; +extern crate simple_logger; +extern crate rand; + +use stockton_render::draw::{RenderingContext, UVPoint}; +use stockton_types::{Vector2, Vector3}; + +use winit::{ + event::{Event, WindowEvent}, + event_loop::{ControlFlow, EventLoop}, + window::WindowBuilder +}; + +fn main() { + + simple_logger::init().unwrap(); + + // Create the renderer. + + let event_loop = EventLoop::new(); + let window = WindowBuilder::new().build(&event_loop).unwrap(); + let mut ctx = RenderingContext::new(&window).unwrap(); + + ctx.vert_buffer[0] = UVPoint(Vector2::new(-0.5, -0.5), Vector3::new(1.0, 0.0, 0.0)); + ctx.vert_buffer[1] = UVPoint(Vector2::new(0.5, -0.5), Vector3::new(0.0, 1.0, 0.0)); + ctx.vert_buffer[2] = UVPoint(Vector2::new(0.5, 0.5), Vector3::new(0.0, 0.0, 1.0)); + ctx.vert_buffer[3] = UVPoint(Vector2::new(-0.5, 0.5), Vector3::new(1.0, 0.0, 1.0)); + + ctx.index_buffer[0] = (0, 1, 2); + ctx.index_buffer[1] = (0, 2, 3); + + event_loop.run(move |event, _, flow| { + *flow = ControlFlow::Poll; + + match event { + // TODO: Handle resize + Event::WindowEvent { + event: WindowEvent::CloseRequested, + .. + } => { + *flow = ControlFlow::Exit + }, + + Event::WindowEvent { + event: WindowEvent::CursorMoved { + position, + .. + }, + .. + } => { + let win_size = window.inner_size(); + let mouse_x: f32 = ((position.x / win_size.width as f64) * 2.0 - 1.0) as f32; + let mouse_y: f32 = ((position.y / win_size.height as f64) * 2.0 - 1.0) as f32; + + ctx.vert_buffer[0] = UVPoint(Vector2::new(mouse_x, mouse_y), Vector3::new(1.0, 0.0, 0.0)); + } + + Event::MainEventsCleared => { + window.request_redraw() + }, + Event::RedrawRequested(_) => { + ctx.draw_vertices().unwrap(); + } + _ => () + } + }); +} diff --git a/examples/render-triangles/Cargo.toml b/examples/render-triangles/Cargo.toml deleted file mode 100644 index 0b47393..0000000 --- a/examples/render-triangles/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "render-triangles" -version = "0.1.0" -authors = ["Oscar "] - -[dependencies] -stockton-render = { path = "../../stockton-render", features = ["vulkan"] } -stockton-types = { path = "../../stockton-types" } -stockton-bsp = "2.0.0" -winit = "0.19.1" -log = "0.4.0" -simple_logger = "1.0" -rand = "0.7" - diff --git a/examples/render-triangles/README.md b/examples/render-triangles/README.md deleted file mode 100644 index a048662..0000000 --- a/examples/render-triangles/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# render-triangles - -Renders rainbow triangles. Space adds a new random triangle, Escape exits. \ No newline at end of file diff --git a/examples/render-triangles/src/main.rs b/examples/render-triangles/src/main.rs deleted file mode 100644 index 63c589b..0000000 --- a/examples/render-triangles/src/main.rs +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (C) Oscar Shrimpton 2019 - -// This program is free software: you can redistribute it and/or modify it -// under the terms of the GNU General Public License as published by the Free -// Software Foundation, either version 3 of the License, or (at your option) -// any later version. - -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -// more details. - -// You should have received a copy of the GNU General Public License along -// with this program. If not, see . - -//! Renders ./example.bsp - -extern crate stockton_types; -extern crate stockton_bsp; -extern crate stockton_render; -extern crate winit; -extern crate simple_logger; -extern crate rand; - -use stockton_render::draw::{RenderingContext, Tri2}; -use stockton_types::Vector2; - -use winit::{Event, WindowEvent, VirtualKeyCode, ElementState}; -use rand::prelude::*; - -fn main() { - - simple_logger::init().unwrap(); - - // Create the renderer. - let mut ctx = RenderingContext::new().unwrap(); - let mut rng = thread_rng(); - let mut running = true; - let mut add_tri = false; - - while running { - ctx.events_loop.poll_events(|event| { - match event { - // TODO: Handle resize - Event::WindowEvent { - event: WindowEvent::KeyboardInput { input, .. }, - .. - } => match input.state { - ElementState::Released => match input.virtual_keycode { - Some(VirtualKeyCode::Escape) => running = false, - Some(VirtualKeyCode::Space) => add_tri = true, - _ => () - }, - _ => () - } - _ => () - } - }); - - if add_tri { - ctx.add_map_vert(Tri2 ([ - Vector2::new( - rng.gen_range(-1.0, 1.0), - rng.gen_range(-1.0, 1.0), - ), - Vector2::new( - rng.gen_range(-1.0, 1.0), - rng.gen_range(-1.0, 1.0), - ), - Vector2::new( - rng.gen_range(-1.0, 1.0), - rng.gen_range(-1.0, 1.0), - ) - ])).unwrap(); - add_tri = false; - } - - ctx.draw_vertices().unwrap(); - } -} -- cgit v1.2.3