enabled once the whole kart chassis was tilted enough, but karts could
still end up driving on a wall (one wheel on a wall would not tilt the
chassis enough to trigger sliding, but give the kart an up velocity
which allowed it to drive on the wall). Friction is now determined
by the normal of the triangle hit by the raycast.
- Don't use BGRA format at all. It doesn't work with non-typical cases (i.e. with srgb or compressed textures) and also casues artifacts on some android devices. I kept the extension in central settings, but it probably won't be used.
- Use sRGB texture format when advanced lighting is enabled. This makes it closer to the original OpenGL renderer and also avoids to have even more #ifdef's for sRGB conversions.
- Keep RGBA textures for non-advanced lighting to make it simpler.
Now advanced lighting in GLES looks almost the same as in OpenGL 3.x (without shadows/GI)
For OpenGL 3.x renderer it only matters for some buggy drivers (i.e old AMD driver that complains about missing precision qualifier). Based on specification is should have no effect and was added for compatibility with GL ES.
In our case vertex and fragment must have the same precision because we use common header for both shader types and the precision for uniform variables must match.
Also "precision highp float;" is defined by default for both vertex and fragment shaders, so it seems to be more proper.
This will hopefully solve the problem with nvidia driver that tries to use f16vec4 instead of just vec4, see:
https://forum.freegamedev.net/viewtopic.php?f=17&t=7397&sid=06682ddb05ee9fbf48a2984d0bd48d5b
by removing the '*f' factor (seee 9a5eec3761f1647f81b5879d993c0ba8ae0584a4).
Otherwise the AI triggers rescue in sandtrack because of very frequent
chassis-track collisions.