LAPIDEO-Research
Contents
- LAPIDEO Technical Briefing: Historical Craft & Computational Methods for Procedural Marble
- TL;DR
- PART 1 — HISTORICAL & CRAFT TECHNIQUES OF IMITATION MARBLE
- 1.1 Ancient Roman / Pompeian: the First (Incrustation) Style
- 1.2 Opus sectile and the book-matching grammar
- 1.3 Renaissance & Baroque: scagliola, pietra dura, marmorino
- 1.4 18th–20th century faux-marbling: the working rulebook
- 1.5 Egyptian precedent: the stipple/speckle ancestor of spattered granite
- 1.6 Giotto's Scrovegni dado: oil-bound white and book-matched grisaille
- 1.7 Renaissance and Baroque quadratura: marbling coordinated to illusionistic architecture
- 1.8 The professional faux-finishing tradition, in the practitioners' own words
- 1.9 Vein taxonomy and compositional rules, synthesized
- 1.10 Two traditions: deceptive marbling versus frank fantasy
- PART 2 — COMPUTATIONAL & ALGORITHMIC MARBLE (core)
- 2.1 Foundational procedural texturing
- 2.2 Domain warping (Inigo Quilez) — the workhorse
- 2.3 Cellular / Voronoi (Worley) noise — breccia and crystals
- 2.4 Physically- and geologically-motivated models
- 2.5 Reaction–diffusion & pattern formation
- 2.6 Vein-network–specific algorithms (contour-based vs curve-based)
- 2.7 Production practice: Substance Designer, subsurface scattering
- 2.8 Real geology as constraint — distinct visual signatures
- 2.9 Aesthetic / perceptual guidance — why procedural marble looks fake
- PART 3 — SYNTHESIS: RANKED ALGORITHMIC RECOMMENDATIONS FOR LAPIDEO (WebGL/GLSL)
- Named-marble preset library
- Translation table: craft rule → algorithmic feature
- Implementation roadmap (staged build order)
- Caveats
LAPIDEO Technical Briefing: Historical Craft & Computational Methods for Procedural Marble
A research briefing for improving a browser-based (WebGL/GLSL) procedural marble generator. Part 1 distills hand-craft imitation rules into algorithmic constraints; Part 2 (the core) surveys the computational literature; the final section ranks concrete, implementable features by likely visual impact.
TL;DR
- The single biggest realism lever is not the noise function but the composition layer above it. Real marble reads as marble because of large-scale structure (a dominant vein direction/drift, a few "event" veins, negative space, and value hierarchy) plus translucency/subsurface scattering — all of which plain isotropic fBm noise lacks. Every hand-craft tradition and every good procedural artist independently converges on the same rules.
- Switch veins from contour-based to curve-based where possible. Thresholding a noise field gives closed, endpoint-free, directionless "blobs"; real crack-seal veins are 1-D fracture paths with width profiles, a stress-controlled dominant orientation, and a branching hierarchy. Space-colonization (Runions et al. 2005) and Voronoi-crack networks reproduce this; noise iso-contours cannot.
- Model each geological mechanism with a distinct primitive rather than one noise function: crack-seal veining (curve networks), brecciation (Voronoi/fragment fields), depositional banding (warped 1-D stratification), stylolites (jagged suture seams — almost always missing in procedural marble), and porphyritic phenocrysts (scattered clasts in a fine groundmass).
PART 1 — HISTORICAL & CRAFT TECHNIQUES OF IMITATION MARBLE
1.1 Ancient Roman / Pompeian: the First (Incrustation) Style
The earliest systematic marble imitation is the First Style / Incrustation Style of Roman wall painting (c. 200–80 BCE), classified by August Mau in his 1882 Geschichte der decorativen Wandmalerei in Pompeji. Its explicit aim, per Britannica's "Western painting" entry, was: "At Pompeii during the 2nd century bc the interior walls of private houses were decorated in a so-called Incrustation, or First, style; that is, the imitation in painted stucco of veneers, or crustae ('slabs'), of coloured marbles." Painters divided the wall into rectangular fields, each rendered as a slab of colored stone, connected by projecting stucco moldings that added literal three-dimensional relief. Vitruvius (De architectura) and Pliny the Elder (Natural History) describe the technique: workers applied at least seven successive coats of lime-and-sand plaster (coarse to fine), the uppermost containing powdered marble, before painting in fresco.
Key craft logic for the algorithm: the visual grammar is panelized — discrete rectangular fields of differing stone, not one continuous field. The stones imitated were the prestige imports: giallo antico, africano, pavonazzetto, cipollino, portasanta, rosso antico, and porfido rosso. The decorators were imitating the slab-and-veneer logic of real revetment: bounded rectangles, framed edges, and abrupt discontinuities between adjacent panels.

First Style frescoes, House of Sallust, Pompeii — August Mau's own 1882 plate (Mau being the scholar who classified the style, cited above), showing the painted false doors flanked by colored rectangular panels — the clearest possible view of the panelized logic described above. Drawing: August Sikkard, 1882, from Mau's Geschichte der decorativen Wandmalerei in Pompeji, plate II. Public Domain. File page

First Style wall, Casa Samnita (Samnite House), Herculaneum — the same panelization surviving in situ: rust, salmon, and cream rectangular fields banded beneath a projecting stucco cornice. Photo: Miguel Hermoso Cuesta, CC BY-SA 4.0
First Style wall, Casa Sannitica, Herculaneum — a second surviving example, two registers of colored panels separated by a moulded band. Photo: Mentnafunangann, CC BY-SA 4.0
1.2 Opus sectile and the book-matching grammar
Real Roman stone-cutting practice shaped the visual grammar that painters imitated. When a marble block is sawn into consecutive thin slabs and those slabs are opened like the pages of a book, the vein pattern mirrors across the seam — book-matching. Four slabs mirrored around a center produce the classic quartered/"mirror-fold" kaleidoscopic symmetry seen in opus sectile floors and wall revetment. This symmetry is a strong perceptual cue for "expensive real stone" and is precisely what LAPIDEO's book-match feature exploits. The craft rule: veins must be continuous across the mirror seam (mirror symmetry of a single underlying field), never merely two similar-but-unrelated panels placed side by side.
.jpg)
The Pantheon's opus sectile floor, Rome — cut-stone slab-and-panel logic, in continuous use since antiquity though restored more than once. Photo: Larry, CC BY 2.0
1.3 Renaissance & Baroque: scagliola, pietra dura, marmorino
Scagliola (from selenite, a laminated crystalline gypsum) is the inlay imitation of marble and pietre dure using ground selenite mixed with animal glue and natural pigments. Historiography credits Guido Fassi of Carpi (1584–1649) as the Italian progenitor; the technique arrived from Germany (Blasius Fistulator's Munich workshop, active from 1582; the Reiche Kapelle) in the second decade of the 17th century, with the first dated Italian piece a countertop signed by Pietro Baseghini of Modena, 1629. The material preparation starts from selenite itself — a form of gypsum, chemically calcium sulphate dihydrate (CaSO₄·2H₂O) — which is calcined to drive off part of its water of crystallization. Per the Camera di Commercio di Firenze ("Florentine scagliola," Google Arts & Culture), "selenite must first be heated to 128° so that it loses three quarters of the crystallisation water," which converts it to calcium sulphate hemihydrate (CaSO₄·½H₂O) — plaster of Paris. (Correction from an earlier draft of this page, which had the dihydrate/hemihydrate direction backwards. The source also doesn't specify Celsius or Fahrenheit, and the conservation literature describes the same firing more loosely — treat "128°" as approximate, not a precise, unit-confirmed figure.) The powder is crushed, sifted, mixed with pigment paste, inlaid into a wet gypsum base, then polished with pumice, charcoal, and oiled felt or beeswax to a marble-like sheen. Baroque architects — Borromini at San Carlo alle Quattro Fontane — used scagliola for curved veined surfaces. Crushed selenite crystals were added to impart a sparkling crystalline texture mimicking the calcite sparkle of real stone.
Pietra dura / commesso fiorentino at the Opificio delle Pietre Dure is "painting in stone": thin veneers of semi-precious stone cut with a wire bow-saw (water + emery powder) and fitted with invisible seams. Per Wikipedia, "the Opificio was established in 1588 at the behest of Ferdinando I de' Medici to provide the elaborate, inlaid precious and semi-precious stoneworks"; its 17th-century masterwork was the decoration of the Cappella dei Principi (Chapel of the Princes) in the Basilica di San Lorenzo, Florence. The critical selection logic — artisans chose each stone "for their colour, opacity, brilliance, and grain" — is exactly the correlate-color-with-structure principle. Marmorino and stucco lustro (Venetian and Roman lime-plaster techniques) build depth and translucency through multiple thin lime glazes burnished to a polish, achieving the lit-from-within quality that is the plaster analogue of subsurface scattering.
Scagliola tabletop by Annibale Grifoni, c. 1660–79, Carpi — Guido Fassi's own town. Photo: Sailko, CC BY-SA 3.0

