Ledger book: surface normal map
A tangent-space surface normal map for the published plate ledger-book.png, 1216x832 - the same size as the plate, so the two compare pixel for pixel with no resample in between. RGB encodes the XYZ surface direction remapped from -1..1 into 0..255. Decoded back to vectors this file measures a mean length of 0.9946, which is the number to check your own decode against: a reader that transposes the channels or inverts the remap still produces a plausible-looking image, and lights the surface the wrong way.

Specifications
- Width
- 1216
- Height
- 832
- Mean Vector Length
- 0.9946
- Min Vector Length
- 0.9875
- Max Vector Length
- 1.0045
- Derivation Kind
- normal
- Encoding
- tangent space, RGB = XYZ remapped from -1..1 into 0..255
- Source Plate
- ledger-book.png
- Synthetic
- true
- Disclosure
- Derived from an AI-generated plate. Synthetic, not a photograph of a real scene.
- Schema Version
- 1
- Alt Text
- An open paper accounts ledger with ruled columns on a desk, fountain pen resting on the page, window light
Testing contract
Expected to pass- Scenario
- Open this map and the published plate ledger-book.png, compare their dimensions, then decode the RGB back to vectors and measure their length.
- Expected result
- Both are 1216x832, so the map and the photograph compare pixel for pixel with no resample in between. Decoded as (RGB / 255 * 2 - 1) the vectors have a mean length of 0.9946: a decode that transposes the channels or inverts the remap still yields a plausible image, and this number is what separates the two.
What is a .png file?
PNG (Portable Network Graphics) is a raster image format using lossless DEFLATE compression. It supports full 8- or 16-bit-per-channel truecolor, palette, and greyscale modes with an optional alpha channel, but no animation. It is the standard choice for screenshots, logos, and graphics with sharp edges or transparency.
How to use this file
Use an example PNG to test image decoders, alpha-compositing, thumbnail generators, and format converters, or to verify that a pipeline preserves transparency and color depth on round-trip.
How to use this file for testing
“Ledger book: surface normal map” is a deterministic Novus Examples fixture for PBR material testing. Complete PBR material sets (base colour, normal, roughness, metallic, ambient occlusion, and height) for testing material-generation models and physically-based renderers channel by channel.
Documented properties for this file: 1216×832 · tangent space, RGB = XYZ remapped from -1..1 into 0..255. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such, expect parsers to fail loudly rather than silently accept them.
For image AI or enhancement tools, run the model or filter on this file and diff against the clean or ground-truth companion in the same group when available. Keep seeds and documented damage parameters in your evaluation notes so regressions are attributable.
Code examples
<img src="ledger-book-normal.png" alt="Example image" width="640" loading="lazy">Related files
- pngA av f3: surface normal mapA tangent-space surface normal map for the published plate a-av-f3.png, 1024x1024 - the same size as the plate, so the two compare pixel for pixel with no resample in between. RGB encodes the XYZ surface direction remapped from -1..1 into 0..255. Decoded back to vectors this file measures a mean length of 0.9962, which is the number to check your own decode against: a reader that transposes the channels or inverts the remap still produces a plausible-looking image, and lights the surface the wrong way.

- pngA av f4: surface normal mapA tangent-space surface normal map for the published plate a-av-f4.png, 1024x1024 - the same size as the plate, so the two compare pixel for pixel with no resample in between. RGB encodes the XYZ surface direction remapped from -1..1 into 0..255. Decoded back to vectors this file measures a mean length of 0.9961, which is the number to check your own decode against: a reader that transposes the channels or inverts the remap still produces a plausible-looking image, and lights the surface the wrong way.

- pngA av f5: surface normal mapA tangent-space surface normal map for the published plate a-av-f5.png, 1024x1024 - the same size as the plate, so the two compare pixel for pixel with no resample in between. RGB encodes the XYZ surface direction remapped from -1..1 into 0..255. Decoded back to vectors this file measures a mean length of 0.9959, which is the number to check your own decode against: a reader that transposes the channels or inverts the remap still produces a plausible-looking image, and lights the surface the wrong way.

- pngA av m3: surface normal mapA tangent-space surface normal map for the published plate a-av-m3.png, 1024x1024 - the same size as the plate, so the two compare pixel for pixel with no resample in between. RGB encodes the XYZ surface direction remapped from -1..1 into 0..255. Decoded back to vectors this file measures a mean length of 0.9966, which is the number to check your own decode against: a reader that transposes the channels or inverts the remap still produces a plausible-looking image, and lights the surface the wrong way.

- pngA av m4: surface normal mapA tangent-space surface normal map for the published plate a-av-m4.png, 1024x1024 - the same size as the plate, so the two compare pixel for pixel with no resample in between. RGB encodes the XYZ surface direction remapped from -1..1 into 0..255. Decoded back to vectors this file measures a mean length of 0.9963, which is the number to check your own decode against: a reader that transposes the channels or inverts the remap still produces a plausible-looking image, and lights the surface the wrong way.

- pngA av m5: surface normal mapA tangent-space surface normal map for the published plate a-av-m5.png, 1024x1024 - the same size as the plate, so the two compare pixel for pixel with no resample in between. RGB encodes the XYZ surface direction remapped from -1..1 into 0..255. Decoded back to vectors this file measures a mean length of 0.9965, which is the number to check your own decode against: a reader that transposes the channels or inverts the remap still produces a plausible-looking image, and lights the surface the wrong way.

Generated by generation/comfy_normal_wave.py. Free for any use, no attribution required, license.