This Week in Fyrox #17

Fyrox is an open-source (opens new window) Rust game engine with lots of out-of-box game-ready features and a full-featured editor. This week was mostly dedicated to adding Android support and fixing annoying bugs.

# Basic Android Support

platformer on android

Android support was requested multiple times (opens new window) already and after ~1.5 years from the first request it is finally added. It is not fully complete yet, because a separate sound backend (opens new window) should be added to fyrox-template, but it is already usable. Current renderer implementation is not great for mobile devices, because it uses graphics rendering techniques that are PC-oriented, so rendering performance is quite bad if you use complex 3D graphics. However it is more or less fine on 2D graphics. There's a separate task (opens new window) about writing a separate, lightweight renderer for mobile devices. Keep in mind, that you need to have a relatively new device (2015+), that supports OpenGL ES 3.0 to get the engine working on mobile devices.

# Lightmapper Fixes


As you might know, Fyrox has built-in lightmapper and it is integrated in the editor. For quite a long time, there was a bug that corrupted GPU vertex buffers when preparing second UV map for light maps. Which resulted in weird graphical artifacts. Also, when saving a scene with light map, node handles weren't correctly remapped thus leading to panic when trying to load such scene. Now these bugs are fixed you can use lightmapper normally.

# HDR Fixes on OpenGL ES

For about a year, graphics looked pale on WebAssembly compared to PC. That's because of differences between sRGB frame buffers behavior on OpenGL and OpenGL ES. sRGB frame buffers on OpenGL does not change input values from shader and write values as is (unless you turn sRGB conversion manually) and convert them to linear when reading from sRGB textures. On OpenGL ES, however, such conversion is on by default in both ways and it led to pale-colored output image on platforms such as WebAssembly.

# Full List of Changes in Random Order

  • Basic android support
  • Correct window and OpenGL context initialization for all platforms
  • fyrox-template improvements to generate Android executors
  • Fixed incorrect sRGB conversion on WebAssembly and Android (OpenGL ES)
  • Fixed multiple lightmapper issues and make it work correctly in the editor.