Discovered on Phoronix.com, Microsoft have just released a new open source project that attempts to solve a very familiar problem, converting from one shader format to another, specificcally converting from HLSL to a variety of different shader formats. The MIT licensed open source project Shader Conductor, doesn’t actually convert shaders between formats, instead makes use of existing projects Direct X Shader Compiler and SPIRV-Cross to make the process work. Shader Conductor enables you to:
- Converts HLSL to readable, usable and efficient GLSL
- Converts HLSL to readable, usable and efficient ESSL
- Converts HLSL to readable, usable and efficient Metal Shading Language (MSL)
- Converts HLSL to readable, usable and efficient old shader model HLSL
- Supports all stages of shaders, vertex, pixel, hull, domain, geometry, and compute.
You can see the entire conversion process of Shader Conductor in the following diagram.
As you can see, SPIRV-Cross is used to convert SPIRV generated by the DirectX Shader compiler, then SPIRV-Cross enables conversion to a number of different APIs, including interestingly enough earlier versions of Direct3D. Currently Shader Conductor is only available on Windows, with Mac and Linux support coming soon. The project is still young and is under active development. The source code, as well as more information, is available on GitHub.