A modern cross-platform low-level graphics library and rendering framework

Overview

Diligent Engine

A Modern Cross-Platform Low-Level 3D Graphics Library Tweet

Diligent Engine is a lightweight cross-platform graphics API abstraction library and rendering framework. It is designed to take full advantage of Direct3D12, Vulkan and Metal, while supporting older platforms via Direct3D11, OpenGL and OpenGLES. Diligent Engine exposes common front-end API and uses HLSL as universal shading language on all platforms and rendering back-ends. Platform-specific shader representations (GLSL, DX bytecode or SPIRV) can be used with corresponding back-ends. The engine is intended to be used as graphics subsystem in a game engine or any other 3D application. It is distributed under Apache 2.0 license and is free to use.

License Chat on gitter Chat on Discord Build Status Build Status Codacy Badge

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 (VS, PS, GS, HS, DS, CS) run on all platforms and all back-ends
  • High performance
  • Modular design
    • Components are clearly separated logically and physically and can be used as needed
    • Only take what you need for your project
  • Clear and concise API
    • C/C++
    • Object-based
    • Stateless
  • Key graphics features:
  • Extensive validation and error reporting
  • Modern c++ features to make the code fast and reliable
  • Consistent high quality is ensured by continuous integration
    • Automated builds and unit testing
    • Source code formatting validation
    • Static analysis

High-level Rendering components

Supported Plaforms and Low-Level Graphics APIs

Platform D3D11 D3D12 OpenGL/GLES Vulkan Metal Build Status
Win32 (Windows desktop) ✔️ ✔️ ✔️ ✔️ - Build Status
Universal Windows ✔️ ✔️ - - - Build Status
Linux - - ✔️ ✔️ - Build Status
MacOS - - ✔️ ✔️ 1 ✔️ 2 Build Status
Android - - ✔️ ✔️ -
iOS - - ✔️ ✔️ 1 ✔️ 2 Build Status

1 Vulkan API is not natively supported on MacOS and iOS platforms and requires a Vulkan portability implementation such as MoltenVK or gfx-portability.

2 Available under commercial license - please contact us for details.

Table of Contents

Cloning the Repository

This is the master repository that contains four submodules. To get the repository and all submodules, use the following command:

git clone --recursive https://github.com/DiligentGraphics/DiligentEngine.git

When updating existing repository, don't forget to update all submodules:

git pull
git submodule update --recursive

It is also a good idea to re-run CMake and perform clean rebuild after getting the latest version.

Repository Structure

Master repository includes the following submodules:

Build and Run Instructions

Diligent Engine uses CMake as a cross-platform build tool. To start using cmake, download the latest release (3.16 or later is required). Another build prerequisite is Python interpreter (3.0 or later is required). If after following the instuctions below you have build/run issues, please take a look at troubleshooting.

Win32

Build prerequisites:

  • Windows SDK 10.0.17763.0 or later (10.0.19041.0 is required for mesh shaders)
  • C++ build tools
  • Visual C++ ATL Support

Use either CMake GUI or command line tool to generate build files. For example, to generate Visual Studio 2019 64-bit solution and project files in build/Win64 folder, navigate to the engine's root folder and run the following command:

cmake -S . -B ./build/Win64 -G "Visual Studio 16 2019" -A x64

You can generate Win32 solution that targets Win8.1 SDK using the following command:

cmake -D CMAKE_SYSTEM_VERSION=8.1 -S . -B ./build/Win64_8.1 -G "Visual Studio 16 2019" -A x64

If you use MinGW, you can generate the make files using the command below (note however that the functionalty will be limited and that MinGW is not a recommended way to build the engine):

cmake -S . -B ./build/MinGW -D CMAKE_BUILD_TYPE=Release -G "MinGW Makefiles"

⚠️ In current implementation, full path to cmake build folder must not contain white spaces.

To enable Vulkan validation layers, you will need to download Vulkan SDK and add environemt variable VK_LAYER_PATH that contains path to the Bin directory in VulkanSDK installation folder.

Open DiligentEngine.sln file in build/Win64 folder, select configuration and build the engine. Set the desired project as startup project (by default, GLTF Viewer will be selected) and run it.

By default, sample and tutorial applications will show rendering backend selection dialog box. Use the following command line options to force D3D11, D3D12, OpenGL, or Vulkan mode: -mode D3D11, -mode D3D12, -mode GL, or -mode Vk. If you want to run an application outside of Visual Studio environment, the application's assets folder must be set as working directory. (For Visual Studio, this is automatically configured by CMake). Alternatively, you can navigate to the build target or install folder and run the executable from there.

Universal Windows Platform

To generate build files for Universal Windows platform, you need to define the following two cmake variables:

  • CMAKE_SYSTEM_NAME=WindowsStore
  • CMAKE_SYSTEM_VERSION=< Windows SDK Version >

For example, to generate Visual Studio 2019 64-bit solution and project files in build/UWP64 folder, run the following command from the engine's root folder:

cmake -D CMAKE_SYSTEM_NAME=WindowsStore -D CMAKE_SYSTEM_VERSION=10.0 -S . -B ./build/UWP64 -G "Visual Studio 16 2019" -A x64

You can target specific SDK version by refining CMAKE_SYSTEM_VERSION, for instance:

cmake -D CMAKE_SYSTEM_NAME=WindowsStore -D CMAKE_SYSTEM_VERSION=10.0.16299.0 -S . -B ./build/UWP64 -G "Visual Studio 16 2019" -A x64

Set the desired project as startup project (by default, GLTF Viewer will be selected) and run it.

By default, appplications will run in D3D12 mode. You can select D3D11 or D3D12 using the following command line options: -mode D3D11, -mode D3D12.

Note: it is possible to generate solution that targets Windows 8.1 by defining CMAKE_SYSTEM_VERSION=8.1 cmake variable, but it will fail to build as it will use Visual Studio 2013 (v120) toolset that lacks proper c++11 support.

Linux

Your Linux environment needs to be set up for c++ development. If it already is, make sure your c++ tools are up to date as Diligent Engine uses modern c++ features (gcc/g++ 7 or later is recommended). You may need to install the following packages:

  1. gcc, make and other essential c/c++ tools:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
  1. cmake
sudo apt-get install cmake
  1. Other required packages:
sudo apt-get install libx11-dev
sudo apt-get install mesa-common-dev
sudo apt-get install mesa-utils
sudo apt-get install libgl-dev
sudo apt-get install python3-distutils

To configure Vulkan you will also need to:

  • Install latest Vulkan drivers and libraries for your GPU
  • Install Vulkan SDK
    • To make sure that you system is properly configured you can try to build and run samples from the SDK

To generate make files for debug configuration, run the following CMake command from the engine's root folder:

cmake -S . -B ./build/Linux64 -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug"

To build the engine, run the following command:

cmake --build ./build/Linux64

The engine's root folder contains Visual Studio Code settings files that configure the IDE to build the engine. You can run applications directly from the IDE. To run an application from the command line, the app's assets folder must be current directory.

Android

Please make sure that your machine is set up for Android development. Download Android Studio, install and configure the NDK and CMake and other required tools. If you are not using CMake version bundled with Android Studio, make sure your build files are properly configured. To verify that your environment is properly set up, try building the teapots sample as well as Vulkan Android tutorials.

Known issues:

  • If native build does not find python executable, add PYTHON_EXECUTABLE variable to CMake arguments in NativeApp's build.gradle file: -DPYTHON_EXECUTABLE=/Path/To/Your/Python36/python.exe
  • If native build messes up shader_list.h file, go to git and undo the changes.

Open DiligentSamples/Android folder with Android Studio to build and run tutorials and samples on Android.

By default, appplications will run in OpenGLES mode. To run them in Vulkan mode, add the following launch flags: --es mode vk (in Android Studio, go to Run->Edit Configurations menu)

MacOS

After you clone the repo, run the following command from the engine's root folder to generate Xcode project (you need to have CMake installed on the system):

cmake -S . -B ./build/MacOS -G "Xcode"

The project will be located in build/MacOS folder.

Configuring Vulkan Build Environment

By default there is no Vulkan implementation on MacOS. Diligent Engine loads Vulkan dynamically and can use a Vulkan Portability implementation such as MoltenVK or gfx-portability. Install VulkanSDK and make sure that your system is properly configured as described here. In particular, you may need to define the following environment variables (assuming that Vulkan SDK is installed at ~/LunarG/vulkansdk-macos and you want to use MoltenVK):

export VULKAN_SDK=~/LunarG/vulkansdk-macos/macOS
export PATH=$VULKAN_SDK/bin:$PATH
export DYLD_LIBRARY_PATH=$VULKAN_SDK/lib:$DYLD_LIBRARY_PATH
export VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json
export VK_LAYER_PATH=$VULKAN_SDK/share/vulkan/explicit_layer.d

Note that environment variables set in the shell are not seen by the applications launched from Launchpad or other desktop GUI. Thus to make sure that an application finds Vulkan libraries, it needs to be started from the command line. Due to the same reason, the xcode project file should also be opened from the shell using open command. With Xcode versions 7 and later, this behavior may need to be enabled first using the following command:

defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO

Please refer to this page for more details.

⚠️ DYLD_LIBRARY_PATH and LD_LIBRARY_PATH environment variables are ignored on MacOS unless System Integrity Protection is disabled (which generally is not recommended). In order for executables to find the Vulkan library, it must be in rpath. If VULKAN_SDK environment variable is set and points to correct location, Diligent Engine will configure the rpath for all applications automatically.

Last tested LunarG SDK version: 1.2.154.0.

iOS

Run the command below from the engine's root folder to generate Xcode project configured for iOS build:

cmake -S . -B ./build/iOS -DCMAKE_SYSTEM_NAME=iOS -G "Xcode"

If needed, you can provide iOS deployment target as well as other parameters, e.g.:

cmake -S . -B ./build/iOS -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -G "Xcode"

Open Xcode project file in build/IOS folder and build the engine. To run the applications on an iOS device, you will need to set appropriate development team in the project settings.

Configuring Vulkan Build Environment

To enable Vulkan on iOS, download and install VulkanSDK. There is no Vulkan loader on iOS, and Diligent Engine links directly with MoltenVK XCFramework (see MoltenVk install guide) that implements Vulkan on Metal. To enable Vulkan in Diligent Engine on iOS, specify the path to Vulkan SDK when running CMake, for example (assuming that Vulkan SDK is installed at /LunarG/vulkansdk-macos):

cmake -DCMAKE_SYSTEM_NAME=iOS -DVULKAN_SDK=/LunarG/vulkansdk-macos -S . -B ./build/iOS -G "Xcode"

By default, the engine links with MoltenVK XCFramework located in LunarG SDK. If this is not desired or an application wants to use a framework from a specific location, it can provide the full path to the framework via MoltenVK_FRAMEWORK CMake variable.

Refer to MoltenVK user guide for more information about MoltenVK installation and usage.

Last tested LunarG SDK version: 1.2.154.0.

Integrating Diligent Engine with Existing Build System

Diligent has modular structure, so for your project you can only use these submodules that implement the required functionality. The diagram below shows the dependencies between modules.

  Core
   |
   +------>Tools----------.
   |        |             |
   |        V             |
   +------->FX---------.  |
   |                   |  |
   |                   V  V
   '----------------->Samples

Your Project Uses Cmake

If your project uses CMake, adding Diligent Engine requires just few lines of code. Suppose that the directory structure looks like this:

|
+-DiligentCore
+-HelloDiligent.cpp

Then the following steps need to be done:

  • Call add_subdirectory(DiligentCore)
  • Add DiligentCore to the list of include directories
  • Add dependencies on the targets implementing required rendering backends

Below is an example of a CMake file:

cmake_minimum_required (VERSION 3.6)

project(HelloDiligent CXX)

add_subdirectory(DiligentCore)

add_executable(HelloDiligent WIN32 HelloDiligent.cpp)
target_compile_options(HelloDiligent PRIVATE -DUNICODE -DENGINE_DLL)
target_include_directories(HelloDiligent PRIVATE "DiligentCore")

target_link_libraries(HelloDiligent
PRIVATE
    Diligent-GraphicsEngineD3D11-shared
    Diligent-GraphicsEngineOpenGL-shared
    Diligent-GraphicsEngineD3D12-shared
    Diligent-GraphicsEngineVk-shared
)
copy_required_dlls(HelloDiligent)

copy_required_dlls() is a convenience function that copies shared libraries next to the executable so that the system can find and load them. Alternatively, you can link against static (as well as shared) versions of libraries using target_link_libraries() command. In this case there is no need to explicitly add DiligentCore to the list of include directories as the targets export all required include paths. Please also take a look at getting started tutorials for Windows and Linux.

Your Project Does Not Use Cmake

If your project doesn't use CMake, it is recommended to build libraries with CMake and add them to your build system. For Windows platforms, you can download the latest build artifacts from appveyor.

Global CMake installation directory is controlled by CMAKE_INTALL_PREFIX variable. Note that it defaults to /usr/local on UNIX and c:/Program Files/${PROJECT_NAME} on Windows, which may not be what you want. Use -D CMAKE_INSTALL_PREFIX=install to use local install folder instead:

cmake -S . -B ./build/Win64 -D CMAKE_INSTALL_PREFIX=install -G "Visual Studio 16 2019" -A x64

To install libraries and header files, run the following CMake command from the build folder:

cmake --build . --target install

DiligentCore installation directory will contain everything required to integrate the engine:

  • include subdirectory will contain all required header files. Add this directory to your include search directories.
  • lib subdirectory will contain static libraries.
  • bin subdirectory will contain dynamic libraries.

An easier way is to link with dynamic libraries. When linking statically, you will need to list DiligentCore as well as all third-party libraries used by the engine. Besides that, you will also need to specify platform-specific system libraries. For example, for Windows platform, the list of libraries your project will need to link against may look like this:

DiligentCore.lib glslang.lib HLSL.lib OGLCompiler.lib OSDependent.lib spirv-cross-core.lib SPIRV.lib SPIRV-Tools-opt.lib SPIRV-Tools.lib glew-static.lib GenericCodeGen.lib MachineIndependent.lib vulkan-1.lib dxgi.lib d3d11.lib d3d12.lib d3dcompiler.lib opengl32.lib

Vulkan libraries can be found in DiligentCore/ThirdParty/vulkan/libs directory.

Diligent Engine headers require one of the following platform macros to be defined as 1: PLATFORM_WIN32, PLATFORM_UNIVERSAL_WINDOWS, PLATFORM_ANDROID, PLATFORM_LINUX, PLATFORM_MACOS, PLATFORM_IOS.

You can control which components of the engine you want to install using the following CMake options: DILIGENT_INSTALL_CORE, DILIGENT_INSTALL_FX, DILIGENT_INSTALL_SAMPLES, and DILIGENT_INSTALL_TOOLS.

Another way to intergrate the engine is to generate build files (such as Visual Studio projects) and add them to your build system. Build customization described below can help tweak the settings for your specific needs.

Build Options

By default, all back-ends available on current platform are built. To disable specific back-ends, use the following options: DILIGENT_NO_DIRECT3D11, DILIGENT_NO_DIRECT3D12, DILIGENT_NO_OPENGL, DILIGENT_NO_VULKAN, DILIGENT_NO_METAL. The options can be set through cmake UI or from the command line as in the example below:

cmake -D DILIGENT_NO_DIRECT3D11=TRUE -S . -B ./build/Win64 -G "Visual Studio 16 2019" -A x64

Additionally, individual engine components can be enabled or disabled using the following options: DILIGENT_BUILD_TOOLS, DILIGENT_BUILD_FX, DILIGENT_BUILD_SAMPLES, DILIGENT_BUILD_DEMOS, DILIGENT_BUILD_UNITY_PLUGIN. If you only want to build SampleBase project, you can use DILIGENT_BUILD_SAMPLE_BASE_ONLY option.

