Eric Lengyel's Avatar

Eric Lengyel

@ericlengyel.bsky.social

• PhD, Computer Science • Creator of Slug Library, Radical Pie, C4 Engine • Math / gamedev author • Geometric algebra researcher • Former Naughty Dog, Apple, Sierra

1,903 Followers  |  55 Following  |  166 Posts  |  Joined: 06.02.2024  |  2.018

Latest posts by ericlengyel.bsky.social on Bluesky

Of course, the upcoming FGED 3 has been using Radical Pie from the get-go, and it has saved me a lot of time.

08.08.2025 21:30 — 👍 8    🔁 0    💬 0    📌 0

I have now redone all of them in Radical Pie (without the need for Illustrator), and I'll be releasing remastered books in the near future. The content is exactly the same -- the equations just look better.

08.08.2025 21:30 — 👍 5    🔁 1    💬 1    📌 0
Post image Post image

Combined, FGED 1 and 2 contain 5503 individual equation objects that I originally made in MathType years ago. Some of them had to go through Illustrator because they contained additional graphics and annotations (Figure 1.5 and Equation (1.78), for example).

08.08.2025 21:30 — 👍 9    🔁 1    💬 2    📌 0
Radical Pie

This means all of the major features are now complete, so we're getting close to release!
radicalpie.com

08.08.2025 00:32 — 👍 8    🔁 0    💬 0    📌 1
Post image Post image Post image

The drawing and annotation tools in Radical Pie are finished! Now, I can type an equation and add highlighting, arrows, labels, etc., as shown in the following examples. All drawing objects are attached to anchor points in the equation, so they move and resize dynamically.

08.08.2025 00:32 — 👍 35    🔁 6    💬 2    📌 1

I was pleasantly surprised to see Happy Gilmore correctly account for the Coriolis force on the last hole!

25.07.2025 23:09 — 👍 3    🔁 0    💬 0    📌 0
Journal of Computer Graphics Techniques

We're happy to announce we have a new Editor-in-Chief, Alexander Wilkie, and two new editors, Johannes Schudeiske and Andrea Weidlich. Marc Olano continues on as Managing Editor. And, thanks to David Eberly, who has retired as an editor.

The full roster is at jcgt.org

24.07.2025 15:03 — 👍 15    🔁 3    💬 0    📌 0

Because it avoids the problems that other people have mentioned. It's the sweet spot between strict and practical. There's also the notion that a point is a specialized type of vector, which naturally leads to the inheritance relationship.

14.07.2025 08:58 — 👍 0    🔁 0    💬 1    📌 0

If you check out my math library on GitHub, I'm sure you'll be taken aback by how complicated it is, but almost all of that is there to facilitate zero-cost swizzling and submatrix extraction, not to support the vector/point distinction.

14.07.2025 05:00 — 👍 0    🔁 0    💬 1    📌 0

The *only* thing that somebody might not like is that going from vector to point requires some kind of explicit notation such as casting or adding the origin. But in my experience, those are rare, it's no big deal when they arise, and they sometimes reveal a problem with your logic.

14.07.2025 05:00 — 👍 0    🔁 0    💬 1    📌 0

Since point + vector is defined to be a point,

p = 0.5 * p1 + 0.5 * p2

works just fine (because 0.5 * p2 implicitly becomes a vector when matching function overloads).

14.07.2025 05:00 — 👍 2    🔁 0    💬 1    📌 0

The code is both extremely practical and very beautiful at the same time. To get it right, make point a subclass of vector. Then any function expecting a vector can also accept a point, but you also get the separate behavior when you want it, like for matrix transforms.

14.07.2025 05:00 — 👍 0    🔁 0    💬 1    📌 0

I strongly disagree. I've been using a vector/point distinction for over a quarter century, with roughly one million lines of my own code involved plus millions of lines of other people's code, and the problems you're talking about don't show up when it's done right.

14.07.2025 05:00 — 👍 3    🔁 0    💬 1    📌 0

One trick is to make point a subclass of vector (direction). Then a point can always be implicitly interpreted as a vector, but the other way has to be explicit.

