norm
A PNG editor from scratch (well, as close to scratch as possible).
As a decoder, this project uses the PNG test suite to validate its ability to handle various PNG features and edge cases. Currently, norm can decode and render images with an 8-bit color depth.
The renderer supports various image processing features on the GPU.
Usage
Run cargo run --release <image_path>. For example:
Additional Scripts
# Run the renderer with an experimental camera
# Profile the decoder
&&
# Run ad-hoc benchmarks
# Parse and render glyphs from the lato font file
# See the generated `glyph_playground` directory.
# Run the PNG test suite
# Fuzz the decoder
Reading
PNG Specification
https://www.w3.org/TR/2003/REC-PNG-20031110/ http://www.libpng.org/pub/png/pngintro.html https://www.w3.org/Graphics/PNG/platform.html https://optipng.sourceforge.net/pngtech/optipng.html https://optipng.sourceforge.net/pngtech/better-filtering.html http://www.libpng.org/pub/png/pngpic2.html https://www.lucaversari.it/FJXL_and_FPNGE.pdf
GPU Programming
https://sotrh.github.io/learn-wgpu/beginner/tutorial5-textures/ https://raphlinus.github.io/gpu/2020/02/12/gpu-resources.html
Image Processing
https://www.youtube.com/watch?v=KuXjwB4LzSA https://www.shadertoy.com/view/4tSyzy https://www.shadertoy.com/view/wsK3Wt
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
TrueType Font Rendering
https://faultlore.com/blah/text-hates-you/ https://developer.apple.com/fonts/TrueType-Reference-Manual/ https://www.youtube.com/watch?v=SO83KQuuZvg https://www.microsoft.com/en-us/research/wp-content/uploads/2005/01/p1000-loop.pdf https://medium.com/@evanwallace/easy-scalable-text-rendering-on-the-gpu-c3f4d782c5ac