All Projects → microsoft → Shaderconductor

microsoft / Shaderconductor

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

Projects that are alternatives of or similar to Shaderconductor

Reshade
A generic post-processing injector for games and video software.
Stars: ✭ 2,285 (+99.39%)
Mutual labels:  compiler, spir-v, opengl, glsl, vulkan, hlsl, d3d11, d3d12, d3d9
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (-58.29%)
Mutual labels:  spir-v, opengl, glsl, vulkan, hlsl, metal, opengl-es, d3d11
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+794.59%)
Mutual labels:  opengl, graphics, vulkan, metal, d3d11, d3d12, d3d9
Diligentcore
Core functionality of Diligent Engine
Stars: ✭ 263 (-77.05%)
Mutual labels:  opengl, graphics, vulkan, opengl-es, d3d11, d3d12
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+920.77%)
Mutual labels:  opengl, graphics, glsl, vulkan, shader, hlsl
Crossshader
⚔️ A tool for cross compiling shaders. Convert between GLSL, HLSL, Metal Shader Language, or older versions of GLSL.
Stars: ✭ 113 (-90.14%)
Mutual labels:  compiler, opengl, glsl, vulkan, hlsl, metal
Shaderc
A collection of tools, libraries, and tests for Vulkan shader compilation.
Stars: ✭ 1,016 (-11.34%)
Mutual labels:  compiler, graphics, glsl, vulkan, hlsl
Llgl
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal
Stars: ✭ 1,011 (-11.78%)
Mutual labels:  opengl, vulkan, metal, d3d11, d3d12
Renderdoc
RenderDoc is a stand-alone graphics debugging tool.
Stars: ✭ 5,969 (+420.86%)
Mutual labels:  opengl, graphics, vulkan, d3d11, d3d12
Pbr
An implementation of physically based shading & image based lighting in D3D11, D3D12, Vulkan, and OpenGL 4.
Stars: ✭ 722 (-37%)
Mutual labels:  opengl, graphics, vulkan, d3d11, d3d12
Hlslexplorer
See how hardware understands your HLSL
Stars: ✭ 91 (-92.06%)
Mutual labels:  graphics, shader, hlsl, d3d11, d3d12
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+86.91%)
Mutual labels:  opengl, vulkan, opengl-es, d3d11, d3d12
Apitrace
Tools for tracing OpenGL, Direct3D, and other graphics APIs
Stars: ✭ 2,198 (+91.8%)
Mutual labels:  opengl, opengl-es, d3d11, d3d12, d3d9
Filament
Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
Stars: ✭ 13,215 (+1053.14%)
Mutual labels:  opengl, graphics, vulkan, metal, opengl-es
Shaderc Rs
Rust bindings for the shaderc library.
Stars: ✭ 143 (-87.52%)
Mutual labels:  compiler, graphics, glsl, vulkan, hlsl
Glslang
Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.
Stars: ✭ 2,034 (+77.49%)
Mutual labels:  compiler, spir-v, glsl, shader, hlsl
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (-87.96%)
Mutual labels:  opengl, vulkan, opengl-es, d3d11, d3d12
Shadergen
Proof-of-concept library for generating HLSL, GLSL, and Metal shader code from C#,
Stars: ✭ 395 (-65.53%)
Mutual labels:  opengl, graphics, glsl, vulkan, hlsl
Bonzomatic
Live shader coding tool and Shader Showdown workhorse
Stars: ✭ 829 (-27.66%)
Mutual labels:  opengl, graphics, glsl, shader, hlsl
Viry3d
Cross platform 2D and 3D game engine in C++.
Stars: ✭ 307 (-73.21%)
Mutual labels:  vulkan, metal, opengl-es, d3d11

ShaderConductor

Build Status License

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

Features

  • 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.

Note that this project is still in an early stage, and it is under active development.

Architecture

ShaderConductor is not a real compiler. Instead, it glues existing open source components to do the cross-compiling.

  1. DirectX Shader Compiler to compile HLSL to DXIL or SPIR-V,
  2. SPIRV-Cross to convert SPIR-V to target shading languages.

Architecture

Prerequisites

  • Git. Put git into the PATH is recommended.
  • Visual Studio 2017. Select the following workloads: Universal Windows Platform Development and Desktop Development with C++.
  • CMake. Version 3.9 or up. It's highly recommended to choose "Add CMake to the system PATH for all users" during installation.
  • Python. Version 2.7 or up. You need not change your PATH variable during installation.

Building

ShaderConductor has been tested on Windows, Linux, and macOS.

The script way:

  BuildAll.py <BuildSystem> <Compiler> <Architecture> <Configuration>

where,

  • <BuildSystem> can be ninja or vs2017. Default is vs2017.
  • <Compiler> can be vc141 on Windows, gcc or clang on Linux, clang on macOS.
  • <Architecture> must be x64 (for now).
  • <Configuration> can be Debug, Release, RelWithDebInfo, or MinSizeRel. Default is Release.

This script automatically grabs external dependencies to External folder, generates project file in Build/<BuildSystem>-<Compiler>-<Platform>-<Architecture>[-<Configuration>], and builds it.

The manual way:

  mkdir Build
  cd Build
  cmake -G "Visual Studio 15" -T host=x64 -A x64 ../
  cmake --build .

After building, the output file ShaderConductor.dll can be located in <YourCMakeTargetFolder>/Bin/<Configuration>/. It depends on dxcompiler.dll in the same folder.

Artifacts

You can download the prebuilt binaries generated by CI system. Currently, artifacts for Windows, Linux, macOS are published every commit.

License

ShaderConductor is distributed under the terms of MIT License. See LICENSE for details.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].