Indicatrix GitHub
Reference

How Indicatrix compares

Where it sits next to the established faceting and gem-rendering tools, what it already does better, and what is still beta.

1The landscape

Faceting software splits into three jobs that different programs solve to different depths: authoring cutting instructions a human will actually cut on a faceting machine, rendering what the finished stone will look like, and analysing how well the cut performs as the stone is tilted. Indicatrix is one program that attempts all three, with the renderer being the mature part and the design editor still in beta.

GemCAD
Robert Strickland's faceting-design program: the long-standing reference for authoring cutting instructions. Its .asc text export is the closest thing this field has to an interchange format, and .gem is its own binary save format. Strickland retired in 2023 and released GemCAD and GemRay free of charge — free to use, but not open source.
GemRay
The ray-tracing companion to GemCAD: it renders a design, plots its brightness against tilt and can search the pavilion and crown angles for the best weighted brightness, but it cannot author designs itself. Its own documentation is unusually explicit about its limits — it does not model birefringence, dichroism or polarized light, and follows three colour rays rather than a spectrum.
Gem Cut Studio
A Windows faceting-design application, separate from GemCAD, with its own .gcs project format that stores a solved design (facets already closed into polygons) rather than a schedule to be solved.
Gem Diagram
A browser-based faceting designer — nothing to install — that reads .gem, .asc and .gcs, and renders in solid, realistic and ray-path modes. Subscription-priced.
DiamCalc
OctoNus's cut-analysis and visualisation package, aimed at diamond grading and appraisal — parametric cut styles and proportions rather than an index-wheel schedule. OctoNus states that sales of DiamCalc and DiamCalc Pro are discontinued.

2Feature matrix

READ THIS FIRST

The Indicatrix column is checked against this repository's own source. Every other cell was read out of that tool's own vendor page or user manual on 2026-09-21, and the cells marked ?, plus the rough-planning row, were checked again against those sources on 2026-09-30 — the sources are listed below. A ✗ means the documentation either states the limitation outright or describes the mechanism closely enough to settle it; where a manual is simply silent, the cell says ? and this page asserts nothing either way. Nothing here is a benchmark, no version numbers are implied, and software moves — corrections are welcome as issues. Indicatrix is not affiliated with, endorsed by, or derived from any of these programs.

✓ yes · ✗ no · ? not verified by this page. Compiled from each tool's own documentation, read 2026-09-21 and 2026-09-30 — see sources.
  Indicatrix GemCAD GemRay Gem Cut Studio Gem Diagram DiamCalc
Authoring
Authors cutting instructions (angle, index, mast) ✓ beta✓✗✓✓✗ parametric cuts
Positions facets by meet point rather than by a typed depth ✓✓✗✓✗ angle + auto-distance✓ Cut Designer: 3-pt facets
Automatic search over angles against an optical objective ✓ beta, cancellable✗ manual, via ray paths✓ Nelder–Mead, pavilion and crown scale✗ manual optimizer✗ yield search, not angle✓ Pro: cut proportions
Preform support ✓✓✗✓ preform tier?✓ Cut Designer: Custom Preform
Manufacturability checks (vanishing facets, gear quantization) ✓✓ cut-off facet dialog, gear rounding error✗✓ gear re-map report??
Plans cuts from a block of rough (yield, placement in the rough) ✓ beta, block rough, up to 99 stones✗ by hand: L/W, Vol./W³✗ optical merit only✗ single-design yield calculator✓ one design, orientation search✗ by hand: weight, locked limits
Rendering
Produces a physically-based image of the cut stone ✓✗ ray paths only✓✓✓✓
Refractive index evaluated per wavelength ✓ 8 channels/path✗✗ 3 colours✗ 3 colours✓ dispersion value✓ chromatic dispersion
Polarization tracked through every interface (Stokes–Mueller) ✓✗✗ stated✗??
Birefringence, uniaxial and biaxial, with walk-off ✓✗✗ stated✗??
Direction-dependent (pleochroic) absorption ✓✗✗ stated✗ “in the future”✓ Alexandrite only, 3-axis?
Volumetric inclusions / haze ✓✗?✓ Clarity: distance-based haze?✓ Pro: inclusion defocus
GPU compute path, verified against the CPU reference ✓ tiered harness✗✗ multicore CPU✗? WebGL2 shader; check not stated? HDR engine on GPU; check not stated
Renders split across machines on a local network ✓ mTLS 1.3✗????
Analysis
Brilliance / windowing / extinction figures ✓✗✓✓✓ windowing check + Ray Studio✓ ASET, Ideal-Scope
Performance swept across tilt angle, not a single pose ✓ 181 pts × 4 azimuths, video export✗✓ brightness vs. tilt✓ Tilt Performance?✓ DETAS: tilt sweep
Searchable library of designs ✓ SQLite, built in✓ via Datavue II✗✓ via Datavue✗ “no preset library yet”✓ via DataVue2
Cut grade / appraisal report ✗✗✗✗✗ stats only, no grade✓
Practicalities
Source available under an open licence ✓ MIT✗ free since 2023✗ free since 2023✗✗ subscription✗ sales discontinued
Runs natively on Linux ✓✗ Windows✗ Windows✗ Windows, Mac✓ browser✗ Windows
Runs in a browser ✓ editor, diagram, CPU render; no library✗✗✗✓✗

3Interoperability

