Natural gene / phase 1
Dun
Real-horse TBX3, and the mod’s second three-allele
locus. Two effects that come apart: a body dilution that thins black
pigment and leaves red almost alone, and primitive markings — a dorsal
stripe into the tail, plus leg bars, a shoulder bar and a face mask on the horses that
draw them — that read dark because everything around them got lighter. The third
allele is the one that carries the markings without the dilution.
Crossing two of them
What it looks like on each base
| Base | With D | With d1 only |
|---|---|---|
bay (E_ A_) | bay dun / zebra dun — tan body (all of it the black coming off, none of it the red moving), black points that survive the dilution intact, a black-centred mane and tail with pale guard hair either side, dark dorsal stripe, bars where there is pale leg to show them on | ordinary bay, slightly lighter through the barrel, with a deeper line down the spine |
black (E_ aa) | grullo — a blue-grey slate body on the gradient’s neutral column, black lower legs, a black-centred mane and tail, near-black dorsal stripe and bars | plain black — nothing visible |
chestnut (ee) | red dun — a chestnut, very slightly lifted, carrying red-brown rather than black points and markings. The subtlest of the three by a long way. | ordinary chestnut with a faintly redder dorsal line |
Its gene carrot
- Gene key
- horsegenetics.dun
- Alleles
- D d1 d2
- Outcomes
- wild,
primitive-marks,dun - Combinations
- 6, landing on 3 outcomes
- Default allele
- d2
- Wild frequency
D1 in 24,d11 in 10 per allele- Founder draws
- 1 × nextFloat()
- Deterministic
- no — the markings are rolled per horse
- Epigenetic draws
- 1 × nextLong() + 7 × nextFloat(), on both marked outcomes
- Dilution
PigmentField.diluteNeutral— red first, then black- keep red / black (
D) - 0.93 of the visible red; 0.42 of the black
- keep red / black (
d1) - 0.95 of the visible red; black never touched
- dorsal half-width
- 1.5 body units, ×0.80–1.30 per horse
- leg bars
- joint 0.56, spread 0.48, spacing 3.2, duty 0.42 —
Donly, per leg - accessory chances
- bars 0.82 per leg, shoulder bar 0.55, face 0.40
Two dominance orders over one locus
This is the gene that most obviously needs a table rather than a label. Dilution reads
D > d1 = d2; marking reads D = d1 > d2. Two orders over
the same three alleles, and no single word covers both — which is exactly why
there is no dominance property in this model, only an
outcome per combination.
| Combination | Outcome | Dilutes? | Dorsal stripe? | Accessory markings? |
|---|---|---|---|---|
D/D, D/d1, D/d2 | dun | yes | yes | rolled per horse |
d1/d1, d1/d2 | primitive-marks | no | yes | no |
d2/d2 | wild type | no | no | no |
So d2 is the only allele that draws nothing, and it —
not the old catch-all d — is the gene’s
default allele: the token a code with no dun segment
reads as. A horse can carry a dorsal stripe and not be a dun, which is what
d1 is for.
One dilution and one mask
Phase 1 is downward-only — a natural gene can never add pigment back — so nothing here can literally paint a dark line onto a coat. It does not need to. A primitive marking is countershading: “a stripe darker than the body” and “a body lighter than the stripe” are the same picture. So the whole gene is one dilution and one mask. The mask says, per texel, how much of the dilution to lerp back off, and every dark thing a dun has is a region where that number is high.
double mark = CoatRegions.dorsalStripe(skin, part, point, m.dorsalHalfWidth());
mark = Math.max(mark, pointRegion(skin, part, point)); // midtstol, ears, muzzle, lower leg
mark = Math.max(mark, alreadyAPoint(f.red(px, py), f.black(px, py))); // a bay's black, wherever it climbed
if (accessories) {
mark = Math.max(mark, m.shoulder() * SHOULDER_DEPTH * CoatRegions.shoulderBar(...));
mark = Math.max(mark, m.face() * faceMarking(skin, part, point, m));
int leg = CoatRegions.LEGS.indexOf(part);
if (leg >= 0 && m.bars()[leg] > 0) {
mark = Math.max(mark, m.bars()[leg] * BAR_DEPTH * CoatRegions.legBar(...));
}
}
f.diluteNeutral(px, py, lerp(keepRedBody, 1f, (float) mark),
lerp(keepBlackBody, 1f, (float) mark));
Both marked outcomes run that same painter and differ only in their constants and in how much of the list they draw. There is no special case anywhere, and the whole locus stays inside the restrict-only contract.
Grullo, and the order the two pigments come off in
The dilution is PigmentField.diluteNeutral, not the warm
dilute that cream and
champagne use. The two are opposites and the difference
is an order: red down first, then black.
A black horse is (red = 1, black = 1) — a full load of pheomelanin that
the eumelanin above it hides, visible nowhere but on the gradient’s bottom row.
Scale the two pigments together and the black comes off first, unmasking that red
on the way out and walking the sample diagonally into the golds; a “grullo”
built that way is a milk-chocolate horse. So the dilution scales the visible
red instead — red * (1 - black) — and stores back whatever
reproduces it against the black that is left:
black' = black * keepBlack
red' = red * (1 - black) * keepRed / (1 - black')
Same invariant whiten keeps, and for the same reason, with the two pigments
free to move by different amounts. On a chestnut nothing is masked and it collapses to
red * keepRed; on a black horse the numerator is 0, red goes straight to 0,
and the sample slides down the gradient’s neutral column into the blue-greys
where grullo actually lives.
The old painter had a special case: a leg bar kept its black only, because
re-introducing red on a black leg turned the bar into a warm patch. That was the same
unmasking bug seen from the other side. With diluteNeutral a bar is just
“less diluted” like every other marking, and the special case is gone.
Dun takes black off. It barely touches red.
That one asymmetry is what makes the three bases come out as different as they do from a
single pair of numbers — and it is why keepRed sits so close to 1.
| Base | What the dilution has to work with | Result |
|---|---|---|
| black | No visible red at all — it is all masked — so only
keepBlack applies. |
The sample slides straight down the neutral column. Grullo, and the largest colour change of the three. |
| bay | Mostly red under about a third of a load of black. | Taking that black off unmasks the red it was damping and the body swings red-brown to tan. Bay dun — a big, obvious change, and none of it is the red moving. |
| chestnut | No black to take. | Red dun is almost the same colour as chestnut. What
keepRed buys is not a dilution, it is just enough countershade to let the
markings read at all. |
Not a pale horse. If a red dun’s body reads as a distinctly lighter, more golden
colour than a plain chestnut beside it, KEEP_RED has been turned down too
far — the visible effect of dun on a chestnut is a couple of very subtle markings
and almost nothing else.
The points, and how a bay dun keeps them
A dun dilutes the body coat. The points do not go with it — that is what
makes a bay dun a tan horse with black legs rather than a uniformly faded one, and a
grullo a blue-grey horse with a black mane. So the mask is 1 on the ears and muzzle
outright, 1 down the centre of the mane and the tail, and 1 up the
bottom POINT_LEG_SOLID of each leg before fading out over the next
POINT_LEG_FADE — a soft transition rather than a ring.
That handles a grullo, whose points are only points because of where they are. It does not handle a bay, whose black climbs its legs and face by a rolled amount that can reach most of the way up. For that there is one more line:
private static double alreadyAPoint(float red, float black) {
return Math.sqrt(black * (1.0 - red));
}
The pigment model says it exactly. A gene that paints a point paints it
absolutely: BayCoat sets red = 0, black = 1, and
that pair — black with no red under it — occurs nowhere else. A black
horse is (1, 1): black with a full load of masked pheomelanin, which
is what makes it a body colour and not a point, and which is what dun is supposed to
dilute into grullo. Multiply and the two separate cleanly: 1 for a point, 0 for a black
body, 0 for a chestnut, and the partial values through a bay’s leg ramp turn out to
be exactly the fade the mask wants. The square root shortens that fade — without it
the top of a seal bay’s black leg diluted to a grey cuff between
the tan body and the black point, and no real horse has one of those.
The midtstol: why the mane is not a flat point
The dorsal stripe does not stop where the hair starts. Forelock, mane centre, spine and tail centre are one continuous system on a dun — the Norwegian name for the mane's share of it is the midtstol, and the tail's is the halefjær. So the mane and the tail get a dark band down the middle with pale guard hairs either side, not a rectangle of undiluted base colour.
private static double midtstol(Skin skin, Part part, BodyPoint point) {
return HairPattern.centreStripe(skin, part, point, MIDSTOL_HALF_WIDTH);
}
It reuses HairPattern.centreStripe, the shape
the healer's red line down the mane already uses, so the band lands on the part's own axes
rather than the world's — a mane and a tail are both rotated out of true by their
rest pose, and neither “stripes along X” nor “along Y” is right for
both.
The half-width is set by the mesh
MIDSTOL_HALF_WIDTH is 0.25 and that is arithmetic, not taste.
A mane is four texels across, so the only two distances from the centre
that exist are an eighth of the span and three eighths of it. centreStripe
feathers over halfWidth ± halfWidth/2, and 0.25 puts those two edges
exactly on those two rows: the inner pair is fully dark, the outer pair is fully pale.
At 0.20 the feather caught the dark rows too and a bay dun's mane came out at 97 %
black instead of black — invisible in a screenshot, wrong in the pigment field.
The guard hair is an overshoot, scaled by the dilution
The reference calls the outer hairs cream, silver-white or yellowish. A mane
diluted only as far as the barrel reads as one colour at riding distance, so the guard hair
is diluted past the body by GUARD_HAIR — but scaled by
how far that channel is being diluted at all:
float over = hair ? (float) (GUARD_HAIR * (1.0 - mark)) : 0f;
f.diluteNeutral(px, py,
lerp(keepRedBody, 1f, (float) mark) * (1f - over * (1f - keepRedBody)),
lerp(keepBlackBody, 1f, (float) mark) * (1f - over * (1f - keepBlackBody)));
That scaling is what keeps it a dun feature. A d1
horse takes no black off anything, so its guard factor is exactly 1 and the painter stays
the byte-for-byte no-op the tests pin. Guard hair is pale because the dilution is stronger
there — it has no reason of its own.
On the long hair the marking mask caps
alreadyAPoint instead of losing to it, and that one
line is the whole fix. A bay's mane arrives at the dun painter as
red = 0, black = 1, so alreadyAPoint returned 1 for every
texel of it, the painter took its early exit, and a bay dun's mane came out
byte-identical to a plain bay's while a grullo got a perfectly good midtstol.
Everywhere else the maximum is still right: a leg is a point because it is already
black, not because a mask said so.
Every dun, not only the Fjord
The Fjord is famous for this because the breed clips the mane upright so the pale-dark-pale
cross-section is unmissable, and because a pale body makes a dark centre shout. The
marking is not breed-specific and it is not a separate locus — a dun is a
dun. So it is drawn on every D horse here, at a contrast that follows the base
colour: near-black down a grullo's mane, dark red down a red dun's, and most dramatic on a
cream-diluted dun, exactly as the field guides describe. The upright clip itself is
grooming, and grooming is not modelled.
The reference this came from proposed a fictional F “Fjord mane
pattern” modifier plus three hidden quantitative loci gating the effect. That is a
new system for a marking every true dun already has, and it would have let a
D/_ horse with the wrong modifiers show no mane stripe — which
the same reference says is not how dun works. Declined; see
philosophy on inventing loci.
The marking checklist, region by region
What a field guide looks for, and what the gene draws for it. Only the dorsal stripe is diagnostic; everything below it is a “sometimes”, which is why the accessories are rolled per horse.
| Region | What a real dun shows | What the gene draws |
|---|---|---|
| Back | The dorsal (eel) stripe: withers to dock along the spine, continuing into the tail. The one feature that is actually diagnostic. | CoatRegions.dorsalStripe on the barrel, neck, mane and tail, weighted to the top of the box so it does not also land on the belly. Half-width jittered per horse. |
| Legs | Short transverse strokes, not bracelets: uneven, often broken part-way round, concentrated at and just above the knee and hock, asymmetric between legs. | CoatRegions.legBar, rolled and seeded per leg. D only. |
| Shoulder | A bar crossing the shoulder from the withers, down and back — often just a smudgy shadow, sometimes several fine lines. Highly variable. | CoatRegions.shoulderBar: one noise-warped diagonal stroke on the front of the barrel. At two texels to the body unit a fan of fine lines is three pixels of noise. |
| Head | A darker forehead or full face mask, or “cobwebbing” — fine radiating, branching rings on the forehead. A strong mask tends to replace the web rather than join it. | CoatRegions.faceMask (a radial falloff from the forehead) or faceCobweb (noise-warped rings inside that same falloff). One roll picks which; the stronger half of its range goes to the plain mask. |
| Neck | A darker crest, sometimes fine marks running up from the withers. | The dorsal stripe already runs the length of the neck box and the mane centre is a point, so the crest comes out darker with no extra code. No separate neck bars. |
| Ears, muzzle | Dark, in the base colour — black on a bay dun or grullo, red-brown on a red dun. | Points: the mask is 1, so the dilution never reaches them. |
| Mane, tail | A dark band down the centre, with paler hair either side of it — the midtstol, continuous with the dorsal stripe at both ends. | A centre stripe rather than a flat point, and the guard hair outside it diluted past the body. |
| Belly, flank | Lighter than the points; some duns show diffuse mottling or rib shading near the flank, many show none. Supportive, never diagnostic. | Nothing. A blurry patch that half the duns do not have costs a marking’s worth of noise on a 128px sheet and buys no recognition. |
Leg bars: strokes, not bracelets
The old field was a plain function of y — evenly spaced, equally strong,
and identical the whole way round the limb — so every leg wore the same three rings,
low down on the cannon. Every clause of that is wrong about a real dun. The rewrite is
four separate irregularities stacked on one band phase:
| Irregularity | How | What it buys |
|---|---|---|
| Bands wander | The y phase is warped by 3D BodyNoise. | A bar reads slightly diagonal and wobbles instead of sitting ruler-flat. |
| No two bars alike | A per-band hash on thickness and strength. | One long band and one or two shorter, fainter ones — not a comb. |
| Bars break | A second noise sample frozen to the band index, so it varies as you walk round the limb and not as you walk up it. | A ring becomes a slash; one band becomes two fragments. The majority of bars fade out somewhere round the leg. |
| Legs disagree | A different seed and a separate presence roll per leg. | Three bars on one foreleg, a smudge on the other, and sometimes nothing at all behind. |
On top of that, a window peaks at BAR_JOINT and dies out both
at the pastern and where the leg meets the body. That is the same fraction of the leg box
the point mask is fading out at, which is not a coincidence: the dark
lower leg ends at the knee, and the bars start there, on the pale leg above it, which is
exactly where a real dun’s read best.
On a dark bay dun - a high shade score - there is very little pale leg left, and the bars are correspondingly hard to see — the same thing a field guide says about a real one: a bar disappears visually once it reaches the black lower leg, because there is too little contrast, not because the pigment variation stopped.
The markings are incomplete on purpose
Leg barring, shoulder bars and forehead rings occur on some duns. A genuine dun may have a striking dorsal stripe and nearly invisible shoulder bars, or clear leg barring and no cobwebbing at all. So each accessory carries a propensity on the expressing copy — a stored number tested against that accessory’s chance, so the tendency is heritable and a line can be bred toward it. A horse regenerates the same markings every session, and a foal that inherits the copy inherits its dam’s.
/** absent on (1 - chance) of horses; on the rest, a faint smudge ramping up to full. */
private static double accessory(float roll, double chance) {
if (roll >= chance) {
return 0;
}
double t = (chance - roll) / (chance * 0.55);
return t > 1 ? 1 : t;
}
Deliberately not a plain uniform: most of the duns that have a shoulder bar have a
hint of one rather than a painted stripe. That ramp lives in the painter, and
what is stored is the propensity it reads — seed
(the marking field), dorsal_width, shoulder,
face, and bar per leg. Both marked outcomes read the same
values even though d1 only uses the first two, so a d1 horse
that later gains a D copy keeps the stripe it had and gains the accessories
it was always carrying.
d1: a marking with no dilution
A non-dun horse is by definition undiluted, so d1 cannot paint a dark line on
it. It does not need to — it runs the same painter with constants chosen to move as
little as possible:
- Black is never touched (
keepBlack = 1), which is the whole of what “non-dun” means here. Taking black off is the half of the dilution that actually changes a horse’s colour, so an allele that does not dilute must not do it. - Only the visible red is taken, and only 5% of it — less than
D’s 7%, which is itself barely anything. A chestnut lightens a whisper, a bay body less, a true black or a bay’s points not at all.
A d1 horse on a solid black base is composed byte-identically
to a plain black one — there is no visible red to take and black is untouched.
That is not a gap: a real non-dun black shows no visible primitive markings either. The
marking appears on the bases that have red to give up — chestnut, bay, and
everything downstream of them. DunGeneTest pins both halves.
Founder frequencies
The six weights are written out rather than computed, so one row can be retuned without
disturbing the others. They are Hardy-Weinberg at p(D) = 1/24 and
p(d1) = 1/10. The three D rows still sum to what the old
two-allele table gave, so adding d1 split the non-dun population rather than
making duns rarer.
| Combination | % of founders |
|---|---|
D/D | 0.174 |
D/d1 | 0.833 |
D/d2 | 7.153 |
d1/d1 | 1.000 |
d1/d2 | 17.167 |
d2/d2 | 73.674 |
So roughly one wild horse in five carries primitive markings without being a dun — common enough to be a familiar sight, and the reason the locus is worth three alleles rather than two.
Bars belong to D alone. A real nd1 horse can
show faint leg barring and shoulder shadowing as well as the dorsal stripe; here it
gets the stripe only. The reason is structural rather than lazy: d1 does
not dilute, so a marking on it is a countershade against a body that barely moved, and
on a d1 horse’s legs — the part of it most likely to be a
black point already — there is nothing to countershade against.
Not drawn at all: flank mottling and rib shading (see the checklist above) and ear edging beyond the ears being points. See roadmap. Guard hairs used to be on this list and are not any more — see the midtstol.
The gene, and two different things near it
TBX3 is T-box transcription factor 3 — a protein that regulates when and where other genes switch on during development, with broad roles across mammals including limb and skeletal development. What makes it interesting here is that different regulatory variants near the same gene affect two very different traits: the dun coat, and (in certain Chinese horse and pony populations) a substantial component of wither height. The familiar dun test is about the first of those and predicts nothing about the second.
| coat-colour locus | size-associated enhancer | |
|---|---|---|
| chromosome | ECA8 | ECA8 |
| position | downstream regulatory region of TBX3 | upstream enhancer of TBX3 |
| phenotype | dun dilution and primitive markings | wither height in sampled Chinese horses and ponies |
| variants | D, nd1, nd2 regulatory haplotypes | TBX3-EN2 A/G at ECA8:20,644,555 |
| same test? | yes — the standard dun test | no — a distinct research marker |
| health consequence | none recognised | none established |
The original mapping put the coat locus in a roughly 200 kb interval on chromosome 8 containing TBX3. On EquCab3 the gene is annotated around 20.51–20.53 Mb; older papers report positions near 18.2 Mb because they used an older assembly. That is an assembly-version mismatch, not two loci. Imsland et al., PMC4731265
The mechanism, which is inside the hair
Dun is not simply less melanin. In a dun horse most body hairs have pigment packed into only about 25–50% of the hair cortex, giving a radially asymmetric, partly diluted shaft. Hairs in the dorsal stripe stay evenly and intensely pigmented, so the stripe stays dark.
The developmental sequence appears to be:
- In a growing follicle, TBX3 is expressed asymmetrically in a subset of hair-bulb keratinocytes.
- That asymmetry changes follicle differentiation and locally reduces expression of KITLG, a major signal supporting melanocyte migration and survival.
- Melanocytes and pigment therefore occupy only part of the developing cortex.
- The finished hair looks diluted, while selected regions keep darker hairs and form the primitive markings.
That explains why dun looks so patterned: it is controlled at a microscopic radial level inside individual hairs as well as by where on the body the follicle sits.
One dilution and one mask is a pixel-level restriction plus a marking pass — a per-pixel decision where the biology is a per-hair, sub-hair one. That is the right level for a 64×64 texture, and it is why the mod’s markings are drawn as explicit geometry rather than falling out of the dilution the way they do in a real follicle. The one thing the real mechanism predicts and the mod has to assert separately is exactly why the stripe stays dark: in a horse it is the same field, read differently by follicle position.
Three alleles, one dominance order
D > nd1 > nd2, where D is dun,
nd1 is non-dun with possible primitive markings, and nd2 is
ordinary non-dun with no genetically expected markings.
| allele | molecular description | visible effect |
|---|---|---|
| D | ancestral regulatory haplotype, preserving hair-follicle TBX3 regulation | full dun dilution plus primitive markings |
| nd1 | a regulatory SNP affecting enhancer activity | no body dilution; markings, especially a dorsal stripe, may remain |
| nd2 | a derived ~1.6 kb deletion in a downstream enhancer | no dilution, no TBX3-caused markings |
Some laboratories write d1 and d2 in lower case; same alleles. The
mod uses that second convention. A single D is enough to produce dun, so
a D/nd2 horse is visibly dun and transmits D to only half its
foals, while D/D transmits to all of them.
The thing this allele series does that most do not is run two orders at once:
D alone dilutes, but D and d1 both mark. That is
exactly how the mod implements it — two predicates,
dilutes() asking for D and marks() asking for
D or d1 — and it is a faithful rendering of a real allele
series that is genuinely awkward to state in one sentence.
Why a dorsal stripe is not proof of dun
A horse can show a countershading stripe, seasonal shading, or an nd1-associated
marking without being genetically dun — easily misread in buckskins, bays, red horses
and horses carrying other dilutions. Going the other way, the darker the base the harder some
markings are to see: in the original work, markings were easier to recognise against red
pigment than against dark eumelanin. Phenotype alone misleads; the DNA test is the clean
answer.
What it looks like on each base
| base | dun-modified appearance | names |
|---|---|---|
| bay | tan or gold body, dark mane, tail and lower legs | bay dun, classic dun, zebra dun |
| black | slate, smoky or mouse-grey body with dark points | grullo / grulla, blue dun, mouse dun |
| chestnut | peach, apricot or red-gold body; mane and tail may be darker or more body-coloured | red dun |
The most reliable hallmark is the dark dorsal stripe from mane to tail. Others: leg barring (zebra bars), a shoulder cross, dark ear edging, facial masking, cobwebbing or forehead marks, neck and shoulder shadows, dark tail barbs, and dark regions around the muzzle and vibrissae. Expression is variable — not every dun horse shows every marking clearly, which the mod reproduces deliberately in the incomplete-marking rolls.
The mod holds KEEP_RED very close to 1 and states outright that
a red dun is a chestnut with primitive markings, not a
pale horse. The reference here says a chestnut base gives a peach, apricot or
red-gold body — a visible dilution — and the cortex mechanism above is
pigment-type-agnostic, restricting pigment to 25–50% of the shaft regardless of
which melanin is in it. On that reading, red dun should be perceptibly lighter
than chestnut.
This is a real disagreement, not a rendering limitation. It is also the one the mod is
most likely to be right about for its own purposes: the asymmetry is what makes grullo,
bay dun and red dun come out as three visibly different horses from one pair of numbers,
and a red dun that is merely “a slightly paler chestnut” is hard to identify
in-game. But it should be recorded as a deliberate departure rather than left to be
rediscovered, and KEEP_RED is the single number that would move it.
What the coat locus does not do
There is no good evidence that D/nd1/nd2 changes
build, bone, conformation, muscle mass, mature height, frame, movement quality or athletic
phenotype. The coat alleles alter a hair-follicle enhancer’s activity in a restricted
developmental context, and the foundational paper specifically reported no recognised
limb-development or other pleiotropic differences between dun and non-dun horses.
So a Fjord’s compact sturdy build, a Quarter Horse’s muscling and a Konik’s hardiness are not consequences of the dun genotype. They are breed-level outcomes from many genes, selection history, management and environment. The mod agrees: dun paints and contributes nothing to the trait layer.
The separate height signal
A different regulatory region upstream of TBX3 has been associated with stature in Chinese horses and ponies. The strongest site, TBX3-EN2, is an A/G SNP at ECA8:20,644,555; in a panel of 763 Chinese horses and ponies the G allele went with greater wither height, and the model estimated it could account for up to about 20.3% of height variation — roughly 10 cm — in that population. PMC8796118
The functional work makes it credible: reporter assays found the G allele increased enhancer activity and TBX3 expression; TBX3 expression was higher in the placentas of larger Yili horses than in Ningqiang ponies; and deleting the corresponding enhancer segment in mice reduced TBX3 expression in developing limbs and produced shorter limb bones. The A allele was common in ponies — 65.6% across seven pony breeds — and fixed in the 13 sampled Przewalski’s horses; G averaged 81.2% across 18 Chinese horse breeds, ranging from 21.1% in Debao ponies to 85.7% in Yili horses.
The coat variants and TBX3-EN2 are separate regulatory changes in different regions around the same gene. A dun horse can be small or large; a non-dun horse can be small or large. Height is polygenic and environmentally influenced, and the EN2 result — powerful in the Chinese populations studied — is not a universal one-marker height calculator: Western pony breeds show different major signals, HMGA2 in Falabellas among them, so similar stature arises by different genetic routes. The mod models the coat locus only, and puts size on LCORL and HMGA2. That is the correct split.
Health, jumping, speed
Dun is a pigmentation trait, not a disorder. OMIA classifies it as not disease-related, and the foundational study found no developmental, limb or systemic effects attributable to the coat variants.
That needs distinguishing from the wider biology of the gene. In humans, damaging one copy of TBX3 causes ulnar-mammary syndrome — limb, tooth, gland and genital abnormalities. That does not mean a dun horse carries a disease mutation: the equine coat variants leave the protein intact and modify hair-follicle expression rather than removing the gene’s developmental function. It is the cleanest example on this wiki of why “this gene causes X in humans” is not an argument about a horse.
For the size enhancer there is likewise no established equine health syndrome or soundness risk. The mouse enhancer-deletion experiments show why TBX3 can affect limb growth; they are not evidence that naturally occurring horse genotypes cause orthopaedic disease, hoof disease, infertility, metabolic disease or reduced lifespan.
Jumping. No validated evidence that any of these variants predicts scope, technique, carefulness, bascule, soundness under jumping load or competition success. TBX3’s developmental role makes it tempting to speculate about limb architecture and biomechanics; that inference has not been demonstrated in horses, and would need replicated genotype-phenotype associations controlling for breed, height, training, rider, pedigree, competition level and other athletic loci.
Speed. No robust evidence that the dun alleles affect sprint speed, stamina, earnings, stride mechanics or gait. The speed-gene discussion centres on MSTN. The Chinese size variant could in theory correlate indirectly with body dimensions where it affects height — which is not causing speed, and taller is not inherently faster.
Breeds and frequency
The coat work genotyped 1,814 animals from more than 45 breeds, confirming that TBX3 variation is broad rather than confined to one “primitive” breed. Breed-by-breed frequencies remain unevenly measured, and many figures circulating online rest on phenotypes, registry preferences or small samples rather than population surveys.
OMIA documents the dun phenotype or the causal variants in the American Trotter, Arabian, American Bashkir Curly, Faroes Pony, Norwegian Fjord, Gotland Pony, Icelandic Horse, Mongolian Horse, Polish Konik, Quarter Horse, Shetland Pony, Swedish Warmblood and Vyatka. Variant-specific reporting is narrower:
- D in Curly, Fjord, Icelandic, Polish Konik, Quarter Horse and Vyatka.
- nd1 in American Trotter, Arabian, Curly, Faroes Pony, Gotland Pony, Mongolian, Quarter Horse, Shetland Pony, Swedish Warmblood and Vyatka.
- nd2 is the reference-genome allele, widespread, and the most prevalent allele among common domestic breeds.
| population | best-supported conclusion |
|---|---|
| Norwegian Fjord | D commonly described as fixed or effectively so; dun is a defining breed feature, though base colour still modifies how it presents |
| Polish Konik | common and a direct selection target; genomic scans show a strong selection signal at or near TBX3 in blue-dun Koniks |
| Icelandic Horse | D well established and historically used in inheritance studies; no modern population-wide frequency in the sources here |
| Quarter Horse | D exists and produces recognisable duns; not universal, and no representative contemporary survey |
| Mongolian Horse | dun and nd1 documented; phenotype and local structure vary enough that one breed-wide percentage would overstate the data |
| most modern breeds | nd2 is the most prevalent allele |
| Przewalski’s horse | dun is characteristic; all sampled animals in the size study carried the ancestral EN2 A allele |
The distinction between “known to occur” and “common” matters here
more than anywhere. For Arabians, Swedish Warmbloods, American Trotters and Shetlands,
documentation of nd1 does not mean many individuals are visibly dun —
nd1 is a non-dun allele that merely preserves subtle markings.
The mod uses D at 1/24 (4.2%) and d1 at 1/10 (10%), so a founder is
more than twice as likely to carry the marking allele as the dilution — which matches
the qualitative picture above, where nd1 turns up in far more breeds than
D does. No published global figure exists to check either number against.
Evolution, and the open questions
Well established. Dun is likely the ancestral equid coat state, seen in
Przewalski’s horses and other wild equids, and plausibly adaptive camouflage —
inferred from ecology and phylogenetic distribution rather than directly quantified. The
D and nd1 haplotypes predate domestication: ancient DNA
identified a roughly 42,700-year-old horse carrying D/nd1 and a roughly
4,400-year-old horse inferred nd1/nd1. nd2 is more recent, was not
observed outside domestic horses in that study, and likely rose during domestication
alongside selection for more intensely pigmented, non-camouflage colours. And all three are
regulatory changes — they alter where TBX3 is expressed in a growing follicle,
not the protein’s amino-acid sequence.
Speculative or incomplete. The camouflage advantage is plausible and often stated, and its magnitude and historical setting are unresolved. Researchers have proposed that spatial TBX3 regulation could illuminate the evolution of zebra stripes — TBX3 is not established as the zebra-stripe gene, which is worth knowing next to the mod’s own zebra genes. Work in dun Mongolian horses is exploring differential TBX3 skin expression in relation to Bider markings, an active area that does not change the central point: dun expression is patterned and region-specific rather than on/off. Claims that dun changes temperament, durability, athleticism or “primitive hardiness” are unsupported unless they can separate TBX3 from breed ancestry and selection. And the TBX3-EN2 height finding needs validation outside the Chinese populations before it can be a general stature predictor.
common/genetics/genes/DunGene.java,
common/coat/pattern/CoatRegions.java