Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
40oz

what IS the fuzz effect?

Recommended Posts

I don't get it. What exactly is happening? I can probably explain the behavior of water better than whatever the hell the fuzz effect is doing to whatever is behind the fuzzed object?

Share this post


Link to post

The fuzz effect is a distortion performed on the background in place of drawing the pixels in the columns of the sprite involved.

The pixels are mapped to darker shades by use of the colormap, and pseudo-random noise is introduced by using a counter that wraps constantly around a small table which the game uses to grab pixels from other parts of the screen(the values in the table indicate whether to grab something from above or below).

Share this post


Link to post

And for a less techy perspective - what do people think it is supposed to represent? I have always considered that it was meant to be a bit like the invisibility effect used in the predator movies.

Share this post


Link to post
Enjay said:

And for a less techy perspective - what do people think it is supposed to represent? I have always considered that it was meant to be a bit like the invisibility effect used in the predator movies.

Yeah, same. Some sort of chameleon-like mechanism that the Spectres have, which warps light in some way but isn't perfect.

Why can't the shimmer effect be replicated in hardware anyway? A 386 could do it, surely a modern graphics card with a few hundred cores could manage it?

Share this post


Link to post
Quasar said:

by use of the colormap,

Does it use the same colormap as the background? Sounds hacky, but it's likely necessary during invulnerability, which only has one colormap.

Reason for asking: under normal circumstances are their darker shades different colormaps or same colormap with darker versions of the colors?

Share this post


Link to post
Edward850 said:

Its a shame the effect can't be done in Hardware rendering effectively. Its a good effect.

I don't see why a fragment shader could not be used for this.

Share this post


Link to post
printz said:

Does it use the same colormap as the background? Sounds hacky, but it's likely necessary during invulnerability, which only has one colormap.

Yes the COLORMAP lump is merely a set of mapping tables that produce darker colors. There are 32 of them an they get progressively darker, the last one is nearly all black. Lighting in vanilla doom is done purely using these tables, using them darken a drawn wall column or floor span by a certain amount.

I think the spectre effect only looked good at 320x200 resolution, and looks rather poor at higher resolutions (more like a normal alpha blend of a blackened sprite), e.g. in PrBoom. EDGE 1.31 does a fairly good imitation of the effect for an OpenGL port.

Share this post


Link to post
andrewj said:

Yes the COLORMAP lump is merely a set of mapping tables that produce darker colors. There are 32 of them an they get progressively darker, the last one is nearly all black. Lighting in vanilla doom is done purely using these tables, using them darken a drawn wall column or floor span by a certain amount.

Yes, I know what COLORMAP contains. I was asking if the darker shade behind the fuzz effect works by using another colormap, or really the same, but with hardcoded darker colours.

Share this post


Link to post

A similar effect was used in Marathon for teleporation and invincibility, I believe, except it was more colorful. Vastly different games, though.

I always liked the fuzz effect and it's sad that most 3D ports don't try and replicate it.

Share this post


Link to post
andrewj said:

EDGE 1.31 does a fairly good imitation of the effect for an OpenGL port.

Yes, it is a quite good recreation. And it's closer to the look of the effect in vanilla Doom than the same effect in high res.

Share this post


Link to post
andrewj said:

Like Quasar said, it uses "the" colormap.

By colormap I meant one of the 32 tables, not a whole lump.

EDIT: omg, is the light-fading table actually cascaded over the invulnerability one when the powerup is on?

Share this post


Link to post

printz, the colormap is always around in memory, and beside the 32 light levels, also contain the invulnerability map. By calculating a pointer, you can at any time access any of the individual maps. What the fuzz effect does is access one of the light ramping maps, all the time (I am sorry that I cannot tell you which immediately; I will look it up later).

So yes, even when invulnerability is active, the spectre fuzz is mapped using the normal colormap data. But since everything else on the screen is being remapped through the invulnerability map, the colors it picks up behind it are shades of gray, not colors from the usually-drawn graphics. Be sure not to confuse the concept of a colormap with that of a palette. Palettes are stored in PLAYPAL and they are that of which DOOM can have only one active at any given time.

The fact that sky isn't remapped by invulnerability is a hint of the difference. If it were a palette-like effect, everything would change - even your status bar, HUD text, and menu graphics :)

Share this post


Link to post
Quasar said:

But since everything else on the screen is being remapped through the invulnerability map, the colors it picks up behind it are shades of gray, not colors from the usually-drawn graphics.

It looks like it maps the colours, but after they were mapped by something else. Seems that colormap entries can be used in combination. If true, then Doom could have been built with only one light-fading colormap entry, combined with itself until the area became all black.

More relevantly, Boom could have used custom colormaps containing only one entry (that maps all colours to their equivalent green entries, for example), not a wholesome 33, then apply all the regular (from COLORMAP) mappings over the customly-tailored entry.

Share this post


Link to post

You could technically just provide a fullbright color translation table and then achieve distance fading and light levels by using the normal colormap, that is true. However, this is slower because it would require an additional reindexing operation in the column drawer:

*dest = colormap[rngtable[source[frac>>FRACBITS]]];
Also, this precludes any special effects that are possible via the use of full colormap resources. So in the end, it's not a good idea.

In the spectre effect, this isn't what is happening. It just darkens whatever is behind it, already drawn to the framebuffer by an earlier column drawing operation (sprites and 2S line fragments are drawn last, and are drawn in a z-sorted order from back to front - this enables translucency effects, of which the spectre fuzz is a peculiar breed, to work properly).

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×