Particles cause a crash on some radeon devices, so people can at least disable it to make the game working.
Also tfb causes quite big slowdown on slow devices even if there is no particles displayed, so it can give few more fps.
(fixes karts getting stuck at borders), use a longer less bevelled collision
shape better kart stability), and reduce angular factor to make it less
likely that karts can drive on walls.
In this case only diffuseMatColor really matters, other values are constant.
It improves performance on GLES renderer and it's also noticeably faster for GL on desktop.
For example:
- fps increased for me from 60 to 69 on Hacienda with intel HD 4000
- from 43 to 49 on lighthouse
There is much less difference on nvidia graphics card, but still it gives small performance improvement.
- 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)
The force legacy device graphics restriction is needed for ironlake graphics cards. But newer generations in pentium/celeron processors also are named just "Intel(R) HD Graphics" without any number.
The newest drivers for ironlake graphics card is 8.15 and it's unlikely that it will get an update. So assume that all drivers older than 9.x are ironlake generation or that are too old to run STK anyway.
It's a bit ugly solution because we should handle it properly in one place and not add another sRGB correction... But it's already working solution and it doesn't affect the OpenGL renderer, so we can use it until better fix will be done.
Now the GLES renderer looks almost the same as the original OpenGL 3.x one :)
It should be much more comfortable on small devices.
Though it's not possible to get default screen orientation (and real device orientation) using NDK functions, so at this stage user has to manually choose if he needs "tablet" or "phone" accelerometer.
* Change grand-prix node for the new GP point system
* New GP point system
* Add parachute characteristics for rank and speed time multipliers
* Add new parachute characteristics
* typo fix
* Add rank and speed parachutes characteristics
* Add rank and speed parachute characteristics
* Add rank and speed parachute characteristics
* Add rank and speed parachute characteristics
* Add rank and speed parachute characteristics
* Add logic for parachute time scaling according to rank
* Add logic for parachute time scaling according to speed
* Separate GP and parachute branches
* Separate GP and parachute branches
It allows to enable it easily in GLES renderer. And we check if this extension is available anyway because it's needed for shadows, so we can use it for other shaders too.
It may be useful if someone wants to play with external keyboard.
The multitouch_mode parameter will be also used to choose between steering with buttons and using accelerometer.
It is generally safe for GLES drivers. The driver often reports OpenGL ES 3.1 or 3.0 support even though we request only GLES 2.0. But we can still use GLES 2.0 / GLSL 1.0 functions on GLES 3.x context, so it shouldn't cause any issues.
I also added Android Emulator to graphics restrictions.
This function was used by Cand for his OpenGL 2.1 renderer. The round function is available since GLSL 1.3 (OpenGL 3.0), so there is no need to override it.
If it will be needed in future, I suggest to change the name to round_stk or something similar.
Also split ghost karts out of additive shader, so fixed issues like
"drivers are facing backwards", "water in abyss affects ghost karts"
Todo: maybe transparency depend on current track color?
Changes applied:
*symbol files added
*LabelWidget removed from SkillLevelWidget and replaced by IconButtonWidget
Subsequently variables and method containing Label or Text renamed
setSize method was rewritten
*Unused property "m_label_name" removed from SkillLevelWidget
*Substitution label->icon also introduced renamings in KartStatsWidget.
For instance, setDisplayText is now named setDisplayIcons
It adds support for OpenGL ES renderer, which is needed for Android port and for running STK on other embedded devices such as Raspberry Pi.
Currently it works in two ways:
- Shader-based pipeline, which requires OpenGL ES 3.0 (Android >= 4.3)
- Fallback to irrlicht-based fixed pipeline that needs OpenGL ES 2.0. The fixed pipeline generally works, but it is affected by the same issues as our OpenGL 2.1 fixed pipeline renderer.
I tried to modify our OpenGL renderer as little as possible to avoid regressions. The only one major change is that we are now using the "#stk_include" directive in shaders instead of linking multiple shaders into one program.
Currently it works only on linux. The Android port needs some refactoring. In theory it should be possible to make it working on Windows, but we would need some OpenGL ES SDK, or maybe modified libglew.
At this stage it is playable with current mesa drivers. I tested it on intel graphics card and I didn't notice any issues.
On Android only the OpenGL ES 2.0 renderer with fixed pipeline has been tested for now.
In ssao.frag we are computing theta valaue and it looks that intel driver doesn't like too big values for sinus and cosinus computations.
I just used modulo 360 to store lower angle values in theta variable.
The check for GL_ARB_geometry_shader4 doesn't have sense at all because we don't use this extension and our geometry shaders use functionality which is available in core OpenGL 3.2.
The reason that it wasn't working for older mesa versions must be a bug in mesa or maybe missing other functionality (but not GL_ARB_geometry_shader4).
I checked it with mesa 11.2 and current git version and it works fine on intel, nouveau and with software rendering.
It needs some testing because it potentially affects all drivers with OpenGL >= 3.2 on every platform.
If someone could test it with Radeon drivers, I would be really happy to enable it in upcoming release, at least on linux.
The problem was with shader-based pipeline with disabled "advanced effects" in options.
In this case we don't use RTTs and gl_FragCoord contains values in range of whole window. So fo 2 players we still get gl_FragCoord.y = 0..window_size instead of gl_FragCoord.y = 0..window_size/2.
The easiest way to solve it seems to be modulo it by current viewport size. It should be compatible with advanced pipeline as well as single-player games.
Atm. I'm not sure if this should be applied to 0.9.2 branch. It should work fine, but needs some testing.
- Increase version for sRGB-capable visual workaround because it doesn't look that it will be fixed anytime soon
- Enable compute shaders because it works fine now
- Enable texture compression because it works now too.
Texture compression for intel should work fine also for older versions, but it's hard to say which one version is the first working one.
It was reporting an error:
[error ] GLWrap: Error in shader gaussian6h.comp
[error ] GLWrap: 0:77(1): error: storage qualifiers must come after precise, invariant, interpolation, layout and auxiliary storage qualifiers