Custom size environment map
This commit is contained in:
parent
9c1ad95f37
commit
a2646f8f29
|
|
@ -1,4 +1,4 @@
|
||||||
use std::error::Error;
|
use std::{env, error::Error};
|
||||||
|
|
||||||
use glam::{mat3, vec2, vec3, Mat3, Vec3};
|
use glam::{mat3, vec2, vec3, Mat3, Vec3};
|
||||||
use image::buffer::ConvertBuffer;
|
use image::buffer::ConvertBuffer;
|
||||||
|
|
@ -16,6 +16,8 @@ fn make_viewport(m: Mat3) -> [Vertex; 4] {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
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 (device, queue) = pollster::block_on(init_gpu()).unwrap();
|
||||||
|
|
||||||
let format = wgpu::TextureFormat::Rgba8UnormSrgb;
|
let format = wgpu::TextureFormat::Rgba8UnormSrgb;
|
||||||
|
|
@ -38,8 +40,8 @@ fn main() {
|
||||||
let output = device.create_texture(&wgpu::TextureDescriptor {
|
let output = device.create_texture(&wgpu::TextureDescriptor {
|
||||||
label: None,
|
label: None,
|
||||||
size: wgpu::Extent3d {
|
size: wgpu::Extent3d {
|
||||||
width: EXTENT,
|
width: extent,
|
||||||
height: EXTENT,
|
height: extent,
|
||||||
depth_or_array_layers: 6,
|
depth_or_array_layers: 6,
|
||||||
},
|
},
|
||||||
mip_level_count: 1,
|
mip_level_count: 1,
|
||||||
|
|
@ -52,7 +54,7 @@ fn main() {
|
||||||
let buffers = faces.map(|_| {
|
let buffers = faces.map(|_| {
|
||||||
device.create_buffer(&wgpu::BufferDescriptor {
|
device.create_buffer(&wgpu::BufferDescriptor {
|
||||||
label: None,
|
label: None,
|
||||||
size: (4 * EXTENT * EXTENT) as u64,
|
size: (4 * extent * extent) as u64,
|
||||||
usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ,
|
usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ,
|
||||||
mapped_at_creation: false,
|
mapped_at_creation: false,
|
||||||
})
|
})
|
||||||
|
|
@ -97,13 +99,13 @@ fn main() {
|
||||||
buffer: &buffer,
|
buffer: &buffer,
|
||||||
layout: wgpu::ImageDataLayout {
|
layout: wgpu::ImageDataLayout {
|
||||||
offset: 0,
|
offset: 0,
|
||||||
bytes_per_row: Some(4 * EXTENT),
|
bytes_per_row: Some(4 * extent),
|
||||||
rows_per_image: Some(EXTENT),
|
rows_per_image: Some(extent),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
wgpu::Extent3d {
|
wgpu::Extent3d {
|
||||||
width: EXTENT,
|
width: extent,
|
||||||
height: EXTENT,
|
height: extent,
|
||||||
depth_or_array_layers: 1,
|
depth_or_array_layers: 1,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
@ -117,7 +119,7 @@ fn main() {
|
||||||
for (face, buf) in buffers.iter().enumerate() {
|
for (face, buf) in buffers.iter().enumerate() {
|
||||||
s.spawn(move || {
|
s.spawn(move || {
|
||||||
let img =
|
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();
|
let img: image::RgbImage = img.convert();
|
||||||
img.save(format!("textures/env{face}.jpeg")).unwrap();
|
img.save(format!("textures/env{face}.jpeg")).unwrap();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user