Valve has open sourced code for its Direct3D to OpenGL Abstraction Layer, which could help other game developers involved in graphics translation and has also provided alpha code for its Open GL capture/playback debugger.
The ToGL translation layer has been taken directly from the source tree of DOTA2, a popular multi-player game.
According to its GitHub page it supports:
- Limited subset of Direct3D 9.0c
- Bytecode-level HLSL -> GLSL translator
- Some SM3 support: Multiple Render Targets, no Vertex Texture Fetch
On his blog, Valve developer Rich Geldrich apologizes for it being a simply a "raw dump" saying:
I really wish we had the time to package it better (so you could actually compile it!) with some examples, etc. There's a ton of practical Linux GL driver know-how packed all over this code -- if you look carefully.
The code is far from perfect: many parts are more like a battleground in there. It's optimized for results, and the primary metrics for success were perf vs. Windows and Source1 correctness, sometimes to the detriment of other factors.
Outlining the history of ToGL Geldrich explains that the layer was started by Valve's team, then ported from Mac to Linux by the steam team and finally ported to Windows for the purposes of debugging since the best available GL debuggers were Windows-only.
He says that Valve is working to rectify the lack of an open source GL debugger with vogl and his next blog post reports that thevogl GL debugger source is on GithHub .
This project, described as " a surprisingly massive undertaking for ~3 devs" is at an early stage of development and a warning on its page states:
This project is alpha^2 right now. If you are up for suffering through a bit of pain with early releases, please continue on - we'd love to have your help...
Game and graphics developers should find this useful so hopefully the number of those involved in the project can grow exponentially.