v0.0.0-alpha.2: Image crate integration 🖼
Pre-release
Pre-release
This new release includes the capability to convert image::ImageBuffer
from the image crate to gpgpu::GpuImage
objects and vice versa.
✨ New features
🚩 integration-image
feature flag
- Compile-time type conversion safety from/to
image::ImageBuffer
to/fromgpgpu::GpuImage
objects- Supported pixel types:
- RGBA8 Uint
- RGBA8 Uint Norm
- RGBA8 Sint
- RGBA8 Sint Norm
- Bidirectional conversions between
image::ImageBuffer
andgpgpu::GpuImage
- Sync and async read
- Sync and async writes
- Supported pixel types:
â›° Enviroment backend selection
Using the env variable WGPU_BACKEND
, the gpgpu-rs
backend can be selected. Available options are:
- Vulkan: "vulkan" or "vk"
- DX12: "dx12" or "d3d12"
- DX11: "dx11" or "d3d11"
- Metal: "metal" or "mtl"
- OpenGL ES: "opengl", "gles" or "gl"
- WebGPU: "webgpu"
Any comma separeted combiantion of any of the previous options is valid. ex.WGPU_BACKEND='vk,gl'
📕 Vagrant box
For the development of gpgpu-rs
a headless Vagrant box was created. It runs under Ubuntu 21.04. Only the OpenGL ES backend can be used.
For a complete list of the changes since the last release: v0.0.0-alpha.1...v0.0.0-alpha.2
🕹 Usage
Since this version still not published in Crates.io, add it to your Cargo.toml
as follows:
[dependencies]
gpgpu = { git = "https://github.com/UpsettingBoy/gpgpu-rs", tag = "v0.0.0-alpha.2" }
🆘 Help wanted
- For an efficient implementation of the conversion between
image
andgpgpu-rs
types, someunsafe
code was required. A review of this fragment is very much appreciated 😄 (insrc/features/integrate_image.rs
👀). - I'm running out of ideas. The initial goal of this project was to allow me develop a GPU-based image processing library (imageproc_gpu). Since I think
gpgpu-rs
is enough for that (but still very lacking), I'll continue with that project, adding whatever I need for GPGPU computing back atgpgpu-rs
. Any other idea is appreciated.