Scagliola panel by Carlo Ghibertoni, San Tommaso d'Aquino, Florence — the same inlay tradition as the Grifoni tabletop above, on an interior wall rather than furniture. Photo: Sailko, CC BY 3.0

Pietra dura wall inlay, Cappella dei Principi, Florence — colour chosen to correlate with structure. Photo: Sailko, CC BY-SA 4.0
1.4 18th–20th century faux-marbling: the working rulebook
The trompe-l'oeil marbling tradition (John Taylor; Kershaw; P. van der Burg's School of Painting for the Imitation of Woods and Marbles; the French formal school vs. the looser Italian school) codified concrete rules that map directly to algorithm constraints. Per Wikipedia's "Marbleizing" entry: "The Italian school was loose and artistic, the French school was formal and realistic. It typically took an apprentice 10 years or more to fully master the art" (British marbling reached its apogee between 1845 and 1870, master Thomas Kershaw). Distilled from the practitioner literature (Building Conservation's "Trompe L'oeil Marble"; Traditional Painter; Matisse; and the DIY marbling corpus):
- Three-value build. (1) A ground — off-white for light marbles, or a dark ground for vert-de-mer / black-and-gold (Portoro). (2) A mid-tone float — the ground is "clouded" with diluted translucent or opaque pigment into "irregular and varied patches of colour," softened with a badger-hair brush. (3) Veining — broad veins with a flat "French" or glazing brush, fine veins with a sable pencil.
- Drift / direction of the vein system. "Veins in marble usually run on a diagonal." The whole panel has a flow of movement / dominant direction; veins are never all parallel and evenly spaced, and never radiate from a central hub like a spider's web.
- The no-X / no-right-angle rule. "Two veins of the same tone should never cross." Veins "branch off from each other and usually don't ever cross paths or create an X." This is the single most-repeated faux-marbling rule.
- Wandering vs. fracture line. Veins should be "less curvy and more jagged," and the brush is pulled and twisted to get controlled randomness; a vein has "one hard and one soft edge" (softened to one side with the badger brush).
- Vein hierarchy. Primary (broad), secondary, tertiary (fine) veins, with the fine veins "faded away in places" — never a uniform mesh.
- Translucency through glazes. Depth is built through successive translucent glazes ("light over dark or dark over light"); veins are blurred as if "under water — slightly blurry," often by misting.
- Slab logic on large surfaces. Break a large wall into taped-off "slabs," add a faux bevel shadow along the seam, and carry veins over the edges — the same panelized grammar as the First Style.
- Continue veins over edges/corners to sell the illusion that the pattern is volumetric solid stone, not a surface print.

Marbleized altar plinth, San Pietro, Modica, Sicily — painted stone imitating stone. Photo: Acabashi, CC BY-SA 4.0
Per-marble veining logic the faux tradition distinguishes: Carrara/statuario (fine, soft grey veining on white); arabescato (netlike, flowing grey-green veins); calacatta (bold, thick, dramatic gold/grey veins with lots of negative white space); Portoro / black-and-gold (fine gold veins on black, dark ground); serpentine/verde antico (angular clasts, chaotic mosaic rather than flowing veins); Sienna (warm yellow with reddish veining); breccia (angular fragments cemented together). The differences are differences in vein geometry, density, contrast, and clast-vs-vein balance — not just color.
1.5 Egyptian precedent: the stipple/speckle ancestor of spattered granite
The faux-marbling impulse predates Pompeii by a millennium. New Kingdom Egyptian funerary vessels and coffins imitate five stones: travertine ("Egyptian alabaster"), a red-and-white limestone breccia, granodiorite, serpentinite, and red/pink Aswan granite. Thutmose III's and Amenhotep II's sarcophagi were painted to imitate granite using a stipple/speckle technique — flicking or dabbing darker spots of pigment over a lighter base coat to read as igneous grain at a distance. This is the direct ancestor of the spatter method Armstrong later codifies in exact, repeatable steps for porphyry and Egyptian porphyry (see the preset table below) — the same gesture, three thousand years apart: load a brush thin, and eject droplets rather than draw a line.
1.6 Giotto's Scrovegni dado: oil-bound white and book-matched grisaille
Giotto, Scrovegni (Arena) Chapel, Padua (1303–05). Beneath the narrative cycle runs a monochrome faux-marble dado using marmorino/"Roman stucco" technique — a socle of fictive marble panels framing grisaille personifications of the Virtues and Vices as if they were carved stone statues standing in niches. The 1990s restoration (Giuseppe Basile ed.) established that the dado's white lead is bound in oil, not the fresco medium used above it — which is why that white hasn't altered with time the way true fresco lime-white can. The dado was executed giornata by giornata, top to bottom, and — most relevant to LAPIDEO's book-match feature — the paired dado panels use book-matched mirror symmetry: a panel reflected about a vertical axis, exactly the painted analogue of the real quartered/book-matched slabs described in §1.2. It is worth noting explicitly for the algorithm that this symmetry trick is 700 years old and was already understood as a deliberate illusion of costly cut stone, not an accident of workflow.

Giotto, "Justice," Scrovegni Chapel dado, Padua, 1303–05 — a grisaille personification painted as if a carved stone statue standing in a fictive marbled niche, part of the book-matched dado program beneath the narrative cycle. Photo: Petrusbarbygere, Public Domain
1.7 Renaissance and Baroque quadratura: marbling coordinated to illusionistic architecture
Painted faux-marble columns, pilasters, entablatures, and revetment were built up in fresco within quadratura schemes — marbling coordinated to illusionistic cast shadow and modelling so that a painted column reads as a cylinder, not a flat stripe. Named cycles: Raphael's Vatican Logge and Villa Madama; Giulio Romano, Palazzo Te; Veronese, Villa Barbaro (Maser); Andrea Pozzo, whose marbled columns at Mondovì and S. Ignazio, Rome, are documented in his own treatise Perspectiva Pictorum et Architectorum (1693/1700; English translation by John James, 1707, on archive.org). Bavarian and Austrian Rococo church interiors — the Asam brothers, Zimmermann at Wies, Vierzehnheiligen, the Wessobrunn school — contain vast quantities of stuccoed and painted faux marble and scagliola, extending the plaster family introduced in §1.3 to full architectural scale.
The plaster family, distinguished precisely:
- Marmorino — lime putty + crushed marble/marble dust, 3–4 fine coats over a lime-and-coccio-pesto arriccio; can be burnished; veining "frescoed" on with feathers or brushes; finished with Marseille soap and beeswax.
- Stucco lustro / stucco lucido — aged lime putty + super-fine marble flour, 4–6 very thin layers, burnished to a mirror finish while still damp. The optical depth comes from overlapping thin translucent layers — the plaster-craft analogue of subsurface scattering, executed centuries before the term existed.
- Scagliola — see §1.3; the inlay method (carve a matrix, fill with pigmented "meschia") versus the built method (trowel successive layers, cut back to reveal veins, with veining itself drawn using pigment-saturated raw silk strands laid into the wet ground).
- Stucco marmo — scagliola scaled up to columns and full walls.
Real-inlay traditions set the visual vocabulary these plaster techniques imitate: Sicilian marmi mischi, Neapolitan commesso, Florentine pietra dura/commesso (§1.3).

