All Projects → gongminmin → Dilithium

gongminmin / Dilithium

Licence: mit
Dilithium is a bidirectional shader converter for converting between DXIL and SPIR-V.

Projects that are alternatives of or similar to Dilithium

Blue Flame Engine
A 3D/2D game engine that supports both DirectX11 and OpenGL 4.5
Stars: ✭ 129 (-19.37%)
Mutual labels:  opengl, directx, opengles
Minijvm
Develop iOS Android app in java, Cross platform java virtual machine , the minimal jvm .
Stars: ✭ 127 (-20.62%)
Mutual labels:  opengl, opengles, cross-platform
Fiber2d
Cross-platform 2D Game Engine in pure Swift
Stars: ✭ 415 (+159.38%)
Mutual labels:  opengl, directx, cross-platform
Klayge
KlayGE is a cross-platform open source game engine with plugin-based architecture.
Stars: ✭ 1,646 (+928.75%)
Mutual labels:  opengl, opengles, cross-platform
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+6307.5%)
Mutual labels:  opengl, directx
Reshade
A generic post-processing injector for games and video software.
Stars: ✭ 2,285 (+1328.13%)
Mutual labels:  spir-v, opengl
Rubeus
A cross platform 2D game engine written in C++ for beginners
Stars: ✭ 159 (-0.62%)
Mutual labels:  opengl, cross-platform
Quickfont
A Modern OpenGL Font Rendering Library for OpenTK
Stars: ✭ 63 (-60.62%)
Mutual labels:  opengl, cross-platform
Crossshader
⚔️ A tool for cross compiling shaders. Convert between GLSL, HLSL, Metal Shader Language, or older versions of GLSL.
Stars: ✭ 113 (-29.37%)
Mutual labels:  opengl, directx
Xray 16
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. Join OpenXRay! ;)
Stars: ✭ 1,806 (+1028.75%)
Mutual labels:  opengl, directx
Borealis
Hardware accelerated, controller and TV oriented UI library for PC and Nintendo Switch (libnx).
Stars: ✭ 135 (-15.62%)
Mutual labels:  opengl, cross-platform
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+1238.75%)
Mutual labels:  opengl, directx
Cubicsdr
Cross-Platform Software-Defined Radio Application
Stars: ✭ 1,294 (+708.75%)
Mutual labels:  opengl, cross-platform
Shaderconductor
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (+616.25%)
Mutual labels:  spir-v, opengl
Premulalpha
Pre-Multiplied blend mode is a 3 in 1 blend mode that has a lot of uses. It has been around for a long time but it seems to be re-discovered every few years. This project includes descriptions/examples and tools for using pre-multiplied alpha.
Stars: ✭ 97 (-39.37%)
Mutual labels:  opengl, directx
Indielib Crossplatform
IndieLib is a cross-platform Game Graphics engine. Main focus is OpenGL ES 2.0 for mobile iOS operating system, and OpenGL desktop. **NOT SUPPORTED ANYMORE**
Stars: ✭ 64 (-60%)
Mutual labels:  opengl, directx
Glsl
GLSL parser for Rust
Stars: ✭ 145 (-9.37%)
Mutual labels:  spir-v, opengl
Ueviewer
Viewer and exporter for Unreal Engine 1-4 assets (UE Viewer).
Stars: ✭ 1,083 (+576.88%)
Mutual labels:  opengl, cross-platform
Dds Ktx
Single header KTX/DDS reader
Stars: ✭ 62 (-61.25%)
Mutual labels:  opengl, directx
Bsf
Modern C++14 library for the development of real-time graphical applications
Stars: ✭ 1,640 (+925%)
Mutual labels:  opengl, directx

Dilithium

Dilithim is an open source library for converting DXIL and SPIR-V in bidirectional. Currently it's in a very early stage.

Concepts

What is DXIL

DXIL (DirectX Intermediate Language) is a binary format that introduced by DirectX Shader Compiler. As the name suggests, it's an intermediate language compiled from HLSL, and consumed by GPU drivers. Unlike its predecessor DXBC (DirectX Byte Code), DXIL is open and standardized.

For more information, see the DXIL.rst.

What is SPIR-V

SPIR-V is also a binary intermediate language, for GPU shaders in OpenGL and OpenGLES ecosystem. It's part of OpenCL 2.1 core as well as Vulkan core.

For more information, see the SPIR-V spec.

Why need a converter

In D3D, HLSL shaders are compiled to DXIL/DXBC. Meanwhile in OpenGL/OpenGLES, GLSL/ESSL shaders are compiled to SPIR-V. But those two intermediate languages can't talk to each other. Developing an cross-API app means you need to write at least 2 copies of every shaders, one in HLSL, one in GLSL/ESSL. An automatic converter can simplify this process, only write in one high-level shader language and use them in all places. Converting in binary ILs, instead of high-level languages, reduces parsing time after time, and keeps the optimization.

Building

Before you build, you will need to have some additional software installed.

  • Git.
  • CMake. Version 3.4 or up is required. You need not change your PATH variable during installation.
  • Python. Version 2.7 or up is required. You need not change your PATH variable during installation.

Instructions

[TBD]

Directory Structure

  • External/: Intended location for external dependencies.
  • Include/: Library clients should add this directory to the include search path.
  • Src/: Library implementation.
  • Tools/: Command line executables.

Contributing

As an open source project, Dilithium benefits greatly from both the volunteer work of helpful developers and good bug reports made by users.

Bug Reports & Feature Requests

If you've noticed a bug or have an idea that you'd like to see come real, why not work on it? Bug reports and feature requests are typically submitted to the issue tracker https://github.com/gongminmin/Dilithium/issues.

Why this name

In Star Trek, Dilithium is a material which serves as a controlling agent in the faster-than-light warp drive. It is used to contain and regulate the annihilation reaction of matter and antimatter in a starship's warp core, which otherwise would explode from the uncontrolled annihilation reaction. In this project, Dilithium contains and regulates HLSL/DXIL and GLSL/SPIR-V in a game engine.

Links

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