pong and news

pull/480/head
Benjamin Hansen 11 months ago
parent 8b8e844b76
commit 48d4d1a353

1215
Cargo.lock generated

File diff suppressed because it is too large Load Diff

@ -16,5 +16,5 @@ members = [
] ]
exclude = [ exclude = [
"code/showcase/imgui-demo", "code/showcase/imgui-demo",
"code/showcase/pong", #"code/showcase/pong",
] ]

@ -13,17 +13,17 @@ path = "src/main.rs"
[dependencies] [dependencies]
cfg-if = "1" cfg-if = "1"
winit = "0.27" winit = "0.28"
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
wgpu = "0.16" wgpu = "0.16"
pollster = "0.2" pollster = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6" console_error_panic_hook = "0.1.6"
console_log = "0.2.0" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "=0.2.84" wasm-bindgen = "=0.2.86"
wasm-bindgen-futures = "0.4.30" wasm-bindgen-futures = "0.4.30"
web-sys = { version = "0.3.53", features = [ web-sys = { version = "0.3.53", features = [
"Document", "Document",

@ -9,15 +9,15 @@ crate-type = ["cdylib", "rlib"]
[dependencies] [dependencies]
cfg-if = "1" cfg-if = "1"
winit = "0.27" winit = "0.28"
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
wgpu = "0.16" wgpu = "0.16"
pollster = "0.2" pollster = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6" console_error_panic_hook = "0.1.6"
console_log = "0.2.0" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -9,15 +9,15 @@ crate-type = ["cdylib", "rlib"]
[dependencies] [dependencies]
cfg-if = "1" cfg-if = "1"
winit = "0.27" winit = "0.28"
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
wgpu = "0.16" wgpu = "0.16"
pollster = "0.2" pollster = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6" console_error_panic_hook = "0.1.6"
console_log = "0.2.0" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -10,17 +10,17 @@ crate-type = ["cdylib", "rlib"]
[dependencies] [dependencies]
cfg-if = "1" cfg-if = "1"
winit = "0.27" winit = "0.28"
wgpu = "0.16" wgpu = "0.16"
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
pollster = "0.2" pollster = "0.3"
# NEW! # NEW!
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -13,9 +13,9 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
pollster = "0.2" pollster = "0.3"
wgpu = "0.16" wgpu = "0.16"
winit = "0.27" winit = "0.28"
[dependencies.image] [dependencies.image]
version = "0.24" version = "0.24"
@ -24,7 +24,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -14,9 +14,9 @@ bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
pollster = "0.2" pollster = "0.3"
wgpu = "0.16" wgpu = "0.16"
winit = "0.27" winit = "0.28"
[dependencies.image] [dependencies.image]
version = "0.24" version = "0.24"
@ -25,7 +25,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -14,9 +14,9 @@ bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
pollster = "0.2" pollster = "0.3"
wgpu = "0.16" wgpu = "0.16"
winit = "0.27" winit = "0.28"
[dependencies.image] [dependencies.image]
version = "0.24" version = "0.24"
@ -25,7 +25,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -13,10 +13,10 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
log = "0.4" log = "0.4"
wgpu = "0.16" wgpu = "0.16"
winit = "0.27" winit = "0.28"
[dependencies.image] [dependencies.image]
version = "0.24" version = "0.24"
@ -25,7 +25,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -13,11 +13,11 @@ bytemuck = { version = "1.12", features = [ "derive" ] }
cfg-if = "1" cfg-if = "1"
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
log = "0.4" log = "0.4"
tobj = { version = "3.2", features = ["async"]} tobj = { version = "3.2", features = ["async"]}
wgpu = "0.16" wgpu = "0.16"
winit = "0.27" winit = "0.28"
[dependencies.image] [dependencies.image]
version = "0.24" version = "0.24"
@ -27,7 +27,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
reqwest = { version = "0.11" } reqwest = { version = "0.11" }
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -13,11 +13,11 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
log = "0.4" log = "0.4"
tobj = { version = "3.2", features = ["async"]} tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.16"} wgpu = { version = "0.16"}
winit = "0.27" winit = "0.28"
[dependencies.image] [dependencies.image]
version = "0.24" version = "0.24"
@ -27,7 +27,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
reqwest = { version = "0.11" } reqwest = { version = "0.11" }
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -13,11 +13,11 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
log = "0.4" log = "0.4"
tobj = { version = "3.2", features = ["async"]} tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.16"} wgpu = { version = "0.16"}
winit = "0.27" winit = "0.28"
[dependencies.image] [dependencies.image]
version = "0.24" version = "0.24"
@ -27,7 +27,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
reqwest = { version = "0.11" } reqwest = { version = "0.11" }
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -13,11 +13,11 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
log = "0.4" log = "0.4"
tobj = { version = "3.2", features = ["async"]} tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.16"} wgpu = { version = "0.16"}
winit = "0.27" winit = "0.28"
instant = "0.1" instant = "0.1"
[dependencies.image] [dependencies.image]
@ -28,7 +28,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
reqwest = { version = "0.11" } reqwest = { version = "0.11" }
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -13,11 +13,11 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = { version = "0.18", features = [ "swizzle" ] } cgmath = { version = "0.18", features = [ "swizzle" ] }
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
log = "0.4" log = "0.4"
tobj = { version = "3.2", features = ["async"]} tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.16"} wgpu = { version = "0.16"}
winit = "0.27" winit = "0.28"
instant = "0.1" instant = "0.1"
[dependencies.image] [dependencies.image]
@ -28,7 +28,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
reqwest = { version = "0.11" } reqwest = { version = "0.11" }
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -9,13 +9,13 @@ anyhow = "1.0"
bytemuck = { version = "1.4", features = ["derive"]} bytemuck = { version = "1.4", features = ["derive"]}
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
image = "0.24" image = "0.24"
log = "0.4" log = "0.4"
rayon = "1.4" rayon = "1.4"
tobj = "2.0" tobj = "2.0"
wgpu = "0.16" wgpu = "0.16"
winit = "0.27" winit = "0.28"
[build-dependencies] [build-dependencies]
anyhow = "1.0" anyhow = "1.0"

@ -10,13 +10,13 @@ thiserror = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
image = "0.24.2" image = "0.24.2"
log = "0.4" log = "0.4"
tobj = "2.0" tobj = "2.0"
wgpu = "0.16" wgpu = "0.16"
wgpu-subscriber = "0.1" wgpu-subscriber = "0.1"
winit = "0.27" winit = "0.28"
[build-dependencies] [build-dependencies]
anyhow = "1.0" anyhow = "1.0"

@ -10,12 +10,12 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
image = "0.24.2" image = "0.24.2"
log = "0.4" log = "0.4"
tobj = "3.1" tobj = "3.1"
wgpu = "0.16" wgpu = "0.16"
winit = "0.27" winit = "0.28"
gif = "0.11.4" gif = "0.11.4"
futures-intrusive = "0.4" futures-intrusive = "0.4"

@ -9,7 +9,7 @@ edition = "2018"
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
wgpu = "0.16" wgpu = "0.16"
pollster = "0.2" pollster = "0.3"
imgui = "0.7" imgui = "0.7"
imgui-wgpu = "0.17" imgui-wgpu = "0.17"
imgui-winit-support = "0.7" imgui-winit-support = "0.7"

@ -8,5 +8,5 @@ edition = "2021"
[dependencies] [dependencies]
anyhow = "1" anyhow = "1"
wgpu = "0.16" wgpu = "0.16"
winit = "0.27" winit = "0.28"
pollster = "0.2" pollster = "0.3"

@ -13,11 +13,11 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
log = "0.4" log = "0.4"
tobj = { version = "3.2", features = ["async"]} tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.16"} wgpu = { version = "0.16"}
winit = "0.27" winit = "0.28"
instant = "0.1" instant = "0.1"
[dependencies.image] [dependencies.image]
@ -28,7 +28,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
reqwest = { version = "0.11" } reqwest = { version = "0.11" }
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -10,13 +10,13 @@ crate-type = ["cdylib", "rlib"]
[dependencies] [dependencies]
cfg-if = "1" cfg-if = "1"
env_logger = "0.10" env_logger = "0.10"
winit = "0.27" winit = "0.28"
anyhow = "1.0" anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
pollster = "0.2" pollster = "0.3"
wgpu = { version = "0.16", features = ["spirv"]} wgpu = { version = "0.16", features = ["spirv"]}
wgpu_glyph = "0.18" wgpu_glyph = "0.20"
rand = "0.8" rand = "0.8"
rodio = { version = "0.16", default-features = false, features = ["wav"] } rodio = { version = "0.16", default-features = false, features = ["wav"] }
log = "0.4" log = "0.4"
@ -24,11 +24,11 @@ instant = "0.1"
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6" console_error_panic_hook = "0.1.6"
console_log = "0.2.0" console_log = "1.0"
getrandom = { version = "0.2", features = ["js"] } getrandom = { version = "0.2", features = ["js"] }
rodio = { version = "0.16", default-features = false, features = ["wasm-bindgen", "wav"] } rodio = { version = "0.16", default-features = false, features = ["wasm-bindgen", "wav"] }
wasm-bindgen-futures = "0.4.20" wasm-bindgen-futures = "0.4.20"
wasm-bindgen = "=0.2.84" wasm-bindgen = "=0.2.86"
web-sys = { version = "0.3.53", features = [ web-sys = { version = "0.3.53", features = [
"Document", "Document",
"Window", "Window",

@ -1,4 +1,4 @@
use anyhow::{Context, bail, Result}; use anyhow::{bail, Context, Result};
use fs_extra::copy_items; use fs_extra::copy_items;
use fs_extra::dir::CopyOptions; use fs_extra::dir::CopyOptions;
use glob::glob; use glob::glob;
@ -40,12 +40,12 @@ pub fn load_shader(src_path: PathBuf) -> anyhow::Result<()> {
}; };
let flags = naga::valid::ValidationFlags::all(); let flags = naga::valid::ValidationFlags::all();
let info = naga::valid::Validator::new( let info =
flags, naga::valid::Validator::new(flags, naga::valid::Capabilities::empty()).validate(&module)?;
naga::valid::Capabilities::empty(), std::fs::write(
) wgsl_path,
.validate(&module)?; wgsl::write_string(&module, &info, wgsl::WriterFlags::all())?,
std::fs::write(wgsl_path, wgsl::write_string(&module, &info, wgsl::WriterFlags::all())?)?; )?;
Ok(()) Ok(())
} }

@ -8,7 +8,7 @@ mod util;
use input::Input; use input::Input;
use system::System; use system::System;
#[cfg(target_arch="wasm32")] #[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*; use wasm_bindgen::prelude::*;
use winit::dpi::PhysicalSize; use winit::dpi::PhysicalSize;
@ -16,7 +16,7 @@ use winit::event::*;
use winit::event_loop::{ControlFlow, EventLoop}; use winit::event_loop::{ControlFlow, EventLoop};
use winit::window::{Fullscreen, WindowBuilder}; use winit::window::{Fullscreen, WindowBuilder};
#[cfg_attr(target_arch="wasm32", wasm_bindgen(start))] #[cfg_attr(target_arch = "wasm32", wasm_bindgen(start))]
pub fn start() { pub fn start() {
cfg_if::cfg_if! { cfg_if::cfg_if! {
if #[cfg(target_arch = "wasm32")] { if #[cfg(target_arch = "wasm32")] {
@ -30,7 +30,9 @@ pub fn start() {
let event_loop = EventLoop::new(); let event_loop = EventLoop::new();
let monitor = event_loop.primary_monitor().unwrap(); let monitor = event_loop.primary_monitor().unwrap();
let video_mode = monitor.video_modes().next(); let video_mode = monitor.video_modes().next();
let size = video_mode.clone().map_or(PhysicalSize::new(800, 600), |vm| vm.size()); let size = video_mode
.clone()
.map_or(PhysicalSize::new(800, 600), |vm| vm.size());
let window = WindowBuilder::new() let window = WindowBuilder::new()
.with_visible(false) .with_visible(false)
.with_title("Pong") .with_title("Pong")
@ -56,8 +58,8 @@ pub fn start() {
// Request fullscreen, if denied, continue as normal // Request fullscreen, if denied, continue as normal
match canvas.request_fullscreen() { match canvas.request_fullscreen() {
Ok(_) => {}, Ok(_) => {}
Err(_) => () Err(_) => (),
} }
Some(()) Some(())
@ -193,11 +195,15 @@ pub fn start() {
} }
} }
Event::WindowEvent { Event::WindowEvent {
event: WindowEvent::Resized(size), .. event: WindowEvent::Resized(size),
..
} => { } => {
render.resize(size); render.resize(size);
events.push(state::Event::Resize(size.width as f32, size.height as f32)); events.push(state::Event::Resize(size.width as f32, size.height as f32));
} }
Event::RedrawEventsCleared => {
window.request_redraw();
}
Event::RedrawRequested(window_id) if window_id == window.id() => { Event::RedrawRequested(window_id) if window_id == window.id() => {
for event in &events { for event in &events {
match event { match event {

@ -1,3 +1,3 @@
fn main() { fn main() {
pong::start(); pong::start();
} }

@ -107,11 +107,20 @@ pub struct StagingBuffer {
} }
impl StagingBuffer { impl StagingBuffer {
pub fn new<T: bytemuck::Pod + Sized>(device: &wgpu::Device, data: &[T], is_index_buffer: bool) -> StagingBuffer { pub fn new<T: bytemuck::Pod + Sized>(
device: &wgpu::Device,
data: &[T],
is_index_buffer: bool,
) -> StagingBuffer {
StagingBuffer { StagingBuffer {
buffer: device.create_buffer_init(&BufferInitDescriptor { buffer: device.create_buffer_init(&BufferInitDescriptor {
contents: bytemuck::cast_slice(data), contents: bytemuck::cast_slice(data),
usage: wgpu::BufferUsages::COPY_SRC | if is_index_buffer { wgpu::BufferUsages::INDEX } else { wgpu::BufferUsages::empty() }, usage: wgpu::BufferUsages::COPY_SRC
| if is_index_buffer {
wgpu::BufferUsages::INDEX
} else {
wgpu::BufferUsages::empty()
},
label: Some("Staging Buffer"), label: Some("Staging Buffer"),
}), }),
size: size_of_slice(data) as wgpu::BufferAddress, size: size_of_slice(data) as wgpu::BufferAddress,

@ -44,7 +44,7 @@ impl Render {
backends: wgpu::Backends::all(), backends: wgpu::Backends::all(),
dx12_shader_compiler: Default::default(), dx12_shader_compiler: Default::default(),
}); });
// # Safety // # Safety
// //
// The surface needs to live as long as the window that created it. // The surface needs to live as long as the window that created it.
@ -75,7 +75,9 @@ impl Render {
// Shader code in this tutorial assumes an Srgb surface texture. Using a different // Shader code in this tutorial assumes an Srgb surface texture. Using a different
// one will result all the colors comming out darker. If you want to support non // one will result all the colors comming out darker. If you want to support non
// Srgb surfaces, you'll need to account for that when drawing to the frame. // Srgb surfaces, you'll need to account for that when drawing to the frame.
let surface_format = surface_caps.formats.iter() let surface_format = surface_caps
.formats
.iter()
.copied() .copied()
.find(|f| f.is_srgb()) .find(|f| f.is_srgb())
.unwrap_or(surface_caps.formats[0]); .unwrap_or(surface_caps.formats[0]);
@ -218,7 +220,6 @@ impl Render {
self.staging_belt.finish(); self.staging_belt.finish();
self.queue.submit(iter::once(encoder.finish())); self.queue.submit(iter::once(encoder.finish()));
frame.present(); frame.present();
} }
Err(wgpu::SurfaceError::Outdated) => { Err(wgpu::SurfaceError::Outdated) => {
log::info!("Outdated surface texture"); log::info!("Outdated surface texture");

@ -17,8 +17,13 @@ impl SoundSystem {
let sink = rodio::Sink::try_new(&stream_handle).unwrap(); let sink = rodio::Sink::try_new(&stream_handle).unwrap();
sink.set_volume(0.5); sink.set_volume(0.5);
let spatial_sink = let spatial_sink = rodio::SpatialSink::try_new(
rodio::SpatialSink::try_new(&stream_handle, [0.0, 0.0, 0.0], [-1.0, 0.0, 0.0], [1.0, 0.0, 0.0]).unwrap(); &stream_handle,
[0.0, 0.0, 0.0],
[-1.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
)
.unwrap();
Self { Self {
stream, stream,

@ -13,12 +13,12 @@ anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
env_logger = "0.10" env_logger = "0.10"
pollster = "0.2" pollster = "0.3"
log = "0.4" log = "0.4"
rayon = "1.4" # NEW! rayon = "1.4" # NEW!
tobj = { version = "3.2", features = ["async"]} tobj = { version = "3.2", features = ["async"]}
wgpu = { version = "0.16"} wgpu = { version = "0.16"}
winit = "0.27" winit = "0.28"
instant = "0.1" instant = "0.1"
async-std = "1" async-std = "1"
@ -30,7 +30,7 @@ features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
reqwest = { version = "0.11" } reqwest = { version = "0.11" }
console_error_panic_hook = "0.1" console_error_panic_hook = "0.1"
console_log = "0.2" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -10,7 +10,7 @@ edition = "2018"
image = "0.24" image = "0.24"
shaderc = "0.8" shaderc = "0.8"
wgpu = { version = "0.16", features = ["spirv"] } wgpu = { version = "0.16", features = ["spirv"] }
pollster = "0.2" pollster = "0.3"
futures-intrusive = "0.4" futures-intrusive = "0.4"
[[bin]] [[bin]]

@ -12,4 +12,4 @@ env_logger = "0.10"
rayon = "1" rayon = "1"
serde = { version = "1", features = ["derive"]} serde = { version = "1", features = ["derive"]}
serde_json = "1" serde_json = "1"
wasm-bindgen-cli-support = "0.2.84" wasm-bindgen-cli-support = "0.2.86"

@ -8,7 +8,7 @@ For the beginner stuff, we're going to keep things very simple, we'll add things
```toml ```toml
[dependencies] [dependencies]
winit = "0.27" winit = "0.28"
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
wgpu = "0.16" wgpu = "0.16"
@ -109,7 +109,7 @@ cfg-if = "1"
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6" console_error_panic_hook = "0.1.6"
console_log = "0.2.0" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4.30" wasm-bindgen-futures = "0.4.30"

@ -236,7 +236,7 @@ Now that `run()` is async, `main()` will need some way to await the future. We c
```toml ```toml
[dependencies] [dependencies]
# other deps... # other deps...
pollster = "0.2" pollster = "0.3"
``` ```
We then use the `block_on` function provided by pollster to await our future: We then use the `block_on` function provided by pollster to await our future:
@ -258,15 +258,15 @@ If we try to build WASM now it will fail because `wasm-bindgen` doesn't support
```toml ```toml
[dependencies] [dependencies]
cfg-if = "1" cfg-if = "1"
winit = "0.27" winit = "0.28"
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
wgpu = "0.16" wgpu = "0.16"
pollster = "0.2" pollster = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6" console_error_panic_hook = "0.1.6"
console_log = "0.2.0" console_log = "1.0"
wgpu = { version = "0.16", features = ["webgl"]} wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2" wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4" wasm-bindgen-futures = "0.4"

@ -446,10 +446,10 @@ For convenience, let's pull our texture code into its own module. We'll first ne
[dependencies] [dependencies]
image = "0.23" image = "0.23"
cgmath = "0.18" cgmath = "0.18"
winit = "0.27" winit = "0.28"
env_logger = "0.10" env_logger = "0.10"
log = "0.4" log = "0.4"
pollster = "0.2" pollster = "0.3"
wgpu = "0.16" wgpu = "0.16"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
anyhow = "1.0" # NEW! anyhow = "1.0" # NEW!

@ -0,0 +1,45 @@
# Update to 0.16
Very few changes here! We no longer need to use `NonZeroU32` and the like, instead it will be an `Option<u32>`. This is mostly used in dealing with textures.
```rust
queue.write_texture(
wgpu::ImageCopyTexture {
aspect: wgpu::TextureAspect::All,
texture: &texture,
mip_level: 0,
origin: wgpu::Origin3d::ZERO,
},
&rgba,
wgpu::ImageDataLayout {
offset: 0,
// bytes_per_row: NonZeroU32::new(4 * dimensions.0),
bytes_per_row: Some(4 * dimensions.0),
// rows_per_image: NonZeroU32::new(dimensions.1),
rows_per_image: Some(dimensions.1),
},
size,
);
```
In other news WebGPU has been added to Chrome 113 and up! Currently the Linux version of Chrome beta isn't working and while it's working in Firefox, I'm going to hold off on switching to using that instead of the WebGL compatibility mode. If you mess around with WebGPU in browser check <https://caniuse.com/webgpu> to see if your browser is supported and then remove the extra `wgpu` line from the `[target.'cfg(target_arch = "wasm32")'.dependencies]` section of `Cargo.toml`:
```toml
[target.'cfg(target_arch = "wasm32")'.dependencies]
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "1.0"
# wgpu = { version = "0.16", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [
"Document",
"Window",
"Element",
"Location",
]}
```
No other changes need to be made to switch to using WebGPU in browser, so once the WebGPU samples at <https://webgpu.github.io/> work in Chrome on Linux, I'll look into removing the `webgl` feature.
That's all! As always let me know if I missed anything!

@ -269,11 +269,11 @@ In order for wasm-pack to work properly I first needed to add some dependencies:
```toml[dependencies] ```toml[dependencies]
cfg-if = "1" cfg-if = "1"
env_logger = "0.10" env_logger = "0.10"
winit = "0.27" winit = "0.28"
anyhow = "1.0" anyhow = "1.0"
bytemuck = { version = "1.12", features = [ "derive" ] } bytemuck = { version = "1.12", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
pollster = "0.2" pollster = "0.3"
wgpu = { version = "0.16", features = ["spirv"]} wgpu = { version = "0.16", features = ["spirv"]}
wgpu_glyph = "0.17" wgpu_glyph = "0.17"
rand = "0.8" rand = "0.8"
@ -283,11 +283,11 @@ instant = "0.1"
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6" console_error_panic_hook = "0.1.6"
console_log = "0.2.0" console_log = "1.0"
getrandom = { version = "0.2", features = ["js"] } getrandom = { version = "0.2", features = ["js"] }
rodio = { version = "0.15", default-features = false, features = ["wasm-bindgen", "wav"] } rodio = { version = "0.15", default-features = false, features = ["wasm-bindgen", "wav"] }
wasm-bindgen-futures = "0.4.20" wasm-bindgen-futures = "0.4.20"
wasm-bindgen = "=0.2.84" wasm-bindgen = "=0.2.86"
web-sys = { version = "0.3.53", features = [ web-sys = { version = "0.3.53", features = [
"Document", "Document",
"Window", "Window",

@ -101,7 +101,7 @@ Update dependencies to support SPIR-V module.
image = "0.23" image = "0.23"
shaderc = "0.7" shaderc = "0.7"
wgpu = { version = "0.16", features = ["spirv"] } wgpu = { version = "0.16", features = ["spirv"] }
pollster = "0.2" pollster = "0.3"
``` ```
Using that we'll create a simple `RenderPipeline`. Using that we'll create a simple `RenderPipeline`.

@ -46,5 +46,9 @@
{ {
"package": "tutorial12-camera", "package": "tutorial12-camera",
"out": "docs/.vuepress/components/wasm/tutorial12_camera" "out": "docs/.vuepress/components/wasm/tutorial12_camera"
},
{
"package": "pong",
"out": "docs/.vuepress/components/wasm/pong"
} }
] ]
Loading…
Cancel
Save