This project aims to provide a PNG decoder backed by a feature-rich GPU-based renderer.
As a decoder, this project uses the PNG test suite to validate its ability to handle
various PNG features and edge cases. Currently, png
can decode and render images with an 8-bit color depth.
The renderer handles various image processing features on the GPU. To view all possible features, see FEATURES.
To render an image, run cargo run --release <image_path>
. For example:
cargo r --release ./tests/obama.png
# Profile the decoder
./profile_decoder.sh ./tests/reagan.png
# Run ad-hoc benchmarks
cargo r --release --bin decode --features time ./tests/Periodic_table_large.png
# Run the PNG test suite
cargo r --bin png-test-suite
# Fuzz the decoder
./fuzz.sh
http://www.libpng.org/pub/png/pngintro.html
https://www.w3.org/TR/2003/REC-PNG-20031110/
http://www.libpng.org/pub/png/pngpic2.html
https://www.w3.org/Graphics/PNG/platform.html
https://sotrh.github.io/learn-wgpu/beginner/tutorial5-textures/
https://www.cns.nyu.edu/pub/lcv/wang03-preprint.pdf
https://www.cns.nyu.edu/pub/eero/wang03b.pdf
https://ece.uwaterloo.ca/~z70wang/research/ssim/
http://arxiv.org/pdf/2006.13846
https://www.youtube.com/watch?v=KuXjwB4LzSA
https://www.shadertoy.com/view/4tSyzy