💾 Archived View for avfig.com › gemlog › on-computer-graphics.gmi captured on 2023-01-29 at 02:46:35. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2022-01-08)
-=-=-=-=-=-=-
By Jeremiah Stoddard on 2022-01-03
Computer graphics has long been an interest of mine, but I never got any real experience beyond plotting pixels, originally by writing values to the VGA card (A0000h and the following addresses) in DOS, or the relevant memory addresses on other systems like the Apple IIe. I wrote routines to plot points, draw lines and circles, and even draw menus and buttons for simple graphical interfaces. I also wrote some routines to load and save simple image formats, but mostly just used libraries (the Allegro game library was fantastic back in the mid-90s with DJGPP) at that point. I was fascinated by Wolfenstein and Doom, and later Quake and Duke Nukem 3D, but despite my interest in doing so, I never got around to doing anything 3D or even fake-3D like Doom.
I finally decided to get started a few weeks ago, but I figured I would learn some principles before learning an API like OpenGL or Vulkan. Moreover, since I'm not programming professionally anymore, I figure I can be stubborn and do things my way; in particular, I can code everything in Common Lisp, a language that I took an interest in toward the end of my programming career, although I have yet to become competent in it. So, I started out by following the free online book "Raytracing in One Weekend," but writing out the examples in stilted Common Lisp. Amazingly, the code worked, even if it was (and is) unbearably slow.
Now I'm in a bit of a pickle. I had a lot of fun following instructions and building the simple ray tracer, and I would love to continue working on it and learning more about ray tracing. There are two more books in the series that begins with "Ray Tracing in One Weekend," after all. On the other hand, I'm somewhat eager to jump in and work with OpenGL or Vulkan and perhaps work on building a game engine or something on top of one of those APIs. As eager as I am to do so, everyone and his grandmother seems to be building a game engine, so part of me is inclined to continue on the ray tracing journey, or at least do something different with a graphics API.
In the end, it probably doesn't matter. There's a >0 chance that my next project will end up being a 2D tile-based RPG anyway. I mean, as cool as modern games like Breath of the Wild and Dragon Quest XI are, I still really like those tile-based RPGs. Shoot, maybe I'll just forget about programming and spend the evening playing Nethack. (ASCII characters count as tiles, right?)