ShaderConductor - ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages

  •        30

ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages. Note that this project is still in an early stage, and it is under active development.



Related Projects

DiligentEngine - Master repository for Diligent Engine project

  •    C++

Diligent Engine is a lightweight cross-platform abstraction layer between the application and the platform-specific graphics API designed to take advantages of next-generation APIs such as Direct3D12 and Vulkan, while providing support for older platforms via Direct3D11, OpenGL and OpenGLES. Diligent Engine exposes common front-end for all supported platforms and provides interoperability with underlying native API. Shader source code converter allows HLSL shaders to be used on all supported platforms and rendering backends. The engine is intended to be used as a graphics subsystem in a game engine or any other 3D application, and supports integration with Unity. Diligent Engine is distributed under Apache 2.0 license and is free to use. Alternatively, you can get master repository fisrt, and then individually clone all submodules into the engine's root folder.

renderdoc - RenderDoc is a stand-alone graphics debugging tool.

  •    C++

RenderDoc is a frame-capture based graphics debugger, currently available for Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES development on Windows 7 - 10, Linux, and Android. It is completely open-source under the MIT license. If you have any questions, suggestions or problems or you can create an issue here on github, email me directly or come into IRC to discuss it.

bgfx - Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library

  •    C++

Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library. AirMech is a free-to-play futuristic action real-time strategy video game developed and published by Carbon Games.


  •    C++

[2017/11/12] - Added simple tessellation shader sample. Fixed misc issues with pipeline setup for tessellation. [2017/11/10] - Added ChessSet demo. Added geometry shader sample. Fixes to depth stencil handling. [2017/11/10] - Added TexturedCube sample. Updated depth attachment handling on swapchain render pass. Switched out lc_image for stb_image. Added DXC shader build script. [2017/05/27] - Fixed some annoying buffer state transitions. Added build script for shaders. Updated shader naming convention to be more exact. Added OpaqueArgs and PassingArrays for investigation. [2017/05/20] - Updated Append/Consume sample for Vulkan. Requires latest glslang. ConstantBuffer also works for both platforms. [2017/05/13] - Added Linux support. Moved to project files to cmake. Moved glsl shaders to glsl sub directory - forcing HLSL for now. [2017/04/30] - Clarified shader usage in some sample programs to point out which source they're coming from. [2017/04/27] - Added ConstantBuffer sample (D3D12 only for now). Updated Vulkan samples to use negative viewport height. [2017/04/25] - Updated SimpleCompute and StructuredBuffer to work on Vulkan. [2017/04/24] - Added compute samples (D3D12 only for now). One for simple compute and another for structured buffers.

glsl-optimizer - GLSL optimizer based on Mesa's GLSL compiler

  •    C++

A C++ library that takes GLSL shaders, does some GPU-independent optimizations on them and outputs GLSL or Metal source back. Optimizations are function inlining, dead code removal, copy propagation, constant folding, constant propagation, arithmetic optimizations and so on. Apparently quite a few mobile platforms are pretty bad at optimizing shaders; and unfortunately they also lack offline shader compilers. So using a GLSL optimizer offline before can make the shader run much faster on a platform like that. See performance numbers in this blog post.

dxvk - Vulkan-based D3D11 and D3D10 implementation for Linux / Wine

  •    C++

A Vulkan-based translation layer for Direct3D 10/11 which allows running 3D applications on Linux using Wine. For the current status of the project, please refer to the project wiki.

VK9 - Direct3D 9 compatibility layer using Vulkan.

  •    C++

Runs Direct3D 9 applications on Windows or Linux (/w Wine) over Vulkan. Please refer to the Github wiki for current state and details about the project.

glslang - Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator

  •    C++

The above page includes where to get binaries, and is kept up to date regarding the feature level of glslang. An OpenGL and OpenGL ES shader front end and validator.

angle - A conformant OpenGL ES implementation for Windows, Mac and Linux.

  •    C++

The goal of ANGLE is to allow users of multiple operating systems to seamlessly run WebGL and other OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available for that platform. ANGLE currently provides translation from OpenGL ES 2.0 and 3.0 to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Support for translation from OpenGL ES to Vulkan is underway, and future plans include compute shader support (ES 3.1) and MacOS support.ANGLE v1.0.772 was certified compliant by passing the ES 2.0.3 conformance tests in October 2011. ANGLE also provides an implementation of the EGL 1.4 specification.