By default Vulkan back-end is linked with glslang that enables compiling HLSL and GLSL shaders to SPIRV at run time. If run-time compilation is not required, glslang can be disabled with DILIGENT_NO_GLSLANG cmake option. Additionally, HLSL support in non-Direct3D backends can be disabled with DILIGENT_NO_HLSL option. Enabling the options significantly reduces the size of Vulkan and OpenGL back-end binaries, which may be especailly important for mobile applications.

Diligent Engine uses clang-format to ensure consistent formatting throught the code base. The validation can be disabled using DILIGENT_NO_FORMAT_VALIDATION CMake option. Note that any pool request will fail if formatting issues are found.

Customizing Build

Diligent Engine allows clients to customize build settings by providing configuration script file that defines the following optional cmake functions:

  • custom_configure_build() - defines global build properties such as build configurations, c/c++ compile flags, link flags etc.
  • custom_pre_configure_target() - defines custom settings for every target in the build and is called before the engine's build system starts configuring the target.
  • custom_post_configure_target() - called after the engine's build system has configured the target to let the client override properties set by the engine.

The path to the configuration script should be provided through BUILD_CONFIGURATION_FILE variable when running cmake and must be relative to the cmake root folder, for example:

cmake -D BUILD_CONFIGURATION_FILE=BuildConfig.cmake -S . -B ./build/Win64 -G "Visual Studio 16 2019" -A x64

Customizing global build settings with custom_configure_build() function

If defined, custom_configure_build() function is called before any build target is added. By default, cmake defines the following four configurations: Debug, Release, RelWithDebInfo, MinSizeRel. If you want, you can define your own build configurations by setting CMAKE_CONFIGURATION_TYPES variable. For instance, if you want to have only two configuration: Debug and ReleaseMT, add the following line to the custom_configure_build() function:

set(CMAKE_CONFIGURATION_TYPES Debug ReleaseMT CACHE STRING "Configuration types: Debug, ReleaseMT" FORCE)

The build system needs to know the list of debug and release (optimized) configurations, so the following two variables must also be set when CMAKE_CONFIGURATION_TYPES variable is defined:

set(DEBUG_CONFIGURATIONS DEBUG CACHE INTERNAL "" FORCE)
set(RELEASE_CONFIGURATIONS RELEASEMT CACHE INTERNAL "" FORCE)

Note that due to cmake specifics, configuration names listed in DEBUG_CONFIGURATIONS and RELEASE_CONFIGURATIONS must be capitalized.

If you define any configuration other than four standard cmake ones, you also need to set the following variables, for every new configuration:

  • CMAKE_C_FLAGS_<Config> - c compile flags
  • CMAKE_CXX_FLAGS_<Config> - c++ compile flags
  • CMAKE_EXE_LINKER_FLAGS_<Config> - executable link flags
  • CMAKE_SHARED_LINKER_FLAGS_<Config> - shared library link flags

For instance:

set(CMAKE_C_FLAGS_RELEASEMT "/MT" CACHE INTERNAL "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASEMT "/MT" CACHE INTERNAL "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS_RELEASEMT "/OPT:REF" CACHE INTERNAL "" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_RELEASEMT "/OPT:REF" CACHE INTERNAL "" FORCE)

Below is an example of custom_configure_build() function:

function(custom_configure_build)
    if(CMAKE_CONFIGURATION_TYPES)
        # Debug configurations
        set(DEBUG_CONFIGURATIONS DEBUG CACHE INTERNAL "" FORCE)
        # Release (optimized) configurations
        set(RELEASE_CONFIGURATIONS RELEASEMT CACHE INTERNAL "" FORCE)
        # CMAKE_CONFIGURATION_TYPES variable defines build configurations generated by cmake
        set(CMAKE_CONFIGURATION_TYPES Debug ReleaseMT CACHE STRING "Configuration types: Debug, ReleaseMT" FORCE)

        set(CMAKE_CXX_FLAGS_RELEASEMT "/MT" CACHE INTERNAL "" FORCE)
        set(CMAKE_C_FLAGS_RELEASEMT "/MT" CACHE INTERNAL "" FORCE)
        set(CMAKE_EXE_LINKER_FLAGS_RELEASEMT "/OPT:REF" CACHE INTERNAL "" FORCE)
        set(CMAKE_SHARED_LINKER_FLAGS_RELEASEMT "/OPT:REF" CACHE INTERNAL "" FORCE)
    endif()
endfunction()

Customizing individual target build settings with custom_pre_configure_target() and custom_post_configure_target() functions

If defined, custom_pre_configure_target() is called for every target created by the build system and allows configuring target-specific properties.

By default, the build system sets some target properties. If custom_pre_configure_target() sets all required properties, it can tell the build system that no further processing is required by setting TARGET_CONFIGURATION_COMPLETE parent scope variable to TRUE:

set(TARGET_CONFIGURATION_COMPLETE TRUE PARENT_SCOPE)

The following is an example of custom_pre_configure_target() function:

function(custom_pre_configure_target TARGET)
    set_target_properties(${TARGET} PROPERTIES
        STATIC_LIBRARY_FLAGS_RELEASEMT /LTCG
    )
    set(TARGET_CONFIGURATION_COMPLETE TRUE PARENT_SCOPE)   
endfunction()

If the client only needs to override some settings, it may define custom_post_configure_target() function that is called after the engine has completed configuring the target, for example:

function(custom_post_configure_target TARGET)
    set_target_properties(${TARGET} PROPERTIES
        CXX_STANDARD 17
    )
endfunction()

Getting started with the API

Please refer to this page. Also, tutorials and samples listed below is a good place to start.

Tutorials

Tutorial Screenshot Description
01 - Hello Triangle This tutorial shows how to render simple triangle using Diligent Engine API.
02 - Cube This tutorial demonstrates how to render an actual 3D object, a cube. It shows how to load shaders from files, create and use vertex, index and uniform buffers.
03 - Texturing This tutorial demonstrates how to apply a texture to a 3D object. It shows how to load a texture from file, create shader resource binding object and how to sample a texture in the shader.
03 - Texturing-C This tutorial is identical to Tutorial03, but is implemented using C API.
04 - Instancing This tutorial demonstrates how to use instancing to render multiple copies of one object using unique transformation matrix for every copy.
05 - Texture Array This tutorial demonstrates how to combine instancing with texture arrays to use unique texture for every instance.
06 - Multithreading This tutorial shows how to generate command lists in parallel from multiple threads.
07 - Geometry Shader This tutorial shows how to use geometry shader to render smooth wireframe.
08 - Tessellation This tutorial shows how to use hardware tessellation to implement simple adaptive terrain rendering algorithm.
09 - Quads This tutorial shows how to render multiple 2D quads, frequently swithcing textures and blend modes.
10 - Data Streaming This tutorial shows dynamic buffer mapping strategy using MAP_FLAG_DISCARD and MAP_FLAG_DO_NOT_SYNCHRONIZE flags to efficiently stream varying amounts of data to GPU.
11 - Resource Updates This tutorial demonstrates different ways to update buffers and textures in Diligent Engine and explains important internal details and performance implications related to each method.
12 - Render Target This tutorial demonstrates how to render a 3d cube into an offscreen render target and do a simple post-processing effect.
13 - Shadow Map This tutorial demonstrates how to render basic shadows using a shadow map.
14 - Compute Shader This tutorial shows how to implement a simple particle simulation system using compute shaders.
15 - Multiple Windows This tutorial demonstrates how to use Diligent Engine to render to multiple windows.
16 - Bindless Resources This tutorial shows how to implement bindless resources, a technique that leverages dynamic shader resource indexing feature enabled by the next-gen APIs to significantly improve rendering performance.
17 - MSAA This tutorial demonstrates how to use multisample anti-aliasing (MSAA) to make geometrical edges look smoother and more temporarily stable.
18 - Queries This tutorial demonstrates how to use queries to retrieve various information about the GPU operation, such as the number of primitives rendered, command processing duration, etc.
19 - Render Passes This tutorial demonstrates how to use the render passes API to implement simple deferred shading.
20 - Mesh Shader This tutorial demonstrates how to use amplification and mesh shaders, the new programmable stages, to implement view frustum culling and object LOD calculation on the GPU.
21 - Ray Tracing This tutorial demonstrates the basics of using ray tracing API in Diligent Engine.

Samples

Sample Screenshot Description
Atmosphere Sample This sample demonstrates how to integrate Epipolar Light Scattering post-processing effect into an application to render physically-based atmosphere.
GLTF Viewer This sample demonstrates how to use the Asset Loader and GLTF PBR Renderer to load and render GLTF models.
Shadows This sample demonstrates how to use the Shadowing component to render high-quality shadows.
Dear ImGui Demo This sample demonstrates the integration of the engine with dear imgui UI library.
Nuklear Demo This sample demonstrates the integration of the engine with nuklear UI library.
Hello AR This sample demonstrates how to use Diligent Engine in a basic Android AR application.

Demos

Project Screenshot Description
Asteroids Performance Benchmark This demo is designed to be a performance benchmark and is based on this demo developed by Intel. It renders 50,000 unique textured asteroids. Every asteroid is a combination of one of 1000 unique meshes and one of 10 unique textures. The sample uses original D3D11 and D3D12 native implementations, and adds implementation using Diligent Engine API to allow comparing performance of different rendering modes.
Unity Integration Demo This project demonstrates integration of Diligent Engine with Unity

High-Level Rendering Components

High-level rendering functionality is implemented by DiligentFX module. The following components are now available:

Products using Diligent Engine

We would appreciate it if you could send us a link in case your product uses Diligent Engine.

  • Vrmac Graphics: A cross-platform graphics library for .NET
  • Your product here (please submit a PR)!

License

See Apache 2.0 license.

This project has some third-party dependencies, each of which may have independent licensing:

  • Core module:
    • SPIRV-Cross: SPIRV parsing and cross-compilation tools.
    • SPIRV-Headers: SPIRV header files.
    • SPIRV-Tools: SPIRV optimization and validation tools.
    • glslang: Khronos reference compiler and validator for GLSL, ESSL, and HLSL.
    • glew: OpenGL Extension Wrangler Library.
  • Tools module:
    • libjpeg: C library for reading and writing JPEG image files.
    • libtiff: TIFF Library and Utilities.
    • libpng: Official PNG reference library.
    • zlib: A compression library.
    • tinygltf: A header only C++11 glTF 2.0 library.
    • dear imgui: A bloat-free immediate mode graphical user interface library.

Contributing

To contribute your code, submit a Pull Request to this repository. Diligent Engine is licensed under the Apache 2.0 license that guarantees that content in the DiligentEngine repository is free of Intellectual Property encumbrances. In submitting any content to this repository, you license that content under the same terms, and you agree that the content is free of any Intellectual Property claims and you have the right to license it under those terms.

Diligent Engine uses clang-format to ensure consistent source code style throught the code base. The format is validated by appveyor and travis for each commit and pull request, and the build will fail if any code formatting issue is found. Please refer to this page for instructions on how to set up clang-format and automatic code formatting.

References

API Reference

Release History

See Release History


diligentgraphics.com

Diligent Engine on Twitter Diligent Engine on Facebook

