diff options
author | 2020-02-26 18:49:46 +0100 | |
---|---|---|
committer | 2020-02-26 18:50:13 +0100 | |
commit | 48d70280eb4f5908f1c9339bebdfbab856d55ae1 (patch) | |
tree | a09413f997f3225b307e4f8d4b4981c9d33bb49e /wgpu/src/image | |
parent | c58d94f3fda40f215254008ec105aeab56085b0e (diff) | |
download | iced-48d70280eb4f5908f1c9339bebdfbab856d55ae1.tar.gz iced-48d70280eb4f5908f1c9339bebdfbab856d55ae1.tar.bz2 iced-48d70280eb4f5908f1c9339bebdfbab856d55ae1.zip |
Fix multiple issues from the refactoring
- Update texture view on grow
- Fix atlas texture coordinates
- Fix fragmented uploads
Diffstat (limited to '')
-rw-r--r-- | wgpu/src/image.rs | 10 | ||||
-rw-r--r-- | wgpu/src/image/raster.rs | 5 |
2 files changed, 8 insertions, 7 deletions
diff --git a/wgpu/src/image.rs b/wgpu/src/image.rs index afff52a6..1ffa50d2 100644 --- a/wgpu/src/image.rs +++ b/wgpu/src/image.rs @@ -319,6 +319,8 @@ impl Pipeline { let texture_version = self.texture_atlas.layer_count(); if self.texture_version != texture_version { + log::info!("Atlas has grown. Recreating bind group..."); + self.texture = device.create_bind_group(&wgpu::BindGroupDescriptor { layout: &self.texture_layout, @@ -525,12 +527,12 @@ fn add_instance( _position: position, _size: size, _position_in_atlas: [ - x as f32 / atlas::SIZE as f32, - y as f32 / atlas::SIZE as f32, + (x as f32 + 0.5) / atlas::SIZE as f32, + (y as f32 + 0.5) / atlas::SIZE as f32, ], _size_in_atlas: [ - width as f32 / atlas::SIZE as f32, - height as f32 / atlas::SIZE as f32, + (width as f32 - 0.5) / atlas::SIZE as f32, + (height as f32 - 0.5) / atlas::SIZE as f32, ], _layer: layer as u32, }; diff --git a/wgpu/src/image/raster.rs b/wgpu/src/image/raster.rs index 8d2f342e..b19da582 100644 --- a/wgpu/src/image/raster.rs +++ b/wgpu/src/image/raster.rs @@ -83,10 +83,9 @@ impl Cache { if let Memory::Host(image) = memory { let (width, height) = image.dimensions(); - let allocation = - atlas.upload(width, height, &image, device, encoder)?; + let entry = atlas.upload(width, height, &image, device, encoder)?; - *memory = Memory::Device(allocation); + *memory = Memory::Device(entry); } if let Memory::Device(allocation) = memory { |