Koko Ricky Posted April 29, 2019 Over the years, I've read complaints about the arrangement of Doom's palette; mostly, that there are probably too many browns, greys and flesh tones, almost no magenta, purple or lavender, and a tendency to eschew very dark values for most hues, particularly reds and blues. Might have this been mitigated with dithering? If fewer colors were deemed necessary to achieve satisfactory blending, then the palette could potentially be reorganized to encompass a greater, richer range. In this simple example I cooked up, the sprite on the left is unaltered, and contains 77 colors (minus transparency). On the right is a dithered version of the same sprite, but reduced to 32 colors, less than half of the original. It looks a bit grimy, but retains a surprising amount of detail. I think that if id had gone with this method, the palette could have been more robust. 12 Share this post Link to post
SirJuicyLemon Posted April 29, 2019 Whoah! Even though the details are in a lower quality, it still looks badass! But then again I wouldn't feel like if a "richer" palette would be needed. Maybe Doom was adjusted to their limits capacities and the developpers couldn't implement too much apart from what they did (just proposing a hypothetical situation, not sure if it's the truth), but that was just fine, if not perfect for the very same purpose of the game. I have the feeling that they didn't limited their imagination to a palette. They maybe made some adjustments to a sprite here and another there... but that's just natural and probably unavoidable, both in their creativity and the (supposed, if there were) limits. As the atmosphere of the game is a dark/horror/suspense scenario, I'm not sure if they even cared for brighter values for the palette. The most magenta/lavender/purple thing I can think of are Cacodemon's projectile's outline (apart from that, the pink in Demon's (Pinky), Baron's and Cacodemon's skin, but that's just softer;and they look kind of brown in the dark). And probably they priorized the palette colors that were the fittest to be reused to make more sprites (they even reused sprites to make new projectiles and monsters). Still, I think it would be interesting to know what could have been Doom with those palette changes. Who knows? 1 Share this post Link to post
GuyMcBrofist Posted April 29, 2019 I have a geeky appreciation for dithering and would love to see what this would have looked like. 0 Share this post Link to post
komojo Posted April 29, 2019 The problem with this method is that it doesn't really work for sprite scaling. The Doom engine uses nearest-neighbor scaling with no mip-mapping, which means it's always skipping over rows of pixels. Your image looks like it has an ordered dithering pattern, which means you'd see a bunch of moiré patterns (look at the brick walls on MAP12 in vanilla Doom if you want to see what I'm talking about.) It might look better with a non-repeating dither function such as Floyd-Steinberg, but it still wouldn't look perfect. Theoretically you could render a high-color image and then apply ordered dithering to the whole screen, but in that case you probably wouldn't need to dither the image in the first place. It's interesting to think what they could've done with a more expansive palette, but in that case they probably would've used flat shading instead. 5 Share this post Link to post
elend Posted April 29, 2019 (edited) I love dithering, but while it always looks perfect in a 2D game, where the distance of the sprite is usually the same, in a "3D"-game like Doom the dithering will look ugly, as soon as something is a certain distance away. Granted, with today's resolutions that would be less of a problem, but still, while I love to dither here and there, I think a heavy approach like your Doomguy would look a bit funny ingame. Then you have the whole "realism" vs. "pixelart" debate, where for some people the textures and such just look more "realistic" with a not-ordered approach to dithering. 2 Share this post Link to post
Dark Pulse Posted April 29, 2019 While the palette could definitely have been done better (plenty of folks have tried that), 256 colors was your state of the art no matter what back then (unless you had weirdo cards), and it was just a few years too shy of 16-bit color (which even then is still only 65k colors). That said, many of the problems with the palette is that the designers decided on a palette more optimized for their world, and less for representing every possible color. That means more browns and reds, some greens, and relatively little stuff like yellows, purples, blues, etc. In short, the palette they made, while perhaps not optimal, wasn't chosen totally at random either - it was a conscious decision. 0 Share this post Link to post
Linguica Posted April 29, 2019 Doom doesn't use any dithering at all so I don't even know how to consider a world in which it used dithering. It would be... different? I guess? 2 Share this post Link to post
Dark Pulse Posted April 30, 2019 20 minutes ago, Linguica said: Doom doesn't use any dithering at all so I don't even know how to consider a world in which it used dithering. It would be... different? I guess? 32X Doom might be the closest analog, and even there I'm not sure if dithering was used. 0 Share this post Link to post
Koko Ricky Posted April 30, 2019 (edited) 1 hour ago, Linguica said: Doom doesn't use any dithering at all so I don't even know how to consider a world in which it used dithering. It would be... different? I guess? Seems like id lost interest in dithering as a technique after Wolfenstein. As @komojo mentioned, scaling would make it look weird. You can see how unpleasant it looks in Wolfenstein, particularly with the doors. So this would probably only look good at higher resolutions. I want to say that the PSX versions used something...not dithering, but some kind of weird grainy filter. 2 Share this post Link to post
Koko Ricky Posted April 30, 2019 (edited) 1 hour ago, Dark Pulse said: In short, the palette they made, while perhaps not optimal, wasn't chosen totally at random either - it was a conscious decision. I don't think anyone is arguing that it was random. What I'm saying is that there's just way too many shades of a few of the hues, and likely this had to do with making those colors band well, since they were used so much. You end up sacrificing other hues as a result, or flat out ignoring certain parts of the spectrum due to a lack of room. I think id did a decent job, as the vanilla game looks fine, even in dark areas. But a dithered approach might have encouraged a palette with more overall range, but then that would have required id to be prescient enough to anticipate a longstanding modding community. 1 Share this post Link to post
Dark Pulse Posted April 30, 2019 (edited) 4 minutes ago, GoatLord said: I don't think anyone is arguing that it was random. What I'm saying is that there's just way too many shades of a few of the hues, and likely this had to do with making those colors band well, since they were used so much. You end up sacrificing other hues as a result, or flat out ignoring certain parts of the spectrum due to a lack of room. I think id did a decent job, as the vanilla game looks fine, even in dark areas. But a dithered approach might have encouraged a palette with more overall range, but then that would have required id to be prescient enough to anticipate a longstanding modding community. Basically. And in reality, this is only a limitation if we choose to make it one. I mean, we've got hardware-accelerated renderers and can easily do true-color graphics in lots of engines - but it requires us to leave vanilla compatibility behind as a (mostly) necessary consequence. We can't have being perfectly compatible along with lots of flexibility. Too many eggs get broken in the process. 0 Share this post Link to post
kb1 Posted April 30, 2019 When done properly, dithering can look fantastic, but it's also easy to screw it up. KBDoom has an option that renders translucent explosions with a form of dithering, providing a very fast form of software translucency. It switches to dithered mode when the distance to the player becomes very small. Dithering in screen space (at high resolutions) can produce some very nice results. But it can also be expensive, performance-wise if not done very carefully. But dithering in texture space will make textures even more chunky. 1 Share this post Link to post
Doctor_Spengler Posted April 30, 2019 I have no idea what any of this means but I like what I am seeing 0 Share this post Link to post
Koko Ricky Posted April 30, 2019 (edited) 29 minutes ago, DoctorFrickinRetro said: I have no idea what any of this means but I like what I am seeing To put it in layman terms, dithering is a process that was popular in the days before large scale palettes (that is, palettes with millions or billions of colors) were a thing. Up until the mid 90s, most games had to be very conservative about color usage, with 16-, 64-, and 256-color palettes being particularly popular. If you look at the dithered version of the OP image, you can see that some of the colors are expressed as a checkerboard pattern of a lighter and darker color. At a distance, this creates the illusion of greater color depth. The Wikipedia entry for pixel art, pictured below, is a better example of how this checkerboard pattern can be used effectively. 4 Share this post Link to post
TwinBeast Posted April 30, 2019 I tried some post process dithering in my 16 color game. When I finally got it working about right, it was kind ok, but was irritating when moving around. More irritating if using the 320 resolution. 1 Share this post Link to post
Doctor_Spengler Posted April 30, 2019 Oh I see now! That is very interesting! 0 Share this post Link to post
GuyMcBrofist Posted April 30, 2019 (edited) Maybe dithering could be used on the diminished lighting to good effect. I don't know how expensive dithering in real time is or how you would work it into the software renderer but I assume it wouldn't have worked out on the 486. Edited April 30, 2019 by GuyMcBrofist 0 Share this post Link to post
kb1 Posted April 30, 2019 (edited) 3 hours ago, GoatLord said: To put it in layman terms, dithering is a process that was popular in the days before large scale palettes (that is, palettes with millions or billions of colors) were a thing. Up until the mid 90s, most games had to be very conservative about color usage, with 16-, 64-, and 256-color palettes being particularly popular. If you look at the dithered version of the OP image, you can see that some of the colors are expressed as a checkerboard pattern of a lighter and darker color. At a distance, this creates the illusion of greater color depth. The Wikipedia entry for pixel art, pictured below, is a better example of how this checkerboard pattern can be used effectively. Nice explanation. Also, I like that sprite - with some scarier teeth, and some rotations, that'd make a cool Doom monster :) 2 hours ago, TwinBeast said: I tried some post process dithering in my 16 color game. When I finally got it working about right, it was kind ok, but was irritating when moving around. More irritating if using the 320 resolution. Oh, wow, yeah at 320x200, I guess your eyes focus on the checkerboard, and see that pattern predominately, huh? Does your game let the player set the video resolution? If you can get really small pixels onscreen, dithering kinda disappears, and your eyes simply perceive more colors. With Goatlord's image, the checkerboard pattern is pretty noticeable, but in the quoted image above, it just looks hi-color. What kind of game did you make? 8 minutes ago, GuyMcBrofist said: Maybe dithering could be used on the diminished lighting to good effect. I don't know how expensive dithering in real time is but I assume it wouldn't have worked out on the 486. It really depends on the implementation. You *could* dither the textures. You could expand each texture, say, 4x normal size, and instead of using 256 colors, you use less, and interleave them. And, you'd have to scale them down when rendering. What's cool about that is that you retain the pixelated look, and even have a higher-res effect on the textures in close-ups! One issue with this technique is the aliasing that happens when you're further away from the textures. But, other than the memory requirements, this technique should run at about normal speed. Screen space dithering can look better, but that's where you might run into performance problems, unless you've very clever. You don't have to use a checkerboard pattern either - there's some more advanced dithering techniques that use non-checkerboard patterns, but they require knowledge of adjacent pixels, which can be very slow. It's definitely worth investigating. Imagine requiring only, say, 64 colors - you'd have 192 colors free to add rich blues and greens, purples, cyan, different yellows, etc. But, personally, I don't think I'd be satisfied with any dithering output less than 1920x1080 - I'm too spoiled with crisp, solid-colored pixels! Here's an example of "fake" 50% translucency that uses a technique very similar to checkerboard dithering at 1920x1080. To see the effect proper, you must download the image and view it unscaled, otherwise the effect fails spectacularly! I think it's quite decent at this resolution, as you can hardly see the checkerboard at such a high resolution, and it really speeds up software translucency. Honest opinion: How does it look? Edited April 30, 2019 by kb1 2 Share this post Link to post
incel Posted April 30, 2019 3 hours ago, kb1 said: Honest opinion: How does it look? it looks interesting, similiar to the film-grain effect. I doubt that you can spot checkers in the action, if not told beforehand. 0 Share this post Link to post
ketmar Posted April 30, 2019 oh, the good old trick of simulating translucency with omited pixels. Q2 used that to simulate water translucency in software mode, afair. 0 Share this post Link to post
incel Posted April 30, 2019 Glass in Virtua Cop also. t gives it comicbooky look. But I remember the closeup of some protective goggles looking terrible. 0 Share this post Link to post
TwinBeast Posted April 30, 2019 4 hours ago, kb1 said: Oh, wow, yeah at 320x200, I guess your eyes focus on the checkerboard, and see that pattern predominately, huh? Does your game let the player set the video resolution? If you can get really small pixels onscreen, dithering kinda disappears, and your eyes simply perceive more colors. With Goatlord's image, the checkerboard pattern is pretty noticeable, but in the quoted image above, it just looks hi-color. What kind of game did you make? Honest opinion: How does it look? It looked a bit better in 640 res, but still a too disturbing. I think dithering works better for 2D games or isometric games, or with very high res, but then might just as well use more colors. It's CyberShade, but it's on hold until I figure out more time for game development. Also tried that stipple alpha, blending more light levels and colors. Also tried if the dithering was just like alternating lines, but that was also a little weird. 0 Share this post Link to post
Urthar Posted April 30, 2019 (edited) 23 minutes ago, ketmar said: oh, the good old trick of simulating translucency with omited pixels. Q2 used that to simulate water translucency in software mode, afair. No, Q2 used a transparency look up table in software: Fabien Sanglard 0 Share this post Link to post
ketmar Posted April 30, 2019 i think that there was a renderer that did "pixel-punching" too. or a setting. i certainly remember this effect on Q2 water. it may be some custom rendering dll, though. or my memory is playing tricks on me. ;-) 0 Share this post Link to post
Cruduxy Pegg Posted April 30, 2019 (edited) I think scanlines might've been better than dithering. It looks really weird to have dithered sprites while the textures are all clean. Although I don't think either are needed in the software renderer. It already uses tricks nonstop and those look good (aside from pink color getting shafted). 0 Share this post Link to post
Koko Ricky Posted April 30, 2019 Yeah, I don't necessarily think dithering would have been better so much as just different. I myself love the technique and use it in most all of my pixel art, although I use a scan line effect as well, usually for skies. On a related note, the Virtua Cop image is interesting because that form of dithering was not used because of palette limitations, but because transparency was difficult to pull off until the latter half of the 90s. 0 Share this post Link to post
fraggle Posted April 30, 2019 If dithering is to be used then it's best at the renderer level, not the sprite level. By the way, there is one port of Doom that uses dithering: 2 Share this post Link to post
esselfortium Posted April 30, 2019 The reasons why this wouldn't work well have already been discussed, so I'll just say this: Doom's palette can be vastly improved and optimized without doing anything nearly this destructive to the graphics. I've done some experiments in the past to see how much can be squeezed out of the palette without causing noticeable problems that offset the gains, and it's a lot more than you'd expect. No one needs a bunch of nearly-indistinguishable shades between white and bright yellow, for instance. You can definitely add the additional color ranges you're talking about. 3 Share this post Link to post
SaladBadger Posted April 30, 2019 4 hours ago, ketmar said: i think that there was a renderer that did "pixel-punching" too. or a setting. i certainly remember this effect on Q2 water. it may be some custom rendering dll, though. or my memory is playing tricks on me. ;-) you aren't entirely confused here, the software renderer had a "stipple alpha" option which removed the table lookup transparency and used a pattern of clear pixels to fake it. this thread makes me wonder a little though how the unreal dithering algorithm would look in software doom... heh. 0 Share this post Link to post
Linguica Posted April 30, 2019 If you want to try dithering in software Doom, use PrBoom in 8 bit mode and set filtering to "linear". 5 Share this post Link to post