extern crate exr;
use exr::prelude::rgba_image::*;
fn main() {
let generate_pixels = |position: Vec2<usize>| {
fn get_sample_f32(position: Vec2<usize>, channel: usize) -> f32 {
let scale_per_channel = [Vec2(21.1, 14.5), Vec2(23.1, 22.7), Vec2(11.1, 13.3)];
let scale = scale_per_channel[channel];
let value = (position.x() as f32 / scale.x()).sin() * 0.5 + 0.5;
value.powf((position.y() as f32 / scale.y()).sin() * 0.5 + 0.5)
}
Pixel::rgb(
get_sample_f32(position, 0),
get_sample_f32(position, 1),
get_sample_f32(position, 2),
)
};
let mut image_info = ImageInfo::rgb(
(2*2048, 2*2048),
SampleType::F16,
);
image_info.layer_attributes.owner = Some("Unknown Owner".try_into().unwrap());
image_info.layer_attributes.comments = Some(
"This image was generated as part of an example".try_into().unwrap()
);
image_info
.with_encoding(Encoding::for_compression(Compression::PIZ))
.write_pixels_to_file(
"tests/images/out/generated_rgba.exr",
write_options::high(), &generate_pixels
).unwrap();
println!("created file generated_rgba.exr");
}