Sign in

Scuff3D Rook

@scuff3drook.bsky.social
145 followers 20 following 73 posts

rookandpossum.com Formerly AAA engine/graphics dev... now indie!

PostsRepliesMedia
Scuff3D Rook @scuff3drook.bsky.social · 08/10/2026
AI big tech's current business strategy appears to be DDOSing math brains and it fucking sucks.
020
Scuff3D Rook @scuff3drook.bsky.social · 14/08/2026
Hiatus announcement (for site updates, videos) www.patreon.com/RookAndPossu...
patreon.com
Hiatus Announcement! | Rook & Possum
It's been a bit radio silent here, but this post will likely be the last post for at least a short while. The TL;DR is that posts here, on t
120
Scuff3D Rook @scuff3drook.bsky.social · 09/08/2026
Pet peeve: cross-process protocols like the language server protocol being JSON of all things. Passable albeit clunky as an exchange medium between humans, but between machines? Gross
100
Scuff3D Rook @scuff3drook.bsky.social · 08/08/2026
This was my experience also, both with implementing a custom allocator, and also implementing an asset loader on top. Whether data is memory mapped or read with syscalls, the page fault times dominate, so forcing faults to happen ahead of when the data is used has high impact
020
Scuff3D Rook @scuff3drook.bsky.social · 04/08/2026
I choose to do a "fix up" specifically so I can also serialize data structures that employ inheritance, and in practice, it's still much faster than actually evaluating constructors (and most data I serialize doesn't require it)
100
Scuff3D Rook @scuff3drook.bsky.social · 04/08/2026
rookandpossum.com/posts/custom... This may or may not be of interest. You can map memory with the copy-on-write bit to make mapped structures mutable in-memory, and also do vtable pointer patching and other things
rookandpossum.com
R&P -- Custom Data Structures in the Rookery
The data structures in the Rookery have some pretty big departures from how data structures are implemented in most libraries. Let's dig in.
110
Scuff3D Rook @scuff3drook.bsky.social · 03/08/2026
Yea makes sense! I've been doing some weird shenanigans to make procedural shader text effects on my end so I may jot them down some time
110
Scuff3D Rook @scuff3drook.bsky.social · 03/08/2026
Still though, if the SDF solution works and the memory isn't a problem, that may indeed be the way to go.
100
Scuff3D Rook @scuff3drook.bsky.social · 03/08/2026
each curve for each pixel, which probably isn't much slower than the scanline sweeper, although I haven't worked out the distance to a quadratic Bezier on paper yet (you'd want to leverage the monotonicity so you don't have to evaluate all cubic roots, compared to the general solution).
100
Scuff3D Rook @scuff3drook.bsky.social · 03/08/2026
Fast is definitely a bit harder since you'd have to query the closest distance to a curve from each pixel (at which point any analytical line anti-aliasing technique would work for arbitrary thicknesses). I guess depending on the font, you could use the same curve packing layout and brute-force...
100
Reposted by Scuff3D Rook
Mathias Westerdahl 🇺🇦 ✈️ Gamescom @jcash.bsky.social · 03/08/2026
I think the vacation shenanigans are nearly done. I've done a due diligence of using #Slug or #SweepingScanline and it seems to comeout in favor of the sweep algo. Faster, simpler code, single curve texture. Thx @scuff3drook.bsky.social ! @defold.com #gamedev
1102
Scuff3D Rook @scuff3drook.bsky.social · 30/07/2026
I concede that a talented programmer can extract value from LLMs as a tool, just as they can a static analyzer, theorem prover, or any tool really. My point is that in a few generations, there will be far *fewer* talented programmers than before, and there isn't a pipeline to replace what's lost.
100
Scuff3D Rook @scuff3drook.bsky.social · 30/07/2026
Also, please do use the "thread" feature when replying ;). It's a lot easier to follow your train of thought when the replies are sequenced chronologically.
000
Scuff3D Rook @scuff3drook.bsky.social · 30/07/2026
I think the actual throughput gain is debateable but I wouldn't use it in the current state for strictly ethical reasons regardless of its efficacy 🤷‍♂️. I can't/don't impose that on others but it's a personal decision.
200
Scuff3D Rook @scuff3drook.bsky.social · 28/07/2026
While writing this, I was reminded of alextardif.com/AI.html from @longbool.bsky.social which is a good (albeit sobering) read as well
alextardif.com
Alex Tardif: Graphics Programmer
010
Scuff3D Rook @scuff3drook.bsky.social · 28/07/2026
rookandpossum.com/posts/anti-s... This is an off-my-chest sort of post about what I perceive to be the incredible madness in the industry writ-large with respect to AI.
591
Scuff3D Rook @scuff3drook.bsky.social · 26/07/2026
Very nice work! Some of those torture test fonts are terrifying
000
Scuff3D Rook @scuff3drook.bsky.social · 23/07/2026
GLSL : HLSL :: AT&T assembly : Intel assembly
000
Scuff3D Rook @scuff3drook.bsky.social · 23/07/2026
... partitioning scheme) works well if you end up needing it. As for other differences, are you seeing the differences with the same gamma applied to your exponent? Asking mainly out of curiosity, since this "antialias falloff" is technically a stylistic parameter you can control
100
Scuff3D Rook @scuff3drook.bsky.social · 23/07/2026
Hey glad the experiments with the technique are working out for you! One tip is to clamp very small coverage values to 0. I just saw your other note about performance also -- for fonts like Roboto it shouldn't be a big deal, but some sort of horizontal partitioning scheme (with an optional vertical
300
Scuff3D Rook @scuff3drook.bsky.social · 21/07/2026
Complex log gets you a linearly varying angle. Quaternion log gets you the 3D version. This is why interpolating the log is the constant angular velocity operation (slerp) just as blending the logarithms of complex numbers and exponentiating is a constant angular velocity rotation
000
Scuff3D Rook @scuff3drook.bsky.social · 21/07/2026
bsky.app/profile/scuf... Yea, taking the logarithm is analogous to "linearizing" the quaternion to get the 3d analogue of an angle, just like taking the log of a complex number in the complex plane gets you the angle
100
Scuff3D Rook @scuff3drook.bsky.social · 20/07/2026
More to the point though, even though the unit sphere is 2D in a degrees of freedom sense, it's not as helpful to think of it as such (the embedding is useful) -- it's the same with quaternions is similar IMO (it's more useful to think of them as topological spheres embedded in 4D)
100
Scuff3D Rook @scuff3drook.bsky.social · 20/07/2026
Anyways, the main point of this is that IMO, topology is often best understood by considering the local neighborhood (in terms of metric, local curvature, connectivity, etc.), as opposed to trying to understand things at a global level. That's how it clicks better for me at least!
000
Scuff3D Rook @scuff3drook.bsky.social · 20/07/2026
The fact that the neighborhood of a quaternion is locally linear suggests you can use a logarithms and exponential operators to go from a quaternion to the linear space and back. Blending in the linear space and exponentiating is how you derive slerp.
100
Scuff3D Rook @scuff3drook.bsky.social · 20/07/2026
..in the plane perpendicular to the axis. Every quaternion has this connection to other "nearby" quaternions on the manifold. Since normalizing a quaternion gets you back on the manifold and the manifold has constant curvature you can blend quats as though they were points on the sphere
100
Scuff3D Rook @scuff3drook.bsky.social · 20/07/2026
bsky.app/profile/scuf... The way I think about it is in terms of the space local to a quaternion. For every quaternion, there is a local tangent space which is a 3-dimensional tangent plane. Perturbations of the quaternion work geometrically by perturbing the angle itself, or the axis of rotation..
100
Scuff3D Rook @scuff3drook.bsky.social · 20/07/2026
The dimensionality honestly isn't as important a property as the fact that there is an algebraic structure though. So you can take quaternion derivatives, blend/average quaternions, and so on without "leaving the manifold" so to speak.
110
Scuff3D Rook @scuff3drook.bsky.social · 20/07/2026
It's vaild to think of quaternions as a 3-manifold embedded in R4 if you want, just as a sphere is a 2-manifold in R3. Topologically, every quaternion has a locally linear "tangent space" analogous to a Lie algebra, which is why so many operations on quaternions are well-defined
100
Scuff3D Rook @scuff3drook.bsky.social · 20/07/2026
rookandpossum.com/posts/tell-m... Quick post, expanding on last week's post on interview questions. This post expands on a few responses I've given over the years when prompted to talk about a "tricky bug I fixed."
rookandpossum.com
R&P -- Tell me about a bug you fixed...
Continuing with the theme of past interview questions, let's look at some responses to the common "tell me about a bug you fixed" prompt.
000
Scuff3D Rook @scuff3drook.bsky.social · 16/07/2026
All that said though, nothing beats the guesswork out of a hypothesis like a profiler :)
110
Scuff3D Rook @scuff3drook.bsky.social · 16/07/2026
Memory loads can only be hidden insofar as you have waves that are able to be resident. The other thing is to only compare shader execution times with stable shader clocks enabled, since there can be quite a bit of deviation depending on other system activity.
100
Scuff3D Rook @scuff3drook.bsky.social · 16/07/2026
I would use Nvidia Nsight to be sure (it's an amazing tool), but this strikes me as an occupancy problem in one of two ways. Code motion can have a dramatic impact on register allocation, so you may be crossing a register block allocation boundary.
110
Reposted by Scuff3D Rook
ceruleite.bsky.social @ceruleite.bsky.social · 15/07/2026
2026 Advances in Real-Time Rendering in Games course line up is here - check it out! advances.realtimerendering.com
16127
Scuff3D Rook @scuff3drook.bsky.social · 15/07/2026
I've asked AMD dev tech for an Aftermath equivalent over the years... hoping the LLM nonsense dies so we can get back to principled engineering again.
010
Scuff3D Rook @scuff3drook.bsky.social · 15/07/2026
Yea that would be nice for sure, but I'll concede this one since unlike the CPU world where the ISAs for x86/arm are known, gpus still are in a world where ASICs remain unfortunately proprietary for the most part
110
Scuff3D Rook @scuff3drook.bsky.social · 14/07/2026
Debugging TDRs on AMD GPUs is admittedly difficult, but the *reasons* for the difficulty is because you have to somehow manage to repro the TDR on-demand with an attached capture tool, which is quite hard to do in a large-scale project
100
Scuff3D Rook @scuff3drook.bsky.social · 14/07/2026
AMD decides that what graphics programmers were missing from TDR-analysis on AMD GPUs was the ability to use LLMs to analyze crash dumps... I need to LLM bubble to burst already
140
Scuff3D Rook @scuff3drook.bsky.social · 12/07/2026
This first installment has a couple systems interview questions and a couple graphics programming questions. Coming posts will have a similar format (until I move onto the next thing).
020
Scuff3D Rook @scuff3drook.bsky.social · 12/07/2026
In this week's post, I'm kicking off a mini-series to present interview questions I've received in the past, how I responded, and some thoughts on how I would respond today (with over a decade of hindsight and additional experience). rookandpossum.com/posts/interv...
rookandpossum.com
R&P -- Interview Questions Received, Reviewed
Let's look at some interview questions I've seen over the years, how I responded, and how I might respond today.
120
Scuff3D Rook @scuff3drook.bsky.social · 09/07/2026
I'm familiar with this in the context of Lp spaces en.wikipedia.org/wiki/Lp_space, but yes, absolutely relevant for 2D/3D encodings. Intuitively, dividing by the norm always gets you back to the unit circle, and the shape of the unit circle is dictated by the metric.
en.wikipedia.org
Lp space - Wikipedia
010
Scuff3D Rook @scuff3drook.bsky.social · 08/07/2026
Youtube has this "feature" where for every comment posted, they generate a slop response, and they even give you an option to auto-reply to everything with slop. The responses are often aggressively patronizing or just flat out wrong (have seen bad math, bad suggestions, etc.). It sucks 🙄
110
Scuff3D Rook @scuff3drook.bsky.social · 07/07/2026
For simpler fonts though (like Roboto, Geist, etc.), no partitioning is needed, and the shader will run just as quickly in my experience
111
Scuff3D Rook @scuff3drook.bsky.social · 07/07/2026
For performance, what worked best for me was using slightly overlapping horizontal partitions of curves such that each pixel never needs to look up more than one partition at a time. This is "technically" incorrect for some magnification levels, but not actually noticeable
100
Scuff3D Rook @scuff3drook.bsky.social · 07/07/2026
Let me know if you need any assistance! FYI there was a one line shader code bug which was pushed recently in case you're using the code in the paper directly (unfortunate bug crept in during paper code formatting which wasn't caught until today).
110
Scuff3D Rook @scuff3drook.bsky.social · 06/07/2026
Unlike stronger copyleft licenses, MPL 2 doesn't "propagate" to other files in a larger work, so it should still be easier to use in the context of a bigger open source project also, and is compatible with other licenses. See www.mozilla.org/en-US/MPL/2.... Hope this helps!
120
Scuff3D Rook @scuff3drook.bsky.social · 06/07/2026
The license also offers some degree of protection from patent trolls, similar to Apache. Rationale for this license is that I don't want to restrict usage for companies/people trying to ship something to users, but want to avoid the *code* from being redistributed in a less permissive way.
110
Scuff3D Rook @scuff3drook.bsky.social · 06/07/2026
Thanks for asking, this has been on my TODO list for a while so I've taken care of it now. The code in the paper (and on the site generally) is all under MPL 2.0, which allows you to redistribute the code in binary form as you like (e.g. in games), but propagates for source distributions.
120
Scuff3D Rook @scuff3drook.bsky.social · 06/07/2026
I saw a few comments that were curious if I was going to patent anything or publish the paper in an actual journal ("no" and "no" are the answers), so I wanted to also mention what my actual goals/motivations are. With that, I'm onto the next thing!
010
Scuff3D Rook @scuff3drook.bsky.social · 06/07/2026
One of the papers I read last week also had a "nifty math trick" that immediately seemed worth sharing, so I decided to use that as an excuse to embed a mini Desmos tutorial in this post (with a tiny little sprinkling of matrix math).
100