Tombstone
Cauldron v2 · engine libraries
Jan 2005 – Nov 2006 · age 23–24
What it was
The engine core of the 2006 Cauldron: five static libraries and a serializer. One held SSE math, camera, frustum and a SOAR terrain refiner. One was 74 classes of scene data, about 28,000 lines, every one generated from a schema with XML and flat-binary readers and writers plus a C API for the editors. The OpenGL layer compiled a shader bank from an XML document, skinned characters in GLSL, splatted terrain with a 3D texture chosen by height and slope, and re-sorted BSP geometry every frame for transparency. A PhysX layer cooked collision meshes and cached them on disk by name. A hand-rolled XML library sat underneath. It compiled and ran under the Epic demo. The particles, affectors, virtual lights and mirrors existed as classes that nothing ever drew.
Wins, for the age
- At twenty-four, Jeff generated loaders that turned a file buffer into live C++ objects by borrowing a vtable from a static prototype and rewriting offsets into pointers. Zero-copy loading, seven years before Cap'n Proto made it famous in 2013.
- Carried a skeleton's bone index as the ninth vertex float and skinned in GLSL against a 150-vector palette, compacting surfaces to 50 bones. The technique was known; doing it alone, on 2006 drivers, was not easy.
- Applied the published SOAR refinement and a 3D-texture splat, with before-and-after screenshots as proof it looked better.
- Made shaders data: a shader bank compiled by class, finding on their own what DirectX Effect files had already found.
What it taught
- A compiler at the center buys a great deal, and every class pays for two serializers whether used or not.
- Keep the renderer's caches out of the data. Writing compacted bone indices back into the model made it impossible to re-save.
- Pass containers by reference. A garbage list taken by value quietly leaked every shape descriptor.
- Do not model what you will not render this month. This primate built twenty-six particle classes and zero particles.
Genealogy
Ancestors: none on record. The roots are traced under the umbrella and its lineage. Descendants: Kitchen Cauldron: a data model whose files are its memory, rebuilt for the next engine. Part of: Cauldron v2.
Epitaph
Here lies the engine of Cauldron v2. It put a dwarf's bones in a texture coordinate and refined a hillside every twentieth frame, and its particle system had twenty-six classes and never one spark.