3D Engine Design
Welcome to the 3D Engine Design section of this edition of GPU Pro. The
chapters you will ﬁnd here cover various aspects of engine design, such as quality
and optimization, in addition to high-level architecture.
First, Pascal Gautron, Jean-Eudes Marvie, and Ga¨el Sourimant present us
with the article, “Z
Culling,” in which the authors suggest a novel method to
optimize depth testing over the Z-buﬀer algorithm. The new technique adds two
“depth buﬀers” to keep the early-Z culling optimization even on objects drawn
with states that prevent early-Z culling (such as alpha testing).
Next, Dzmitry Malyshau brings his experience of designing a quaternion-based
3D engine in his chapter, “Quaternion-Based Rendering Pipeline.” Malyshau
shows the beneﬁts of using quaternions in place of transformation matrices in
various steps of the rendering pipeline based on his experience of a real-world
In the article, “Implementing a Directionally Adaptive Edge AA Filter using
DirectX 11,” Matthew Johnson improves upon the box antialiasing ﬁlter using a
postprocessing technique that calculates a best ﬁt gradient line along the direction
of candidate primitive edges to construct a ﬁlter that gives a better representation
of edge information in the scene, and thus higher quality antialiased edges.
Finally, Donal Revie describes the high-level architecture of a 3D engine in the
article “Designing a Data-Driven Renderer.” The design aims to bridge the gap
between the logical simulation at the core of most game engines and the strictly
ordered stream of commands required to render a frame through a graphics API.
The solution focuses on providing a ﬂexible data-driven foundation on which to
build a rendering pipeline, making minimal assumptions about the exact render-
ing style used.
I would like to thank the authors who contributed to this section for their
great work. I would also like to thank my wife Suzan and my brother Homam for
their wonderful support. I hope you ﬁnd these articles inspiring and enlightening
as you undertake your rendering and engine development work.