FacetLab started with a simple question: what if learning the diamond 4Cs felt more like exploring than studying? Instead of handing people a static chart, I built a browser game where you start with a rough stone and make a series of visual decisions that gradually turn it into a finished gem. The result is a small, interactive lesson in cut, color, clarity, and carat, designed for visual learning rather than memorization. FacetLab is a free open-source WebGL learning simulator, with a live tool at 4cs.co.za/diamond-polishing-game and source code on GitHub.
The idea was to make the 4Cs feel connected. In a real diamond, every choice affects the others. Polishing one facet changes how light moves. Changing proportions changes the look of the stone. A cleaner shape can reveal flaws differently. Even carat, which people often think of as a single number, becomes easier to understand when you see how size, symmetry, and cut interact on screen. That is the core of FacetLab: not a lecture about diamonds, but a hands-on way to see trade-offs in motion.
I used WebGL because the subject benefits from depth, shine, and movement. A browser can do a lot when the goal is to show subtle differences in reflection and surface shape. That matters here, because diamond education is full of visual judgments that are hard to explain in text alone. With a 3D interface, learners can inspect the stone from different angles, try changes, and immediately see what happened. The game format turns abstract terms into something tangible.
I also wanted the project to stay open-source on purpose. Education tools get better when people can inspect them, reuse them, and adapt them. By keeping the code public, FacetLab can be studied as a small example of how interactive learning can work in the browser. It is meant to be a teaching aid, not a polished sales tool, and that distinction matters. The focus is understanding, not persuasion.
What I like most is that the experience stays lightweight. You open it in a browser, start with a rough stone, and learn by doing. There is no heavy onboarding and no need to commit terminology to memory before you begin. You just experiment, compare, and notice patterns. For some learners, that is the fastest path to understanding: see it, change it, and connect the result to the concept.
If you want to try it, the live tool is FacetLab, and the code is on GitHub.
Top comments (1)
This is really cool! I'm curious about the