When we started designing the foundations of the engine, we knew that we were going to want the ability to create tester applications in an easy, convenient manner. Our solution is what we call the Lab Architecture.
Lab is a top-level library built only for the purpose of visual “tester” applications. Game and tool applications do not include Lab since their requirements are heavier and usually more custom.
At its core, Lab provides us with a base feature set:
- Scene Graph Rendering
- User Interface Controls
- Polar Camera
Lab also gives us a defined location to place common objects like a GroundPlane, Grid, and World Axes. This is useful because it means we don’t have to pollute engine libraries just to share “tester” functionality.
Lab builds on top of the Shell library, which is our developer toolkit. Shell contains the Dashboard, a real-time diagnostic report display, and a few other utilities. The reason this functionality is not in Lab is so that other applications (including game projects) can make use of these helpful mechanisms.