VOGONS


First post, by vindasal

User metadata
Rank Newbie
Rank
Newbie

For some reason the bloom setting in this game is very particular about what hardware it supports, it seems like by 2010 no video cards at all support it. The only things I've actually seen run bloom in this game are C2D era Intel integrated graphics. I had hoped that dgVoodoo would rectify this, but unfortunately it doesn't seem to. I've tried just about every combination of settings possible in dgVoodoo, and it still does not work. Otherwise the game is fine, it's just something about the bloom. I'm just curious to know if someone with more knowledge than myself could investigate this and perhaps figure out what's causing this and how to fix it.

Reply 1 of 9, by Squall Leonhart

User metadata
Rank Newbie
Rank
Newbie

it expects the faulty linear scaling of devices prior to Geforce 8.

Reply 2 of 9, by vindasal

User metadata
Rank Newbie
Rank
Newbie
Squall Leonhart wrote on 2025-04-10, 15:43:

it expects the faulty linear scaling of devices prior to Geforce 8.

That's what I was looking for! Do you happen to know if there's any way to emulate this behavior on current hardware?

Reply 3 of 9, by Dege

User metadata
Rank l33t
Rank
l33t

Actually it's a problem on the game side. It needs non-pow2 textures for the bloom effect but misinterprets the D3D9 capability bits when checking out if they are supported.
It works only if the 3D device supports them conditionally, but not when they are unconditionally supported (like on modern hw).

I remembered thatI had a half-finished patch for this, now I quickly finalized it, it should work:

http://dege.fw.hu/Patches/bin/MotoGP_3_URT_bloom_patch.zip

Reply 4 of 9, by vindasal

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2025-04-12, 18:26:
Actually it's a problem on the game side. It needs non-pow2 textures for the bloom effect but misinterprets the D3D9 capability […]
Show full quote

Actually it's a problem on the game side. It needs non-pow2 textures for the bloom effect but misinterprets the D3D9 capability bits when checking out if they are supported.
It works only if the 3D device supports them conditionally, but not when they are unconditionally supported (like on modern hw).

I remembered thatI had a half-finished patch for this, now I quickly finalized it, it should work:

http://dege.fw.hu/Patches/bin/MotoGP_3_URT_bloom_patch.zip

Thank you! Just spent a bit playing with this and it works beautifully, awesome to finally see this game at its full potential again.

Reply 5 of 9, by Squall Leonhart

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2025-04-12, 18:26:

It needs non-pow2 textures for the bloom effect but misinterprets the D3D9 capability bits when checking out if they are supported.

It isn't misinterpretation, cap lookup returns D3DPTEXTURECAPS_NONPOW2CONDITIONAL false on all D3D10 hardware, whether used on XP or Vista and onwards.

This should be returning true for an emulated DX9 grade gpu.

Reply 6 of 9, by Dege

User metadata
Rank l33t
Rank
l33t
Squall Leonhart wrote on 2025-05-18, 14:44:
Dege wrote on 2025-04-12, 18:26:

It needs non-pow2 textures for the bloom effect but misinterprets the D3D9 capability bits when checking out if they are supported.

It isn't misinterpretation, cap lookup returns D3DPTEXTURECAPS_NONPOW2CONDITIONAL false on all D3D10 hardware, whether used on XP or Vista and onwards.

This should be returning true for an emulated DX9 grade gpu.

No, it is a misinterpretation. Actrually there are 2 cap bits here (describing 3 cases) to check against:
- GPU supporting pow2-textures only: D3DPTEXTURECAPS_POW2 = 1, D3DPTEXTURECAPS_NONPOW2CONDITIONAL = 0
- GPU supporting pow2-textures and nonpow2 ones under certain circumstances (like texture with 1 mipmap level, ...): D3DPTEXTURECAPS_POW2 = 1, D3DPTEXTURECAPS_NONPOW2CONDITIONAL = 1
- GPU supporting nonpow2 unconditionally (modern hw): D3DPTEXTURECAPS_POW2 = 0, D3DPTEXTURECAPS_NONPOW2CONDITIONAL = 0
- invalid case, making no sense: D3DPTEXTURECAPS_POW2 = 0, D3DPTEXTURECAPS_NONPOW2CONDITIONAL = 1

So, it's not enough to check out only D3DPTEXTURECAPS_NONPOW2CONDITIONAL .

Reply 7 of 9, by Squall Leonhart

User metadata
Rank Newbie
Rank
Newbie

ok, so the emulated Geforce FX and 4, and Radeon 9800 should expose D3DPTEXTURECAPS_POW2 & D3DPTEXTURECAPS_NONPOW2CONDITIONAL to look like a device of the time, i'm sure theres going to be many other games that have this issue as the DX guides were hodge podge based on the old incomplete d3dprim documentation.

Reply 8 of 9, by Dege

User metadata
Rank l33t
Rank
l33t
Squall Leonhart wrote on 2025-05-18, 23:16:

ok, so the emulated Geforce FX and 4, and Radeon 9800 should expose D3DPTEXTURECAPS_POW2 & D3DPTEXTURECAPS_NONPOW2CONDITIONAL to look like a device of the time, i'm sure theres going to be many other games that have this issue as the DX guides were hodge podge based on the old incomplete d3dprim documentation.

Yes, they (GF5700 and ATI8500) should, I can't remember their caps bits in dgVoodoo, probably wrong in this aspect. And the GF4 did not support nonpow2 at all, I think.

Btw, the SDK documentation (at least the DX2010 June) clearly describes how to interpret those bits.

Reply 9 of 9, by Squall Leonhart

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2025-05-19, 05:59:

And the GF4 did not support nonpow2 at all, I think.

Conditional NPOT was supported as far back as Geforce 2, Alpha reportedly did not work properly on these though.