A new dawn
Interviewees: Ivo De Pauw & Flor Delombaerde, Howest University of Applied Science.
Both of you are teaching a course for Projective Geometric Algebra (PGA) within the game development curriculum of the Digital Arts and Entertainment programme of Howest. But why did you actually introduce it specifically in the game development curriculum?
Flor: Well, we are teaching in game development, so it is where we have to set up our courses, but honestly: there is a big win in doing the effort to familiarise yourself with PGA.
Ivo: We were introduced to PGA by the Flemish graphical engineer, game developer and mathematican Steven De Keninck. And he could show us that the big win lies not in that you can make more performant applications or whatever, but really through the truck loads of code you do not need to write nor run any longer. Imagine the too many if statements annex conditions you must double-check when you are programming in conventional mathematics: they render often just obsolete in PGA.
Ivo: For instance – like we demonstrate in our lecture – when you have parallel lines, they also simply intersect in PGA. A vanishing point is an intersection, an intersection point. This makes parallel lines no longer cause an exception. This saves you from exception handling or even error catching. So, the win lies not in the cycle counts but in all the overhead you prevent.
Flor has introduced a PGA Library called ‘FlyFish’ inside of the Geometric Algebra (GA) pioneering course. How do you think that simplifies the developer’s geometry use?
Flor: I believe that once you go into, for example, gameplay programming its use is completely rewarding. Once you get the hang of the PGA paradigm, it’s way more intuitive to create objects and make things happen.
Imagine that in a traditional engine you want to move a character and say have it spiralling out of view but when it intersects with a wall, it needs to be projected to another wall. In the same instance, you also have its enemy reflected – or displaced by any other weird geometric movement that needs to happen. If you attempt such a scene traditionally, there is quite a lot – if not too much – of vector calculus required.
While via this PGA library you can just multiply a entire poly-modelled object, specifically doing a sandwich operation of the full object with a plane, and you have its mirror image already done. This way you do not need to perform any vector calculus on all vertices and on all faces of the high-poly. You just did it by one single sandwich operation. Of course, this still takes its cycle counts.
PGA does not per se boost to high performance. But it is not less performant, either. The win lies in the semantics: in the PGA paradigm it is way easier to think about and implement your geometric features. Especially this makes it a major asset for the game developer.
Hearing your answer, would you think that PGA could realistically be used in maybe also the bigger game production engines?
Flor: I think it could be. But since a lot of the world is still on traditional linear algebra, the first gateway I see is probably through plug-ins, for example. These are sub programmes that you write yourself, to use them as add-ons to the existing major game engines. Such plug-ins allow you to both take the geometric way of writing ideas whilst still running them by the major engines.
Ivo: However, probably the most convincing thing to happen is somebody or a good team making a nice usable game engine 100% in geometric algebra. Imagine then such engine being used for some indie games or a studio that wants to adopt it. That would for sure rock the communities.
And what would you reckon as the biggest barrier to the wider adoption of PGA in programming?
Flor: You mean like performance-wise the tooling, or maybe just the mindset of people? I guess it is a combination of the mindset, but then indeed tooling too is not that ubiquitous at the moment. Good questions you are asking all the time!
Let us say that if you were dedicated enough at the moment to start a project fully in GA or develop an engine fully in GA, then you would probably also make your own tooling. Is any hybrid cross solution thinkable? Sure.
Would it make a huge difference if a commercial provider offers the first GA engine off the shelf?
Flor: Of course, people would more easily use it – even if it takes some payment. It is a pity that now there is a lack of commercial incentives for bigger companies or bigger game engine manufacturers to put GA in it, simply because there seems no explicit demand for it. A typical deadlock situation.
As another tricky question, do you think that GA or PGA should become standard course units in certain curricula?
Ivo: You mean since now we offer it as an elective course in Howest, but perhaps we should promote it to a standard course unit within game development? Certainly! We do hope to have the elective course unit someday promoted to just a default part of the curriculum.
Flor: I rather think for within game development the elective course in PGA is a good approach. We should not bulldozer students with it. But I also believe that any faculty or any stream teaching quaternions, should explain quaternions (for rotations) in the GA way.
Ivo: True, the GA quaternions are way more intuitive and clearer to understand compared to the cumbersome complex number approach. Quaternions are bireflectors, full stop. And any university teaching mathematics should at least have one standard course unit on Clifford algebras instead of ignoring it!