A scagliola altar, San Filippo Neri, Cingoli — the plaster family in §1.3/§1.7 at full architectural scale, not tabletop scale: stucco marmo as a built structure. Photo: Sailko, CC BY 3.0
1.8 The professional faux-finishing tradition, in the practitioners' own words
A.R. & P. Van der Burg, School of Painting for the Imitation of Woods and Marbles (1878; 7th ed. 1936). (Recovered here via secondary quotation in Stacey & Davies, The Building Conservation Directory, 2015 — the full primary text has not been located online; treat the quotes below as secondhand.) The fundamental rule stated there: "the marble-painter must take it as a fundamental rule that marble, the colour of which is transparent, can only be imitated by glazing or some similar process." On handling: "the paint is loosely put on in a rolling way; the more freely and artlessly this is done, the better it will serve the purpose." Grounds are mostly off-white, but vert de mer and black-and-gold use a dark ground. The tool kit: spotting/marbling brush, flat "French" brush, round "mop" brush, sable/pencil brush, a wide-thin glazing brush, and a flat long-badger softener — broad veins from the French/glazing brush, fine veins from the sable, softened on one side with the badger to give the signature "one hard and one soft edge." The splayed-brush trick: dip the marbling brush in turpentine, press it out on a cup's edge to splay the bristles, and dab it through sequential palette colors to break up a flat wash instantly.
Thomas Kershaw (1819–1898), "Prince of Grainers & Marblers," apprenticed in Bolton, became leading grainer at William Cubitt & Co., and took first prize at the Great Exhibition of 1851; his marbling survives at Buckingham Palace and Osborne House, and panels are held at the V&A and Bolton Museum. His method: dilute opaque base colors, then transparent oil glazes cut with turpentine, veined with feathers, brushes, and sponges. His panels were deceptive enough to provoke Ruskin's condemnation of faux marble as untruthful (§1.10 below).
George D. Armstrong, Cyclopedia of Painting (1907/1908) is the richest verbatim recipe source available — the full book is on archive.org and page-by-page on Wikisource. Armstrong defines scumbling as thick color thinly rubbed on with a hard brush (opaque) and glazing as thin transparent color — the two blend modes every named-marble recipe in the table below is built from. His green master rule states the logic once and applies it everywhere: "The mode of producing all the green marbles... must be the same as that directed for Verde antique. The ground must in all cases be black... shades of green may be formed by scumbling the white over the black, more or less thickly... and, when the whole is finished, glazing with green."
Institut Supérieur de Peinture Van Der Kelen-Logelain, Brussels. Founded in 1882 (Pierre Logelain) and 1892 (Alfred Van der Kelen), merged in 1951; current directors Denise and Sylvie Van der Kelen. It is the only surviving school teaching the full traditional method: a 6-month intensive (October–March), oil-based, conducted in silence with white aprons. Per the school itself: "at the end of six months, the student will be able to imitate more than thirty varieties of wood, and thirty of marbles." Students work from an archive of pattern models plus natural specimen samples; each completes a "decisive panel" kept as a career reference — the modern survival of the échantillon sample-book tradition. Alumni include Pierre Finkelstein, Jean-Luc Sable, and Marie Vanesse.
Pierre Finkelstein, The Art of Faux (1997), codifies the explicit three-layer process: (1) background, (2) veining, (3) overglazing — the same three-value build as §1.4, formalized into a named sequence. His tool vocabulary is worth carrying into the algorithmic translation table below verbatim: the chiqueteur (squirrel-hair, for breaking tonalities and dispersing color), the brecher (single- or multi-headed, for fissures and fragment edges), the badger softener, the veiner, the spalter, the stippler, the spattering brush, and the onyx brush. His signature named moves: "chiqueteuring" — breaking a wet background with a barely-damp chiqueteur; "dispersion" — dipping the chiqueteur in denatured alcohol and tapping it onto wet paint for a reptile-skin/cissing pattern; "fragmenting" a breccia by painting the veins that map the fragment boundaries in negative space first, then adding small fragments positively into the gaps; and "skipping" a dry-bristle veiner across the surface for a broken, intermittent line.
1.9 Vein taxonomy and compositional rules, synthesized
Reading the manuals together (Van der Burg, Armstrong, Finkelstein, and the general trompe-l'oeil corpus in §1.4) against each other surfaces a small, remarkably stable rule set:
- Veins run diagonally, "never regular or even," and don't start or stop suddenly or fan out from a single point.
- Veins branch rather than cross; X-junctions and right-angle meetings are avoided on sight.
- Width varies along a vein's length; veins feather out, fade, or run off the edge of the panel rather than stopping abruptly.
- Every vein carries "one hard edge and one soft edge" (Van der Burg), produced by softening one side with the badger.
- Transparent glaze versus opaque scumble builds depth; cool greys behind warm tones (and the reverse) create recession.
- Composition is planned, not accidental: a small number of primary "leader" veins set the drift, quiet zones are deliberately reserved, and Finkelstein's own composition rule — "3 points of interest, none at eye level" — governs where activity is allowed to cluster. Large restful passages are kept clear; centred or symmetrical arrangements are avoided except where book-matching is the deliberate effect.
- A three-value system (ground, mid-tone, vein) is standard; veins are rarely pure white or pure black.
- Feature scale is matched to the size of the "slab" being painted, and increased for surfaces meant to be viewed from a distance.
1.10 Two traditions: deceptive marbling versus frank fantasy
The historical record actually contains two distinct, coexisting traditions, not one: deceptive imitation, meant to pass as real stone and studied directly from geological specimens, and conventional/fantasy marbling — frankly decorative, invented rather than observed, and often more purely beautiful for not needing to fool anyone. Ruskin, in The Seven Lamps of Architecture (1849, "The Lamp of Truth"), condemned only "definitely attempted deception" and explicitly praised frankly conventional ornament that never claimed to be what it was not. This licenses a "fantasy mode" for LAPIDEO distinct from its "realistic mode" — see the mode-switch item in the roadmap below — rather than treating every non-photoreal output as a failure of realism.
PART 2 — COMPUTATIONAL & ALGORITHMIC MARBLE (core)
2.1 Foundational procedural texturing
Ken Perlin, "An Image Synthesizer," SIGGRAPH 1985 (Computer Graphics 19(3), pp. 287–296; DOI 10.1145/325334.325247; published 1 July 1985, Courant Institute, NYU) introduced the Pixel Stream Editor, solid texturing, and the noise function. The paper's abstract: "We introduce the concept of a Pixel Stream Editor. This forms the basis for an interactive synthesizer for designing highly realistic Computer Generated Imagery." Perlin's original marble is a phase-modulated sine: perturb a periodic stripe function with a fractal sum (turbulence). The canonical code (reproduced in GPU Gems Ch. 5):
// STRIPES (good for marble)
double stripes(double x, double f) {
double t = .5 + .5 * sin(f * 2 * PI * x);
return t * t - .5;
}
// TURBULENCE (sum of |noise|/f)
double turbulence(double x,double y,double z,double f){
double t = -.5;
for(; f <= W/12; f *= 2)
t += fabs(noise(x,y,z,f)/f);
return t;
}
// MARBLE = stripes(x + 2*turbulence(x,y,z,1), 1.6)
The essential idea (Scratchapixel): "A marble texture can be created by modulating the phase of the sine pattern with a noise function or a fractal sum … not to use the noise function directly … but to perturb the function." Perlin, "Improving Noise," SIGGRAPH 2002 fixed gradient-selection artifacts. Ebert, Musgrave, Peachey, Perlin & Worley, Texturing & Modeling: A Procedural Approach (3rd ed., 2003) is the standard reference for marble, fBm, turbulence, and the multifractal family.
Ken Musgrave's multifractals (in the same book, and exposed in Blender's Musgrave/Noise nodes) parameterize by H (fractal dimension), lacunarity (frequency gap, default ~2), octaves, offset, and gain:
- fBm — additive cascade; homogeneous and isotropic (the "flat/boring" default).
- Multifractal — multiplicative cascade; heterogeneous (variation depends on location).
- Ridged multifractal — takes
1 - |noise|(oroffset - |noise|) per octave, weighting the next octave by the current — produces sharp ridged creases ideal for hard-edged fracture veins. - Hybrid multifractal — mixes additive and multiplicative for mixed smooth/rough regions.
The ridged/absolute-value trick (1-|noise|) is directly useful for LAPIDEO: it converts smooth noise bands into creased ridgelines that read as fractures rather than clouds.
2.2 Domain warping (Inigo Quilez) — the workhorse
Iñigo Quílez, "domain warping" formalizes the technique Perlin used in 1984: replace f(p) with f(p + h(p)). Iterated warping is the key to the folded, laminar, metamorphic look:
// one warp: f( p + fbm(p) )
vec2 q = vec2(fbm(p+vec2(0,0)), fbm(p+vec2(5.2,1.3)));
return fbm(p + 4.0*q);
// two warps: f( p + fbm( p + fbm(p) ) )
vec2 r = vec2(fbm(p+4.0*q+vec2(1.7,9.2)), fbm(p+4.0*q+vec2(8.3,2.8)));
return fbm(p + 4.0*r);
Crucially, IQ exposes the intermediate warp vectors q and r and maps color from them — mixing base color by f, a second color by |q|, a third by a component of r. This is the computational form of the craft rule correlate color with structure: the color is derived from the same field that produced the shape, not layered independently. A standard fBm uses a rotation matrix per octave (mat2(0.8,0.6,-0.6,0.8)) with lacunarity ~2.0 to "reduce axial bias" (Book of Shaders / IQ). Anisotropic scaling of the input coordinates (e.g. multiplying x by 3 before noise) stretches noise into foliation/lineation — the directional fabric of metamorphic rock.
2.3 Cellular / Voronoi (Worley) noise — breccia and crystals
Steven Worley, "A Cellular Texture Basis Function," SIGGRAPH 1996 (pp. 291–294; DOI 10.1145/237170.237267) scatters feature points and returns distance to the n-th nearest (F1, F2, …). F1 gives cell-interior gradients (crystalline grain); F2−F1 gives cell edges — a natural crack/fracture network and the basis for breccia clast boundaries. Gustavson (2011) gave a GPU 2×2-cell variant; IQ's "voronoise" (2014) blends smoothly between value noise and Voronoi; IQ's 2012 article gives precise Voronoi borders. For LAPIDEO: F2−F1 Voronoi is the correct primitive for Breccia Capraia, verde antico, and any brecciated/conglomerate stone — angular clasts in a matrix — and for calcite-grain sparkle in the matrix.
2.4 Physically- and geologically-motivated models
The literature distinguishes noise-decorated rock from geologically simulated rock. Fournier, Fussell & Carpenter (1982, stochastic models) and the fBm/spectral-synthesis family (surveyed in Lagae et al., "A Survey of Procedural Noise Functions," CGF 2010, and the MDPI "Survey of Procedural Methods for 2-D Texture Generation," 2020) generate self-similar surfaces. Geological folding — the mechanism behind the laminar look of metamorphic marble — is described in structural-geology terms (ETH Zurich folding notes): cuspate-lobate folds form at interfaces between materials of contrasting viscosity, with cusps pointing into the stronger layer; disharmonic folds arise when layers of different competence fold at different wavelengths. Sedimentary-then-metamorphic pipelines (e.g. the arXiv "SubsurfaceGen" deposit-then-deform approach: lay down beds from a simplex-noise field, then warp the depth axis) are the physically-grounded way to get banding that then folds — exactly the Cipollino / onyx problem.
Crack-seal veining is the correct model for most marble veins and is not a noise contour. Ramsay's crack-seal mechanism (1980): a fracture opens incrementally and is sealed by mineral (calcite/quartz) precipitation between increments, leaving inclusion bands parallel to the vein walls and inclusion trails parallel to crystal-fibre axes. Anastomosing crack-seal networks in limestone (Jabal Shams, Oman study) produce dense "zebra"-like vein patches. Veins are classed syntaxial (inward growth), antitaxial (outward), and stretching. The takeaway for LAPIDEO: a real vein is a 1-D path with a width profile, a wall-parallel internal fabric, and a stress-controlled orientation — properties a thresholded scalar field cannot encode.
2.5 Reaction–diffusion & pattern formation
Alan Turing (1952), "The chemical basis of morphogenesis" proposed reaction–diffusion (RD) pattern formation. Greg Turk, "Generating Textures on Arbitrary Surfaces Using Reaction-Diffusion," SIGGRAPH 1991 and Andrew Witkin & Michael Kass, "Reaction-Diffusion Textures," SIGGRAPH 1991 (Computer Graphics 25(4), 299–308; DOI 10.1145/127719.122750) brought RD to graphics. The two-morphogen isotropic system:
∂u1/∂t = f(u1,u2) + α ∇²u1
∂u2/∂t = g(u1,u2) + β ∇²u2
with Turing's reaction terms f = s(16 − u1·u2), g = s(u1·u2 − u2 − γ), γ a small random term. Witkin & Kass's key contribution for marble is anisotropic, spatially non-uniform diffusion — steering the diffusion tensor produces oriented, streaked, marble-like patterns rather than uniform spots/stripes. RD is a strong candidate for LAPIDEO's matrix mottling and dendritic/mineral staining, less so for the primary veins.
Diffusion-limited aggregation (DLA) produces dendritic, branching growth — the correct model for dendritic manganese/iron oxides in moss agate, "landscape" Cotham marble, and dendritic stains. Lichtenberg-figure branching is the same visual family. These are distinct from crack-seal veins: dendrites branch fractally with no width-conserving hierarchy and no dominant direction, whereas crack-seal veins are directional fractures.
2.6 Vein-network–specific algorithms (contour-based vs curve-based)
This is the pivotal distinction for LAPIDEO. Contour-based veining thresholds a (possibly warped) noise field: fast, GLSL-native, but produces closed loops with no endpoints, no consistent width profile, no branching hierarchy, and no dominant direction — the classic "fake" signature. Curve-based veining places explicit vein paths with width profiles.
- Space colonization — Runions, Fuhrer, Lane, Federl, Rolland-Lagan & Prusinkiewicz, "Modeling and Visualization of Leaf Venation Patterns," SIGGRAPH 2005 (PDF), and Runions, Lane & Prusinkiewicz, "Modeling Trees with a Space Colonization Algorithm," Eurographics Workshop on Natural Phenomena 2007 (algorithmicbotany.org). The algorithm iteratively grows a vein network toward scattered attractor ("auxin") points: each vein node grows toward the average direction of nearby attractors; attractors within a kill-distance are consumed. It naturally produces open (tree-like) or closed (looping/anastomosing) networks, a hierarchical order (thick first-order → fine higher-order veins), and branch widths via Murray's law. Runions' 2008 thesis explicitly covers "calculation of vein width" and "placement of new vein nodes." Jason Webb's open-source 2-D JS implementations and Entagma's Houdini/VEX version are practical ports.
- L-systems for recursive branching veins; anisotropic diffusion and flow-field / streamline tracing for laminar veining.
- Curl noise — Bridson, Hourihan & Nordenstam, "Curl-Noise for Procedural Fluid Flow," SIGGRAPH 2007. Taking the curl of a Perlin potential field yields a divergence-free (incompressible) flow field; tracing streamlines through it gives smooth, laminar, non-crossing flow lines — an excellent way to generate a dominant-direction vein drift that automatically avoids the forbidden X-crossings, because streamlines of a divergence-free field do not cross.
- Voronoi-crack networks (Fabrice Neyret's "Vorocracks" on Shadertoy) build authentic crack networks from Voronoi edges, letting the vein network be inspected as a graph — a middle path between pure contour and full space-colonization. (Note: verify the Vorocracks quotes verbatim; the Shadertoy page blocked direct fetch.)
Why curve-based reads as real: real crack-seal veins are discrete 1-D fractures with a width profile, a preferred stress orientation, a branching hierarchy, and internal wall-parallel banding. Explicit curves encode all four; a single thresholded isotropic field encodes none. This is the highest-leverage architectural decision in LAPIDEO after composition.
2.7 Production practice: Substance Designer, subsurface scattering
Substance Designer marble (davescm on the Adobe forums; Norman Bishop's marble-collection breakdown on 80.lv; the 80.lv "Creating Marble in Substance Designer" tutorial) follows a consistent node recipe:
- Base cloud/grunge noise → directional warp (with a second noise as intensity) to bend it into veins → edge detect → first vein layer.
- Flood fill → flood fill mapper (grayscale) to derive a second, finer vein layer nested within the first; repeat with more directional warp for a third layer. This is the scale hierarchy rule in node form.
- Slope Blur Grayscale (which is internally a directional warp along a slope map, not a true blur) to give veins width variation and jaggedness, then to drive height/normal.
- Mask/fade the finest veins "away in places" so density is non-uniform; thicken a few selected veins with a Histogram Scan mask to create hero/event veins.
- Color via gradient map from the greyscale, with the crystalline vein structure explicitly colored differently from the matrix and fossils/clasts textured separately. As Bishop notes, "We now know that the veins are made of crystals. This needs to be shown through our texture if we want it to be accurate to the real marble," and "The shells being fossils, they won't be textured the same way as the veins, seeing as they don't have a crystalline structure."
Subsurface scattering is why marble reads as marble and not as a printed pattern. Henrik Wann Jensen et al.'s BSSRDF (SIGGRAPH 2001, "A Practical Model for Subsurface Light Transport") — famously demonstrated on a translucent marble bust — uses a dipole diffusion approximation; RenderMan and every production renderer ship a "marble" SSS preset (Jensen's measured values). Light enters the surface, scatters internally, and exits nearby, giving the soft, lit-from-within depth of stone. In real-time (Alan Zucconi's "Fast Subsurface Scattering," V-Ray/Chaos, Marmoset) this is approximated with a wrap-diffuse + back-translucency term driven by a thickness map. For LAPIDEO: tie specular/roughness and translucency to the vein-vs-matrix mask — calcite veins are more translucent and higher-gloss than the matrix; add a subtle parallax/inner-glow term so veins appear to sit below a polished surface. Without a translucency term the output will always look like a decal.
2.8 Real geology as constraint — distinct visual signatures
Each mechanism has a separate visual signature and deserves a separate generative primitive:
- Recrystallization of calcite/dolomite → the white sugary matrix (grain sparkle: Voronoi F1).
- Crack-seal veining → directional fracture paths with wall-parallel banding (curve networks).
- Stylolites → jagged, interlocking suture seams (Greek stylos = pillar), formed by pressure-dissolution; they are toothed/columnar zigzag lines concentrating insoluble residue (clay, iron oxide, graphite) — dark, sharp, roughly bedding-parallel. These are almost always missing from procedural marble and are a high-value, low-cost addition (a 1-D jagged line with a dark residue halo). Amplitudes range from sub-mm to ~15 cm.
- Brecciation & re-cementation → angular clasts in matrix (Voronoi F2−F1).
- Boudinage, folding, transposition → stretched/folded banding (domain warp + anisotropy).
.jpg)
A stylolite — the toothed pressure-dissolution suture seam, dark with the insoluble residue left behind as the rock dissolved into itself. Almost never modelled in procedural marble; LAPIDEO's own stylolite pass (M.stylolite) is the exception. Photo: James St. John, CC BY 2.0
Named marbles (formation → signature):
- Carrara / statuario / arabescato / calacatta — all metamorphosed limestone from the Apuan Alps; veins are impurity concentrations (clay, graphite, iron oxides) recrystallized during metamorphism. Statuario: fine grey veins on bright white. Calacatta: iron-based (limonite/goethite) → gold/amber bold veins on bright white, generous negative space. Arabescato: clay+graphite → grey/grey-green netlike flowing veins. (Emperor Marble: Calacatta veining is iron-based; Arabescato is clay+graphite-dominated.)
- Portoro (black-and-gold) — a Triassic/Rhaetian black micritic limestone (La Spezia Fm.), not a true marble: black from organic matter deposited in a low-oxygen marine setting, extensively fractured and filled with white calcite + gold veins from partial dolomitization/iron oxidation, plus stylolites. Signature: sepia-black matrix, fine catenary gold veins. → curve veins + dark ground + stylolites.
- Nero Marquina — a Cretaceous black bituminous limestone (Markina, Basque Country); black from bitumen, sharp narrow white calcite veins in fractures. Signature (Pietra): veins "read almost as drawn rather than geological … closer to architectural drawing than to landscape painting" — sharp, narrow, high-contrast. → thin high-contrast curve veins.
- Verde antico / Verde Alpi (serpentinite) — an ophicalcite breccia, not marble: dark-green serpentinite clasts (hydrated ultramafic mantle rock) cemented by white calcite veins along fault/carbonation zones. Signature: "a chaotic … mosaic of dark shapes against a bright background." → Voronoi clast field, not flowing veins.
- Imperial Porphyry — an igneous rock; per Abu El-Rus et al., "A new look on Imperial Porphyry" (Int. J. Earth Sci. 2018, Springer, DOI 10.1007/s00531-018-1604-z), it is "a porphyritic rock of trachyandesitic to dacitic composition," whose "purple color is mainly due to dispersed flakes of hematite, resulting from hydrothermal alteration of a dark green Common Porphyry," with "abundant, weakly aligned white to pink feldspar phenocrysts" (phenocrysts typically 0.3–5 mm, formed by slow deep cooling). Signature: uniform deep-purple matrix speckled with small angular pale phenocrysts. → scattered clast/phenocryst field over a near-uniform matrix — NOT veins. (This is a common error: porphyry has no veins.)
- Cipollino — Karystian silicate marble (Euboea); onion-skin banding from alternating mica and calcite layers, "white-green base, with thick wavy green bands, constrained by thin bands of mica." → warped anisotropic banding + folding, mica bands as thin dark laminae.
- Onyx / alabaster — banded calcite (± aragonite), a chemical spring/cave deposit (like travertine but non-porous), NOT metamorphic marble; the banding is "a geological record of how the stone formed, layer by layer," translucent because the thin pure calcite layers transmit light. → parallel/curved translucent bands (warped 1-D gradient) + strong SSS.
- Giallo Siena (warm yellow, reddish brecciated veining), Fior di Pesco (peach-flower breccia), Rosso Verona (red nodular limestone) — breccia/nodular signatures → Voronoi + warped banding.
A few of the above, as themselves rather than as parameters:
_(14618707748).jpg)
Carrara — fine grey veining on white. Photo: James St. John, CC BY 2.0

