Perception & Vision User Guide
Use Auric Artisan Perception & Vision Lab to preview how images, UI, brand colors and camera scenes may appear under simulated visual conditions.
Overview
Perception Vision runs eight simulations of how a scene reaches a different visual system over an image, a test card, a Snellen chart or your camera: colour vision deficiency, scotopic and mesopic vision, lens yellowing, cataract, central loss, light adaptation and acuity. It is an educational approximation. It is not a clinical instrument, and the page says which of its numbers come from a published table and which are this tool's own.
1. Open the Lab
+- Tool URL: open Perception Vision.
- Default state: the built-in test card, colour vision at protanopia, severity 1.00, split view, D65 — that is, the scene as authored — and the GPU renderer.
- Six tabs: Lab is the workbench. Simulation shows where a colour goes on its way through the projection. Modes shows every entry over the same source. Data is the register of what each figure rests on. Export takes a list of colours, the frame, the settings or a link. Reference holds the standards, the formulas, the citations and the research notes.
- Processing: everything runs on your machine. Without WebGL2 the page runs the same simulations on the CPU and says so — it used to show nothing at all.
2. Sources
+| Source | Use |
|---|---|
| Test card | Eight colour patches, a nine-step grey ramp and three single-channel ramps. The grey ramp is the test that needs no reference: a colour-vision simulation that tints it is wrong, and you can see that without consulting anything. |
| Grey ramp only | The same nine steps, full frame, for reading the drift figures at a glance. |
| Snellen chart | Rows from 20/200 to 20/20, so the acuity mode has something to be judged on. |
| Uploaded image | A local file — a design, a screenshot, a photograph. |
| Camera | Live frames from a camera you allow. |
Nothing is uploaded. Files and camera frames are decoded into a local canvas and handed to your own GPU, and nothing leaves the page until you press an export button.
3. The eight simulations
+| Mode | What it does, and what it rests on |
|---|---|
| None | The source, unchanged. A real entry in the list and not a simulation — the hero used to count it and claim nine. |
| Colour vision | Protan, deutan or tritan, through the Viénot, Brettel & Mollon 1999 projection in LMS. Severity blends between no loss and full dichromacy, which is a convention of this tool rather than a model of anomalous trichromacy. |
| Scotopic | Rod-only vision: colour collapsed to a single rod signal, darkened and blue-shifted. The three weights are this tool's own and are not V′(λ). |
| Mesopic | A crossfade between the rod image and the source, driven by the adaptation level. Not the CIE mesopic system. |
| Lens yellowing | A blue-absorbing gain that grows with observer age from 20 to 80. Right in direction; the constants are this tool's own. |
| Cataract | Forward scatter as a small blur, plus a yellow cast and a contrast lift. |
| Central loss | A soft-edged disc of reduced luminance at the centre of the frame. Named for what it draws, not for a disease. |
| Light adaptation | Gain and desaturation against an adaptation level. |
| Acuity | A defocus sized from a Snellen denominator, 20/20 to 20/200. The mapping is this tool's own and carries no viewing distance. |
The CSF overlay that used to be on this list is gone. It multiplied the image by the Mannos-Sakrison contrast sensitivity curve and handed that curve the pixel's distance from the centre where it takes spatial frequency, so at its own defaults it returned a black frame. The Modes tab shows what it did and says what a real one would take.
4. Controls
+- Severity: 0 leaves the source alone, 1.00 is full dichromacy. In between it is a linear blend toward it — a convention of this tool, not a model of anomalous trichromacy.
- Type: protan, deutan or tritan. Daltonise pushes what the projection lost back into the channels that survive, instead of simulating the loss.
- Adaptation level: where the mesopic crossfade and the light-adaptation gain sit.
- Age: 20 to 80, for lens yellowing.
- Scotoma radius: the size of the central-loss disc.
- Cataract: scatter, yellowing and contrast-loss strength together.
- Acuity: the denominator of a Snellen fraction, 20/20 to 20/200.
- Compare: split, simulated only, or difference. Both halves of a split get the same adjustments, so the only thing that differs across the divider is the simulation. Drag on the image to move the divider.
- Renderer: GPU or CPU. The same maths either way — the colour transform composes into one matrix that both use — and the Lab checks the two against each other after every change.
- Before the eye: the illuminant, D65, D50 or A, with a strength. Bradford adaptation is applied to the stimulus before the visual system, because that is the order light arrives in. Under illuminant A the scene leaves sRGB by a wide margin; that is the correct answer and the readout says how much.
- Adjustments: contrast, gamma, blur, glare and noise. These are not simulations and the page does not count them as ones.
5. The readouts
+- The grey ramp: nine steps with the channel spread the running simulation introduces into each, in 8-bit code values. Under colour vision it has to be zero all the way along, because a dichromacy projection collapses one hue axis and leaves the achromatic one alone. Under scotopic a non-zero row is the effect, not a defect, and the note under the strip says which case you are in.
- Neutral drift: the worst of those nine figures.
- Colours merged: how many of the frame's own distinct colours the simulation brought to the same place. This is the thing a colour-vision simulation is for.
- Out of sRGB: how much of the frame the projection pushed outside the gamut, rather than letting the clamp hide it.
- GPU and CPU agree: the two renderers are run over a grid of 216 colours and compared. It reads n/a — spatial for a mode that reads its neighbours or its position, because a strip of flat colours cannot check one.
- Frame luminance: mean, minimum and maximum of what is on screen.
- Enlarge: double-click the viewport.
6. Presets and exports
+| Action | Result |
|---|---|
| Presets | Protanopia, mild deuteranomaly, tritanopia, low light with glare, lens at 70, cataract, central loss and acuity 20/80. Every value a preset sets reaches something that draws. |
| Save the frame | perception-[mode]-[severity].png, with whatever the overlay drew. |
| Download the CSV | The colour list with its simulated hex, LMS, opponent channels, ΔE00 and whether the encode clamped — under a comment header naming the chain, the matrix, the illuminant, the renderer, whether the two renderers agreed, and that this is not a clinical measurement. |
| Download the settings | The same provenance as JSON. Load settings reads it back. |
| Copy a link to this view | A URL carrying the simulation, the type, the severity, the adjustments, the illuminant, the comparison, the source and the renderer. |
| Reset | Back to the test card, protanopia at 1.00, split view and D65. |
7. A list of colours
+The Export tab takes hex colours, one per line, and runs each through the simulation the viewport is showing — the same code, not a second one that drifted from it. The table gives the simulated hex, the LMS cone responses, ΔE00 against the input, and whether the result stayed inside sRGB.
Put a grey in any list you check. It is the row that catches a simulation tinting neutrals: a dichromacy projection has to leave it exactly where it was, at ΔE 0.0.
8. Library saves
+Library registers Perception Vision as a Perception tool with preset capture. When a canvas is
present, the first tool canvas is stored as a perception snapshot. The shared runtime hook
reads window.AAPerceptionVision.getState() and restores through
window.AAPerceptionVision.restoreState(saved).
Use Library saves for repeatable accessibility review cases, UI audit snapshots, design-system comparisons and teaching demos.
9. Workflows
+- Accessibility review: upload a screenshot, run protan, deutan and tritan at severity 1.00, watch colours merged, and export the CSV for the palette.
- Palette check: paste your brand hexes into the Export tab with a grey among them and read the ΔE00 column — two rows that arrive at the same hex are two colours your reader cannot tell apart.
- Low-light check: scotopic or mesopic, lower the contrast, add a little glare, and compare in split view.
- Ageing review: lens at 70 and cataract, to test blue-dependent labels and low-contrast affordances.
- Acuity check: the Snellen chart as the source, then walk the acuity slider from 20/20 to 20/200.
10. What this tool does not hold
+- This is an educational and design-review simulator, not a clinical diagnostic tool. Nothing it prints is a measurement of anybody's vision.
- The dichromacy matrices are the published Viénot 1999 values and are not individualised to an observer. Severity between 0 and 1 is a blend, not a model of anomalous trichromacy; Machado 2009 is what that would take.
- The rod weighting is this tool's own and is not V′(λ). No scotopic luminance is reported from it.
- The lens, cataract, acuity and light-adaptation models carry this tool's own constants. They show that an effect exists; they carry no clinical meaning.
- There is no contrast sensitivity function here. The mode that claimed one was withdrawn, and nothing on the page may be reported as a contrast-sensitivity result.
- Camera access depends on browser permission and a secure context. WebGL2 depends on the device; without it the page runs the same simulations on the CPU.
- Uploaded image content is session-local; Library restores settings, not file bytes.
The Data tab carries all of this as a register, entry by entry, with a status of verbatim, computed, stand-in or absent, and says what each absent entry would take. For architecture and implementation details, see the Perception Vision Developer Reference.