finally migrated tutorial9 code

web2
Ben Hansen 2 years ago
parent 9811c4037e
commit 82d50cba6c

1
.gitignore vendored

@ -11,3 +11,4 @@ output/
*trace.zip
secrets.txt
tree.txt

108
Cargo.lock generated

@ -405,7 +405,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"naga 0.8.0",
"pollster",
@ -718,6 +718,15 @@ dependencies = [
"byteorder",
]
[[package]]
name = "deflate"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f"
dependencies = [
"adler32",
]
[[package]]
name = "derivative"
version = "2.2.0"
@ -834,7 +843,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"naga 0.8.0",
"pollster",
@ -945,7 +954,7 @@ dependencies = [
"fs_extra",
"gif 0.10.3",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"shaderc",
@ -1203,15 +1212,31 @@ dependencies = [
"byteorder",
"color_quant",
"gif 0.11.3",
"jpeg-decoder",
"jpeg-decoder 0.1.22",
"num-iter",
"num-rational",
"num-rational 0.3.2",
"num-traits",
"png",
"png 0.16.8",
"scoped_threadpool",
"tiff",
]
[[package]]
name = "image"
version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e94ac3d41f882c624a82d7945952032388488681f45f9d4077999a6c85688d61"
dependencies = [
"bytemuck",
"byteorder",
"color_quant",
"jpeg-decoder 0.2.2",
"num-iter",
"num-rational 0.4.0",
"num-traits",
"png 0.17.3",
]
[[package]]
name = "indexmap"
version = "1.7.0"
@ -1297,6 +1322,12 @@ dependencies = [
"rayon",
]
[[package]]
name = "jpeg-decoder"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "105fb082d64e2100074587f59a74231f771750c664af903f1f9f76c9dedfc6f1"
[[package]]
name = "js-sys"
version = "0.3.55"
@ -1476,6 +1507,15 @@ dependencies = [
"autocfg",
]
[[package]]
name = "miniz_oxide"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082"
dependencies = [
"adler",
]
[[package]]
name = "mio"
version = "0.7.14"
@ -1777,6 +1817,17 @@ dependencies = [
"num-traits",
]
[[package]]
name = "num-rational"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.14"
@ -1990,10 +2041,22 @@ checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6"
dependencies = [
"bitflags",
"crc32fast",
"deflate",
"deflate 0.8.6",
"miniz_oxide 0.3.7",
]
[[package]]
name = "png"
version = "0.17.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e8f1882177b17c98ec33a51f5910ecbf4db92ca0def706781a1f8d0c661f393"
dependencies = [
"bitflags",
"crc32fast",
"deflate 1.0.0",
"miniz_oxide 0.5.1",
]
[[package]]
name = "pollster"
version = "0.2.4"
@ -2612,7 +2675,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437"
dependencies = [
"jpeg-decoder",
"jpeg-decoder 0.1.22",
"miniz_oxide 0.4.4",
"weezl",
]
@ -2784,7 +2847,7 @@ dependencies = [
"console_error_panic_hook",
"console_log",
"env_logger",
"image",
"image 0.23.14",
"log",
"pollster",
"wasm-bindgen",
@ -2803,7 +2866,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"tobj 3.2.0",
@ -2821,7 +2884,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"tobj 3.2.0",
@ -2839,7 +2902,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"tobj 3.2.0",
@ -2857,7 +2920,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"rayon",
@ -2875,7 +2938,7 @@ dependencies = [
"console_error_panic_hook",
"console_log",
"env_logger",
"image",
"image 0.23.14",
"log",
"pollster",
"wasm-bindgen",
@ -2896,7 +2959,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"wasm-bindgen",
@ -2918,7 +2981,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"wasm-bindgen",
@ -2940,7 +3003,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"wasm-bindgen",
@ -2962,7 +3025,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"wasm-bindgen",
@ -2984,7 +3047,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"wasm-bindgen",
@ -3006,7 +3069,7 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.23.14",
"log",
"pollster",
"wasm-bindgen",
@ -3028,12 +3091,13 @@ dependencies = [
"env_logger",
"fs_extra",
"glob",
"image",
"image 0.24.0",
"log",
"pollster",
"reqwest",
"tobj 3.2.0",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"wgpu",
"winit",
@ -3440,7 +3504,7 @@ name = "windowless"
version = "0.1.0"
dependencies = [
"cgmath",
"image",
"image 0.23.14",
"pollster",
"raw-window-handle 0.3.4",
"shaderc",

@ -1,10 +1,10 @@
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/pong code/showcase/pong
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial1_window code/beginner/tutorial1-window
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial2_surface code/beginner/tutorial2-surface
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial3_pipeline code/beginner/tutorial3-pipeline
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial4_buffer code/beginner/tutorial4-buffer
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial5_textures code/beginner/tutorial5-textures
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial6_uniforms code/beginner/tutorial6-uniforms
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial7_instancing code/beginner/tutorial7-instancing
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial8_depth code/beginner/tutorial8-depth
# wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/pong code/showcase/pong
# wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial1_window code/beginner/tutorial1-window
# wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial2_surface code/beginner/tutorial2-surface
# wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial3_pipeline code/beginner/tutorial3-pipeline
# wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial4_buffer code/beginner/tutorial4-buffer
# wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial5_textures code/beginner/tutorial5-textures
# wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial6_uniforms code/beginner/tutorial6-uniforms
# wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial7_instancing code/beginner/tutorial7-instancing
# wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial8_depth code/beginner/tutorial8-depth
wasm-pack build --out-dir ../../../docs/.vuepress/components/wasm/tutorial9_models code/beginner/tutorial9-models

@ -8,25 +8,29 @@ edition = "2018"
crate-type = ["cdylib", "rlib"]
[dependencies]
anyhow = "1.0"
bytemuck = { version = "1.4", features = [ "derive" ] }
cfg-if = "1"
cgmath = "0.18"
env_logger = "0.9"
pollster = "0.2"
image = "0.23"
log = "0.4"
tobj = { version = "3.2", features = ["async"]}
wgpu = "0.12"
winit = "0.26"
[dependencies.image]
version = "0.24"
default-features = false
features = ["png", "jpeg"]
[target.'cfg(target_arch = "wasm32")'.dependencies]
reqwest = { version = "0.11" }
console_error_panic_hook = "0.1"
console_log = "0.2"
wgpu = { version = "0.12", features = ["webgl"]}
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = [
"Document",
"Window",

@ -558,7 +558,7 @@ impl State {
}
#[cfg_attr(target_arch="wasm32", wasm_bindgen(start))]
pub fn run() {
pub async fn run() {
cfg_if::cfg_if! {
if #[cfg(target_arch = "wasm32")] {
std::panic::set_hook(Box::new(console_error_panic_hook::hook));
@ -597,7 +597,7 @@ pub fn run() {
// State::new uses async code, so we're going to wait for it to finish
log::warn!("Creating State");
let mut state = pollster::block_on(State::new(&window));
let mut state = State::new(&window).await;
event_loop.run(move |event, _, control_flow| {
*control_flow = ControlFlow::Poll;

@ -1,5 +1,5 @@
use tutorial9_models::run;
fn main() {
run();
pollster::block_on(run());
}

@ -8,13 +8,11 @@ use crate::{model, texture};
pub async fn load_string(file_name: &str) -> anyhow::Result<String> {
cfg_if! {
if #[cfg(target_arch = "wasm32")] {
log::warn!("Creating url for {}", file_name);
let url = format!("http://127.0.0.1:8080/learn-wgpu/{}", file_name);
log::warn!("Making request for {}", url);
let res = reqwest::get(&url).await?;
log::warn!("Recieved response");
let txt = res.text().await?;
log::warn!("Finished request for {}", url);
let txt = reqwest::get(&url)
.await?
.text()
.await?;
} else {
let path = std::path::Path::new(env!("OUT_DIR"))
.join("res")
@ -51,7 +49,9 @@ pub async fn load_texture(
device: &wgpu::Device,
queue: &wgpu::Queue,
) -> anyhow::Result<texture::Texture> {
log::warn!("Loading binary file {}", file_name);
let data = load_binary(file_name).await?;
log::warn!("Creating texture");
texture::Texture::from_bytes(device, queue, &data, file_name)
}
@ -85,7 +85,9 @@ pub async fn load_model(
log::warn!("Processing materials");
let mut materials = Vec::new();
for m in obj_materials? {
log::warn!("Loading diffuse texture");
let diffuse_texture = load_texture(&m.diffuse_texture, device, queue).await?;
log::warn!("Creating bind group");
let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor {
layout,
entries: &[

Loading…
Cancel
Save