DirectXShaderCompiler - This repo hosts the source for the DirectX Shader Compiler which is based on LLVM/Clang

  •    C++

The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) programs into DirectX Intermediate Language (DXIL) representation. Applications that make use of DirectX for graphics, games, and computation can use it to generate shader programs.For more information, see the Wiki.

Voodoo Shader Framework


Voodoo Shader is a comprehensive graphics framework for powering shaders in multiple programs, during development or after release. Voodoo uses plugins and a shared core to support many games and other applications and is compatible with Direct3D and OpenGL.

lwjgl3 - LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL), audio (OpenAL) and parallel computing (OpenCL) applications

  •    Kotlin

LWJGL ( is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL/Vulkan), audio (OpenAL) and parallel computing (OpenCL) applications. This access is direct and high-performance, yet also wrapped in a type-safe and user-friendly layer, appropriate for the Java ecosystem.LWJGL is an enabling technology and provides low-level access. It is not a framework and does not provide higher-level utilities than what the native libraries expose. As such, novice programmers are encouraged to try one of the frameworks or game engines that make use of LWJGL, before working directly with the library.

GraphicsSamples - GameWorks cross-platform graphics API samples

  •    C

The GameWorks Graphics Samples pack is a resource for cross-platform Vulkan, OpenGL 4 (GL4) and OpenGL ES 2 and 3 (ES2 and ES3) development, targeting Android and Windows (and soon, will again support Linux x86/x64 and Linux for Tegra). It is an expansion and continuation of the longstanding OpenGL Graphics and Compute Samples, adding full support for and samples of the Vulkan 3D API. The samples run on all supported target platforms from a single source base.

shaderc - A collection of tools, libraries and tests for shader compilation.

  •    C++

Shaderc has maintained backward compatibility for quite some time, and we don't anticipate any breaking changes. Ongoing enhancements are described in the CHANGES file.For licensing terms, please see the LICENSE file. If interested in contributing to this project, please see

GPUImage3 - GPUImage 3 is a BSD-licensed Swift framework for GPU-accelerated video and image processing using Metal

  •    Swift

GPUImage 3 is the third generation of the GPUImage framework, an open source project for performing GPU-accelerated image and video processing on Mac and iOS. The original GPUImage framework was written in Objective-C and targeted Mac and iOS, the second iteration rewritten in Swift using OpenGL to target Mac, iOS, and Linux, and now this third generation is redesigned to use Metal in place of OpenGL. The objective of the framework is to make it as easy as possible to set up and perform realtime video processing or machine vision against image or video sources. Previous iterations of this framework wrapped OpenGL (ES), hiding much of the boilerplate code required to render images on the GPU using custom vertex and fragment shaders. This version of the framework replaces OpenGL (ES) with Metal. Largely driven by Apple's deprecation of OpenGL (ES) on their platforms in favor of Metal, it will allow for exploring performance optimizations over OpenGL and a tighter integration with Metal-based frameworks and operations.

SPIRV-Cross - SPIRV-Cross is a practical tool and library for performing reflection on SPIR-V and disassembling SPIR-V back to high level languages

  •    C++

SPIRV-Cross is a tool designed for parsing and converting SPIR-V to other shader languages. SPIRV-Cross tries hard to emit readable and clean output from the SPIR-V. The goal is to emit GLSL or MSL that looks like it was written by a human and not awkward IR/assembly-like code.

hlsl2glslfork - HLSL to GLSL language translator based on ATI's HLSL2GLSL. Used in Unity.

  •    C++

DX9 style HLSL in, GLSL / GLSL ES out. For an opposite tool (GLSL ES to HLSL translator), look at Google's ANGLE.

gamma - glsl shaders made simple

  •    Clojure

Gamma is a substrate for graphics software, such as games and data visualization tools. It presents a simple, composable language for representing GLSL shaders. Technically, Gamma is an EDSL that hosts GLSL within Clojurescript. It is inspired by Carlos Scheidegger's Lux and Conal Elliot's Vertigo and Pan. Gamma targets the WebGL subset of the OpenGL ES 1.0 Shading Language. Gamma can be used a la carte to compile shader source, without adopting Clojure/Clojurescript for your runtime application.

glfw - A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input

  •    C

GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan application development. It provides a simple, platform-independent API for creating windows, contexts and surfaces, reading input, handling events, etc. GLFW natively supports Windows, macOS and Linux and other Unix-like systems. Experimental implementations for the Wayland protocol and the Mir display server are available but not yet officially supported.