VOGONS


First post, by eddman

User metadata
Rank Oldbie
Rank
Oldbie

I don't know if this thread belongs here or in the video card section. Since it is about voodoo in PCem, I suppose here is fine? Please move if it's not.

Is there a way to disable the dithering (dots) pattern for a voodoo card?

I know about the Screen Filter option, but IINM it's for achieving the "22-bit" output look and unfortunately is also quite demanding.

I'm simply wondering if it's possible to get a simple 16-bit output in games without dithering (similar to the option existing in some PS1 emulators).

Reply 1 of 6, by leileilol

User metadata
Rank l33t++
Rank
l33t++

If it were disabled in the emulation, then the voodoo drivers would not be able to validate the card and function. It'd have to be done at a guest software level.

There's probably a way to force the Direct3D HAL to disable dithering (some games do this and are ugly for it) though... no env vars for the glide side however AFAIK (Glide API only allows dither modes to be explicitly coded)

apsosig.png
long live PCem

Reply 2 of 6, by eddman

User metadata
Rank Oldbie
Rank
Oldbie
leileilol wrote on 2022-02-10, 22:37:

If it were disabled in the emulation, then the voodoo drivers would not be able to validate the card and function.

That makes sense. If it's performed by the chip, then the driver expects it.

So does that mean "Bilinear filtering" and "Dither subtraction" are RAMDAC features, since they can be turned on/off in PCem? Out of curiosity, are there any such voodoo features that are yet to be added?

There is a "Dithering" option for virge cards. Is that something similar to voodoos' screen filter, for resolving the dither pattern?

I found the following at this link: http://mlbpg.narod.ru/read/3dfxsettings.html

"VIDEO_FILTER_DISABLE : Disable 24-16 bit dithering (This attempts to smooth dithering artifacts) (causes complete loss of signal to monitor)"

I don't suppose this is what I'm looking for. Does this control the screen filter? Why does it cause a signal loss though?

Reply 3 of 6, by leileilol

User metadata
Rank l33t++
Rank
l33t++
eddman wrote on 2022-02-11, 12:08:

Out of curiosity, are there any such voodoo features that are yet to be added?

IIRC what's missing is "mipmap dithering", which is just a little 2x2 dither applied to bilinear mipmap selection and doesn't get along with multitexturing. Most games don't care for it, it's usually left as an optional driver tweak.

Dither subtraction's something else. It doesn't remove dither, it just attempts to subtract against it so the dither isn't as obvious on overdrawn blends, and this occurance differs between Voodoo cards, APIs, some games, and drivers (and driver's options). There's currently no implementation of this emulation in the recompiler, so leaving it checked will do nothing if you use that.

eddman wrote on 2022-02-11, 12:08:

There is a "Dithering" option for virge cards. Is that something similar to voodoos' screen filter, for resolving the dither pattern?

Virge doesn't apply a smoothing filter so it would skip the dither process.

eddman wrote on 2022-02-11, 12:08:

Why does it cause a signal loss though?

I'd take old pages trying to explain environment variables with a grain of salt. When 3dfx filtered video, it'd always be at the expense of polygon edges and finer detail and would sometimes resemble signal loss from the process while those purple streaks were the side effect of filtering pixels four times in a row. The actual signal loss was elsewhere.

apsosig.png
long live PCem

Reply 4 of 6, by eddman

User metadata
Rank Oldbie
Rank
Oldbie

I have to mention that I don't know enough about old graphics cards' rendering pipelines, or voodoo cards and their features, variables, etc. I know some basics but not much above that.

leileilol wrote on 2022-02-11, 20:47:

Dither subtraction's something else. It doesn't remove dither, it just attempts to subtract against it so the dither isn't as obvious on overdrawn blends..... There's currently no implementation of this emulation in the recompiler, so leaving it checked will do nothing if you use that.

I knew it's something different but didn't know what exactly. I just looked into it and found out actually you coded that feature; I don't know how I missed this info. Thank you for keeping PCem going. Not enough devs care.

Are there any plans to make it work with the recompiler?

My question was mainly about if those two options are RAMDAC features (post-process, if I'm using the term correctly here), hence the reason they can be toggled from within PCem?

leileilol wrote on 2022-02-11, 20:47:

Virge doesn't apply a smoothing filter so it would skip the dither process.

By skip you mean it won't apply any dot pattern? I'm yet to check virge emulation and am simply going based on the option I saw in PCem's settings.

leileilol wrote on 2022-02-11, 20:47:

I'd take old pages trying to explain environment variables with a grain of salt. When 3dfx filtered video, it'd always be at the expense of polygon edges and finer detail and would sometimes resemble signal loss from the process while those purple streaks were the side effect of filtering pixels four times in a row. The actual signal loss was elsewhere.

You didn't say what this variable does though exactly. Was my guess correct that it controls the filter?

Actually, can ramdac features be controlled through driver/software?

Reply 5 of 6, by eddman

User metadata
Rank Oldbie
Rank
Oldbie

This is interesting. On a voodoo3, in Turok both D3D and glide modes have a dither pattern, but in MDK while glide does have it, D3D does not.

Last edited by eddman on 2022-02-12, 23:10. Edited 2 times in total.

Reply 6 of 6, by leileilol

User metadata
Rank l33t++
Rank
l33t++
eddman wrote on 2022-02-11, 22:01:

My question was mainly about if those two options are RAMDAC features (post-process, if I'm using the term correctly here), hence the reason they can be toggled from within PCem?

The screen filter's a post-process happening before gamma correction/color adjustment. Dither subtraction, from my understanding from reading the data sheet and Glide source code, happens on the texturing units.

apsosig.png
long live PCem