This part is entirely verifiable, and it is the practical answer to "can I keep using what I already have?". Everything below lives in crates/indicatrix-formats.

FormatOriginIndicatrix readsIndicatrix writesNotes
.asc GemCAD text export ✓ ✓ Cutting instructions: angle, mast and index positions, per-facet names, plus meet instructions. The field's de facto interchange format, verified against a real-world corpus of 5,759 files: Windows-1252 files, both line endings, GemCAD's culet convention (angle 0 with a negative distance) and names bound to their index are all read and written back as GemCAD does.
.gcs Gem Cut Studio ✓ ✓ experimental Plain-text XML holding a solved design — every tier already carries its facets as closed polygons. Read per the file description in the Gem Cut Studio 1.1 user's manual; the conventions the manual leaves open were measured on 59 real files and checked field by field against the 56 that have an .asc sibling for the same design. The writer solves each facet's polygon from the facet planes and reads back correctly here, but has not yet been checked in Gem Cut Studio itself, and chiral designs are untested.
.gem GemCAD native save ✓ ✗ Binary, with no published specification. The geometry is now decoded from the binary: every facet plane, tier, name and cutting note, plus gear, symmetry, refractive index, headings and footnotes. Verified against a corpus of 254 files, all of which decode byte-exactly end to end; where a design also exists as an .asc, every tier's angle, mast and index set matches it. An embedded CAM preform is read but not converted.
.indicatrix.toml Indicatrix ✓ ✓ A sidecar beside the .asc, carrying the constraints and preform an .asc cannot express. Plain text, versioned, and losing it costs you only the extra metadata.

The .gcs and .gem readers exist because real designs are published in those formats with no .asc counterpart. The desktop editor imports both into its library and opens both directly, converting them to .asc cutting instructions. The .gem layout is clean-room reverse-engineering from a file corpus; both readers are documented in the source with what is confirmed, what is inferred, and what is still open.

4Scope, and where it is today

The goal is a complete gemstone faceting suite: author a design, solve it, optimise it, see what it will look like cut in a given material (32 built into the shared catalogue — see Materials), and export something a cutter can work from — one program, one data model, no round trip through a second tool. The renderer is the mature part of that. The design editor is not there yet.

STATUS

The faceting CAD is in beta and under active development. Solving, optimising and export work on the designs in the bundled catalogue, but the editor's interaction model is still changing — so for now, check a design against an established CAD before cutting rough with it. That is a statement about the current state, not about the intended scope.

Concretely, what "in beta" already covers: a new design starts from a template gallery (five built-in starting shapes plus a blank design) or a step-by-step guided walkthrough that highlights the relevant panel at each stage; Solve and the angle-search Optimize pass both run off the UI thread and can be cancelled mid-search — a real checkpoint the search itself observes, not just a UI dismissal — rather than blocking the editor until a multi-minute run finishes; and the exported cutting sheet reports mast in millimetres once a girdle diameter is set, a yield/weight-loss figure against the preform, and a per-tier cheater (azimuth) offset column when a tier actually carries one.

Yield planning goes beyond the single-design preform figure. The beta Rough planner takes a rectangular block of rough and, from either the library filter or the whole library, ranks up to 10 layouts of up to 99 stones by total carats, each with a sawing plan (slabs, then bars, then pieces, over all 6 cut orders). It is an upper bound for a clean block: it plans for block-shaped rough only, not scanned or irregular rough and not inclusions, and it is desktop-only for now. The one other rough planner in the matrix is Gem Diagram's, which its documentation describes as an orientation search that starts from one loaded design and reports yield and finished weight for each orientation; it does not describe choosing among designs or stone counts.

Two things are out of scope by design rather than by schedule, and knowing which is which matters when you are deciding what to use:

5Why the optics depth matters

Most of the rendering rows above are the same argument in different forms. A gemstone is one of the few subjects where an RGB renderer's approximations are visible rather than academic: dispersion is the whole point of the object, the material is anisotropic, absorption depends on the direction light travelled through the crystal, and total internal reflection introduces phase shifts that a polarization-free tracer simply discards. Indicatrix evaluates the refractive index per wavelength from Sellmeier and Cauchy fits, carries Stokes vectors through Mueller matrices at every interface, splits ordinary and extraordinary rays with genuine Poynting walk-off, and applies absorption per direction — and then checks its own GPU port of all that against the CPU reference with a tiered equivalence harness.

The question that usually follows is why not simply render the stone in a general 3D package — Blender/Cycles, LuxCoreRender and the rest. They will light a gemstone mesh beautifully, but they have no notion of cutting instructions, an index wheel or a meet point, and they carry a single refractive index per material rather than a dispersion curve, so the fire has to be faked. The faceting tools above have the opposite problem: they know exactly what a tier is, and their renderers follow three colour rays.

Whether that depth is worth it depends on what you are doing. For laying out a schedule and getting it cut, an established authoring tool plus a quick preview is a perfectly sound workflow. The case for Indicatrix is when you want to see what a cut will actually look like in a specific material before committing rough to it — figure 5 on the overview is one cut in five materials with nothing else changed — or when you want the source of the thing making that claim.

6Sources

Every non-Indicatrix cell in section 2 was taken from the tool's own vendor page or user manual, read on 2026-09-21; the rough-planning row and the re-check of every ? cell used the sources below again on 2026-09-30, and the entries added then are marked. Where a manual is silent on a capability this page records ? rather than inferring absence, except where the document explicitly states a limitation.