Comments
  • Tutorial00_HelloLinux segfault in release mode

    Tutorial00_HelloLinux segfault in release mode

    For me Tutorial00_HelloLinux segfaults when built in release mode. However the other samples I tried run just fine.

    Here's what I get with gdb:

    (gdb) r
    Starting program: /home/hhyyrylainen/Projects/DiligentEngine/build/DiligentSamples/Tutorials/Tutorial00_HelloLinux/Tutorial00_HelloLinux 
    Missing separate debuginfos, use: dnf debuginfo-install glibc-2.29-22.fc30.x86_64
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib64/libthread_db.so.1".
    Diligent Engine: Info: User-defined allocator is not provided. Using default allocator.
    warning: Loadable section ".note.gnu.property" outside of ELF segments
    warning: Loadable section ".note.gnu.property" outside of ELF segments
    warning: Loadable section ".note.gnu.property" outside of ELF segments
    warning: Loadable section ".note.gnu.property" outside of ELF segments
    warning: Loadable section ".note.gnu.property" outside of ELF segments
    warning: Loadable section ".note.gnu.property" outside of ELF segments
    Diligent Engine: Info: Using physical device 'GeForce GTX 1080 Ti'
    Diligent Engine: Info: GPU dynamic heap created. Total buffer size: 8.00 MB
    Diligent Engine: Info: Allocated new descriptor pool
    Diligent Engine: Info: VulkanMemoryManager 'Global resource memory manager': created new device-local page. (16.00 MB, type idx: 7). Current allocated size: 16.00 MB
    Diligent Engine: Info: Requested color buffer format TEX_FORMAT_RGBA8_UNORM_SRGB is not supported by the surface and will be replaced with TEX_FORMAT_BGRA8_UNORM_SRGB
    
    Program received signal SIGSEGV, Segmentation fault.
    Diligent::RefCntAutoPtr<Diligent::IDeviceContext>::DoublePtrHelper::~DoublePtrHelper (this=0x7fffffffce80, __in_chrg=<optimized out>)
        at /home/hhyyrylainen/Projects/DiligentEngine/DiligentSamples/Tutorials/Tutorial00_HelloLinux/../../../DiligentCore/Common/interface/RefCntAutoPtr.h:240
    240	            if (m_pAutoPtr && static_cast<T*>(*m_pAutoPtr) != NewRawPtr)
    Missing separate debuginfos, use: dnf debuginfo-install elfutils-libelf-0.177-1.fc30.x86_64 expat-2.2.8-1.fc30.x86_64 libX11-1.6.7-1.fc30.x86_64 libX11-xcb-1.6.7-1.fc30.x86_64 libXau-1.0.9-1.fc30.x86_64 libXext-1.3.3-11.fc30.x86_64 libdrm-2.4.99-1.fc30.x86_64 libedit-3.1-27.20190324cvs.fc30.x86_64 libffi-3.1-19.fc30.x86_64 libgcc-9.2.1-1.fc30.x86_64 libglvnd-glx-1.1.0-4.gitf92208b.fc30.x86_64 libstdc++-9.2.1-1.fc30.x86_64 libwayland-client-1.17.0-1.fc30.x86_64 libxcb-1.13.1-2.fc30.x86_64 libxshmfence-1.3-4.fc30.x86_64 llvm-libs-8.0.0-6.fc30.x86_64 mesa-vulkan-drivers-19.1.8-1.fc30.x86_64 ncurses-libs-6.1-10.20180923.fc30.x86_64 vulkan-loader-1.1.114.0-1.fc30.x86_64 zlib-1.2.11-19.fc30.x86_64
    (gdb) bt
    #0  Diligent::RefCntAutoPtr<Diligent::IDeviceContext>::DoublePtrHelper::~DoublePtrHelper (this=0x7fffffffce80, __in_chrg=<optimized out>)
        at /home/hhyyrylainen/Projects/DiligentEngine/DiligentSamples/Tutorials/Tutorial00_HelloLinux/../../../DiligentCore/Common/interface/RefCntAutoPtr.h:240
    #1  Tutorial00App::InitVulkan ([email protected]=0x41a5f0, xcbInfo=...)
        at /home/hhyyrylainen/Projects/DiligentEngine/DiligentSamples/Tutorials/Tutorial00_HelloLinux/src/Tutorial00_HelloLinux.cpp:211
    #2  0x0000000000401d2d in xcb_main ()
        at /home/hhyyrylainen/Projects/DiligentEngine/DiligentSamples/Tutorials/Tutorial00_HelloLinux/src/Tutorial00_HelloLinux.cpp:399
    #3  0x0000000000401930 in main (argc=<optimized out>, argv=<optimized out>)
        at /home/hhyyrylainen/Projects/DiligentEngine/DiligentSamples/Tutorials/Tutorial00_HelloLinux/src/Tutorial00_HelloLinux.cpp:663
    (gdb) p *this
    $1 = {
      NewRawPtr = 0x0, 
      m_pAutoPtr = 0x10028001d
    }
    (gdb) info locals
    No locals.
    (gdb) frame 1
    #1  Tutorial00App::InitVulkan ([email protected]=0x41a5f0, xcbInfo=...)
        at /home/hhyyrylainen/Projects/DiligentEngine/DiligentSamples/Tutorials/Tutorial00_HelloLinux/src/Tutorial00_HelloLinux.cpp:211
    211	        pFactoryVk->CreateDeviceAndContextsVk(EngVkAttribs, &m_pDevice, &m_pImmediateContext);
    (gdb) p *this
    $2 = {
      m_pDevice = {
        m_pObject = 0x7a8b80
      }, 
      m_pImmediateContext = {
        m_pObject = 0xa9b1c0
      }, 
      m_pSwapChain = {
        m_pObject = 0xab63d0
      }, 
      m_pPSO = {
        m_pObject = 0x0
      }, 
      m_DeviceType = Diligent::DeviceType::OpenGL
    }
    
    

    I tried with opengl using the options -mode gl but that didn't change the renderer.

    And this is what valgrind says:

    $ valgrind ./Tutorial00_HelloLinux 
    ==23718== Memcheck, a memory error detector
    ==23718== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
    ==23718== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
    ==23718== Command: ./Tutorial00_HelloLinux
    ==23718== 
    Diligent Engine: Info: User-defined allocator is not provided. Using default allocator.
    Diligent Engine: Info: Using physical device 'GeForce GTX 1080 Ti'
    Diligent Engine: Info: GPU dynamic heap created. Total buffer size: 8.00 MB
    ==23718== Conditional jump or move depends on uninitialised value(s)
    ==23718==    at 0x4D7C738: Diligent::StateObjectsRegistry<Diligent::SamplerDesc>::Add(Diligent::SamplerDesc const&, Diligent::IDeviceObject*) (StateObjectsRegistry.h:98)
    ==23718==    by 0x4D775C9: operator() (RenderDeviceVkImpl.cpp:542)
    ==23718==    by 0x4D775C9: CreateDeviceObject<Diligent::ISampler, Diligent::SamplerDesc, Diligent::RenderDeviceVkImpl::CreateSampler(const Diligent::SamplerDesc&, Diligent::ISampler**)::<lambda()> > (RenderDeviceBase.h:471)
    ==23718==    by 0x4D775C9: Diligent::RenderDeviceVkImpl::CreateSampler(Diligent::SamplerDesc const&, Diligent::ISampler**) (RenderDeviceVkImpl.cpp:532)
    ==23718==    by 0x4D88487: operator() (ShaderResourceLayoutVk.cpp:397)
    ==23718==    by 0x4D88487: operator() (ShaderResourceLayoutVk.cpp:479)
    ==23718==    by 0x4D88487: ProcessResources<Diligent::ShaderResourceLayoutVk::Initialize(Diligent::IRenderDevice*, Diligent::Uint32, Diligent::ShaderResourceLayoutVk*, std::shared_ptr<const Diligent::SPIRVShaderResources>*, Diligent::IMemoryAllocator&, const Diligent::PipelineResourceLayoutDesc&, std::vector<unsigned int>*, Diligent::PipelineLayout&)::<lambda(const Diligent::SPIRVShaderResourceAttribs&, Diligent::Uint32)>, Diligent::ShaderResourceLayoutVk::Initialize(Diligent::IRenderDevice*, Diligent::Uint32, Diligent::ShaderResourceLayoutVk*, std::shared_ptr<const Diligent::SPIRVShaderResources>*, Diligent::IMemoryAllocator&, const Diligent::PipelineResourceLayoutDesc&, std::vector<unsigned int>*, Diligent::PipelineLayout&)::<lambda(const Diligent::SPIRVShaderResourceAttribs&, Diligent::Uint32)>, Diligent::ShaderResourceLayoutVk::Initialize(Diligent::IRenderDevice*, Diligent::Uint32, Diligent::ShaderResourceLayoutVk*, std::shared_ptr<const Diligent::SPIRVShaderResources>*, Diligent::IMemoryAllocator&, const Diligent::PipelineResourceLayoutDesc&, std::vector<unsigned int>*, Diligent::PipelineLayout&)::<lambda(const Diligent::SPIRVShaderResourceAttribs&, Diligent::Uint32)>, Diligent::ShaderResourceLayoutVk::Initialize(Diligent::IRenderDevice*, Diligent::Uint32, Diligent::ShaderResourceLayoutVk*, std::shared_ptr<const Diligent::SPIRVShaderResources>*, Diligent::IMemoryAllocator&, const Diligent::PipelineResourceLayoutDesc&, std::vector<unsigned int>*, Diligent::PipelineLayout&)::<lambda(const Diligent::SPIRVShaderResourceAttribs&, Diligent::Uint32)>, Diligent::ShaderResourceLayoutVk::Initialize(Diligent::IRenderDevice*, Diligent::Uint32, Diligent::ShaderResourceLayoutVk*, std::shared_ptr<const Diligent::SPIRVShaderResources>*, Diligent::IMemoryAllocator&, const Diligent::PipelineResourceLayoutDesc&, std::vector<unsigned int>*, Diligent::PipelineLayout&)::<lambda(const Diligent::SPIRVShaderResourceAttribs&, Diligent::Uint32)>, Diligent::ShaderResourceLayoutVk::Initialize(Diligent::IRenderDevice*, Diligent::Uint32, Diligent::ShaderResourceLayoutVk*, std::shared_ptr<const Diligent::SPIRVShaderResources>*, Diligent::IMemoryAllocator&, const Diligent::PipelineResourceLayoutDesc&, std::vector<unsigned int>*, Diligent::PipelineLayout&)::<lambda(const Diligent::SPIRVShaderResourceAttribs&, Diligent::Uint32)>, Diligent::ShaderResourceLayoutVk::Initialize(Diligent::IRenderDevice*, Diligent::Uint32, Diligent::ShaderResourceLayoutVk*, std::shared_ptr<const Diligent::SPIRVShaderResources>*, Diligent::IMemoryAllocator&, const Diligent::PipelineResourceLayoutDesc&, std::vector<unsigned int>*, Diligent::PipelineLayout&)::<lambda(const Diligent::SPIRVShaderResourceAttribs&, Diligent::Uint32)> > (SPIRVShaderResources.h:283)
    ==23718==    by 0x4D88487: Diligent::ShaderResourceLayoutVk::Initialize(Diligent::IRenderDevice*, unsigned int, Diligent::ShaderResourceLayoutVk*, std::shared_ptr<Diligent::SPIRVShaderResources const>*, Diligent::IMemoryAllocator&, Diligent::PipelineResourceLayoutDesc const&, std::vector<unsigned int, std::allocator<unsigned int> >*, Diligent::PipelineLayout&) (ShaderResourceLayoutVk.cpp:460)
    ==23718==    by 0x4D6968B: Diligent::PipelineStateVkImpl::PipelineStateVkImpl(Diligent::IReferenceCounters*, Diligent::RenderDeviceVkImpl*, Diligent::PipelineStateDesc const&) (PipelineStateVkImpl.cpp:182)
    ==23718==    by 0x4D77110: operator()<Diligent::RenderDeviceVkImpl*, const Diligent::PipelineStateDesc&> (RefCountedObjectImpl.h:660)
    ==23718==    by 0x4D77110: operator() (RenderDeviceVkImpl.cpp:433)
    ==23718==    by 0x4D77110: CreateDeviceObject<Diligent::IPipelineState, Diligent::PipelineStateDesc, Diligent::RenderDeviceVkImpl::CreatePipelineState(const Diligent::PipelineStateDesc&, Diligent::IPipelineState**)::<lambda()> > (RenderDeviceBase.h:471)
    ==23718==    by 0x4D77110: Diligent::RenderDeviceVkImpl::CreatePipelineState(Diligent::PipelineStateDesc const&, Diligent::IPipelineState**) (RenderDeviceVkImpl.cpp:429)
    ==23718==    by 0x4D636A4: Diligent::GenerateMipsVkHelper::CreatePSOs(Diligent::TEXTURE_FORMAT) (GenerateMipsVkHelper.cpp:165)
    ==23718==    by 0x4D63FDA: Diligent::GenerateMipsVkHelper::FindPSOs(Diligent::TEXTURE_FORMAT) (GenerateMipsVkHelper.cpp:200)
    ==23718==    by 0x4D64165: Diligent::GenerateMipsVkHelper::GenerateMipsVkHelper(Diligent::RenderDeviceVkImpl&) (GenerateMipsVkHelper.cpp:183)
    ==23718==    by 0x4D4DF2A: Diligent::EngineFactoryVkImpl::AttachToVulkanDevice(std::shared_ptr<VulkanUtilities::VulkanInstance>, std::unique_ptr<VulkanUtilities::VulkanPhysicalDevice, std::default_delete<VulkanUtilities::VulkanPhysicalDevice> >, std::shared_ptr<VulkanUtilities::VulkanLogicalDevice>, unsigned long, Diligent::ICommandQueueVk**, Diligent::EngineVkCreateInfo const&, Diligent::IRenderDevice**, Diligent::IDeviceContext**) (EngineFactoryVk.cpp:265)
    ==23718==    by 0x4D4F420: Diligent::EngineFactoryVkImpl::CreateDeviceAndContextsVk(Diligent::EngineVkCreateInfo const&, Diligent::IRenderDevice**, Diligent::IDeviceContext**) (EngineFactoryVk.cpp:209)
    ==23718==    by 0x40259D: Tutorial00App::InitVulkan(XCBInfo&) (Tutorial00_HelloLinux.cpp:211)
    ==23718==    by 0x401D2C: xcb_main() (Tutorial00_HelloLinux.cpp:399)
    ==23718== 
    ==23718== Conditional jump or move depends on uninitialised value(s)
    ==23718==    at 0xF719D7A: ??? (in /usr/lib64/libnvidia-glvkspirv.so.440.31)
    ==23718==    by 0xF710FD9: _nv002nvvm (in /usr/lib64/libnvidia-glvkspirv.so.440.31)
    ==23718==    by 0xC539E6D: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC53B3D7: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4C89A5: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4C8F2C: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC549899: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC54A38A: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4D3C22: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4DD556: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4EED7E: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4FEC0F: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718== 
    ==23718== Use of uninitialised value of size 8
    ==23718==    at 0xC130552: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC135B4A: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC136849: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC138A9B: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC138C12: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC138D21: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC169564: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC5421C9: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4C8C49: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4C8F2C: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC549899: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC54A38A: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718== 
    ==23718== Use of uninitialised value of size 8
    ==23718==    at 0xC13057B: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC135B4A: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC136849: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC138A9B: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC138C12: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC138D21: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC169564: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC5421C9: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4C8C49: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4C8F2C: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC549899: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC54A38A: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718== 
    
    -- this repeats a bunch of times --
    
    
    ==23718== Syscall param write(buf) points to uninitialised byte(s)
    ==23718==    at 0x5874608: write (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0x580423C: [email protected]@GLIBC_2.2.5 (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0x5803595: new_do_write (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0x5805388: [email protected]@GLIBC_2.2.5 (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0x58048E5: [email protected]@GLIBC_2.2.5 (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0x57F9388: fwrite (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0xC16ACE7: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC16D4D6: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC169458: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC5421C9: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4C8C49: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC4C8F2C: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==  Address 0xe876234 is 52 bytes inside a block of size 4,096 alloc'd
    ==23718==    at 0x483880B: malloc (vg_replace_malloc.c:309)
    ==23718==    by 0x57F7F13: _IO_file_doallocate (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0x580653F: _IO_doallocbuf (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0x58057F7: [email protected]@GLIBC_2.2.5 (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0x58048E5: [email protected]@GLIBC_2.2.5 (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0x57F9388: fwrite (in /usr/lib64/libc-2.29.so)
    ==23718==    by 0xC1B4CB8: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC16B2DE: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC16CFD0: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC16D1B4: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC16D694: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718==    by 0xC1697C6: ??? (in /usr/lib64/libnvidia-glcore.so.440.31)
    ==23718== 
    Diligent Engine: Info: Allocated new descriptor pool
    Diligent Engine: Info: VulkanMemoryManager 'Global resource memory manager': created new device-local page. (16.00 MB, type idx: 7). Current allocated size: 16.00 MB
    Diligent Engine: Info: Requested color buffer format TEX_FORMAT_RGBA8_UNORM_SRGB is not supported by the surface and will be replaced with TEX_FORMAT_BGRA8_UNORM_SRGB
    ==23718== Invalid read of size 8
    ==23718==    at 0x4026A8: operator Diligent::IDeviceContext* (RefCntAutoPtr.h:211)
    ==23718==    by 0x4026A8: ~DoublePtrHelper (RefCntAutoPtr.h:240)
    ==23718==    by 0x4026A8: Tutorial00App::InitVulkan(XCBInfo&) (Tutorial00_HelloLinux.cpp:211)
    ==23718==    by 0x401D2C: xcb_main() (Tutorial00_HelloLinux.cpp:399)
    ==23718==    by 0x40192F: main (Tutorial00_HelloLinux.cpp:663)
    ==23718==  Address 0x10028001d is not stack'd, malloc'd or (recently) free'd
    ==23718== 
    ==23718== 
    ==23718== Process terminating with default action of signal 11 (SIGSEGV): dumping core
    ==23718==  Access not within mapped region at address 0x10028001D
    ==23718==    at 0x4026A8: operator Diligent::IDeviceContext* (RefCntAutoPtr.h:211)
    ==23718==    by 0x4026A8: ~DoublePtrHelper (RefCntAutoPtr.h:240)
    ==23718==    by 0x4026A8: Tutorial00App::InitVulkan(XCBInfo&) (Tutorial00_HelloLinux.cpp:211)
    ==23718==    by 0x401D2C: xcb_main() (Tutorial00_HelloLinux.cpp:399)
    ==23718==    by 0x40192F: main (Tutorial00_HelloLinux.cpp:663)
    ==23718==  If you believe this happened as a result of a stack
    ==23718==  overflow in your program's main thread (unlikely but
    ==23718==  possible), you can try to increase the size of the
    ==23718==  main thread stack using the --main-stacksize= flag.
    ==23718==  The main thread stack size used in this run was 8388608.
    ==23718== 
    ==23718== HEAP SUMMARY:
    ==23718==     in use at exit: 15,802,363 bytes in 8,049 blocks
    ==23718==   total heap usage: 642,329 allocs, 634,280 frees, 1,533,417,906 bytes allocated
    ==23718== 
    ==23718== LEAK SUMMARY:
    ==23718==    definitely lost: 33,004 bytes in 29 blocks
    ==23718==    indirectly lost: 241,956 bytes in 1,315 blocks
    ==23718==      possibly lost: 360,141 bytes in 754 blocks
    ==23718==    still reachable: 15,167,262 bytes in 5,951 blocks
    ==23718==                       of which reachable via heuristic:
    ==23718==                         newarray           : 28,632 bytes in 10 blocks
    ==23718==                         multipleinheritance: 312 bytes in 3 blocks
    ==23718==         suppressed: 0 bytes in 0 blocks
    ==23718== Rerun with --leak-check=full to see details of leaked memory
    ==23718== 
    ==23718== Use --track-origins=yes to see where uninitialised values come from
    ==23718== For lists of detected and suppressed errors, rerun with: -s
    ==23718== ERROR SUMMARY: 307200 errors from 129 contexts (suppressed: 1 from 1)
    

    I just freshly cloned and ran git submodule update --init --recursive.

    Other info:

    • Fedora release 30
    • gcc (GCC) 9.2.1, cmake version 3.14.5
    • GeForce GTX 1080 Ti driver version: 440.31
    opened by hhyyrylainen 43
  • crash on CMake 3.15 + Visual Studio 2019

    crash on CMake 3.15 + Visual Studio 2019

    Hi, i'm building your project[from git] on cmake 3.15.0[without dx12,unity and metal], on visual studio 2019(toolset 2017 x64, 8.1SDK) on windows 8.1 and in debug everything works fine, but in release it crashes[every single tutorial] here's log: Diligent Engine: Info: Using physical device 'GeForce GTX 1080' Exception thrown at 0x00007FFE0B3592E0 (GraphicsEngineVk_64r.dll) in Tutorial00_HelloWin32.exe: 0xC000001D: Illegal Instruction. Unhandled exception at 0x00007FFE0B3592E0 (GraphicsEngineVk_64r.dll) in Tutorial00_HelloWin32.exe: 0xC000001D: Illegal Instruction. I think it might be related to some config issues from cmake. Done a full rebuild and cmake clean/configure/generate didn't help. Error happens here: (VulkanDynamicHeap.cpp(80) MemAlloc.memoryTypeIndex = PhysicalDevice.GetMemoryTypeIndex(MemReqs.memoryTypeBits, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);

    Full stack: [Inline Frame] GraphicsEngineVk_64r.dll!VulkanUtilities::VulkanPhysicalDevice::GetMemoryTypeIndex(unsigned int) C++ GraphicsEngineVk_64r.dll!Diligent::VulkanDynamicMemoryManager::VulkanDynamicMemoryManager(Diligent::IMemoryAllocator & Allocator, Diligent::RenderDeviceVkImpl & DeviceVk, unsigned int Size, unsigned __int64) Line 80 C++

    GraphicsEngineVk_64r.dll!Diligent::RenderDeviceVkImpl::RenderDeviceVkImpl(Diligent::IReferenceCounters * pRefCounters, Diligent::IMemoryAllocator & RawMemAllocator, Diligent::IEngineFactory * pEngineFactory, const Diligent::EngineVkCreateInfo & EngineCI, unsigned __int64 CommandQueueCount, Diligent::ICommandQueueVk * * CmdQueues, std::shared_ptrVulkanUtilities::VulkanInstance Instance, std::unique_ptr<VulkanUtilities::VulkanPhysicalDevice,std::default_deleteVulkanUtilities::VulkanPhysicalDevice > PhysicalDevice, std::shared_ptrVulkanUtilities::VulkanLogicalDevice LogicalDevice) Line 126 C++ GraphicsEngineVk_64r.dll!Diligent::MakeNewRCObjDiligent::RenderDeviceVkImpl,Diligent::IMemoryAllocator::operator()<Diligent::IMemoryAllocator &,Diligent::EngineFactoryVkImpl *,Diligent::EngineVkCreateInfo const &,unsigned _int64 &,Diligent::ICommandQueueVk * * &,std::shared_ptrVulkanUtilities::VulkanInstance &,std::unique_ptr<VulkanUtilities::VulkanPhysicalDevice,std::default_deleteVulkanUtilities::VulkanPhysicalDevice >,std::shared_ptrVulkanUtilities::VulkanLogicalDevice &>(Diligent::IMemoryAllocator & <CtorArgs_0>, Diligent::EngineFactoryVkImpl * && <CtorArgs_1>, const Diligent::EngineVkCreateInfo & <CtorArgs_2>, unsigned int64 & <CtorArgs_3>, Diligent::ICommandQueueVk * * & <CtorArgs_4>, std::shared_ptrVulkanUtilities::VulkanInstance & <CtorArgs_5>, std::unique_ptr<VulkanUtilities::VulkanPhysicalDevice,std::default_deleteVulkanUtilities::VulkanPhysicalDevice > && <CtorArgs_6>, std::shared_ptrVulkanUtilities::VulkanLogicalDevice & <CtorArgs_7>) Line 647 C++ GraphicsEngineVk_64r.dll!Diligent::EngineFactoryVkImpl::AttachToVulkanDevice(std::shared_ptrVulkanUtilities::VulkanInstance Instance, std::unique_ptr<VulkanUtilities::VulkanPhysicalDevice,std::default_deleteVulkanUtilities::VulkanPhysicalDevice > PhysicalDevice, std::shared_ptrVulkanUtilities::VulkanLogicalDevice LogicalDevice, unsigned int64 CommandQueueCount, Diligent::ICommandQueueVk * * ppCommandQueues, const Diligent::EngineVkCreateInfo & EngineCI, Diligent::IRenderDevice * * ppDevice, Diligent::IDeviceContext * * ppContexts) Line 254 C++ GraphicsEngineVk_64r.dll!Diligent::EngineFactoryVkImpl::CreateDeviceAndContextsVk(const Diligent::EngineVkCreateInfo & EngineCI, Diligent::IRenderDevice * * ppDevice, Diligent::IDeviceContext * * ppContexts) Line 209 C++ Tutorial00_HelloWin32.exe!Tutorial00App::InitializeDiligentEngine(HWND * NativeWindowHandle) Line 208 C++ Tutorial00_HelloWin32.exe!WinMain(HINSTANCE * instance, HINSTANCE * __formal, char * __formal, int cmdShow) Line 431 C++

    opened by e3dalive2 31
  • Linux Fedora 29 crashing

    Linux Fedora 29 crashing

    I want to test Diligent work on Linux Fedora 29 version After compiling everything and running OpenGL mode , I have the follow error Diligent Engine: ERROR: Failed to retrieve a framebuffer config Segmentation fault (core dumped) This is as result of failed from glXChooseFBConfig call

    The only sample that works is a simple triangle that also working in Vulkan mode that is not fully supported on this hardware that Im running . The hardware is intel NUC D54250WYKH model with intel hd 5000 graphics card .

    The Unigine(Heaven) benchmark is working (8Hz frame rate ) and also mesa OpenGL samples working .

    Also I tried to run with Visual Studio Code to debug, but Im not geting hit on any breakpoints when run Debugger .

    opened by olegviz 28
  • Linking Issues

    Linking Issues

    Hello I'm having issues compiling my sample application. Im using CMake to generate a Makefile. The compilation is fine, but the linker throws an error. My system information is as follows

    • OS: Kubuntu 20.04
    • Build tools and configuration: Cmake, g++, makefile
    • GPU and driver version: NVIDIA proprietary 470.82.00
    • Backend being used: Vulkan

    CMAKE FILE #define versions and standards cmake_minimum_required(VERSION 3.10) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON)

    #define the project name project(MysticalMana VERSION 1.0)

    #locate UNIX and WIN specific libs if(UNIX) find_library(DL dl) find_library(EX11 X11) find_library(PTHREAD pthread) find_library(DILIGENTLINUX Diligent-LinuxPlatform PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) elseif(WIN32) find_library(DILIGENTWIN32 Diligent-Win32Platform PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" REQUIRED)
    endif()

    find_library(DILIGENTSHADERTOOLS Diligent-ShaderTools PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTHLSL2GLSL Diligent-HLSL2GLSLConverterLib PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTPRIMITIVES Diligent-Primitives PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTGRAPHICSENGINE Diligent-GraphicsEngine PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTACCESSORIES Diligent-GraphicsAccessories PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTCOMMON Diligent-Common PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTBASICPLATFORM Diligent-BasicPlatform PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(GLFW glfw3 PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(ASSIMP assimp assimp-vc142-mtd PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(GENERICCODEGEN GenericCodeGen GenericCodeGend PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(GLEWSTATIC glew-static PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(GLSLLANG glslang glslangd PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(GRAPHICSENGINEOPENGL GraphicsEngineOpenGL Diligent-GraphicsEngineOpenGL-static PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(GRAPHICSENGINEVK GraphicsEngineVk Diligent-GraphicsEngineVk-static PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(EHLSL HLSL HLSLd PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(MACHINEINDEPENDENT MachineIndependent MachineIndependentd PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(OGLCOMPILER OGLCompiler OGLCompilerd PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(OSDEPENDENT OSDependent OSDependentd PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(ESPIRV SPIRV SPIRVd PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(SPIRVCROSSCORE spirv-cross-core spirv-cross-cored PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(SPIRVTOOLS SPIRV-Tools PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(SPIRVTOOLSOPT SPIRV-Tools-opt PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTFX DiligentFX PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTTOOLS DiligentTools Diligent-GraphicsTools PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTCORE DiligentCore PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTTEXTURELOADER Diligent-TextureLoader PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTZLIB ZLib PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTJPEG LibJpeg PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTTIFF LibTiff PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTPNG LibPng PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(DILIGENTASSETLOADER Diligent-AssetLoader PATHS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(SDL SDL2 "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(SDLMAIN SDL2main "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED) find_library(SDLMIXER SDL2_mixer "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64" "/usr/local/lib" "/usr/lib" REQUIRED)

    #Add headers, sources, and assets file(GLOB_RECURSE SRC_FILES MysticalMana/.cpp) file(GLOB_RECURSE INCL_FILES MysticalMana/.h) file(COPY MysticalMana/vertex.hlsl DESTINATION ${CMAKE_BINARY_DIR}/Debug) file(COPY MysticalMana/fragment.hlsl DESTINATION ${CMAKE_BINARY_DIR}/Debug)

    add_executable(MysticalMana ${SRC_FILES} ${INCL_FILES})

    #define include directory target_include_directories(MysticalMana PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/MysticalMana)

    #link libraries if(UNIX) target_link_libraries(MysticalMana PUBLIC ${DILIGENTSHADERTOOLS} ${DILIGENTZLIB} ${GENERICCODEGEN} ${MACHINEINDEPENDENT} ${OGLCOMPILER} ${OSDEPENDENT} ${SPIRVCROSSCORE} ${SPIRVTOOLS} ${SPIRVTOOLSOPT} ${ESPIRV} ${DILIGENTHLSL2GLSL} ${GLSLLANG} ${GLEWSTATIC} ${EHLSL} ${DILIGENTTOOLS} ${DILIGENTCORE} ${DILIGENTASSETLOADER} ${DILIGENTLINUX} ${DILIGENTPRIMITIVES} ${DILIGENTGRAPHICSENGINE} ${DILIGENTACCESSORIES} ${DILIGENTCOMMON} ${DILIGENTBASICPLATFORM} ${DILIGENTTEXTURELOADER} ${DILIGENTPNG} ${DILIGENTTIFF} ${DILIGENTJPEG} ${GRAPHICSENGINEVK} ${SDL} ${SDLMAIN} ${SDLMIXER} ${GLFW} ${ASSIMP} ${DL} ${EX11} ${PTHREAD}) elseif(WIN32) target_link_libraries(MysticalMana PUBLIC ${SDL} ${SDLMAIN} ${DILIGENTWIN32} ${DILIGENTSHADERTOOLS} ${DILIGENTPRIMITIVES} ${DILIGENTHLSL2GLSL} ${DILIGENTGRAPHICSENGINE} ${DILIGENTACCESSORIES} ${DILIGENTCOMMON} ${DILIGENTBASICPLATFORM} ${GLFW} ${ASSIMP} ${GENERICCODEGEN} ${GLEWSTATIC} ${GLSLLANG} ${GRAPHICSENGINEOPENGL} ${GRAPHICSENGINEVK} ${EHLSL} ${MACHINEINDEPENDENT} ${OGLCOMPILER} ${OSDEPENDENT} ${ESPIRV} ${SPIRVCROSSCORE} ${SPIRVTOOLS} ${SPIRVTOOLSOPT} ${DILIGENTFX} ${DILIGENTTOOLS} ${DILIGENTZLIB} ${DILIGENTJPEG} ${DILIGENTTIFF} ${DILIGENTPNG} ${DILIGENTASSETLOADER}) target_link_libraries(MysticalMana PRIVATE ${DILIGENTTEXTURELOADER}) endif()

    ERROR /usr/bin/ld: CMakeFiles/MysticalMana.dir/MysticalMana/AudioManager.cpp.o: in function AudioManager::AudioManager()': AudioManager.cpp:(.text+0xa5): undefined reference toMix_OpenAudio' /usr/bin/ld: CMakeFiles/MysticalMana.dir/MysticalMana/AudioManager.cpp.o: in function AudioManager::LoadMusic(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)': AudioManager.cpp:(.text+0x125): undefined reference toMix_LoadMUS' /usr/bin/ld: CMakeFiles/MysticalMana.dir/MysticalMana/AudioManager.cpp.o: in function AudioManager::LoadSoundEffect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)': AudioManager.cpp:(.text+0x1bf): undefined reference toMix_LoadWAV_RW' /usr/bin/ld: CMakeFiles/MysticalMana.dir/MysticalMana/AudioManager.cpp.o: in function AudioManager::PlayAudio(AudioEntity&)': AudioManager.cpp:(.text+0x245): undefined reference toMix_PlayMusic' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(GLSLangUtils.cpp.o): in function Diligent::GLSLangUtils::InitializeGlslang()': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:64: undefined reference toglslang::InitializeProcess()' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(GLSLangUtils.cpp.o): in function Diligent::GLSLangUtils::FinalizeGlslang()': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:69: undefined reference toglslang::FinalizeProcess()' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(GLSLangUtils.cpp.o): in function Diligent::GLSLangUtils::(anonymous namespace)::CompileShaderInternal(glslang::TShader&, EShMessages, glslang::TShader::Includer*, char const*, unsigned long, bool, Diligent::IDataBlob**)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:248: undefined reference toglslang::TShader::setAutoMapBindings(bool)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:256: undefined reference to glslang::TShader::getInfoDebugLog()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:256: undefined reference toglslang::TShader::getInfoLog()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:260: undefined reference to glslang::TProgram::TProgram()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:262: undefined reference toglslang::TProgram::link(EShMessages)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:264: undefined reference to glslang::TProgram::getInfoDebugLog()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:264: undefined reference toglslang::TProgram::getInfoLog()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:270: undefined reference to glslang::TProgram::mapIO(glslang::TIoMapResolver*, glslang::TIoMapper*)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:273: undefined reference toglslang::GlslangToSpv(glslang::TIntermediate const&, std::vector<unsigned int, std::allocator >&, glslang::SpvOptions*)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:260: undefined reference to glslang::TProgram::~TProgram()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:260: undefined reference toglslang::TProgram::~TProgram()' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(GLSLangUtils.cpp.o): in function Diligent::GLSLangUtils::HLSLtoSPIRV(Diligent::ShaderCreateInfo const&, char const*, Diligent::IDataBlob**)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:344: undefined reference toglslang::TShader::TShader(EShLanguage)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:357: undefined reference to glslang::TShader::setHlslIoMapping(bool)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:358: undefined reference toglslang::TShader::setEntryPoint(char const*)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:383: undefined reference to glslang::TShader::setStringsWithLengthsAndNames(char const* const*, int const*, char const* const*, int)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:393: undefined reference tospvtools::Optimizer::Optimizer(spv_target_env)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:394: undefined reference to spvtools::Optimizer::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, char const*)>)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:395: undefined reference tospvtools::Optimizer::RegisterLegalizationPasses()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:396: undefined reference to spvtools::Optimizer::RegisterPerformancePasses()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:398: undefined reference tospvtools::Optimizer::Run(unsigned int const*, unsigned long, std::vector<unsigned int, std::allocator >) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:393: undefined reference to spvtools::Optimizer::~Optimizer()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:344: undefined reference toglslang::TShader::~TShader()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:393: undefined reference to spvtools::Optimizer::~Optimizer()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:344: undefined reference toglslang::TShader::~TShader()' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(GLSLangUtils.cpp.o): in function Diligent::GLSLangUtils::GLSLtoSPIRV(Diligent::GLSLangUtils::GLSLtoSPIRVAttribs const&)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:414: undefined reference toglslang::TShader::TShader(EShLanguage)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:448: undefined reference to glslang::TShader::setStringsWithLengths(char const* const*, int const*, int)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:463: undefined reference tospvtools::Optimizer::Optimizer(spv_target_env)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:464: undefined reference to spvtools::Optimizer::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, char const*)>)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:465: undefined reference tospvtools::Optimizer::RegisterPerformancePasses()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:467: undefined reference to spvtools::Optimizer::Run(unsigned int const*, unsigned long, std::vector<unsigned int, std::allocator<unsigned int> >*) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:463: undefined reference tospvtools::Optimizer::~Optimizer()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:414: undefined reference to glslang::TShader::~TShader()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:463: undefined reference tospvtools::Optimizer::~Optimizer()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/GLSLangUtils.cpp:414: undefined reference to glslang::TShader::~TShader()' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(GLSLangUtils.cpp.o): in functionglslang::TShader::parse(TBuiltInResource const, int, EProfile, bool, bool, EShMessages)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/../../ThirdParty/glslang/glslang/MachineIndependent/../Include/../Include/../Public/ShaderLang.h:654: undefined reference to glslang::TShader::parse(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, glslang::TShader::Includer&)' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(GLSLangUtils.cpp.o): in functionglslang::TShader::parse(TBuiltInResource const*, int, bool, EShMessages, glslang::TShader::Includer&)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/../../ThirdParty/glslang/glslang/MachineIndependent/../Include/../Include/../Public/ShaderLang.h:666: undefined reference to glslang::TShader::parse(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, glslang::TShader::Includer&)' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(PipelineStateVkImpl.cpp.o): in functionDiligent::(anonymous namespace)::StripReflection(std::vector<unsigned int, std::allocator >&)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp:73: undefined reference to spvtools::Optimizer::Optimizer(spv_target_env)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp:74: undefined reference tospvtools::Optimizer::SetMessageConsumer(std::function<void (spv_message_level_t, char const*, spv_position_t const&, char const*)>)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp:77: undefined reference to spvtools::CreateStripReflectInfoPass()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp:77: undefined reference tospvtools::Optimizer::RegisterPass(spvtools::Optimizer::PassToken&&)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp:77: undefined reference to spvtools::Optimizer::PassToken::~PassToken()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp:79: undefined reference tospvtools::Optimizer::Run(unsigned int const*, unsigned long, std::vector<unsigned int, std::allocator >*) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp:73: undefined reference to spvtools::Optimizer::~Optimizer()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp:77: undefined reference tospvtools::Optimizer::PassToken::~PassToken()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp:73: undefined reference to spvtools::Optimizer::~Optimizer()' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(SPIRVShaderResources.cpp.o): in functionDiligent::GetResourceDimension(diligent_spirv_cross::Compiler const&, diligent_spirv_cross::Resource const&)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:59: undefined reference to diligent_spirv_cross::Compiler::get_type(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)1>) const' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(SPIRVShaderResources.cpp.o): in functionDiligent::IsMultisample(diligent_spirv_cross::Compiler const&, diligent_spirv_cross::Resource const&)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:84: undefined reference to diligent_spirv_cross::Compiler::get_type(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)1>) const' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(SPIRVShaderResources.cpp.o): in functionDiligent::GetDecorationOffset(diligent_spirv_cross::Compiler const&, diligent_spirv_cross::Resource const&, spv::Decoration)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:100: undefined reference to diligent_spirv_cross::Compiler::has_decoration(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)0>, spv::Decoration) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:102: undefined reference todiligent_spirv_cross::Compiler::get_binary_offset_for_decoration(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)2>, spv::Decoration, unsigned int&) const' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(SPIRVShaderResources.cpp.o): in function Diligent::GetUBName[abi:cxx11](diligent_spirv_cross::Compiler&, diligent_spirv_cross::Resource const&, diligent_spirv_cross::ParsedIR::Source const&)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:259: undefined reference todiligent_spirv_cross::Compiler::get_nameabi:cxx11 const' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(SPIRVShaderResources.cpp.o): in function Diligent::SPIRVShaderResources::SPIRVShaderResources(Diligent::IMemoryAllocator&, std::vector<unsigned int, std::allocator<unsigned int> >, Diligent::ShaderDesc const&, char const*, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:272: undefined reference todiligent_spirv_cross::Parser::Parser(std::vector<unsigned int, std::allocator >)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:273: undefined reference to diligent_spirv_cross::Parser::parse()' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:276: undefined reference todiligent_spirv_cross::Compiler::Compiler(diligent_spirv_cross::ParsedIR&&)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:279: undefined reference to diligent_spirv_cross::Compiler::get_entry_points_and_stages() const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:298: undefined reference todiligent_spirv_cross::Compiler::set_entry_point(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, spv::ExecutionModel)' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:301: undefined reference to diligent_spirv_cross::Compiler::get_shader_resources() const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:337: undefined reference todiligent_spirv_cross::Compiler::get_declared_extensionsabi:cxx11 const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:350: undefined reference to diligent_spirv_cross::Compiler::has_decoration(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)0>, spv::Decoration) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:352: undefined reference todiligent_spirv_cross::Compiler::get_decoration_string[abi:cxx11](diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)0>, spv::Decoration) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:397: undefined reference to diligent_spirv_cross::Compiler::get_type(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)1>) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:398: undefined reference todiligent_spirv_cross::Compiler::get_declared_struct_size(diligent_spirv_cross::SPIRType const&) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:415: undefined reference to diligent_spirv_cross::Compiler::get_buffer_block_flags(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)2>) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:420: undefined reference todiligent_spirv_cross::Compiler::get_type(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)1>) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:421: undefined reference to diligent_spirv_cross::Compiler::get_declared_struct_size(diligent_spirv_cross::SPIRType const&) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:422: undefined reference todiligent_spirv_cross::Compiler::get_declared_struct_size_runtime_array(diligent_spirv_cross::SPIRType const&, unsigned long) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:440: undefined reference to diligent_spirv_cross::Compiler::get_type(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)1>) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:459: undefined reference todiligent_spirv_cross::Compiler::get_type(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)1>) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:508: undefined reference to diligent_spirv_cross::Compiler::get_type(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)1>) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:568: undefined reference todiligent_spirv_cross::Compiler::has_decoration(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)0>, spv::Decoration) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:570: undefined reference to diligent_spirv_cross::Compiler::get_decoration_string[abi:cxx11](diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)0>, spv::Decoration) const' /usr/bin/ld: /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:586: undefined reference todiligent_spirv_cross::Compiler::get_execution_mode_argument(spv::ExecutionMode, unsigned int) const' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(SPIRVShaderResources.cpp.o): in function unsigned short const Diligent::GetResourceArraySize<unsigned short const>(diligent_spirv_cross::Compiler const&, diligent_spirv_cross::Resource const&)': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/Graphics/ShaderTools/src/SPIRVShaderResources.cpp:44: undefined reference todiligent_spirv_cross::Compiler::get_type(diligent_spirv_cross::TypedID<(diligent_spirv_cross::Types)1>) const' /usr/bin/ld: /usr/local/lib/libDiligentCore.a(SPIRVShaderResources.cpp.o): in function diligent_spirv_cross::Compiler::~Compiler()': /home/rr-linux/Code/Build/DiligentEngine/DiligentCore/ThirdParty/SPIRV-Cross/spirv_cross.hpp:168: undefined reference tovtable for diligent_spirv_cross::Compiler' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/MysticalMana.dir/build.make:209: MysticalMana] Error 1 make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/MysticalMana.dir/all] Error 2 make: *** [Makefile:84: all] Error 2

    opened by TyrannusX 24
  • Input lag

    Input lag

    Hello,

    First of all great work on your API. It simplifies a hell lot of work while still remaining low level enough.

    I have started using it a couple of days ago on my engine, switching from an inhouse DirectX 11 abstraction layer to it and I have noticed I'm getting a noticeable input lag whenever my frame rate is close to and below 60fps (my screen is a 60Hz one). I did not have this issue when using my own implementation and vsync is of course disabled.

    I have been looking around, trying different things but I can't get rid of this input lag. I don't know what is causing it and graphics programming isn't exactly my top field (although I'm learning).

    If you need more info let me know.

    EDIT : I'm using the DirectX 11 Backend of DiligentEngine.

    opened by eleval 22
  • Build issues on macOS/cmake

    Build issues on macOS/cmake

    Doing a fresh checkout, configuring Cmake from a new build folder and calling make gets me multiple python2 errors:

    Validating DiligentCore module's source code formatting...
    ERROR:root:code for hash md5 was not found.
    Traceback (most recent call last):
      File "/usr/local/Cellar/[email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
        globals()[__func_name] = __get_hash(__func_name)
      File "/usr/local/Cellar/[email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
        raise ValueError('unsupported hash type ' + name)
    ValueError: unsupported hash type md5
    

    Which are eventually followed by:

    [ 65%] Building C object DiligentSamples/Samples/Atmosphere/CMakeFiles/Atmosphere.dir/__/__/__/DiligentTools/NativeApp/Apple/Source/main.m.o
    error: invalid argument '-std=gnu11' not allowed with 'Objective-C++'
    make[2]: *** [DiligentSamples/Samples/Atmosphere/CMakeFiles/Atmosphere.dir/__/__/__/DiligentTools/NativeApp/Apple/Source/main.m.o] Error 1
    make[1]: *** [DiligentSamples/Samples/Atmosphere/CMakeFiles/Atmosphere.dir/all] Error 2
    
    • OS: MacOS Catalina 10.15
    • Build tools: Cmake 3.17.0
    opened by kvark 19
  • Allow usage of system clang-format instead of bundled.

    Allow usage of system clang-format instead of bundled.

    • OS and version Fedora 32
    • Build tools and configuration you used to build the engine Clion, clang-10, cmake 3.17.2
    • Debug output, especially messages from Diligent
    ./clang-format_linux_10.0.0: /lib64/libtinfo.so.5: no version information available (required by ./clang-format_linux_10.0.0)
    
    build system 
    opened by markusgod 16
  • D3D11: failed to create the swapchain

    D3D11: failed to create the swapchain

    I'm getting this error logged Diligent Engine: ERROR in Diligent::EngineFactoryD3D11Impl::CreateSwapChainD3D11() (RenderDeviceFactoryD3D11.cpp, 355): Failed to create the swap chain

    then a null exception Exception thrown: read access violation. this->m_pSwapChain.**m_pObject** was nullptr. occurred

    would be better to throw the exception right after create swapchain failure

    opened by raizam 15
  • Emscripten support?

    Emscripten support?

    Is it possible and do you have any plans to support the emscripten platform in Diligent? I believe this is what Unity/Unreal Engine/BGFX use to target HTML5/asm.js, which is a very nice feature.

    http://kripken.github.io/emscripten-site/

    Also, you could use it to allow running samples directly on the Diligent website :)

    enhancement 
    opened by mctb32 15
  • Disable Warning as Error

    Disable Warning as Error

    How can I disable Warning as Error in the libary. When I am linking it via cmake into my project my project also enables it. How can I disable the flag?

    Error: error C2220: Die folgende Warnung wird als Fehler behandelt.

    opened by LDprg 13
  • build error

    build error

    after follow https://github.com/DiligentGraphics/DiligentEngine/blob/master/Troubleshooting.md i still get error below,plateform vs2019 x64 debug project command" cmake -S . -B ./build/Win64 -G "Visual Studio 16 2019" -A x64"

    1>------ Build started: Project: spirv-tools-header-DebugInfo, Configuration: Debug x64 ------ 2>------ Build started: Project: spv-tools-spv-amd-sevp, Configuration: Debug x64 ------ 3>------ Build started: Project: spv-tools-spv-amd-stm, Configuration: Debug x64 ------ 4>------ Build started: Project: spv-tools-spv-amd-sb, Configuration: Debug x64 ------ 5>------ Build started: Project: spv-tools-spv-amd-gs, Configuration: Debug x64 ------ 6>------ Build started: Project: spv-tools-debuginfo, Configuration: Debug x64 ------ 7>------ Build started: Project: spv-tools-cldi100, Configuration: Debug x64 ------ 8>------ Build started: Project: spirv-tools-header-OpenCLDebugInfo100, Configuration: Debug x64 ------ 9>------ Build started: Project: enum_string_mapping, Configuration: Debug x64 ------ 10>------ Build started: Project: core_tables, Configuration: Debug x64 ------ 11>------ Build started: Project: Diligent-GraphicsEngineD3D11-shared, Configuration: Debug x64 ------ 12>------ Build started: Project: extinst_tables, Configuration: Debug x64 ------ 13>------ Build started: Project: Diligent-GraphicsEngineOpenGL-shared, Configuration: Debug x64 ------ 11>LINK : warning LNK4044: unrecognized option '/lShlwapi.lib'; ignored 11>LINK : warning LNK4044: unrecognized option '/ldxgi.lib'; ignored 11>LINK : warning LNK4044: unrecognized option '/ld3d11.lib'; ignored 11>LINK : warning LNK4044: unrecognized option '/ld3dcompiler.lib'; ignored 11> Creating library G:/CPPLib/DiligentEngine/build/Win64/DiligentCore/Graphics/GraphicsEngineD3D11/Debug/libGraphicsEngineD3D11_64d.dll.a and object G:/CPPLib/DiligentEngine/build/Win64/DiligentCore/Graphics/GraphicsEngineD3D11/Debug/libGraphicsEngineD3D11_64d.dll.exp 11>libDiligent-GraphicsEngineD3D11-static.a(EngineFactoryD3D11.obj) : error LNK2019: unresolved external symbol CreateDXGIFactory1 referenced in function "public: class std::vector<class ATL::CComPtr,class std::allocator<class ATL::CComPtr > > __cdecl Diligent::EngineFactoryD3DBase<struct Diligent::IEngineFactoryD3D11,1>::FindCompatibleAdapters(enum Diligent::DIRECT3D_FEATURE_LEVEL)" ([email protected][email protected]@[email protected]@[email protected]@@[email protected][email protected]@@@[email protected]@[email protected][email protected]@@@[email protected]@@[email protected]@@[email protected]@[email protected]@@Z) 11>libDiligent-GraphicsEngineD3D11-static.a(SwapChainD3D11Impl.obj) : error LNK2001: unresolved external symbol CreateDXGIFactory1 11>libDiligent-GraphicsEngineD3D11-static.a(EngineFactoryD3D11.obj) : error LNK2019: unresolved external symbol D3D11CreateDevice referenced in function "public: virtual void __cdecl Diligent::EngineFactoryD3D11Impl::CreateDeviceAndContextsD3D11(struct Diligent::EngineD3D11CreateInfo const &,struct Diligent::IRenderDevice * *,struct Diligent::IDeviceContext * *)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 11>libDiligent-GraphicsEngineD3D11-static.a(ShaderResourcesD3D11.obj) : error LNK2019: unresolved external symbol D3DReflect referenced in function "void __cdecl Diligent::LoadD3DShaderResources<struct _D3D11_SHADER_DESC,struct _D3D11_SHADER_INPUT_BIND_DESC,struct ID3D11ShaderReflection,class <lambda_aca39d1d9a2480a46d841aa0c64f2bbd>,class <lambda_4b8ff216fee54852c0e0700def49b3d9>,class <lambda_a5e10e127c4dd970e08f61afae1c0fe1>,class <lambda_cb58d144068449df4126e4f005ae2681>,class <lambda_98624c8356ebe933cf3fbd1141067465>,class <lambda_80cf6b0d6739f5bebe3a75ff6f0fa500>,class <lambda_54db8cb1bc367fa6a0a53a581ce85026>,class <lambda_5e29c0065d47df59e9e76d1105b82008> >(struct ID3D10Blob *,class <lambda_aca39d1d9a2480a46d841aa0c64f2bbd>,class <lambda_4b8ff216fee54852c0e0700def49b3d9>,class <lambda_a5e10e127c4dd970e08f61afae1c0fe1>,class <lambda_cb58d144068449df4126e4f005ae2681>,class <lambda_98624c8356ebe933cf3fbd1141067465>,class <lambda_80cf6b0d6739f5bebe3a75ff6f0fa500>,class <lambda_54db8cb1bc367fa6a0a53a581ce85026>,class <lambda_5e29c0065d47df59e9e76d1105b82008>)" ([email protected][email protected]@[email protected]@[email protected]@V<lambda_aca39d1d9a2480a46d841aa0c64f2bbd>@@V<lambda_4b8ff216fee54852c0e0700def49b3d9>@@V<lambda_a5e10e127c4dd970e08f61afae1c0fe1>@@V<lambda_cb58d144068449df4126e4f005ae2681>@@V<lambda_98624c8356ebe933cf3fbd1141067465>@@V<lambda_80cf6b0d6739f5bebe3a75ff6f0fa500>@@V<lambda_54db8cb1bc367fa6a0a53a581ce85026>@@V<lambda_5e29c0065d47df59e9e76d1105b82008>@@@[email protected]@[email protected]@V<lambda_aca39d1d9a2480a46d841aa0c64f2bbd>@@V<lambda_4b8ff216fee54852c0e0700def49b3d9>@@V<lambda_a5e10e127c4dd970e08f61afae1c0fe1>@@V<lambda_cb58d144068449df4126e4f005ae2681>@@V<lambda_98624c8356ebe933cf3fbd1141067465>@@V<lambda_80cf6b0d6739f5bebe3a75ff6f0fa500>@@V<lambda_54db8cb1bc367fa6a0a53a581ce85026>@@V<lambda_5e29c0065d47df59e9e76d1105b82008>@@@Z) 11>libDiligent-GraphicsEngineD3DBase.a(ShaderD3DBase.obj) : error LNK2019: unresolved external symbol D3DCompile referenced in function "long __cdecl Diligent::CompileShader(char const *,char const *,struct _D3D_SHADER_MACRO const *,struct Diligent::IShaderSourceInputStreamFactory *,char const *,struct ID3D10Blob * *,struct ID3D10Blob * *)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]) 11>libDiligent-GraphicsEngineD3DBase.a(ShaderD3DBase.obj) : error LNK2019: unresolved external symbol D3DCreateBlob referenced in function "public: __cdecl Diligent::ShaderD3DBase::ShaderD3DBase(struct Diligent::ShaderCreateInfo const &,char const *)" ([email protected]@@[email protected]@[email protected]@Z) 11>G:\CPPLib\DiligentEngine\build\Win64\DiligentCore\Graphics\GraphicsEngineD3D11\Debug\libGraphicsEngineD3D11_64d.dll : fatal error LNK1120: 5 unresolved externals 11>Done building project "Diligent-GraphicsEngineD3D11-shared.vcxproj" -- FAILED. 13>LINK : warning LNK4044: unrecognized option '/lShlwapi.lib'; ignored 13>LINK : warning LNK4044: unrecognized option '/lopengl32.lib'; ignored 13> Creating library G:/CPPLib/DiligentEngine/build/Win64/DiligentCore/Graphics/GraphicsEngineOpenGL/Debug/libGraphicsEngineOpenGL_64d.dll.a and object G:/CPPLib/DiligentEngine/build/Win64/DiligentCore/Graphics/GraphicsEngineOpenGL/Debug/libGraphicsEngineOpenGL_64d.dll.exp 13>libDiligent-GraphicsEngineOpenGL-static.a(RenderDeviceGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glBindTexture referenced in function "private: void __cdecl Diligent::RenderDeviceGLImpl::FlagSupportedTexFormats(void)" ([email protected]@[email protected]@AEAAXXZ) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2001: unresolved external symbol __imp_glBindTexture 13>libDiligent-GraphicsEngineOpenGL-static.a(BufferViewGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture2DArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture3D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureCube_OGL.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureCubeArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureBaseGL.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1DArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture2D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(RenderDeviceGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(BufferGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureViewGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glDeleteTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(RenderDeviceGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glFinish referenced in function "public: virtual void __cdecl Diligent::RenderDeviceGLImpl::IdleGPU(void)" ([email protected]@[email protected]@UEAAXXZ) 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glFinish 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture3D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureCube_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureCubeArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(BufferViewGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1DArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture2D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture2DArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(RenderDeviceGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureViewGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureBaseGL.obj) : error LNK2001: unresolved external symbol __imp_glGenTextures 13>libDiligent-GraphicsEngineOpenGL-static.a(QueryGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(PipelineStateGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(BufferViewGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(GLProgramResources.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture3D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureCube_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureCubeArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(SamplerGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1DArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture2D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture2DArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(BufferGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(ShaderGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureBaseGL.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(RenderDeviceGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextWindows.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libDiligent-GraphicsEngineOpenGL-static.a(FBOCache.obj) : error LNK2001: unresolved external symbol __imp_glGetError 13>libglew-static.a(glew.obj) : error LNK2019: unresolved external symbol __imp_glGetIntegerv referenced in function glewIsSupported 13>libDiligent-GraphicsEngineOpenGL-static.a(RenderDeviceGLImpl.obj) : error LNK2001: unresolved external symbol __imp_glGetIntegerv 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextWindows.obj) : error LNK2001: unresolved external symbol __imp_glGetIntegerv 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2001: unresolved external symbol __imp_glGetIntegerv 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureBaseGL.obj) : error LNK2001: unresolved external symbol __imp_glGetIntegerv 13>libDiligent-GraphicsEngineOpenGL-static.a(RenderDeviceGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glGetString referenced in function "public: __cdecl Diligent::RenderDeviceGLImpl::RenderDeviceGLImpl(class Diligent::IReferenceCounters *,struct Diligent::IMemoryAllocator &,struct Diligent::IEngineFactory *,struct Diligent::EngineGLCreateInfo const &,struct Diligent::SwapChainDesc const *)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextWindows.obj) : error LNK2001: unresolved external symbol __imp_glGetString 13>libglew-static.a(glew.obj) : error LNK2001: unresolved external symbol __imp_glGetString 13>libDiligent-GraphicsEngineOpenGL-static.a(RenderDeviceGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glPolygonMode referenced in function "private: void __cdecl Diligent::RenderDeviceGLImpl::QueryDeviceCaps(void)" ([email protected]@[email protected]@AEAAXXZ) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2001: unresolved external symbol __imp_glPolygonMode 13>libDiligent-GraphicsEngineOpenGL-static.a(RenderDeviceGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glTexSubImage2D referenced in function "private: void __cdecl Diligent::RenderDeviceGLImpl::FlagSupportedTexFormats(void)" ([email protected]@[email protected]@AEAAXXZ) 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1DArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glTexSubImage2D 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture2D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glTexSubImage2D 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureCube_OGL.obj) : error LNK2001: unresolved external symbol __imp_glTexSubImage2D 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glClear referenced in function "public: virtual void __cdecl Diligent::DeviceContextGLImpl::ClearDepthStencil(struct Diligent::ITextureView *,enum Diligent::CLEAR_DEPTH_STENCIL_FLAGS,float,unsigned char,enum Diligent::RESOURCE_STATE_TRANSITION_MODE)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glClearStencil referenced in function "public: virtual void __cdecl Diligent::DeviceContextGLImpl::ClearDepthStencil(struct Diligent::ITextureView *,enum Diligent::CLEAR_DEPTH_STENCIL_FLAGS,float,unsigned char,enum Diligent::RESOURCE_STATE_TRANSITION_MODE)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glDrawArrays referenced in function "public: virtual void __cdecl Diligent::DeviceContextGLImpl::Draw(struct Diligent::DrawAttribs const &)" ([email protected]@[email protected]@[email protected]@@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glDrawElements referenced in function "public: virtual void __cdecl Diligent::DeviceContextGLImpl::DrawIndexed(struct Diligent::DrawIndexedAttribs const &)" ([email protected]@[email protected]@[email protected]@@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glFlush referenced in function "public: virtual void __cdecl Diligent::DeviceContextGLImpl::Flush(void)" ([email protected]@[email protected]@UEAAXXZ) 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glGetTexParameteriv referenced in function "public: void __cdecl Diligent::DeviceContextGLImpl::BindProgramResources(unsigned int &,struct Diligent::IShaderResourceBinding *)" ([email protected]@[email protected]@[email protected]@@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureBaseGL.obj) : error LNK2001: unresolved external symbol __imp_glGetTexParameteriv 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glReadPixels referenced in function "public: virtual void __cdecl Diligent::DeviceContextGLImpl::CopyTexture(struct Diligent::CopyTextureAttribs const &)" ([email protected]@[email protected]@[email protected]@@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glScissor referenced in function "public: virtual void __cdecl Diligent::DeviceContextGLImpl::SetScissorRects(unsigned int,struct Diligent::Rect const *,unsigned int,unsigned int)" ([email protected]@[email protected]@[email protected]@[email protected]) 13>libDiligent-GraphicsEngineOpenGL-static.a(DeviceContextGLImpl.obj) : error LNK2019: unresolved external symbol __imp_glViewport referenced in function "public: virtual void __cdecl Diligent::DeviceContextGLImpl::SetViewports(unsigned int,struct Diligent::Viewport const *,unsigned int,unsigned int)" ([email protected]@[email protected]@[email protected]@[email protected]) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextWindows.obj) : error LNK2019: unresolved external symbol __imp_glEnable referenced in function "public: __cdecl Diligent::GLContext::GLContext(struct Diligent::EngineGLCreateInfo const &,struct Diligent::DeviceCaps &,struct Diligent::SwapChainDesc const *)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2001: unresolved external symbol __imp_glEnable 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextWindows.obj) : error LNK2019: unresolved external symbol __imp_wglCreateContext referenced in function "public: __cdecl Diligent::GLContext::GLContext(struct Diligent::EngineGLCreateInfo const &,struct Diligent::DeviceCaps &,struct Diligent::SwapChainDesc const *)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextWindows.obj) : error LNK2019: unresolved external symbol __imp_wglDeleteContext referenced in function "public: __cdecl Diligent::GLContext::GLContext(struct Diligent::EngineGLCreateInfo const &,struct Diligent::DeviceCaps &,struct Diligent::SwapChainDesc const *)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextWindows.obj) : error LNK2019: unresolved external symbol __imp_wglGetCurrentContext referenced in function "public: __cdecl Diligent::GLContext::GLContext(struct Diligent::EngineGLCreateInfo const &,struct Diligent::DeviceCaps &,struct Diligent::SwapChainDesc const *)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextWindows.obj) : error LNK2019: unresolved external symbol __imp_wglMakeCurrent referenced in function "public: __cdecl Diligent::GLContext::GLContext(struct Diligent::EngineGLCreateInfo const &,struct Diligent::DeviceCaps &,struct Diligent::SwapChainDesc const *)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2019: unresolved external symbol __imp_glColorMask referenced in function "public: void __cdecl Diligent::GLContextState::SetColorWriteMask(unsigned int,unsigned int,bool)" ([email protected]@[email protected]@[email protected]) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2019: unresolved external symbol __imp_glCullFace referenced in function "public: void __cdecl Diligent::GLContextState::SetCullMode(enum Diligent::CULL_MODE)" ([email protected]@[email protected]@[email protected]@@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2019: unresolved external symbol __imp_glDepthFunc referenced in function "public: void __cdecl Diligent::GLContextState::SetDepthFunc(enum Diligent::COMPARISON_FUNCTION)" ([email protected]@[email protected]@[email protected]@@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2019: unresolved external symbol __imp_glDepthMask referenced in function "public: void __cdecl Diligent::GLContextState::EnableDepthWrites(bool)" ([email protected]@[email protected]@[email protected]) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2019: unresolved external symbol __imp_glDisable referenced in function "public: void __cdecl Diligent::GLContextState::EnableDepthTest(bool)" (?EnableDepthT[email protected]@[email protected]@[email protected]) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2019: unresolved external symbol __imp_glFrontFace referenced in function "public: void __cdecl Diligent::GLContextState::SetFrontFace(bool)" ([email protected]@[email protected]@[email protected]) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2019: unresolved external symbol __imp_glPolygonOffset referenced in function "public: void __cdecl Diligent::GLContextState::SetDepthBias(float,float)" ([email protected]@[email protected]@[email protected]) 13>libDiligent-GraphicsEngineOpenGL-static.a(GLContextState.obj) : error LNK2019: unresolved external symbol __imp_glStencilMask referenced in function "public: void __cdecl Diligent::GLContextState::SetStencilWriteMask(unsigned char)" ([email protected]@[email protected]@[email protected]) 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureBaseGL.obj) : error LNK2019: unresolved external symbol __imp_glGetTexLevelParameteriv referenced in function "unsigned int __cdecl Diligent::GetTextureInternalFormat(class Diligent::GLContextState &,unsigned int,class GLObjectWrappers::GLObjWrapper const &,enum Diligent::TEXTURE_FORMAT)" ([email protected]@@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@@Z) 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureBaseGL.obj) : error LNK2019: unresolved external symbol __imp_glTexParameteri referenced in function "protected: void __cdecl Diligent::TextureBaseGL::SetDefaultGLParameters(void)" ([email protected]@[email protected]@IEAAXXZ) 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture3D_OGL.obj) : error LNK2019: unresolved external symbol __imp_glPixelStorei referenced in function "class std::basic_ostream<char,struct std::char_traits > & __cdecl std::operator<<<struct std::char_traits >(class std::basic_ostream<char,struct std::char_traits > &,char)" ([email protected]@[email protected]@@[email protected]@[email protected][email protected]@[email protected]@@[email protected]@[email protected]) 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureCube_OGL.obj) : error LNK2001: unresolved external symbol __imp_glPixelStorei 13>libDiligent-GraphicsEngineOpenGL-static.a(TextureCubeArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glPixelStorei 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glPixelStorei 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1DArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glPixelStorei 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture2D_OGL.obj) : error LNK2001: unresolved external symbol __imp_glPixelStorei 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture2DArray_OGL.obj) : error LNK2001: unresolved external symbol __imp_glPixelStorei 13>libDiligent-GraphicsEngineOpenGL-static.a(Texture1D_OGL.obj) : error LNK2019: unresolved external symbol __imp_glTexSubImage1D referenced in function "public: virtual void __cdecl Diligent::Texture1D_OGL::UpdateData(class Diligent::GLContextState &,unsigned int,unsigned int,struct Diligent::Box const &,struct Diligent::TextureSubResData const &)" ([email protected][email protected]@@[email protected]@[email protected]@[email protected]@@Z) 13>libglew-static.a(glew.obj) : error LNK2019: unresolved external symbol __imp_wglGetCurrentDC referenced in function wglewInit 13>libglew-static.a(glew.obj) : error LNK2019: unresolved external symbol __imp_wglGetProcAddress referenced in function wglewInit 13>G:\CPPLib\DiligentEngine\build\Win64\DiligentCore\Graphics\GraphicsEngineOpenGL\Debug\GraphicsEngineOpenGL_64d.dll : fatal error LNK1120: 37 unresolved externals 13>Done building project "Diligent-GraphicsEngineOpenGL-shared.vcxproj" -- FAILED. 14>------ Build started: Project: GLTFViewer, Configuration: Debug x64 ------ 14>LINK : warning LNK4044: unrecognized option '/lShlwapi.lib'; ignored 14>GLTFViewer.vcxproj -> G:\CPPLib\DiligentEngine\build\Win64\DiligentSamples\Samples\GLTFViewer\Debug\GLTFViewer.exe 14>Error copying file (if different) from "G:/CPPLib/DiligentEngine/build/Win64/DiligentCore/Graphics/GraphicsEngineD3D11/Debug/libGraphicsEngineD3D11_64d.dll" to "G:/CPPLib/DiligentEngine/build/Win64/DiligentSamples/Samples/GLTFViewer/Debug". 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: The command "setlocal 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: E:\cmake\bin\cmake.exe -E copy_if_different "G:/CPPLib/DiligentEngine/build/Win64/DiligentCore/Graphics/GraphicsEngineD3D11/Debug/libGraphicsEngineD3D11_64d.dll" "G:/CPPLib/DiligentEngine/build/Win64/DiligentSamples/Samples/GLTFViewer/Debug" 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmErrorLevel 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: exit /b %1 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: setlocal 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: E:\cmake\bin\cmake.exe -E copy_if_different "G:/CPPLib/DiligentEngine/build/Win64/DiligentCore/Graphics/GraphicsEngineOpenGL/Debug/GraphicsEngineOpenGL_64d.dll" "G:/CPPLib/DiligentEngine/build/Win64/DiligentSamples/Samples/GLTFViewer/Debug" 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmErrorLevel 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: exit /b %1 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: setlocal 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: E:\cmake\bin\cmake.exe -E copy_if_different "G:/CPPLib/DiligentEngine/build/Win64/DiligentCore/Graphics/GraphicsEngineVulkan/Debug/GraphicsEngineVk_64d.dll" "G:/CPPLib/DiligentEngine/build/Win64/DiligentSamples/Samples/GLTFViewer/Debug" 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmErrorLevel 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: exit /b %1 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: setlocal 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: E:\cmake\bin\cmake.exe -E copy_if_different "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX86\x86\D3Dcompiler_47.dll" "G:/CPPLib/DiligentEngine/build/Win64/DiligentSamples/Samples/GLTFViewer/Debug" 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmErrorLevel 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: exit /b %1 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: setlocal 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: E:\cmake\bin\cmake.exe -E copy_directory G:/CPPLib/DiligentEngine/DiligentSamples/Samples/GLTFViewer/assets "G:/CPPLib/DiligentEngine/build/Win64/DiligentSamples/Samples/GLTFViewer/Debug" 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmErrorLevel 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: exit /b %1 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :cmDone 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd 14>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(149,5): error MSB3073: :VCEnd" exited with code 1. 14>Done building project "GLTFViewer.vcxproj" -- FAILED. ========== Build: 11 succeeded, 3 failed, 35 up-to-date, 0 skipped ==========

    can't reproduce 
    opened by 9MW 13
  • Update Android build

    Update Android build

    • [X] Update CMake version
      • Updating CMake version to 3.18.2 results in libGraphicsEngineVk.so and libGraphicsEngineGL.so missing in the output folder for some reason. The log says these libraries are produced
      • CMake 3.22.1 works OK
    • [ ] Update targetSdkVersion
      • Bumping it above 30 produces manifest errors
    • [ ] Update gradle plugin version
      • In the latest version there are problems with packaging libGraphicsEngineVk.so and libGraphicsEngineGL.so
    • [ ] Separate build into Arm64 and Arm32
      • This requires conditionally using the environment variable here. Refer to the core module
    opened by TheMostDiligent 0
  • Android CI build improvements

    Android CI build improvements

    Few issues with current Android CI setup require some attention:

    build system 
    opened by TheMostDiligent 0
  • OpenXR support?

    OpenXR support?

    I'd like to add OpenXR support, opening this issue to discuss the right way to do that.

    My first pass at the needed API changes for minimalist XR support:

    IEngineFactory:

    • CreateOpenXRFactory(OpenXRCreateInfo* info, IOpenXRContext** ctx), called before CreateDeviceAndContextsXx to initialize the OpenXR instance and return the interface. IOpenXRContext will provide interfaces to the session lifecycle stuff, input bindings, layers, spaces etc.

    ISwapChain:

    • Uint32 GetViewCount() to turn the number of views for the device (typically 2 for right, left eyes). Non-OpenXR apps will return 1.
    • OpenXRViewDesc GetOpenOpenXRViewDesc(Uint32 ViewIndex) to return the view descriptor for a given view.
    • Uint32 SelectOpenXRView(Uint32 ViewIndex) to make one of the views "current", the rest of the swapchain functions will reference the resources for that view (e,g, GetDesc, GetCurrentBackBufferRTV etc. will return parameters for the selected view). Returns the previously current view.
    • WaitFrame(FrameInfo* frame) maps to xrWaitFrame, ignored by non-XR apps.
    • BeginFrame(FrameInfo* frame) maps to xrBeginFrame, ignored by non-XR apps.
    • EndFrame(FrameInfo* frame) maps to xrEndFrame, ignored by non-XR apps. Present() will be ignored by XR apps.

    The intent is to allow the same code to work in both XR and 2D mode by simply choosing to call or not call CreateOpenXRFactory.

    opened by gigadude 2
  • Publish documentation of command line android build of SDK and Samples

    Publish documentation of command line android build of SDK and Samples

    Ideally, users of Android could build from the command line, assuming necessary components are installed from the SDk. It would be great to have the gradle commands documented to build specific projects and also necessary commands install install/run/debug. Possibly related to #41. I've done this for other projects, specifically figured it out for the messy Oculus Android SDK (a monolithic Android SDK/examplewad that cannot be separated). I'll poke around around on this to see if I can tease out the commands from the ./gradlew step to bootstrap and the available commands. This assumes too a few pre-reqs: NDK, android SDK tools, android SDK API versions (what is min needed, what is target), any hardware support needed (I think this is posted somewhere in the root level docs), and Java tools that should be in place (openjdk version).

    opened by truedat101 51
Releases(v2.5.2)
  • v2.5.2(Apr 3, 2022)

    This release introduces an API for packaging render state objects (shaders, pipeline states, resource singatures, render passes) into archives. An object archive contains data optimized for run-time loading performance (shaders are compiled into optimized byte code and patched to match resource signatures, if necessary; internal pipeline resource layouts are initialized; all objects are verified for compatibility and correctness etc.). One archive may contain data for multiple backends (e.g. Direct3D12, Vulkan, OpenGL).

    The two key new interfaces are IArchiver that packs resource states into an archive, and IDearchiver that unpacks the states from the archive at run time.

    This release also introduces Diligent Render State Notation, a JSON-based language that describes shaders, pipeline states, resource signatures and other objects in a convenient form, e.g.:

    {
        "Shaders": [
            {
                "Desc": {
                    "Name": "My Vertex shader",
                    "ShaderType": "VERTEX"
                },
                "SourceLanguage": "HLSL",
                "FilePath": "cube.vsh"
            },
            {
                "Desc": {
                    "Name": "My Pixel shader",
                    "ShaderType": "PIXEL"
                },
                "SourceLanguage": "HLSL",
                "FilePath": "cube.psh",
            }
        ],
        "Pipeleines": [
            {
                "GraphicsPipeline": {
                    "DepthStencilDesc": {
                        "DepthEnable": true
                    },
                    "RTVFormats": {
                        "0": "RGBA8_UNORM_SRGB"
                    },
                    "RasterizerDesc": {
                        "CullMode": "FRONT"
                    },
                },
                "PSODesc": {
                    "Name": "My Pipeline State",
                    "PipelineType": "GRAPHICS"
                },
                "pVS": "My Vertex shader",
                "pPS": "My Pixel shader"
            }
        ]
    }
    

    Render state notation files can be parsed and loaded dynamically at run time. Alternatively, an application can use a packaging tool to preprocess pipeline descriptions (compile shaders for target platforms, define internal resource layouts, etc.) into archives off-line.

    Among other improvements are bug fixes, pipeline state cache support and samplers with unnormalized coordinates.

    Source code(tar.gz)
    Source code(zip)
    DiligentEngine_v2.5.2.zip(266.13 MB)
  • v2.5.1(Oct 12, 2021)

    This release introduces the following major features:

    • Variable rate shading gives applications control over the frequency at which pixel shading is performed, allowing applications to trade quality for performance and power savings.
    • Sparse (aka partially resident or tiled) resources are large virtual resources only partially baked by the physical memory. Spare resources are very useful for handling large scenes such as open environments, terrain, in mega texturing techniques, etc.
    • Emscripten platform support allows applications built with Diligent Engine to run in web browsers.

    API Changes

    • Added subsampled render targets for VRS (API Version 250011)
    • Added sparse resources (API Version 250010)
    • Updated API to use 64bit offsets for GPU memory (API Version 250009)
    • Reworked draw indirect command attributes (moved buffers into the attribs structs), removed DrawMeshIndirectCount (API Version 250008)
    • Enabled indirect multidraw commands (API Version 250007)
    • Enabled variable rate shading (API Version 250006)
    • Added TransferQueueTimestampQueries feature (API Version 250005)
    • Added RESOURCE_STATE_COMMON state; added STATE_TRANSITION_FLAGS enum and replaced StateTransitionDesc::UpdateResourceState with STATE_TRANSITION_FLAGS Flags (API Version 250004)
    • Added ComputeShaderProperties struct (API Version 250003)
    • Added IShaderResourceBinding::CheckResources method and SHADER_RESOURCE_VARIABLE_TYPE_FLAGS enum (API Version 250002)
    • Removed IShaderResourceVariable::IsBound with IShaderResourceVariable::Get (API Version 250001)

    Samples and tutorials

    New Tutorial23 - Command Queues demonstrates how to use multiple command queues to perform rendering in parallel with copy and compute operations.

    Another new Tutorial24 - Variable rate shading demonstrates how to use variable rate shading to reduce the pixel shading load.

    Source code(tar.gz)
    Source code(zip)
    DiligentEngine_v2.5.1.zip(265.65 MB)
  • v2.5(Jun 5, 2021)

    A major release that introduces a number of significant improvements:

    • Pipeline resource signatures enable applications to define explicit shader resource layouts that allow sharing shader resource binding objects between different pipeline states.
    • Multiple immediate contexts is an abstraction over multiple command queues that enables e.g. async compute and parallel rendering.
    • Inline ray-tracing is a powerful extension to ray tracing that allows casting rays from regular shaders (pixel, compute, etc.).
    • Ray tracing on Metal is now also supported by Diligent Engine.
    • Debug groups improve debugging and profiling experience.
    • Wave operations enable sharing data between threads in one shader thread group.
    • Tile shaders is a special type of shader currently only available on Metal that is similar to compute shader, but processes on-chip tile memory.
    • Memoryless framebuffer attachments enable memory savings on mobile platforms.

    API Changes

    • Added MISC_TEXTURE_FLAG_MEMORYLESS flag (API Version 250000)
    • Removed RayTracing2 device feature and added RAY_TRACING_CAP_FLAGS enum (API Version 240099)
    • Added tile shaders (API Version 240098)
      • Added PIPELINE_TYPE_TILE and SHADER_TYPE_TILE enum values
      • Added TileShaders device feature
      • Added TilePipelineDesc, TilePipelineStateCreateInfo and DispatchTileAttribs structs
      • Added IRenderDevice::CreateTilePipelineState, IPipelineState::GetTilePipelineDesc, IDeviceContext::DispatchTile and IDeviceContext::GetTileSize methods
    • Removed GetNextFenceValue, GetCompletedFenceValue, and IsFenceSignaled methods from IRenderDeviceD3D12 and IRenderDeviceVk interfaces as they are now in ICommandQueue interface (API Version 240097)
    • Added ICommandQueue interface, IDeviceContext::LockCommandQueue and IDeviceContext::UnlockCommandQueue methods, removed fence query methods from IRenderDeviceVk, IRenderDeviceD3D12, and IRenderDeviceMtl (API Version 240096)
    • Added multiple immediate device contexts and refactored adapter queries (API Version 240095)
      • CommandQueueMask member of TextureDesc, BufferDesc, PipelineStateDesc, TopLevelASDesc, and BottomLevelASDesc, was renamed to ImmediateContextMask
      • Added pContext member to TextureData and BufferData structs to indicate which context to use for initialization.
      • Removed GetDeviceCaps and GetDeviceProperties IDeviceContext methods and added GetDeviceInfo and GetAdapterInfo methods; added RenderDeviceInfo struct.
      • Renamed SamplerCaps to SamplerProperties,TextureCapstoTextureProperties; addedBufferProperties,RayTracingProperties, andMeshShaderProperties` structs
      • Removed DeviceLimits struct
      • Removed DeviceCaps struct and moved its members to GraphicsAdapterInfo and RenderDeviceInfo structs
      • Added NativeFence to DeviceFeatures
      • Added CommandQueueInfo struct
      • Added COMMAND_QUEUE_TYPE and QUEUE_PRIORITY enums
      • Renamed ShaderVersion struct to Version
      • Reworked GraphicsAdapterInfo struct
      • Added ImmediateContextCreateInfo struct and pImmediateContextInfo, NumImmediateContexts members to EngineCreateInfo struct
      • Added AdapterId and GraphicsAPIVersion members to EngineCreateInfo struct
      • Removed DIRECT3D_FEATURE_LEVEL enum
      • Added FENCE_TYPE enum
      • Renamed IFence::Reset to IFence::Signal; added IFence::Wait method
      • Added IEngineFactory::EnumerateAdapters method
      • Added DeviceContextDesc struct and IDeviceContext::GetDesc method
      • Added IDeviceContext::Begin method, renamed IDeviceContext::SignalFence to IDeviceContext::EnqueueSignal
    • Added debug annotations IDeviceContext::BeginDebugGroup, IDeviceContext::EndDebugGroup, IDeviceContext::InsertDebugLabel (API Version 240095)
    • Added DefaultVariableMergeStages member to PipelineResourceLayoutDesc struct (API240094)
    • Added IShaderResourceVariable::SetBufferRange and IShaderResourceVariable::SetBufferOffset methods, added DeviceLimits struct (API240093)
    • Updated API to allow explicitly flushing/invlidating mapped buffer memory range : added MEMORY_PROPERTIES enum, IBuffer::GetMemoryProperties(), IBuffer::FlushMappedRange(), and IBuffer::InvalidateMappedRange() methods (API240092)
    • Added IDeviceContext::SetUserData() and IDeviceContext::GetUserData() methods (API240091)
    • Added SHADER_VARIABLE_FLAGS enum and SHADER_VARIABLE_FLAGS Flags member to ShaderResourceVariableDesc struct (API240090)
    • Reworked validation options (API240089)
      • Added VALIDATION_FLAGS and D3D12_VALIDATION_FLAGS enums; renamed D3D11_DEBUG_FLAGS to D3D11_VALIDATION_FLAGS
      • Added VALIDATION_FLAGS ValidationFlags and bool EnableValidation to EngineCreateInfo
      • Added D3D12_VALIDATION_FLAGS D3D12ValidationFlags to EngineD3D12CreateInfo; removed EnableDebugLayer, EnableGPUBasedValidation, BreakOnError, BreakOnCorruption
      • Added VALIDATION_LEVEL enum and SetValidationLevel() create info structs' helper functions
      • Removed EngineGLCreateInfo::CreateDebugContext member (it is replaced with EnableValidation)
    • Added MtlThreadGroupSizeX, MtlThreadGroupSizeY, and MtlThreadGroupSizeZ members to DispatchComputeAttribs and DispatchComputeIndirectAttribs structs (API Version 240088)
    • Added InstanceDataStepRate device feature (API Version 240087)
    • Added WaveOp device feature (API Version 240086)
    • Added UpdateSBT command (API Version 240085)
    • Removed EngineD3D12CreateInfo::NumCommandsToFlushCmdList and EngineVkCreateInfo::NumCommandsToFlushCmdBuffer as flushing the context based on the number of commands is unreasonable (API Version 240084)
    • Added pipeline resource signatures, enabled inline ray tracing, added indirect draw mesh command (API Version 240083)
    • Replaced IDeviceContext::ExecuteCommandList() with IDeviceContext::ExecuteCommandLists() method that takes an array of command lists instead of one (API Version 240082)
    • Added IDeviceObject::SetUserData() and IDeviceObject::GetUserData() methods (API Version 240081)

    Samples and tutorials

    New Tutorial 22 - Hybrid Rendering demonstrates how to implement a simple hybrid renderer that combines rasterization with ray tracing. The tutorial runs on DirectX12, Vulkan and Metal.

    Source code(tar.gz)
    Source code(zip)
    DiligentEngine_v2.5.zip(257.48 MB)
  • v2.4.g(Jan 7, 2021)

    API Changes

    • Enabled ray tracing (API Version 240080)

    • Added IDeviceContext::GetFrameNumber method (API Version 240079)

    • Added ShaderResourceQueries device feature and EngineGLCreateInfo::ForceNonSeparablePrograms parameter (API Version 240078)

    • Renamed USAGE_STATIC to USAGE_IMMUTABLE (API Version 240077)

    • Renamed static samplers into immutable samplers (API Version 240076)

      • Renamed StaticSamplerDesc -> ImmutableSamplerDesc
      • Renamed PipelineResourceLayoutDesc::NumStaticSamplers -> PipelineResourceLayoutDesc::NumImmutableSamplers
      • Renamed PipelineResourceLayoutDesc::StaticSamplers -> PipelineResourceLayoutDesc::ImmutableSamplers
    • Refactored pipeline state creation (API Version 240075)

      • Replaced PipelineStateCreateInfo with GraphicsPipelineStateCreateInfo and ComputePipelineStateCreateInfo
      • Replaced IRenderDevice::CreatePipelineState with IRenderDevice::CreateGraphicsPipelineState and IRenderDevice::CreateComputePipelineState
      • pVS, pGS, pHS, pDS, pPS, pAS, pMS were moved from GraphicsPipelineDesc to GraphicsPipelineStateCreateInfo
      • GraphicsPipelineDesc GraphicsPipeline was moved from PipelineStateDesc to GraphicsPipelineStateCreateInfo
      • pCS is now a member of ComputePipelineStateCreateInfo, ComputePipelineDesc was removed
      • Added IPipelineState::GetGraphicsPipelineDesc method

      Old API for graphics pipeline initialization:

      PipelineStateCreateInfo PSOCreateInfo;
      PipelineStateDesc&      PSODesc = PSOCreateInfo.PSODesc;
      
      PSODesc.GraphicsPipeline.pVS = pVS;
      PSODesc.GraphicsPipeline.pPS = pVS;
      // ...
      Device->CreatePipelineState(PSOCreateInfo, &pPSO);
      

      New API for graphics pipeline initialization:

      GraphicsPipelineStateCreateInfo PSOCreateInfo;
      // ...
      PSOCreateInfo.pVS = pVS;
      PSOCreateInfo.pPS = pVS;
      Device->CreateGraphicsPipelineState(PSOCreateInfo, &pPSO);
      

      Old API for compute pipeline initialization:

      PipelineStateCreateInfo PSOCreateInfo;
      PipelineStateDesc&      PSODesc = PSOCreateInfo.PSODesc;
      
      PSODesc.ComputePipeline.pCS = pCS;
      // ...
      Device->CreatePipelineState(PSOCreateInfo, &pPSO);
      

      New API for compute pipeline initialization:

      ComputePipelineStateCreateInfo PSOCreateInfo;
      
      PSOCreateInfo.pCS = pCS;
      Device->CreateComputePipelineState(PSOCreateInfo, &pPSO);
      
    • Added ShaderInt8, ResourceBuffer8BitAccess, and UniformBuffer8BitAccess device features. (API Version 240074)

    • Added ShaderFloat16, ResourceBuffer16BitAccess, UniformBuffer16BitAccess, and ShaderInputOutput16 device features. (API Version 240073)

    Samples and Tutorials

    Source code(tar.gz)
    Source code(zip)
    DiligentEngine-v2.4.g.zip(255.07 MB)
  • v2.4.f(Sep 21, 2020)

    API Changes

    • Added UnifiedMemoryCPUAccess member to GraphicsAdapterInfo struct (API Version 240072)
      • An application should check allowed unified memory access types before creating unified buffers
    • Added GPU vendor and memory size detection (API Version 240071)
      • Added ADAPTER_VENDOR enum
      • Added GraphicsAdapterInfo struct
      • Added GraphicsAdapterInfo AdapterInfo member to DeviceCaps struct
      • Removed ADAPTER_TYPE AdaterType from DeviceCaps struct
    • Reworked texture format properties (API Version 240070)
      • Added RESOURCE_DIMENSION_SUPPORT enum
      • Reworked TextureFormatInfoExt struct
    • Added option to disable/enable device features during initialization (API Version 240069)
      • Added DEVICE_FEATURE_STATE enum
      • Changed the types of members of DeviceFeatures struct from bool to DEVICE_FEATURE_STATE
      • Added DeviceFeatures Features member to EngineCreateInfo struct
    • Enabled mesh shaders (API Version 240068)
      • Added PIPELINE_TYPE enum
      • Replaced IsComputePipline member of PipelineStateDesc struct with PIPELINE_TYPE PipelineType
      • Added new mesh shader types
      • Added mesh shader draw commands
    • Added QUERY_TYPE_DURATION query type (API Version 240067)
    • Added USAGE_UNIFIED usage type (API Version 240066)
    • Added render passes (API Version 240065)
    • Added CREATE_SHADER_SOURCE_INPUT_STREAM_FLAGS enum and IShaderSourceInputStreamFactory::CreateInputStream2 method (API Version 240064)
    • Added ISwapChain::SetMaximumFrameLatency function (API Version 240061)
    • Added EngineGLCreateInfo::CreateDebugContext member (API Version 240060)
    • Added SHADER_SOURCE_LANGUAGE_GLSL_VERBATIM value (API Version 240059).
    • Added GLBindTarget parameter to IRenderDeviceGL::CreateTextureFromGLHandle method (API Version 240058).

    Samples and Tutorials

    Source code(tar.gz)
    Source code(zip)
  • v2.4.e(Apr 29, 2020)

    • Enabled Vulkan on Android
    • Added C Interface

    API Changes

    • Added PreTransform parameter to swap chain description
    • Added PipelineStateCreateInfo struct that is now taken by IRenderDevice::CreatePipelineState instead of PipelineStateDesc struct. Added PSO_CREATE_FLAGS enum
    • Updated swap chain creation functions to use NativeWindow
    • Added NativeWindow wrapper and replaced pNativeWndHandle and pDisplay members with it in EngineGLCreateInfo
    Source code(tar.gz)
    Source code(zip)
  • v2.4.d(Jan 15, 2020)

  • v2.4.c(Oct 13, 2019)

  • v2.4.b(Mar 8, 2019)

  • v2.4.a(Jan 7, 2019)

    • Enabled MinGW build
    • Enabled Vulkan on MacOS via MoltenVK
    • Implemented split barriers (https://github.com/DiligentGraphics/DiligentCore/issues/43)
      • Added STATE_TRANSITION_TYPE enum and STATE_TRANSITION_TYPE TransitionType member to StateTransitionDesc structure
    • Added Metal backend stub
    • Samples:
      • Added rendering backend selection dialog on Win32 and Mac
    Source code(tar.gz)
    Source code(zip)
  • v2.4(Dec 10, 2018)

    • Added explicit resource state transitions
    • API Changes
      • Added RESOURCE_STATE enum that defines the resource state
      • Added RESOURCE_STATE_TRANSITION_MODE enum that controls resource state transition mode
      • Added DRAW_FLAGS enum that controls state validation performed by Draw command
      • Added Flags member to DrawAttribs structure (values from DRAW_FLAGS)
      • Added IndirectAttribsBufferStateTransitionMode member to DrawAttribs and DispatchComputeAttribs structures (values from RESOURCE_STATE_TRANSITION_MODE)
      • Added StateTransitionDesc structure that describes resource state transition barrier
      • Added IDeviceContext::TransitionResourceStates(Uint32 BarrierCount, StateTransitionDesc* pResourceBarriers) method
      • Added IBuffer::SetState(), IBuffer::GetState(), ITexture::SetState(), ITexture::GetState() methods
      • Added IShaderResourceBinding::InitializeStaticResources() to explicitly initialize static resources and avoid problems in multi-threaded environments
      • Added InitStaticResources parameter to IPipelineState::CreateShaderResourceBinding() method to allow immediate initialization of static resources in a SRB
      • Removed default SRB object
      • Renamed/moved IBuffer::UpdateData() to IDeviceContext::UpdateBuffer()
      • Renamed/moved IBuffer::CopyData() to IDeviceContext::CopyBuffer()
      • Renamed/moved IBuffer::Map() to IDeviceContext::MapBuffer()
      • Renamed/moved IBuffer::Unmap() to IDeviceContext::UnmapBuffer()
        • Removed MapFlags parameter
      • Renamed/moved ITexture::UpdateData() to IDeviceContext::UpdateTexture()
      • Renamed/moved ITexture::CopyData() to IDeviceContext::CopyTexture()
      • Renamed/moved ITexture::Map() to IDeviceContext::MapTextureSubresource()
      • Renamed/moved ITexture::Unmap() to IDeviceContext::UnmapTextureSubresource()
      • Moved ITextureView::GenerateMips() to IDeviceContext::GenerateMips()
      • Added state transition mode parameters to IDeviceContext::UpdateBuffer(), IDeviceContext::UpdateTexture(), IDeviceContext::CopyBuffer(), IDeviceContext::CopyTexture(), IDeviceContext::SetVertexBuffers(), IDeviceContext::SetIndexBuffers(), IDeviceContext::ClearRenderTargets(), and IDeviceContext::ClearDepthStencil() methods
      • Replaced COMMIT_SHADER_RESOURCES_FLAGS enum with RESOURCE_STATE_TRANSITION_MODE
      • Added ITextureD3D12::GetD3D12ResourceState(), IBufferD3D12::GetD3D12ResourceState(), IBufferVk::GetAccessFlags(), and ITextureVk::GetLayout() methods
      • Added CopyTextureAttribs structure that combines all paramters of IDeviceContext::CopyTexture() method
    Source code(tar.gz)
    Source code(zip)
  • v2.3.b(Nov 11, 2018)

    • Enabled Vulkan backend on Linux
    • API Changes
      • Implemented separate texture samplers:
        • Added UseCombinedTextureSamplers and CombinedSamplerSuffix members to ShaderCreationAttribs structure
        • When separate samplers are used (UseCombinedTextureSamplers == false), samplers are set in the same way as other shader variables via shader or SRB objects
      • Removed BIND_SHADER_RESOURCES_RESET_BINDINGS flag, renamed BIND_SHADER_RESOURCES_KEEP_EXISTING to BIND_SHADER_RESOURCES_KEEP_EXISTING. Added BIND_SHADER_RESOURCES_UPDATE_STATIC, BIND_SHADER_RESOURCES_UPDATE_MUTABLE, BIND_SHADER_RESOURCES_UPDATE_DYNAMIC, and BIND_SHADER_RESOURCES_UPDATE_ALL flags
    • Using glslang to compile HLSL to SPIRV in Vulkan backend instead of relying on HLSL->GLSL converter
    Source code(tar.gz)
    Source code(zip)
  • v2.3.a(Oct 11, 2018)

    • Core

      • Added IFence interface and IDeviceContext::SignalFence() method to enable CPU-GPU synchronization
      • Added BUFFER_MODE_RAW mode allowing raw buffer views in D3D11/D3D12.
      • Moved Format member from BufferDesc to BufferViewDesc
      • Removed IsIndirect member from DrawAttrbis as setting pIndirectDrawAttribs to a non-null buffer already indicates indirect rendering
    • Samples:

      • Added Tutorial 10 - Data Streaming
    Source code(tar.gz)
    Source code(zip)
  • v2.3(Jul 8, 2018)

  • v2.2.a(Mar 14, 2018)

    Source code(tar.gz)
    Source code(zip)
  • v2.2(Feb 20, 2018)

  • v2.1.b(Jan 16, 2018)

  • v2.1.a(Dec 26, 2017)

Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal

Low Level Graphics Library (LLGL) Documentation NOTE: This repository receives bug fixes only, but no major updates. Pull requests may still be accept

Lukas Hermanns 1.4k Sep 15, 2022
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.

bgfx - Cross-platform rendering library GitHub Discussions Discord Chat What is it? Cross-platform, graphics API agnostic, "Bring Your Own Engine/Fram

Бранимир Караџић 12.1k Sep 14, 2022
A low-level, cross-platform GPU library

vgpu is cross-platform low-level GPU library. Features Support for Windows, Linux, macOS. Modern rendering using Vulkan and Direct3D12. Dependencies U

Amer Koleci 9 Jul 28, 2022
A small cross-platform graphics library made in C

minigfx Small graphics library made in C Intended to be: Simple to understand Intuitive Fun to use Features Cross platform: Windows and Linux. To see

Laurentino Luna 27 Jul 18, 2021
Android studio native project template using cross platform raylib graphics library.

rayturbo Android studio native project template using cross platform raylib graphics library. https://www.raylib.com/ This project use Android Studio

Ciapas Linux 10 Mar 5, 2022
NVRHI (NVIDIA Rendering Hardware Interface) is a library that implements a common abstraction layer over multiple graphics APIs

NVRHI Introduction NVRHI (NVIDIA Rendering Hardware Interface) is a library that implements a common abstraction layer over multiple graphics APIs (GA

NVIDIA GameWorks 406 Sep 13, 2022
Deno gl - WIP Low-level OpenGL (GLFW) bindings and WebGL API implementation for Deno.

deno_gl WIP Low-level OpenGL (GLFW) bindings and WebGL API implementation for Deno. Building Make dist directory if it doesn't exist. Build gl helper

DjDeveloper 14 Jun 11, 2022
ORE (OpenGL Rendering Engine) is a rendering engine developed for my college minor project assessment.

ORE (OPENGL RENDERING ENGINE) What is ORE? ORE(OpenGL Rendering Engine) is a rendering engine with great and easy to use UI that allows the user to lo

HARSHIT BARGUJAR 4 Dec 20, 2021
A terminal-based graphics library for both 2D and 3D graphics.

TermGL A terminal-based graphics library for both 2D and 3D graphics. Written in C, created for terminals supporting ANSI escape codes. Table of Conte

null 207 Sep 21, 2022
Metal-cpp is a low-overhead C++ interface for Metal that helps developers add Metal functionality to graphics apps, games, and game engines that are written in C++.

About metal-cpp is a low overhead and header only C++ interface for Metal that helps developers add Metal functionality to graphics applications that

Бранимир Караџић 153 Sep 20, 2022
Vire is a C++ voxel rendering engine. It is written in C++14 and uses OpenGL for graphics.

Vire Vire is a C++ voxel rendering engine. It is written in C++14 and uses OpenGL for graphics. Downloads If you'd just like to just download and try,

null 35 Jul 27, 2022
kaun is a replacement for löve's built-in love.graphics module intended for 3D graphics

kaun kaun is a replacement for löve's built-in love.graphics module intended for 3D graphics. It is a Lua module you can require from a shared library

Joel Schumacher 4 Apr 5, 2021
This repo contains the DirectX Graphics samples that demonstrate how to build graphics intensive applications on Windows.

DirectX-Graphics-Samples This repo contains the DirectX 12 Graphics samples that demonstrate how to build graphics intensive applications for Windows

Microsoft 4.7k Sep 22, 2022
SoL (for Speed of Light, or sun in Spanish) is a Physically-based rendering library written in modern C++

SoL (for Speed of Light, or sun in Spanish) is a small rendering library written in C++20. Its goal is to strike a good balance between performance and usability, and allow easy experimentation for rendering researchers.

Arsène Pérard-Gayot 10 May 19, 2022
rlottie is a platform independent standalone c++ library for rendering vector based animations and art in realtime

rlottie rlottie is a platform independent standalone c++ library for rendering vector based animations and art in realtime. Lottie loads and renders a

Samsung 733 Sep 21, 2022
A library for high-performance, modern 2D graphics with SDL written in C.

SDL_gpu, a library for making hardware-accelerated 2D graphics easy. by Jonathan Dearborn SDL_gpu is licensed under the terms of the MIT License. See

Jonathan Dearborn 1.1k Sep 14, 2022
graphics and computational physics framework

atto Graphics and computational physics research framework: aligned memory allocation, string manipulation, file IO, etc. 2-, 3- and 4-dimensional vec

Carlos Correia 0 Jul 24, 2022
4K Executable Graphics framework

Blossom ?? Blossom is a small framework for creating 4K Executable Graphics artworks for the demoscene. You are free to use this as the basis for your

Luna 167 Sep 13, 2022
2D Graphics Framework for C99

roita 2D Graphics Framework for C99. Install clone the repo cd into roita run make install Dependencies -lX11 -lpthread -lxcb -lXau -lXdmcp -lGLX -lGL

r0tthin 1 Dec 4, 2021