diff --git a/src/bin/envmap/main.rs b/src/bin/envmap/main.rs index 4e49a11..7f4a23b 100644 --- a/src/bin/envmap/main.rs +++ b/src/bin/envmap/main.rs @@ -1,4 +1,4 @@ -use std::error::Error; +use std::{env, error::Error}; use glam::{mat3, vec2, vec3, Mat3, Vec3}; use image::buffer::ConvertBuffer; @@ -16,6 +16,8 @@ fn make_viewport(m: Mat3) -> [Vertex; 4] { } fn main() { + let args: Vec<_> = env::args().collect(); + let extent = args.get(1).and_then(|s| s.parse().ok()).unwrap_or(EXTENT); let (device, queue) = pollster::block_on(init_gpu()).unwrap(); let format = wgpu::TextureFormat::Rgba8UnormSrgb; @@ -38,8 +40,8 @@ fn main() { let output = device.create_texture(&wgpu::TextureDescriptor { label: None, size: wgpu::Extent3d { - width: EXTENT, - height: EXTENT, + width: extent, + height: extent, depth_or_array_layers: 6, }, mip_level_count: 1, @@ -52,7 +54,7 @@ fn main() { let buffers = faces.map(|_| { device.create_buffer(&wgpu::BufferDescriptor { label: None, - size: (4 * EXTENT * EXTENT) as u64, + size: (4 * extent * extent) as u64, usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ, mapped_at_creation: false, }) @@ -97,13 +99,13 @@ fn main() { buffer: &buffer, layout: wgpu::ImageDataLayout { offset: 0, - bytes_per_row: Some(4 * EXTENT), - rows_per_image: Some(EXTENT), + bytes_per_row: Some(4 * extent), + rows_per_image: Some(extent), }, }, wgpu::Extent3d { - width: EXTENT, - height: EXTENT, + width: extent, + height: extent, depth_or_array_layers: 1, }, ); @@ -117,7 +119,7 @@ fn main() { for (face, buf) in buffers.iter().enumerate() { s.spawn(move || { let img = - image::RgbaImage::from_raw(EXTENT, EXTENT, buf.slice(..).get_mapped_range().to_vec()).unwrap(); + image::RgbaImage::from_raw(extent, extent, buf.slice(..).get_mapped_range().to_vec()).unwrap(); let img: image::RgbImage = img.convert(); img.save(format!("textures/env{face}.jpeg")).unwrap(); });