MrAlaux / Nugget-Doom

Nugget Doom is a fork of Woof! with additional features.
GNU General Public License v2.0
60 stars 3 forks source link

Fuzz improvements #67

Closed ceski-1 closed 11 months ago

ceski-1 commented 11 months ago

Here's a draft PR for various fuzz improvements. Test wad: fuzztest.zip

Things to look for:

  1. Fuzz darkness matches vanilla. It was originally too dark due to a typo inherited from upstream.
  2. Fuzz for the player's weapons looks correct in blocky mode. Some lines were stretched vertically. This is due to the way the blocky algorithm is written (upstream issue).
  3. The top fuzz pixel, including the one at the top edge of the screen, is now shown (vanilla issue).
  4. Experiment: Stable fuzz. Linguica's algorithm draws a "stable" top line but is flawed and show visual artifacts (dark streaks). This wasn't used previously for Nugget, so the selective fuzz had a wavy appearance.
  5. Experiment: Fuzz noise. Linguica's algorithm uses uniform fuzz shading. This looks odd against solid color backgrounds. A quick implementation of noise was added for evaluation.
  6. The F1-F4 keys toggle blocky, selective, stable, and noise.
  7. The test wad uses a custom pistol sprite to quickly spot differences.

The changes are immediately apparent when loading the test map for Nugget before and after this PR. When a preferred combination of features is decided upon, I'll clean things up and remove debug code (F1-F4 key changes, etc.).

MrAlaux commented 11 months ago

Again, kudos for providing all this debugging material, that's some damn fine work.

Anyways (a bit of a note-to-self), I'd say that applying the "stable" and "noise" effects makes selective darkening more akin to the vanilla fuzz, in the sense that it distorts the scenery behind the fuzz without distorting the shape of the sprite itself. I'm not entirely sure if that's what id Software intended (again, I'd prefer to have the "canonical" original effect), but having the vanilla fuzz for comparison, I guess that it does come closer.

In short, I'd like to include your experiments.

MrAlaux commented 11 months ago

Unless I missed something, it looks like this PR includes at least two fixes for vanilla fuzz ("correct blocky weapon drawing" and "top fuzz pixel") that aren't in the upstream. Are you planning to make PRs for them there? If not, and Nugget's fuzz ends up different from Woof's, I need to mention it in the documentation.

ceski-1 commented 11 months ago

I don't plan on adding "top fuzz pixel" to Woof unless Fabian wants it. However, I do want the "correct blocky" changes here to be identical to the open PR upstream, so l'll wait for the results of that effort before marking this PR as ready for review.

MrAlaux commented 11 months ago

Thanks!