delta_p_delta_x
3 hours ago
This isn't software rendering, it's called turning off spatial anti-aliasing. You can still do that in the modernest of modern games. Software rendering went out of the window because the CPU tends to have other things to do whilst playing the game besides only multiplying 4x4 matrices, which was shifted to the shader cores of GPUs. The look-and-feel that the author is discussing including shadow and texture LUTs can also be done on GPUs by passing the tables in to shaders as constant read-only storage buffers; that is not specific to software rendering. It bears mentioning that many modern software renderers (LLVMpipe/Lavapipe, OpenSWR, WARP) are basically full D3D/OpenGL/Vulkan devices in their own right, including shader compilers.
Also, modern spatial anti-aliasing works by multisampling within a pixel (or even neighbouring pixels) and taking the average, rather than filtering across singly-sampled pixels, which massively reduces the quality. Not to mention temporal and machine learning AA techniques including DLSS, XeSS, FSR, and all the TAA implementations in many games.
seritools
2 hours ago
yup, it should be renamed to "I Love GL_NEAREST_MIPMAP_NEAREST"
Gravityloss
an hour ago
Real players know you us the coarsest mipmap level the whole time, so every texture is something like 4 pixels. And 320x200 and directmouse. It's the smooth movement, high fps and direct control that provides the sense of "being there". Not the graphical fidelity.
sm-silversight
an hour ago
Is there a video somewhere (or easy download/install on linux) so I can see/play what this looks like
airesQ
12 minutes ago
Shameless plug for my own project, Quake-SRP (the Slop Rust Port).
Video: https://www.youtube.com/watch?v=8TvVMzyxACc
Browser(shareware): https://quake-srp.pages.dev/
hollowonepl
an hour ago
Of course you can but I think author’s point is to actually test/evaluate maximum performance of true software rendering on modern machines, and this is fine and refreshing exercise, even with filtering.
This actually what I have also returned to in my latest demoscene demo: https://www.pouet.net/prod.php?which=106969
It’s 100% software rendering on CPU just multithreaded. But no metal/direct3d just framebuffer and rest is yours routines… and I actually added bilinear filtering…
Still fun project to do and remind yourself about fundamental algorithms behind elementary 3D graphics
Y444
2 hours ago
T-shirt worthy
maeln
2 hours ago
You have to admit, it makes for a less catchy title
eska
2 hours ago
His definition of software rendering is
In a software-rendered game, the CPU draws every pixel. There’s no 3D card involved: the game works out each frame in its own code and writes it straight to video memory
I think that’s the standard definition. If you mean that this style can be achieved with graphics hardware then that’s a different argument and why your first sentence is deemed contentiousdelta_p_delta_x
2 hours ago
> If you mean that this style can be achieved with graphics hardware
I really ought to have been more specific with my first sentence to ward off any hair-splitting.
The author claimed to love software rendering, but the examples given to highlight the supposed positives of software rendering can all be achieved on GPUs. If the author had instead highlighted the ability to easily debug and inspect the inner workings of the rasterisation pipeline with a software renderer, that might have been a much more relevant argument.
madmoose
2 hours ago
> the examples given to highlight the supposed positives of software rendering can all be achieved on GPUs.
Any look in older games, 2d or 3d, can be achieved on modern GPUs, so that seems like a vacuous thing to state.
eapressoandcats
an hour ago
Not necessarily. Someone unfamiliar with graphics might believe that there’s something about a CPU that a graphics card doesn’t have such that the look can’t be achieved. Certainly the author of this piece seems to believe that.
the_af
an hour ago
> Certainly the author of this piece seems to believe that.
That's unfair, especially if you read his other articles.
> Someone unfamiliar with graphics
... is probably not the intended audience of a hobbyist, specialized blog such as the one we're discussing.
swinglock
2 hours ago
He says he likes the look, that's subjective and doesn't need arguments. You wanted to read another, technical article.
ryandrake
2 hours ago
He likes the look of nearest neighbor texture sampling, not software rendering.
You can do nearest neighbor in hardware rendering and you can do bilinear in software rendering. Rendering mode and texture sampling are two totally different things.
fmbb
17 minutes ago
The author likes the look of the tradeoff made due to the limitations CPU power imposed on the rendering model for real time 3D games 30 years ago.
Yeah you can hack configurations or create your own game to mimic this look.
If you read the post you will see it’s not only about the texture sampling, but also the color depth.
OP picked a good headline. You are fighting for semantics nobody cares about, and picking a more complicated synecdoche.
adastra22
2 hours ago
But if you want to experience GLQuake that looks like software-rendered Quake, that's a simple settings change in your GPU driver, overriding the texture sampling mode. That's literally the only difference. I'm not sure the author is aware that it is a viable option to tweak the hardware rendering this way.
onli
2 hours ago
Are you sure? I haven't played enough Quake to know either way, but I did play Deus Ex in software mode (unreal engine), and that had a lot of differences to the other renderers. I very much doubt texture sampling mode alone would reach a similar result.
(It even had graphic errors, green textures in the faces etc giving everything a very alien look. But that's not what I mean).
paulryanrogers
an hour ago
May be a couple settings. IIRC full bright textures didn't translate well in early GPU renderers. Often they'd appear shaded as if they weren't light sources at all.
mort96
an hour ago
What they meant was: "This aesthetic isn't exclusive to software rendering". I thought the rest of their comment made that pretty clear once you got past the first sentence.
the__alchemist
an hour ago
Yes - but most of the rest of the article describes something different! (Which is what the post you're replying to explains)
squidmaster
3 hours ago
How is it not software rendering? These games shipped without hardware renderers. Yes, they also don't have AA, but how does that make it not software rendering?
articulatepang
an hour ago
Here’s an analogy. Suppose someone said, “I love manual transmission cars” and then described in detail the physical knobs and dials that all the cars from the 1950s had.
It turns out what they like is physical knobs and dials. You can have those in automatic transmission cars. It so happens that most modern automatics also have shitty touchscreens.
(I know this analogy isn’t precise because there was a long period of automatics with physical controls, but bear with me.)
The point is that there’s nothing _inherent_ to software rendering that’s responsible for the thing he likes. The distinction is useful because, for example, he could go seek out modern games with the look he likes. Or make games. And if he thought the thing he likes comes from having a software renderer, he’d leave a lot of performance and power efficiency on the table for no good reason. He likes a certain rendering style that’s equally achievable with both GPU and CPU rendering. The choice of hardware should probably be driven by considerations like performance, debuggability, platform support, availability of libraries, etc.
BugsJustFindMe
3 hours ago
The point is that the thing that OP likes has nothing to do with whether something is rendered in software or hardware.
the_af
2 hours ago
"Nothing to do" is a bit strong. It has something to do, and the explanation is in the history of how these games worked.
Can it be simulated on GPUs? Sure. But it was typical of software renderers of that era, and NOT typical of GPUs, and it has to do with how they were used.
adastra22
2 hours ago
This is incorrect. It is exactly the same algorithm as circuits in the GPU or as instructions on the CPU. No difference, except one: the way data is pipelined on the GPU makes texture blending free, or nearly so. So to show off, every 3D game back then turned it on (an OpenGL/Glide/D3D configuration option) and everything got smoothed out, often with no option to turn it off. That's why it ends up looking different: because the game itself selected different interpolation in accelerated vs software rendered. It was a game choice.
These days you can use different presets to override those choices, and have your 8K, 240Hz Quake look software rasterized, if you want.
the_af
an hour ago
> This is incorrect
Incorrect how? It's correct in that software renderers of the time TFA describes mostly looked like this, and GPU renderers didn't (of course, they weren't called GPUs back then), and there's a reason for this. Even you admit it later in your comment.
So saying "it has nothing to do" with software renderers (of the time) is wrong. It has something to do with how software renderers vs GPUs were used during that era in practice. It's also true you can simulate one with the other, but that doesn't make it incorrect or unrelated.
> So to show off, every 3D game back then turned it on (an OpenGL/Glide/D3D configuration option) and everything got smoothed out, often with no option to turn it off. That's why it ends up looking different
So it had something to do after all! So TFA has a point. He means software renderers in the sense you're describing here, and it's clear from the text. He's not implying you cannot use a GPU to achieve the same result.
inexcf
16 minutes ago
This is ridiculous. He explained it perfectly and he was right stating that it has "nothing to do with software rendering". The fact that people specifically chose to do it differently on hardware makes nothing about what the article mentions specific to software rendering. Otherwise if you do the smoothing on the CPU you have to call it a hardware renderer now to be consistent.
the_af
6 minutes ago
It's not ridiculous. It's also perfectly clear from TFA, one has to go out of their way to misinterpret this.
E.g.
> Software renderers generally sample textures pixel by pixel, so every texel stays a crisp square. Early 3D cards smoothed textures with bilinear filtering, which looked impressive in 1997 but turns everything soft and blurry to my eye now.
The author is a hobbyist discussing things in context. Early 3D cards, bilinear filtering as done in '97, etc. You cannot take random words and criticize the article. Nitpicking is pointless.
GuB-42
16 minutes ago
I isn't "simulated" by GPUs, it is a rendering mode that GPUs had since before they were called GPUs.
The reason software rendering look different from 3D accelerated games (incl. 3Dfx) is nearest neighbor filtering and low resolution, which were necessary to keep a reasonable framerate. At the time, it was considered ugly, so if your hardware supported bilinear filtering for free, it was turned on, but it didn't have to.
In the time of fixed pipelines (3Dfx to GeForce 3), you couldn't do arbitrary operations on pixels, so some effects, like the kind that are common in the demoscene were software only. So games that used these effects, like Comanche voxels can indeed be thought as representative of software rendering, and they can, of course, be simulated on modern GPUs as everything that was done on software before can.
But the article uses Quake as an example. I may be wrong, but I don't think it does anything that can't be done by a fixed pipeline GPU. In fact, even keeping the same style (nearest neighbor filtering + low resolution), hardware rendering will probably look better because the GPU does proper perspective correction on every pixel. The tricks used by the Quake engine are awesome, but they don't beat raw power.
chpatrick
2 hours ago
"Software" isn't the point. You can do the exact same math on CPU or GPU. OpenGL supports nearest neighbor texture filtering on whatever hardware you run it on since 1992, one year before Doom even came out.
the_af
an hour ago
But in practice, this didn't happen, which is what TFA seems to be all about. So it's not incorrect to talk about software renderers (of the time) vs hardware accelerated graphics (of the time) and how they were used in practice (at the time). It's just cumbersome to write "at the time", and it's understood from context; at least I did. It also helps to look at the rest of the blog's articles and what the blog is about...
spider-mario
3 hours ago
They mean that what the OP prefers about it is not the fact that it’s done in software. “This” is “the thing the OP seems to prefer”.
hnuser123456
2 hours ago
TAA has a pretty bad reputation among many gamers for being too blurry. TSR (temporal super resolution) is a newer implementation that's overall sharper, better at eliminating "jaggies", and performant, without visible ghosting or artifacting.
delta_p_delta_x
2 hours ago
Indeed. Personally I am quite old-school, I like MSAA (despite the performance hit) and subpixel morphological AA (SMAA, used to great effect in Crysis). DLSS is interesting but I cannot unsee the artifacts.
avereveard
2 hours ago
TAA introduce aliasing on fast moving element which is far more annoying than blurring
techpression
2 hours ago
TAA is a nightmare, and Unreal Engine depends way too much on it. TSR also suffer from ghosting and artifacts unfortunately. But I have come to the realisation that gaming will be about massive compromises for the next decade.
Elzair
2 hours ago
Software rendering went out of style because z-buffer based rasterization is embarrassingly parallel and benefits from a hardware implementation.
cubefox
an hour ago
His point is more about the texture filtering than about anti aliasing. Software rendered games never supported texture filtering (although they could have, at a significant cost), they always used simple nearest neighbor scaling. Of course you can turn filtering off on a GPU too, but hardly any game ever did that.
a3w
an hour ago
spatial anti-aliasing
aka (just) anti-aliasing, we are talking original quake 1 era, after all.
llm_nerd
3 hours ago
"Software rendering went out of the window because the CPU tends to have other things to do besides just multiply 4x4 matrices, which was shifted to the shader cores of GPUs."
Hardware rendering took over because generating a 3D scene is embarrassingly parallel, and the industry quickly learned that you can have thousands of reasonably simple "cores" that can divide and conquer a scene in parallel. There was a no way a general purpose CPU could keep up.
pandaman
2 hours ago
Not so quickly. The shader cores were a breakthrough from early 2000s. First consumer GPUs were built as same as the 1980s GPUs but everything had been integrated in a single chip.
It is the sheer amount of compute and memory bandwidth that mogs a CPU but the parallel processing doesn't help much, at least in realistic 3D: an 8 core AVX-512 march CPU has an order of magnitude more SIMD lanes than something like RSX in PS3 yet it still wouldn't be able to match its performance in rendering textured z-buffered triangles. 3D graphics can really go wide only on wireframe/points, z-buffer forces sequencing between polys so the parallelism there is very limited.
llm_nerd
2 hours ago
Parallel processing was fully in force in the very first GPUs, like the Voodoo. Not like a modern GPU with thousands of more flexible shader cores, but the first iteration had a pipeline architecture that saw multiple blocks operating on rendering separate parts of the pipeline in parallel. This was revolutionary. Especially given that CPUs at the time had a single core.
I'm not sure what the PS3 comparison is for, or why we're comparing a 2026 AVX-512 CPU with a 2006 gaming console. Okay? A modern GPU can obliterate any CPU in SIMD, presuming you conform with the types it wants. Add that it's weird to bring up as AVX and other SIMD techniques are basically the same sort of architecture, parallelizing a problem.
> 3D graphics can really go wide only on wireframe/points, z-buffer forces sequencing between polys so the parallelism there is very limited.
Rendering a 3D is scene is the very definition of embarrassingly parallel. While optimizers can cull the scene, you know that the entire depth within the frustum (there are a variety of optimizing techniques to minimize the overdraw, but it's a part of rendering a scene) is "rendered" and in amalgamation the Z-buffer values are compared and discarded, blended, or whatever? It is an extraordinarily parallel operation.
pandaman
an hour ago
> the very first GPUs, like the Voodoo
Voodoo Graphics came out in 1995, we had commercial GPUs since early 1980s. Also it's funny that you believe it was "full force" parallel because specifically Voodoo (SST-1) drew a single pixel per clock (and had no geometry processing) so it was not parallel at all, even inside a poly. This statement shows your level of expertise though.
llm_nerd
35 minutes ago
How bizarrely hostile. So weird.
> Voodoo Graphics came out in 1995, we had commercial GPUs since early 1980s.
I mean, if you think you're going to get me in a gotcha, you should know that the first thing we considered a "GPU" came out three years after the Voodoo. The GeForce 256.
But since we're talking about gaming, the first real 3D accelerator in that market was the 3dfx Voodoo, and it revolutionized gaming because even though we had graphics cards, their abilities were laughably limited (blitting was a big feature).
> so it was not parallel at all
You, uh, really should look this up. Are you consulting an LLM or something, because it's like someone who has no idea what they're talking about just randomly saying stuff. PS3! AVX-512!
"drew a single pixel" is a funny comment that kind of gives away the game. Do you have any idea what is involved in drawing "a single pixel"? This is rhetorical, because you seem to have no idea at all.
I'm just going to ignore you, but Christ you know you don't have to double down on this stuff.