Linux gathers steam with CryEngine port, Valve's DX-to-GL translator

In the run-up to next week's Game Developers' Conference, we've gotten a couple of reminders that the PC gaming landscape may be altered radically in the coming months and years. Today, Crytek announced that its cutting-edge CryEngine, er, game engine is ready to demo on Linux:

During presentations and hands-on demos at Crytek's GDC booth, attendees can see for the first time ever full native Linux support in the new CRYENGINE. The CRYENGINE all-in-one game engine is also updated with the innovative features used to recreate the stunning Roman Empire seen in Ryse – including the brand new Physically Based Shading render pipeline, which uses real-world physics simulation to create amazingly realistic lighting and materials in CRYENGINE games.

This is a major development in Valve's quest to bolster Linux as an alternative PC gaming platform as part of the SteamOS. CryEngine may be the most graphically capable of the current-gen game engines. Many of the other major engines have already made the move to Linux or have declared an intention to do so, including Valve's own Source Engine and Unity. There are still some big-name stragglers, like EA/DICE's Frostbite, I believe, but much of the PC gaming software infrastructure is making its way to Linux and, by extension, to the SteamOS.

In order to help that process along, Valve itself just greased the wheels by releasing an open-source Direct3D to OpenGL translation layer called ToGL. Most PC games for Windows use Microsoft's proprietary Direct3D API to access the GPU, and they'll most likely need to use OpenGL in order to run on Linux. The translation layer's release notes are dead simple and read like so:

Taken directly from the DOTA2 source tree; supports:

  • Limited subset of Direct3D 9.0c
  • Bytecode-level HLSL -> GLSL translator
  • Some SM3 support: Multiple Render Targets, no Vertex Texture Fetch

This most likely won't build by itself and is provided as-is and completely unsupported. Feel free to use it for your reference, incorporate it into your projects or send us modifications.

Be wary that some parts are hardcoded to match Source Engine behavior; see CentroidMaskFromName() and ShadowDepthSamplerMaskFromName() in dxabstract.cpp

If you're not familiar with the jargon above, just know that this translator isn't exactly using state-of-the-art graphics programming methods, since it translates calls from DirectX 9. DX9 got some updates during its lifetime, including Shader Model 3.0 support back in 2004, and ToGL only supports a subset of SM3.0 functionality. With that said, way too many PC games during the past five years have failed to take advantage of newer versions of DirectX sufficiently, in part because the PS3 and Xbox 360 couldn't keep up. So this translator in its present form could prove useful for a lot of ports. Also, since it's a source code release, ToGL's true value may be in demonstrating to developers how to build their own custom translation layers for newer games.

At any rate, looks like there will be a tremendous amount of action at GDC next week. Microsoft is poised to unveil DirectX 12, and AMD plans to discuss the future of its Mantle API during the conference, as well.

Tip: You can use the A/Z keys to walk threads.
View options

This discussion is now closed.