Calacatta Gold — bold iron-gold veins, generous negative space. Photo: Stones slabs, CC BY-SA 4.0

Portoro — near-black micritic limestone laced with gold. Photo: Bodroza, CC BY-SA 4.0

Nero Marquina — black bituminous limestone, sharp white calcite veins. Photo: Karanky78, CC BY-SA 4.0
_13.jpg)
Verde Antique serpentinite — the ophicalcite-breccia family verde antico belongs to: dark clasts, pale cementing veins. Photo: James St. John, CC BY 2.0
_1_(25869817093).jpg)
Imperial Porphyry — hematite-purple groundmass sown with pale feldspar phenocrysts, no veins. Photo: James St. John, CC BY 2.0

Cipollino — onion-skin foliation, mica bands laminating green and white. Photo: Max.kit, CC BY-SA 4.0
.jpg)
Onyx — banded calcite deposit, translucent where the layers run thin. Photo: John Rusk, CC BY 2.0
2.9 Aesthetic / perceptual guidance — why procedural marble looks fake
There is no single canonical essay; the diagnosis is assembled from artist breakdowns, Adobe/Substance guidance, and noise-limitation statements. The named failure modes and their fixes:
| Failure mode | Fix | Source |
|---|---|---|
| No large-scale composition (plain fBm) | Add a dedicated composition layer above the noise | arXiv "InfiniteDiffusion": noise methods "lack the large-scale structure … requires heavy post-processing to approach realism" |
| Isotropic noise (no direction) | Anisotropic/Gabor noise + directional warp for a dominant drift | Lagae et al. survey |
| Over-uniform vein density | Mask density; add a few thickened "hero" veins | Bishop (80.lv): thicken selected veins with Histogram Scan + Slope Blur |
| Missing scale hierarchy | 2–3 nested vein levels; fine veins "fade away in places" | Bishop (80.lv) |
| Repeated motifs | Randomize distribution to avoid visible repetition | Adobe/Substance marble guidance |
| No color/structure correlation | Derive color from the same field/mask as structure | Bishop; IQ domain-warp coloring |
| No dominant direction | Directional warp; reuse the same warp across layers for coherence | Bishop; Adobe |
| Over-perfection reads as fake | Real book-matched slabs show mirror-flow; identical repeated veins = the tell of fakes | stone-industry (UMI Stone; Vardhman) |
The convergence is striking: the arXiv terrain paper's "lack of large-scale structure," the Substance artists' "hero veins + nested hierarchy + directional coherence," and the 18th-century faux-marbler's "flow of movement, drift, no X-crossings, vein hierarchy" are the same rules stated in three vocabularies.
PART 3 — SYNTHESIS: RANKED ALGORITHMIC RECOMMENDATIONS FOR LAPIDEO (WebGL/GLSL)
Ranked by likely visual impact per unit implementation effort.
Tier 1 — Highest impact
Add a large-scale composition layer above the noise. Before generating fine detail, lay down a low-frequency "design" field that defines: a dominant vein direction (drift), 1–3 event veins (dramatic primary veins), and large zones of negative space (clear matrix). This single change addresses the most-cited failure mode ("lack of large-scale structure"). Implement as a separate low-octave field or an authored/curve-driven guide field that modulates everything below it.
Introduce a dominant direction / drift via domain warping + anisotropy, and correlate color with structure. Use IQ iterated domain warping, expose the intermediate warp vectors, and drive the color ramp from them (not from an independent field). Add anisotropic coordinate scaling for foliation. Reuse the same warp across all vein layers for coherence.
Enforce a primary/secondary/tertiary vein hierarchy with non-uniform density. Generate veins in 2–3 nested scales; fade the finest veins out in patches; give one or two veins outsized width/contrast (hero veins). Never a uniform mesh.
Add subsurface-scattering / translucency read. Even a cheap wrap-diffuse + back-translucency term driven by a thickness/vein mask, with calcite veins more translucent and glossier than the matrix, plus a subtle inner-glow/parallax so veins sit below a polished surface. Without this, output reads as a printed decal regardless of pattern quality.
Tier 2 — High impact, moderate effort
Move primary veins from contour-based to curve-based. Implement a lightweight space-colonization (Runions 2005) or curl-noise-streamline (Bridson 2007) vein generator to produce explicit vein paths with width profiles, branching hierarchy (Murray's law), and a stress-controlled dominant orientation. Rasterize with a signed-distance width profile and wall-parallel internal banding (crack-seal). Curl-noise streamlines automatically satisfy the "veins never cross at X / right angles" rule because divergence-free streamlines don't intersect.
Add stylolites. A jagged, interlocking suture seam (roughly bedding-parallel) with a thin dark insoluble-residue halo. Almost always missing from procedural marble; very high realism-per-line-of-code. Generate as a 1-D jagged path (e.g. summed high-frequency ridged noise clamped to a seam line) with a dark diffusion halo.
Use distinct primitives per stone type rather than one noise function. Route each stone through the correct generator:
- Crack-seal marbles (Carrara, statuario, arabescato, calacatta, Portoro, Nero Marquina) → curve-based vein networks + matrix noise (+ stylolites, gold/grey/black tuned by impurity).
- Breccias/ophicalcites (verde antico, Breccia Capraia, Fior di Pesco, Giallo Siena) → Voronoi F2−F1 clast fields + matrix.
- Porphyry → scattered phenocryst clasts over a near-uniform hematite-purple groundmass, no veins.
- Cipollino → warped anisotropic banding + mica laminae + folding.
- Onyx/alabaster → warped parallel/curved translucent bands + strong SSS.
Tier 3 — Refinement
- Ridged-multifractal creasing (
offset − |noise|, octave-weighted) to convert smooth bands into hard-edged fracture ridges where sharp veins are wanted (Nero Marquina). - Voronoi F1 grain sparkle in the matrix for calcite crystallinity; tie a faint specular sparkle to it.
- Book-match correctness: ensure the mirror is a true reflection of one continuous underlying field so veins flow across the seam (real book-match), and consider quartered 4-way mirror for the opus-sectile "expensive stone" cue. Add a faux bevel/seam shadow when tiling into multiple slabs (the First-Style / faux-marbler panelization rule).
- Reaction–diffusion or DLA as an optional matrix-mottling / dendritic-stain layer (moss-agate/landscape-marble effects, dendritic manganese) — anisotropic Witkin-Kass RD for oriented mottling; DLA for branching dendrites.
- Fossil/inclusion layer textured separately from veins (non-crystalline), per Bishop's practice, for limestones.
Key references
Computational & algorithmic
- Perlin, K. "An Image Synthesizer." SIGGRAPH, 1985. DOI 10.1145/325334.325247
- GPU Gems, Ch. 5 (developer.nvidia.com) — reproduces Perlin's marble code.
- Perlin, K. "Improving Noise." SIGGRAPH, 2002.
- Ebert, Musgrave, Peachey, Perlin & Worley. Texturing & Modeling: A Procedural Approach, 3rd ed. 2003.
- Quílez, I. "Domain Warping." iquilezles.org/articles/warp.
- Quílez, I. "Voronoise." iquilezles.org.
- Worley, S. "A Cellular Texture Basis Function." SIGGRAPH, 1996. DOI 10.1145/237170.237267
- Turing, A. "The Chemical Basis of Morphogenesis." 1952.
- Turk, G. "Generating Textures on Arbitrary Surfaces Using Reaction-Diffusion." SIGGRAPH, 1991.
- Witkin, A. & Kass, M. "Reaction-Diffusion Textures." SIGGRAPH, 1991. DOI 10.1145/127719.122750
- Runions, A., Fuhrer, M., Lane, B., Federl, P., Rolland-Lagan, A.-G. & Prusinkiewicz, P. "Modeling and Visualization of Leaf Venation Patterns." SIGGRAPH, 2005.
- Runions, A., Lane, B. & Prusinkiewicz, P. "Modeling Trees with a Space Colonization Algorithm." Eurographics Workshop on Natural Phenomena, 2007. algorithmicbotany.org.
- Bridson, R., Hourihan, J. & Nordenstam, E. "Curl-Noise for Procedural Fluid Flow." SIGGRAPH, 2007. cs.ubc.ca.
- Jensen, H.W. et al. "A Practical Model for Subsurface Light Transport." SIGGRAPH, 2001.
- RenderMan subsurface-scattering documentation.
- Zucconi, A. "Fast Subsurface Scattering." (blog.)
- Lagae, A. et al. "A Survey of Procedural Noise Functions." Computer Graphics Forum, 2010.
- "A Survey of Procedural Methods for 2-D Texture Generation." MDPI, 2020.
- Ramsay, J.G. Crack-seal veining mechanism. 1980.
- Park, W.C. & Schot, E.H. Stylolite geology. 1968.
- Abu El-Rus, M.A. et al. "A New Look on Imperial Porphyry." International Journal of Earth Sciences, 2018. DOI 10.1007/s00531-018-1604-z
- Bishop, N. "Creating Marble in Substance Designer." 80.lv.
- Adobe Substance 3D community forums — marble node-graph discussions (davescm et al.).
Historical & craft
- Vitruvius. De architectura, Book VII.
- Mau, A. Geschichte der decorativen Wandmalerei in Pompeji. 1882.
- Camera di Commercio di Firenze. "Florentine Scagliola." Google Arts & Culture.
- Opificio delle Pietre Dure — Wikipedia entry.
- Van der Burg, A.R. & P. School of Painting for the Imitation of Woods and Marbles. 1878, 7th ed. 1936. Quoted via Stacey, J. & Davies, R., The Building Conservation Directory, 2015.
- Building Conservation Directory. "Trompe L'Oeil Marble."
- Armstrong, G.D. Cyclopedia of Painting. 1907/1908. archive.org / Wikisource
- Institut Supérieur de Peinture Van Der Kelen-Logelain, Brussels — school's own published history.
- Finkelstein, P. The Art of Faux. 1997.
- Pozzo, A. Perspectiva Pictorum et Architectorum. 1693/1700; trans. John James, 1707. archive.org.
- Ruskin, J. The Seven Lamps of Architecture, "The Lamp of Truth." 1849.
Named-marble preset library
A literal recipe sheet, transcribed and paraphrased mainly from Armstrong (1907/8) with Finkelstein's later tutorial for Red Griotte, useful as a reference regardless of whether a given entry is being read for its craft history or mined for shader parameters. Format: Ground → Palette → Sequence → Vein tool → Signature trick.
| Marble | Ground | Palette | Sequence | Vein tool | Signature trick |
|---|---|---|---|---|---|
| Sienna | White | Yellow ochre, vermilion, white lead, blue black, purple lake | Dab ochre-white / vermilion-white patches wet-in-wet, soften → thin blue-black veins, soften → thin purple-lake+blue-black glaze in open spaces → white veins when dry, soften → varnish | Sable pencil for veins; flat camel-hair fitch for the glaze | Purple-lake glaze reserved for open (unveined) spaces only |
| Verde Antique / Serpentine (green master recipe) | Black or dark green | Dark brown, green, Brunswick green, white lead, black | Scumble brown+green, then Brunswick green+white (soften); paint white/black masses with a fitch | Fitch | Armstrong's master rule: black ground, scumble white over black (thickness = shade of green), finish by glazing green over everything |
| White-Veined / Statuary / Carrara | Pure white, perfectly smooth | White+black+Indian red for the first faint vein | First vein scumbled thin, following the strata direction; subsequent veins layered progressively finer | Sable pencil | Veins run with the strata, not across it — direction is decided before density |
| Black and Gold / Portoro | Black / deep ivory-black | Yellow ochre, white, vermilion, burnt/raw sienna; optional gold or silver leaf | Dab ochre-white spots, heighten with vermilion; while wet draw threads in all directions; add a white vein in the deepest black with crossing threads; glaze grey/white; finish with a few white veins | Round-pointed bodkin (for the leaf trick) | Cabinet trick: lay gold or silver leaf under the black ground, then draw veins off the leaf with a bodkin so the metal shows through the vein line |
| Porphyry (red) | Venetian red + vermilion + white | Same, spattered | Spattering: roll a nearly-dry loaded brush between the palms; three successive layers of spots; opaque white vein with transparent threads added once dry | Sable pencil + feather (veins); palm-rolled brush (spatter) | Three separate spatter passes, not one — density is built in layers |
| Egyptian Porphyry | Vermilion + white lead | Indian red, lake, light blue, white, blue | Strike the brush handle on a stick while turning the wrist to throw elliptical spots; light-blue spatter over; large white spots; fine white veins | Sable pencil (large spots); camel-hair pencil (fine veins) | The handle-strike technique throws elliptical rather than round spots — deliberately anisotropic spatter |
| Jasper | Venetian red + red lead + chrome yellow | White, blue, brown, yellow spots | Dab white spots with a sponge or tool, soften with badger; add blue/brown/yellow spots; veins with a camel-hair pencil when nearly dry | Sponge (spots); camel-hair pencil (veins) | Veining is timed to "nearly dry," between wet-blend and hard-edge |
| Red Griotte (Finkelstein tutorial; analogue for Rouge Royal/Rosso) | Dark brick basecoat | Cadmium red + carmine lake + burnt umber + orange (background); black + carmine lake (dark glaze); off-white/ochre/raw-umber (fissures/veins); transparent black+Payne's grey+raw umber (overglaze) | Background glaze in diagonal "beds" → dark glaze smoothed with a round badger → alcohol dispersion for reptile-skin cissing → fragments painted (two-tone "quail's-eye" clusters) → off-white fissures → veiners → transparent zig-zag overglaze → varnish | Two-headed flat badger/chiqueteur (dispersion); brecher then veiners (fissures) | Denatured-alcohol dispersion pass is what produces the mottled "quail's eye" fragment texture — not paint, solvent |
| Vert de Mer / Seagreen | Black | Chrome oxide green + titanium white | Sponge on, badger-soften; twin-header whitish veins, broken with a sponge; toothbrush spatter of turpentine+white and black; discreet red-ochre "cobblestone" flecks | Two-header veiner; toothbrush (spatter) | A toothbrush-flick spatter layered under the veins, not over them |
| Brèche violette | Off-white / pale cream | Zinc white, black, ochre, chrome-orange, caput mortuum, ultramarine, red lake | Dark purplish broad veins + very fine white veins, sponge-modified | Sponge | Broad and fine veins are two separate passes at two separate value contrasts, not one graded pass |
Translation table: craft rule → algorithmic feature
| Craft rule / tool behaviour | Source | LAPIDEO algorithmic feature |
|---|---|---|
| Transparent glazing for depth | Van der Burg 1878 | Stack of semi-transparent tinted layers with alpha/absorption compositing; SSS-style depth term |
| Stucco lustro/marmorino thin burnished lime glazes | Venetian plaster tradition, §1.7 | Multi-layer translucency accumulation; height-based specular/burnish highlight |
| Smooth ground with sheen, tints all glazes | 19th-c. practice | Base-colour parameter tinting all overlying transparent layers (light-over-dark vs dark-over-light toggle) |
| Wet-in-wet base mottling | Armstrong; Finkelstein "chiqueteuring" | Low-frequency multi-octave noise (2–3 warm/cool tints) blended; domain-warped value break-up |
| Badger-softening (one side of a vein) | Van der Burg | Anisotropic blur perpendicular to local vein direction; asymmetric one-sided blur kernel |
| "One hard edge, one soft edge" | Van der Burg | Asymmetric vein cross-section profile (offset SDF) |
| Diagonal drift; veins never regular | Manual consensus | Global orientation/flow field (dominant diagonal ± jitter) driving vein advection |
| Veins branch, never cross; no X/right angles | Manuals | L-system/space-colonization vein growth with branch bias and junction suppression |
| Veins feather/fade/run off edge | Manuals | Taper vein opacity+width toward endpoints; extend beyond bounds and clip |
| Vein width varies along length | Manuals | Width = f(arc length, noise); modulate SDF radius per segment |
| Primary "leaders" + secondary/tertiary network | Finkelstein | Hierarchical vein generation: N primary curves seed M secondary, then capillary tertiary |
| Fragmenting breccia in negative space | Finkelstein | Worley/Voronoi partition; draw cell borders as veins, fill cells as fragments; recursive sub-cells |
| Alcohol/turpentine dispersion ("cissing") | Finkelstein; Van der Burg | Worley/spot-based dissolution mask multiplied into a glaze layer |
| Spattering/sprinkling (porphyry, granite) | Armstrong; Egyptian granite (§1.5) | Poisson-disc/stochastic point splatter; elliptical option (anisotropic stamp) |
| Scumble vs. glaze distinction | Armstrong | Two blend modes: scumble = opaque drybrush overlay; glaze = transparent multiply |
| Book-matched mirror symmetry | Scrovegni (§1.6); slab practice | Mirror/quarter symmetry operator on the pattern field |
| Panelization, faux bevel, joint highlight/shadow | Slab practice | Slab grid layout; per-joint AO/bevel term; run-across-vs-stop-at-joint toggle |
| Three-value system, veins rarely pure B/W | Colour theory | Constrained 3-value palette generator; clamp vein luminance away from extremes |
| Quiet zones/3 points of interest | Finkelstein composition rule (§1.9) | Activity-density field with reserved low-variance regions |
| Deceptive vs. fantasy mode | Ruskin (§1.10) | Global mode switch: "realistic" (constrained, specimen-like) vs "fantasy" (unconstrained hue/pattern) |
Griotte marble, illustrated in the Larousse Universel, 1923 — the stone behind Finkelstein's Red Griotte recipe above. Photo: Claude Augé, Public Domain
Campan green marble, Larousse Universel, 1923 — a French green marble in the same family the historical "Vert de Mer" seagreen recipes above are drawn from (not identical to it, but the closest verifiably-sourced period plate found for this pass). Photo: Claude Augé, Public Domain
Brèche violette, Larousse Universel, 1923 — an exact match for the table entry above. Photo: Claude Augé, Public Domain
Rouge antique, Larousse Universel, 1923 — a real red marble close in character to the "Porphyry (red)" table entry (not literally porphyry, but the nearest verified period plate in the same red-marble family). Photo: Claude Augé, Public Domain
Jaune de Provence, Larousse Universel, 1923 — a warm yellow marble in the same family as the "Sienna" table entry above, not Siena itself. Photo: Claude Augé, Public Domain
Implementation roadmap (staged build order)
This sequences the Tier 1–3 recommendations in Part 3 into a build order — a "what to build in what order," rather than a re-ranking of them.
Stage 1 (spine). A universal 3-pass pipeline mirroring the craft-manual build in §1.4/§1.8: (1) ground + wet-in-wet mottle, (2) veining (orientation-field-driven, hierarchical, asymmetric profile, branch-not-cross), (3) overglaze (transparent tint, optionally spot-only). Benchmark: can Sienna, Statuary, and Portoro (see preset table above) be reproduced by changing only ground colour, palette, and vein density/scale?
Stage 2 (depth engines). Translucency/glaze stack + asymmetric badger-blur (Tier 1 items 2 and 4). Benchmark: side by side against a real Carrara photo, does the vein read as under a translucent surface rather than on it?
Stage 3 (signature textures). Dissolution/cissing mask (Worley), spatter engine (Poisson-disc, elliptical option per the Egyptian-Porphyry handle-strike trick, §1.5), breccia negative-space partition (Voronoi + recursive sub-cells, per Finkelstein's "fragmenting"). Unlocks porphyry, granite, breccia, Vert de Mer, and Red Griotte from the preset table.
Stage 4 (architecture). Slab panelization — grid layout, book-match/quarter symmetry (§1.2, §1.6), joint bevel/AO, run-across-vs-stop-at-joint, feature-scale proportional to slab size, distance-based LOD contrast.
Stage 5 (preset library + modes). Ship the named-marble presets above with provenance notes citing the manual sources; add the deceptive/fantasy mode switch (§1.10).
Note: several Stage 3/4 items — curve-based veins, Voronoi F1/F2 breccia, stylolites, and book-match — are, as of this pass, already implemented in LAPIDEO's own code (marbles.html), ahead of where this roadmap assumed. Worth reconciling the roadmap against the app's actual feature state rather than treating it as still-aspirational.
Caveats
- Source quality varies. Foundational algorithms (Perlin, Worley, Witkin-Kass, Runions, Bridson, Jensen) are peer-reviewed SIGGRAPH/ACM papers. Faux-marbling rules and Substance recipes come from practitioner sources (blogs, forums, tutorials) — reliable as craft knowledge but not academic. Stone-vendor geology is commercially motivated; used for descriptive/visual language, corroborated against geology sources (Sandatlas, Wikipedia, peer-reviewed Portoro/Imperial Porphyry papers) where possible.
- A resolved terminology point: Imperial Porphyry is igneous (phenocrysts in groundmass, no veins); Portoro, Nero Marquina, and verde antico are not true metamorphic marbles (bituminous/micritic limestones and serpentinite breccia respectively); onyx/alabaster is a chemical calcite deposit. Treating them all as "marble veins" is the classic modeling error.
- Unresolved discrepancy: the geological age of Nero Marquina is given as Cretaceous by some sources and Jurassic by others.
- Unverified quote: the "Vorocracks marble" Shadertoy quotes were drawn from search-index snippets (the page blocked direct fetch); verify verbatim before relying on them.
- No canonical single "why procedural marble looks fake" essay exists; that section is synthesized across multiple partial sources.
- Van der Burg's text is secondhand. The 1878 quotes in §1.8 were recovered via a 2015 secondary conservation-industry article (Stacey & Davies), not the primary 7th-edition text itself — treat as reliable craft knowledge, not a verbatim-checked primary source.
- No period-authentic Egyptian imitation-granite sarcophagus image was sourced this pass. A specific, licensable Commons photo of the Thutmose III/Amenhotep II stippled-granite sarcophagi described in §1.5 wasn't confidently located; the claim rests on the textual sources cited there, not on an illustrated example.
- Part 2 (the computational sections) still has no images. The strongest candidates are LAPIDEO's own rendered output — contour-vs-curve veining, Worley F1 vs F2−F1, ridged-vs-smooth, stylolite on/off, book-match correct/incorrect — since the app already implements the relevant toggles (
marbles.html). Generating and uploading those is the next pass on this page, not a permanent gap.