PATCH for r700 (1st of two "interim" patches before next big update):
- Reworked micro texture scaling factor, now it matches the arcade.
- Removed from SetMeshValues() two checks for "textured" and "microTexture" state, since it's always ok to fetch those values from polygon header. Shader uniforms, in this case "microTextureScale", will receive valid values anyway.
Micro texture mapping coordinates are scaled by a certain factor before fetching texture data. It turns out that the scale is the ratio between the base texture size and the micro texture size (which is assumed to be always 128x128) *pre-divided* by "2" for "N" times. This "N" is the value obtained with 2^ph.MicroTextureMinLOD().
In pseudo-code:
- Code: Select all
microTexCoord = baseTexCoord * (baseTexSize / (128 >> (1 << ph.MicroTextureMinLOD())))
This is apparent in Daytona 2 because
ph.MicroTextureMinLOD() is "0", "1" or "2". Other games usually set only "0". Skichamp also uses many values and could be a good reference but there're no good quality videos around.