Inputs · from the game
Tier ·
- MetalPower
- MetalSaturation
- Ring
Accent · template B
Read out of the APK (Niantic.Holoholo.BadgeMaterialConfig, sharedassets1 pathID 162909): one MetalColor / MetalPower
per tier, one DetailColor per medal. The shader that uses them (ma_Badge) lives in a remote bundle, so the maths below is estimated.
What if
Layout · icon in the ring
Drag the icon in the big render to move it; the guides show the frame's centre, the icon's box and its centre, and snap to centre (Alt to skip snapping). Wheel over it to scale (the aspect ratio is always kept); ←↑→↓ nudge 1 px (Shift 10) while it has focus. The ring never moves. Offsets are of the 512 frame; scale multiplies the rule. Kept per medal in your browser; exports use it.
Model · estimated
metal = mix(MetalColorP·k(G), white, w(G))
k(G) = max(0, a0 + a1·G) w(G) = sat(c0 + c1·G)
accent = the same on DetailColor over B (power 1)
then c += l0 + lu·u + lv·v (light over the sprite)
Render
All tiers
Save PNG writes the icon, the ring and the composed medal; Render all… zips every medal at every tier.
Compare · in-game screenshot
The reference is the screenshot's big icon resampled onto the template grid (JPEG, so ~8–10 is the floor); only the pixels both have are compared.