Компания Valve неожиданно решила открыть исходный код транслятора Direct3D -> OpenGL, выложив его на Github. Код позаимствован непосредственно из игры Dota 2, он поставляется как есть, без поддержки, под свободной лицензией MIT.
Транслятор ToGL поддерживает работу только с ограниченным набором программных интерфейсов D3D 9.0c, может транслировать байткод из HLSL (High Level Shader Language) в GLSL (OpenGL Shading Language) и имеет некоторую поддержку SM3. При этом в коде имеются фрагменты, написанные специально для движка Source, так что его еще требуется очистить. Хорошо бы и подготовить нормальную документацию.
ToGL может быть полезен для разработчиков игр и других программ, которые хотят портировать Windows-приложения на Linux. Есть надежда, что благодаря активности Valve по продвижению OpenGL стандарт DirectX получит достойного и сильного конкурента. По крайней мере, в настоящее время только Direct3D остается наиболее актуальной и поддерживаемой технологией в наборе интерфейсов DirectX. В любом случае, благодаря этому шагу Valve некоторые игры AAA-класса могут выйти под Linux раньше запланированного. Ну а что касается старых игр для Direct3D 9.0c, вероятно, их можно портировать на Linux практически сразу.
OpenGL — более универсальный формат, чем DirectX, который поддерживается на большем количестве устройств. Именно эту технологию используют приложения под Android и iOS, а также операционные системы Linux и OS X для трехмерной графики. Более того, даже под Windows почти все программы для 3D-графики и САПР используют OpenGL. На DirectX остаются работать только видеоигры, которые рассчитывают на кроссплатформенную работу между Windows и Xbox.
Интересно, что компания Google ранее выпустила транслятор ANGLE, который является противоположностью ToGL, то есть позволяет запускать приложения OpenGL ES 2.0 в среде DirectX 9 или DirectX 11.