Reply 860 of 3949, by Dege
wrote:wrote:Extreme G-2's UI issues are not because of bilinear blt stretch btw: Xtreme G-2 Fixed Graphics Using Latest dgVooDoo Also it dis […]
Extreme G-2's UI issues are not because of bilinear blt stretch btw:
Xtreme G-2 Fixed Graphics Using Latest dgVooDoo
Also it displays correctly in DXGL (has other issues) and WineD3D, but not natively.That dgVoodoo2 video, funny. At the time this was really the only thing I saw that would get the game to run on his machine, crazy to see the vid linked here to show the GUI error.
I must emphasize that it's not an error. It's a colorkeying issue (but I'd rather say 'method').
There is no expectation about how it should look. At least, not according to the DX specs. DX specs only states that colorkeying comparison must take place before the texel->color lookup (so it's not 3Dfx-like, for example, for 8 bit paletted textures you use indexkey instead of colokey).
So, everything is fine until no bilinear (or trilinear) filtering is applied during texture sampling.
But what to do if texturing samples into a 2x2 texel block where there are colokeyed texels? It's up to the GPU, there is no DX guide at all for this.
- nVidia (and dgVoodoo) discard a sampled pixel if AT LEAST ONE of its 2x2 neighbours has colorkey color to ensure that no interpolation is done into colorkeyed pixels.
- Traditional(?) method discards a pixel only if ALL of its 2x2 neighbours are colorkeyed pixels.
I found the nVidia-like method plausible and a bit more clever because it provides that no colorkey-colors get visible at all, in any form. But, it must be admitted, it bites out more from the texture.
I modified the needed shader and did a quick try for the other method and then I got the same result as 'expected' and shown in the videos. Even Incoming's HUD looked much nicer.
But this method leaves an ugly colorkey-edge around the shapes. As it can be seen on the video, Extreme G-2 has black borders around the letters. It would be worse if the colorkey were pink or cyan. 😀
So, I cannot say that either of the methods are better. They both are crap just in different ways. There were a solution named 'colorkey blending' added later into DX but not all GPUs supported it and there are no games using this (I think).
The only viable way is that I switch to the other method and we'll see (this all is true for 2D blitting operations).
I don't want to include a new option to choose between the two because as you wrote
Maybe worth noting that I've seen a few people who had trouble figuring out how to use dgVoodoo2.
I'm not going to say nice things about those people, but if you want the wrapper to be user friendly there might be room for improvement there.
I think copying 2 files into a game folder is not a difficult thing to comprehend. 😀
dgVoodoo2 works out of the box, there is no configuration needed. All the options (except for 'fast vidmem access') are just extras, they aren't necessary.
Anyway, I haven't got much time recently, and it's very hot here again which means I'm lazier and more tired 😀, but I almost finished the code refactoring I planned for a while. Now dgVoodoo has true multidevice/multimonitor support for DX, there are common parts between Glide/DX in the DDI, etc.
I checked Army Men and found that it's a palette issue (GDI/DDraw interaction again) which I fixed and the game now works.
Did you have to apply a DDraw app compat fix for Win8 to run this game? Because it sets the desktop to a 8bit mode when at startup which is not enabled by default on Win8 if I guess right.
BTW, I forgot last time, the frame rate limiter: the thing is it should work. I mean, as you can override the refresh rate for both Glide and DX, setting your custom refresh rate implies an implicit limit for the FPS.
Just try out: type e.g. the string "0x0, 43" into a resolution combo box in the setup then apply it. 0x0 means that you don't want to override the resolution, but you set the refresh rate to 43Hz.
Unfortunately it work for Glide but not for DX, I don't know yet why.