no zip compression
Some checks failed
Build Zenyx ⚡ / 🔧 Setup Environment (push) Successful in 42s
Build Zenyx ⚡ / 🧪 Run Cargo Tests (push) Successful in 57s
Build Zenyx ⚡ / 🏗️ Build aarch64-unknown-linux-gnu (push) Failing after 3m5s
Build Zenyx ⚡ / 🏗️ Build x86_64-unknown-linux-gnu (push) Successful in 2m58s
Some checks failed
Build Zenyx ⚡ / 🔧 Setup Environment (push) Successful in 42s
Build Zenyx ⚡ / 🧪 Run Cargo Tests (push) Successful in 57s
Build Zenyx ⚡ / 🏗️ Build aarch64-unknown-linux-gnu (push) Failing after 3m5s
Build Zenyx ⚡ / 🏗️ Build x86_64-unknown-linux-gnu (push) Successful in 2m58s
This commit is contained in:
parent
b9b5aee363
commit
9601c51172
5 changed files with 28 additions and 13 deletions
|
@ -162,3 +162,4 @@ jobs:
|
||||||
with:
|
with:
|
||||||
name: ${{ matrix.binary_name }}.zip
|
name: ${{ matrix.binary_name }}.zip
|
||||||
path: artifacts
|
path: artifacts
|
||||||
|
compression-level: 0
|
|
@ -309,7 +309,8 @@ impl WgpuState {
|
||||||
&queue,
|
&queue,
|
||||||
&texture_bind_group_layout,
|
&texture_bind_group_layout,
|
||||||
);
|
);
|
||||||
let checkerboard_img = crate::texture::create_checkerboard();
|
use tracing::Instrument;
|
||||||
|
let checkerboard_img = crate::texture::get_checkerboard();
|
||||||
let checkerboard_texture =
|
let checkerboard_texture =
|
||||||
texture::Texture::from_image(&device, &queue, &checkerboard_img, Some("checkerboard"))
|
texture::Texture::from_image(&device, &queue, &checkerboard_img, Some("checkerboard"))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
use image::GenericImageView;
|
use std::sync::OnceLock;
|
||||||
|
|
||||||
|
use image::{DynamicImage, GenericImageView, RgbaImage};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
#[derive(Debug, Error)]
|
#[derive(Debug, Error)]
|
||||||
pub enum TextureError {
|
pub enum TextureError {
|
||||||
|
@ -16,6 +18,7 @@ pub struct Texture {
|
||||||
pub sampler: wgpu::Sampler,
|
pub sampler: wgpu::Sampler,
|
||||||
}
|
}
|
||||||
impl Texture {
|
impl Texture {
|
||||||
|
|
||||||
pub fn from_bytes(
|
pub fn from_bytes(
|
||||||
device: &wgpu::Device,
|
device: &wgpu::Device,
|
||||||
queue: &wgpu::Queue,
|
queue: &wgpu::Queue,
|
||||||
|
@ -85,24 +88,33 @@ impl Texture {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static CHECKERBOARD_IMAGE: OnceLock<DynamicImage> = OnceLock::new();
|
||||||
pub fn create_checkerboard() -> image::DynamicImage {
|
pub fn create_checkerboard(size: u32, tile_size: u32) -> DynamicImage {
|
||||||
let size = 512;
|
let mut img = RgbaImage::new(size, size);
|
||||||
let tile_size = 24;
|
let pixels = img.as_mut();
|
||||||
let mut img = image::RgbaImage::new(size, size);
|
let bytes_per_pixel = 4; // RGBA
|
||||||
|
|
||||||
for y in 0..size {
|
for y in 0..size {
|
||||||
|
let tile_y = y / tile_size;
|
||||||
for x in 0..size {
|
for x in 0..size {
|
||||||
let tile_x = x / tile_size;
|
let tile_x = x / tile_size;
|
||||||
let tile_y = y / tile_size;
|
|
||||||
let color = if (tile_x + tile_y) % 2 == 0 {
|
let color = if (tile_x + tile_y) % 2 == 0 {
|
||||||
[0, 0, 0, 255]
|
[0, 0, 0, 255]
|
||||||
} else {
|
} else {
|
||||||
[255, 5, 255, 255]
|
[255, 5, 255, 255]
|
||||||
};
|
};
|
||||||
img.put_pixel(x, y, image::Rgba(color));
|
let pixel_index = (y * size + x) as usize * bytes_per_pixel;
|
||||||
|
pixels[pixel_index..pixel_index + bytes_per_pixel].copy_from_slice(&color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
image::DynamicImage::ImageRgba8(img)
|
image::DynamicImage::ImageRgba8(img)
|
||||||
}
|
}
|
||||||
|
#[tracing::instrument]
|
||||||
|
pub fn get_checkerboard() -> &'static DynamicImage {
|
||||||
|
CHECKERBOARD_IMAGE.get_or_init(|| {
|
||||||
|
let size = 512;
|
||||||
|
let tile_size = 24;
|
||||||
|
create_checkerboard(size, tile_size)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -101,6 +101,7 @@ where
|
||||||
fn on_event(&self, event: &Event<'_>, _ctx: Context<'_, S>) {
|
fn on_event(&self, event: &Event<'_>, _ctx: Context<'_, S>) {
|
||||||
let metadata = event.metadata();
|
let metadata = event.metadata();
|
||||||
let level = *metadata.level();
|
let level = *metadata.level();
|
||||||
|
let name = metadata.name();
|
||||||
let timestamp = SystemTime::now();
|
let timestamp = SystemTime::now();
|
||||||
#[cfg(feature = "json")]
|
#[cfg(feature = "json")]
|
||||||
let additional_fields = serde_json::Map::new();
|
let additional_fields = serde_json::Map::new();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue