When the tangent slopes within a texture footprint diverge, the box-filtered mean of their unit shading normals evaluates to a length less than one. The Toksvig factor takes that shortened length and derives a lower cosine-power exponent, so a single shaded mean can approximate the average of the individual powers. As the mean vector shortens, the exponent drops, the specular peak falls, and the lobe widens.
Isotropic texture footprints and UV ellipses dictate how a mipmap presents in a scene, but they do not change the length of the shading normal. Shadow map bias addresses geometric error rather than normal variance. This note isolates the variance of a box of shading normals and the cosine-power exponent derived from its length, leaving texel footprints and depth comparisons to separate investigations.
Scene
The cover is a grinder-chuck roller: a steel plug, long with a radius, rests on a surface-grinder chuck with its axis along under a single lamp and one dark panel. Specular response is confined to the cylindrical face; the chuck, panel, and end caps stay diffuse, and contact darkening between roller and chuck is a diffuse term on every operator frame. There is no shadow map. Four stations lock amplitude—polished at , ramp at , hero at , and blasted at . The hero station uses exponent , a slope tile, a texel box, and a texel pitch of 1e-5 m. Highlight azimuth is with a view–lamp split of . Other scenes (loft bottle, metro colonnade, gallery lacquer sphere, courtyard, kiln mouth, night inspection bench, service-yard curb, grazing hallway) are excluded.

The hero render runs on Mesa 25.0.7 llvmpipe with linear scene color and an unmodified Khronos PBR Neutral tone mapper (, , ), then the sRGB OETF, at exposure . On that tile the mean shading normal has length . The Toksvig factor is , which cuts the exponent to . Averaged power and Toksvig lobe halve at and ; renormalized and short-normal curves both halve at . Against the averaged power, Toksvig MAE is and renormalized MAE is (ratio ). Across windows, point specular standard deviation is against Toksvig (ratio ). The run prints pass / fail. Station rows, the hero lobe table, gate dumps, and run tokens live in the appendices; the prose below argues from those meters rather than reprinting them.
Length, factor, exponent
The environment is right-handed with up, in metres; the roller axis is . The tile stores tangent slopes. Each texel is normalized to a unit shading normal before the box average, so a one-texel box keeps length . Notation:
| symbol | meaning | unit |
|---|---|---|
| material cosine-power exponent, | — | |
| slope amplitude on that tile | — | |
| unit shading normal of one texel | — | |
| mean of the unit normals in the box | — | |
| — | ||
| — | ||
| variance roughness | — | |
| Toksvig factor | — | |
| — | ||
| unit half-vector | — | |
| angle of off the reference normal | degree | |
| cosine-power factor, before | — |
Normal length, the variance proxy from earlier mipmapping work, and the Toksvig factor are
At , and . On the hero tile the measured values are , , , and ; is the variance proxy plotted from that same .
The un-normalized cosine power integrates over the hemisphere as . Matching the integral at the modified exponent multiplies by ; this measurement includes that scale. The distinct normalization is not swept. With a clamp at zero and the mean of per-texel powers in the box,
Here is the box for a window, or the full tile for the lobe. At on the hero lobe, gate 10 logs and both and the scale as (header and lobe table abbreviate the peak as ). Exact averaged power at the same angle is ; the short-normal peak is .
Beauty shading uses the cylinder geometric normal for Lambertian, so all three operator frames share one diffuse field (diffuse checksum ). Specular isolates the operator under test to the cylindrical face with and ; the product is . One applies to every frame. The window meter aligns with the tile geometric normal; the lobe evaluates relative to the mean normal of the whole tile. Half-angle is the smallest with .
Three operators on one roller
Averaging the box shortens the mean whenever the underlying slopes disagree. The three beauty operators—and the short-normal plate curve—answer four structural questions on the same camera, tile, lamp, and exposure.
What if the mean is already aligned?
On this tile, renormalization corrects only a minor tilt. Across hero windows the angular gap between and the geometric normal has median and maximum . The two tangent half-angles of the averaged power differ by only (gate 4: and ). Because the mean direction already sits on the lobe axis, the failure is not a wrong normal direction: it is the rigid exponent that cannot reproduce the mean of the powers. At the hero station, while .
What if you renormalize and keep ?
discards and shades at the unaltered material exponent. The band stays continuous in the photograph, but the half-angle refuses to track . Gate 14 keeps the renormalized half-angle at on ramp, hero, and blasted land alike. Absolute angular error against the averaged power is at the hero (gate 13), against Toksvig's . MAE is —orders worse than Toksvig's . Renormalization is quiet (window std ), yet it produces the wrong lobe: continuity without the right width.

What if you only scale the cosine by ?
multiplies the cosine by and leaves the exponent at . The peak drops with (hero peak , below the averaged ), but the half-angle stays locked to the original exponent: gate 10 confirms short-normal and renormalized half-angles are both exactly . Dimming the dot product alone does not widen the lobe; widening requires an exponent reduction. The short-normal curve appears on the factor plate strictly as a negative control.
What Toksvig does instead
Toksvig keeps the length and lowers the exponent to . The lobe peak falls from to , close to the exact averaged peak . The half-angle opens from the original to , matching the averaged power's . Gate 13 quotes the finer half-angles , , and for Toksvig, exact, and renormalized. Gate 14 across stations logs Toksvig / exact / renormalized as at and at .

The point operator shades the center texel at exponent . Past the polished land the highlight fragments into high-frequency sparkle; window std reaches at the hero against Toksvig . Polished land forces and ; gate 1 reports spread , so all three frames leave the same initial specular band.
The cover Toksvig frame keeps the band continuous while widening and dimming as falls. The factor plate plots and against , from the same , and the hero lobe for , , , and . Along that lobe, renormalization sits above the averaged power at ( vs ) and below it at ( vs ; Toksvig tracks at ).

The hero band in the float buffer holds pixels. Mean absolute gap is between Toksvig and renormalized, and between point and Toksvig. Neutral may shoulder an occasional pixel; the gates score the float buffer and the CPU tile independently.
The box is a fixed -texel window in the tangent plane. Slope texture is at max level with slope readback error . An albedo checker through the same box logs box std and point std , confirming the texture average completes in the same regions where renormalized specular misses the averaged power. Cylinder curvature that the box ignores contributes a minimal half-angle and mean length , so the documented drop in isolates to the slope tile. Stored slopes were not rescaled onto unit variance; sample standard deviations are and .
| frame | role |
|---|---|
| 00 | Cover. Toksvig on the full roller. |
| 01 | Point. Same camera, same tile, center texel, exponent . |
| 02 | Renorm. Same camera, same tile, renormalized mean, exponent . |
| 03 | Factor plate. , , , and the hero lobe, including the short-normal curve. |

Discussion: floors, claims, and what OSMesa does not prove
On 2026-10-02 the standard-deviation floor was relaxed to after the ramp station measured , just under the earlier floor of . The hero station clears comfortably at . The nudge documents a gate that was slightly too strict for the ramp land; it does not change the operator ranking or the half-angle story. The shipped print remains 14 pass / 0 fail.
Can claim. On this OSMesa / llvmpipe build (4.5 (Core Profile) Mesa 25.0.7-2+deb13u1, llvmpipe (LLVM 19.1.7, 256 bits)), one isotropic slope tile and one tangent box, three operators on one roller show a Toksvig lobe that tracks exact averaged cosine power in peak and half-angle; a renormalized lobe that keeps exponent and misses that average; and a short-normal curve that dims the peak without leaving the original half-angle. The cover is the Toksvig frame under the and Neutral constants above. The run prints 14 pass / 0 fail.
Cannot claim. The result does not transfer to a discrete GPU, a hardware mip chain, or an anisotropic footprint. It does not validate a GGX , a LEAN covariance, or a combed lay. It excludes shadow maps and any bias length from the curb note. We do not claim that , , or any half-angle was read from a PNG. The spectrum from the mipmaps note and the ellipse from the anisotropic note were not remeasured here.
Out of scope
Excluded: LEAN, CLEAN, and a covariance matrix for a combed lay; GGX, Smith, Fresnel, split-sum, environment maps, and converting into a GGX ; the cosine-power normalization; a Toksvig table indexed by normal length rather than the factor; hardware mip chains, texture() filtering, anisotropy, EWA, and screen-space derivatives as a box proxy (those footprints belong to the mipmaps and anisotropic notes); normal-map compression that discards length before the factor; parallax occlusion, displaced grinding geometry, and silhouettes other than this roller; shadow maps, secondary lamps, and image-based lighting (contact darkening here is diffuse only); temporal antialiasing, MSAA, and FXAA sold as specular antialiasing; reading , , or a half-angle from a PNG; discrete-GPU texture filters, occupancy, Forward+, and VNDF.
The mean vector shortens. The exponent drops. The lobe widens. Dense meters follow.
Appendix A — Hero and station metrics
Metrics are from the metrics log, CPU double precision, before Neutral tone mapping. Each station row aggregates one across the tile. Peak uses the tile mean normal. MAE and window standard deviations use non-overlapping boxes with half-vector fixed to the geometric normal. Quote these tables if a metrics-snapshot line is clipped; do not quote beauty photographs as meters.
| station | MAE tok | MAE ren | std point | std tok | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| polished | 0.000000 | 1.000000 | 1.000000 | 0.000000 | 1.000000 | 1.000000 | 1.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| ramp | 0.060000 | 0.996446 | 0.814154 | 0.003567 | 0.813925 | 0.817013 | 1.000000 | 0.003227 | 0.185261 | 0.149473 | 0.009258 |
| hero | 0.120000 | 0.986210 | 0.527737 | 0.013983 | 0.524450 | 0.535002 | 1.000000 | 0.011407 | 0.472362 | 0.277901 | 0.015002 |
| blasted | 0.180000 | 0.970388 | 0.338638 | 0.030516 | 0.330171 | 0.348813 | 1.000000 | 0.019403 | 0.662886 | 0.296782 | 0.013161 |
Hero header half-angles: exact , Toksvig , renormalized , short-normal .
Hero dump (also in the opening prose): , , ; half-angles , , ; MAE / (ratio ); std / (ratio ); asserts pass / fail. Gate 13 hero half-angles: , , .
Appendix B — Hero lobe table
Full-tile lobe; in degrees.
| 0 | 0.524450 | 0.535002 | 1.000000 | 0.411196 |
| 2 | 0.513721 | 0.524104 | 0.961752 | 0.395468 |
| 4 | 0.483154 | 0.492698 | 0.855481 | 0.351771 |
| 6 | 0.436262 | 0.444406 | 0.703588 | 0.289313 |
| 8 | 0.378135 | 0.384508 | 0.534783 | 0.219901 |
| 10 | 0.314543 | 0.319007 | 0.375399 | 0.154363 |
| 12 | 0.251020 | 0.253666 | 0.243154 | 0.099984 |
| 14 | 0.192116 | 0.193215 | 0.145166 | 0.059691 |
| 16 | 0.140948 | 0.140874 | 0.079775 | 0.032803 |
| 18 | 0.099081 | 0.098236 | 0.040291 | 0.016567 |
| 20 | 0.066706 | 0.065456 | 0.018668 | 0.007676 |
| 22 | 0.042994 | 0.041627 | 0.007918 | 0.003256 |
| 24 | 0.026521 | 0.025235 | 0.003067 | 0.001261 |
| 26 | 0.015654 | 0.014562 | 0.001082 | 0.000445 |
| 28 | 0.008841 | 0.007985 | 0.000347 | 0.000143 |
Appendix C — Assertions and run tokens
Printed by the execution: 14 pass / 0 fail.
Controls before the factor is scored: at the four specular implementations agree; a one-texel box logs theoretical spread ; hero with and decreasing across stations; tangent split ; omitted curvature fan length ; albedo box std , point std ; median direction error ; front ; shoulder margin ; hero band pixels; tile checksum constant; diffuse checksum independent of specular operator; slope readback error ; beauty-probe max absolute error ; exposure ; exposure product ; at hero lobe peak and matches the integrated scale.
Ship gates: Toksvig window error of renormalized error (renormalized MAE ); point std times Toksvig; Toksvig half-angle from averaged power, renormalization inside it. Across ramp and blasted, exact averaged half-angles and ; renormalization stays at . Gate 14 dumps: at ; at .
Camera / eye / lamp: eye , lamp ; front ; tile checksum 13977052775431240132; diffuse checksum .
Gate 10 peak tokens: ; and scale both ; exact ; short ; short and renorm half-angles .
Std-floor history: floor set to on 2026-10-02 after ramp fell under ; hero .
Schema for the metrics figure: 00 cover, 01 and 02 the two failures of the same box, 03 the factor plate. HUD cover abbreviates as .
Appendix D — Formula cheat sheet
r = |n_bar|
alpha2 = (1 - r) / r
ft = r / (r + s * (1 - r))
s' = ft * s
S_tok = (s' + 1) / (s + 1) * (n_hat · h)_+ ^ s'
S_ren = (n_hat · h)_+ ^ s
S_short = (r * n_hat · h)_+ ^ s # plate only; half-angle stays at s
S_point = (n_0 · h)_+ ^ s
hero r = 0.986210, ft = 0.527737, s' = 33.775156
half exact 11.64, Toksvig 11.57, renorm 8.42, short 8.42
MAE 0.011407 / 0.472362 # ratio 0.0241
std 0.277901 / 0.015002 # ratio 18.524
asserts = 14 pass / 0 fail