alpha2-render 0.5.0

Render graph and effect registry for alpha2.
Documentation
//! A renderer that draws render graphs on the CPU with no GPU or driver, running native code
//! for every built-in pass over row bands on a thread pool.
//!
//! It executes the same [`crate::RenderGraph`] as the GPU renderer and keeps the same bits
//! between stages: premultiplied sRGB RGBA stored as half floats rounded toward zero. The only
//! modelled stage is the fixed-function premultiplied `over` blend of vector and quad passes,
//! computed in `f32` then stored; this is exact on software rasterizers and Metal and within 16
//! half-float steps (under a quarter code) on other GPUs. Output is identical for any thread
//! count and target.

mod blend;
mod composite;
mod curves;
mod execute;
pub(crate) mod half;

/// The value a stored half float holds.
pub(crate) fn half_value(bits: u16) -> f32 {
    half::load(bits)
}

/// The value an 8-bit code samples as.
pub(crate) fn unorm8_value(code: u8) -> f32 {
    half::unorm8_value(code)
}
mod image;
mod kernels;
mod pack;
mod paint;
mod renderer;
mod source;
mod vector;
mod workers;

#[cfg(test)]
pub(crate) use vector::over as premultiplied_over;

pub use image::CpuImage;
pub use pack::pack_cpu_image;
pub use renderer::{CpuRenderStats, CpuRenderer};
pub use source::{CpuSource, RgbaPixels, YuvPlanes};