13.07.2025 18:55 — 👍 1    🔁 0    💬 0    📌 0
Post image

Update: Now it's 534 glyphs.

13.06.2025 20:22 — 👍 3    🔁 0    💬 0    📌 0
Post image

I've been making a special font for Radical Pie. It started out as a way to provide a handful of symbols that aren't in Unicode. As I grew annoyed by errors, inconsistent weights, and missing glyphs in existing fonts, I kept creating more glyphs for my own. It's up to 463 now!

12.06.2025 01:37 — 👍 14    🔁 1    💬 2    📌 0

The palettes can't contain everything, just the most common stuff. Separately, you can insert whatever Unicode character you want. And many of the structures have additional functionality accessed through dialogs.
radicalpie.com

11.06.2025 07:36 — 👍 3    🔁 0    💬 0    📌 0
Post image

Radical Pie has 16 palettes containing mathematical symbols and various typographic structures. Let me know if you think there should be anything else available here for quick access.

11.06.2025 07:36 — 👍 7    🔁 0    💬 1    📌 0
Post image

Annika Oehri, Philipp Herholz, and Olga Sorkine-Hornung, Higher Order Continuity for Smooth As-Rigid-As-Possible Shape Modeling
jcgt.org/published/00...

06.06.2025 15:07 — 👍 18    🔁 6    💬 0    📌 0

Slug renders fonts directly from the original Bézier curves on the GPU and provides support for kerning, ligatures, accents, a wide variety of languages, and accessible text scaling throughout the entire UI.
sluglibrary.com

05.06.2025 19:47 — 👍 7    🔁 1    💬 1    📌 0
Post image

All the beautiful font rendering and exquisite typography in DOOM The Dark Ages came from the Slug Library. I'm excited that it's part of game!

05.06.2025 19:47 — 👍 56    🔁 5    💬 6    📌 0

I'm surprised to see 4K monitors still under 5% in the Valve Hardware Survey.
store.steampowered.com/hwsurvey/Ste...

04.06.2025 02:14 — 👍 11    🔁 0    💬 7    📌 0
Post image

I wrote a new blog post about something I'm calling the transwedge product. It allows us to fully decompose the geometric product into discrete parts using the primitive operations of the exterior algebra.
terathon.com/blog/transwe...

23.05.2025 07:27 — 👍 10    🔁 1    💬 0    📌 0
Post image

Yeah, this is also how floor and ceiling are typically implemented. Here's my floor() code, for example:

21.05.2025 23:10 — 👍 12    🔁 1    💬 2    📌 0

As someone who's very familiar with console APIs from the last three generations and knows what the hardware actually consumes, I can tell you that neither Vulkan nor D3D12 is a console-like API. Not even close.

18.05.2025 19:01 — 👍 2    🔁 0    💬 1    📌 0

Agreed. I don't think it would have been that hard to design a good OpenGL 5.0. Throw away the legacy stuff, make everything DSA, and add a command buffer object. All multithread accessible, of course.

18.05.2025 07:37 — 👍 4    🔁 0    💬 1    📌 0

I decided to downgrade from D3D12 to D3D11 in Radical Pie. D3D12 was overkill for an equation editor that's just rendering text and vector graphics (with Slug). Plus, some older GPUs can run RP just fine, but won't work with D3D12. The core rendering code shrank by 46%.

18.05.2025 04:35 — 👍 34    🔁 0    💬 3    📌 0
Post image

Slug version 7.4 has been released. This update includes several small feature improvements.

sluglibrary.com

15.05.2025 05:07 — 👍 9    🔁 0    💬 0    📌 0

I added Taylor's book to the list:

terathon.com/blog/ga-book...

In general, this book makes errors about the inner product and contractions similar to those appearing in GA4CS.

10.05.2025 06:02 — 👍 1    🔁 0    💬 0    📌 0
Post image

An electronic edition of PGA Illuminated is now available here:
www.amazon.com/dp/B0F7FZLNV...

04.05.2025 00:38 — 👍 23    🔁 1    💬 0    📌 0

@ericlengyel is following 20 prominent accounts