Diligent Engine

Diligent Engine is a light-weight cross-platform abstraction layer between the application and the platform-specific graphics API. Its main goal is to take advantages of the next-generation APIs such as Direct3D12 and Vulkan, but at the same time provide 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. It also supports integration with Unity and is designed to be used as a graphics subsystem in a standalone game engine, Unity native plugin or any other 3D application. It is distributed under Apache 2.0 license and is free to use. Full source code is available for download at GitHub. The engine contains shader source code converter that allows shaders authored in HLSL to be translated to GLSL.

Features

  • Cross-platform
    • Exact same client code for all supported platforms and rendering backends
      • No #if defined(_WIN32)  … #elif defined(LINUX)  … #elif defined(ANDROID)  …
      • No #if defined(D3D11)  … #elif defined(D3D12)  … #elif defined(OPENGL)  …
    • Exact same HLSL shaders run on all platforms and all backends
  • Modular design
    • Components are clearly separated logically and physically and can be used as needed
      • Only take what you need for your project (do not want to keep samples and tutorials in your codebase? Simply remove Samples submodule. Only need core functionality? Use only Core submodule)
      • No 15000 lines-of-code files
  • Clear object-based interface
    • No global states
  • Key graphics features:
    • Automatic shader resource binding designed to leverage the next-generation rendering APIs
    • Multithreaded command buffer generation
    • Descriptor, memory and resource state management
  • Modern c++ features to make code fast and reliable

The engine consists of the following components:

  • Engine Core provides basic engine functionality. It implements engine interface on the platform-specific graphics API.
  • Shader Converter is designed to convert HLSL source code into GLSL. It allows shaders to be developed in HLSL, yet enables the exact same shaders to be compiled on other platforms.
  • Render Script is an efficient tool that facilitates graphics resource description and management

The repository contains tutorials and sample applications that demonstrate the usage of the engine. You can find the API reference here.

The following platforms and graphics APIs are currently supported

Platform Supported APIs
Windows Desktop Direct3D11, Direct3D12, OpenGL4.2+
Universal Windows Platform Direct3D11, Direct3D12
Linux OpenGL4.2+
Android OpenGLES3.0+
MacOS OpenGL4.1 (no compute shaders)
iOS OpenGLES3.0 (vertex and fragment shaders only)