Earlier, we were talking about developing an engine entirely in PGA, but don’t you think it is possible to apply GA in a hybrid way inside the engine, e.g. only in specific functions of it?
Flor: When you opt such a hybrid way, it will take a lot of conversion to and from. I guess it could end up more of a hassle than a bonus.
I see… and if you set up a render pipeline entirely in PGA whilst keeping all the interfacing and the general gameplay aspects of your game engine just conventional. Wouldn’t that be a way to accelerate GA’s uptake?
Flor: That really sounds like the better idea to me… good thinking!
And as for something completely different: during your duo lecture ‘GA, A new dawn’ you mentioned the so-called pseudoscalar. Could you clarify that geometric primitive somehow?
Ivo: A pseudoscalar is the most remarkable single element in the articulation of its space, because it holds the entire space. It condenses the space itself. Let us try to make this primitive clear via two distinguished GA spaces: within the Euclidean 3D space, and subsequent in our favourite Projective 4D space.
Ivo: Starting with the pseudoscalar of the Euclidean 3D space, it is the solid volume element swept together by the three Euclidean base vectors. It can take on any size – when the size is 1, we call it the unit pseudoscalar. It has chirality – either right-handed when swept together corkscrew compliant – or left-handed. Think of a square sugar cube made of dextrous rotational sugar… which is a bad comparison to be honest. The takeaway is that the pseudoscalar holds the ‘nature’ of its space. Geometric Algebra shows its algebraic aspect through writing the left-handed pseudoscalar as the opposite of the right-handed, because their intrinsic orientations are opposite.
Ending with describing the pseudoscalar of the ‘Projective 3D’ (which is spanning a 4D space), it is the single point at infinity created by intersecting the Euclidean origin with the vanishing plane encompassing the 3D Euclidean space (which is impossible to imagine physically). This 4D pseudoscalar ‘hyper point’ lies above its underlying space and is orthogonal to its vanishing plane. It can again take on any size – when the size is 1, we call it the unit pseudoscalar. It can again take on two orientations – either positive or negative. Let us stick to that.
Now, we again land in your favourite GA flavour, the so-called Plane-based Projective Geometric Algebra (PPGA), why the choice for such signature?
Flor: If you would opt for say the Euclidean space instead, you would only create elements from three euclidean base vectors which remain origin borne. In other words, you keep being stuck in the origin with no mathematical way out to translate. You cannot displace primitives – only rotate them around another origin borne axis.
Ivo: While, by introducing one tricky generator, called the vanishing plane e0, this enables you to create vanishing points (directions) and vanishing axes (lines at infinity). If you rotate around a vanishing axis, you are translating. So, we see the vanishing plane as a kind of faraway ‘magnet’ encompassing the 3D euclidean space, which can pull your primitives out of the origin. As soon as you spot e0 in your expression, you know you are off-centre, which is all-together a must-have when you need to program TRS-based actions (Translation-Rotation-Scaling).
This makes sense indeed. Would you maybe have one last recommendation for anyone feeling tempted now?
Ivo: Try at least a taste of Geometric Algebra but take it easy when moving across this ‘old new’ terrain. For instance, the 2D or 3D Euclidean GA spaces are low-level entries into GA. Also, very important: use a software companion to both monitor your work and to visualise primitives and aspects as they are (and not as you may imagine them wrongly). To our students’ great satisfaction, we opt for the free MATLAB toolbox called PGABLE, which is a lean user-software developed at Waterloo University (Canada). The toolbox comes for free, but MATLAB does not. Each self-respected university offers a campus-wide licence for MATLAB. Just in case: students can purchase their private perpetual licence for the price of a movie night. Good luck!


Figure2: Intersection of planes in PGA by MATLAB/PGABLE/GA-Scene (courtesy of Ivo De Pauw)
Interview conducted by Maxime Arnolis