wk_end
Joined 13 years ago
Joined 13 years ago
https://www.typescriptlang.org/play/?jsx=4#code/JYWwDg9gTgLg...
I guess the library is slightly nicer, arguably, but I don't think it's worth the external dependency and added complexity.
Raycasting (in gaming, some graphics folks just use it as another term for raytracing) means to fire a ray for each column of the screen, identify where it collides with a wall, and use that to determine what to render for that column - it's basically per-column raytracing.
DOOM's engine instead uses a BSP tree so that, from any position, you can determine which walls are on-screen instantly just by walking the tree - the nearer walls appear earlier in the traversal than farther walls. It's still column-based (it tracks whether each column has been drawn and won't draw further walls behind an already drawn column, and stops drawing once all columns are filled), but there's no rays cast.
What's meant by software rendering is really software rasterization - the process of taking the triangles, textures, etc. of the scene and turning those into the pixels that eventually make their way to the screen. You can still do that in software on the CPU today without touching the GPU, even the integrated one. At that point you hand it off to the hardware to make its way to the screen, sure, but it's only an implementation detail that makes that different from handing 0xA0000000 over to the VGA card. The interesting part of the process, and the results, are functionally the same.
Is that the case?
https://fabiensanglard.net/3dfx_sst1/ has a side-by-side screenshot comparison of the two, and software Quake's colours and lighting look way more rich and vibrant; it's not just smoother textures. It's possible that GLQuake/one of the many source ports since has improved on this though.
Of course I know this is a particular quality of GLQuake and not an actual limitation of hardware rendering. And I agree with in general with the contention that this article is talking about a particular art style associated with mid 90s software rasterizers rather than about "software rendering" itself.