Giter Site home page Giter Site logo

diligentgraphics / diligentengine Goto Github PK

View Code? Open in Web Editor NEW
3.4K 118.0 322.0 9.81 MB

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

Home Page: http://diligentgraphics.com/diligent-engine/

License: Apache License 2.0

CMake 21.43% Batchfile 78.57%
gamedev opengl opengl-es graphics-engine vulkan d3d11 d3d12 vulkan-game-engine renderer graphics-programming graphics-library rendering 3d-engine directx directx11 directx12 pbr ibl raytracing ray-tracing

diligentengine's Introduction

Diligent Engine

A Modern Cross-Platform Low-Level 3D Graphics Library and Rendering Framework 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, MSL, 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 Discord Appveyor Build Status

Supported Platforms and Low-Level Graphics APIs

Platform D3D11 D3D12 OpenGL/GLES Vulkan Metal Build Status
Windows ✔️ ✔️ ✔️ ✔️ - Build Status
Universal Windows ✔️ ✔️ - - - Build Status
Linux - - ✔️ ✔️ - Build Status
Android - - ✔️ ✔️ - Build Status
MacOS - - ✔️ ✔️ 1 ✔️ 2 Build Status
iOS - - ✔️ ✔️ 1 ✔️ 2 Build Status
tvOS - - - ✔️ 1 ✔️ 2 Build Status
Emscripten - - ✔️ - - Build Status

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

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

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++/C#
    • Object-based
    • Stateless
  • Key graphics features:
    • Automatic shader resource binding designed to leverage next-generation graphics APIs
    • Multithreaded command buffer generation
    • Multithreaded resource creation
    • Automatic or explicit control over resource state transitions
    • Descriptor and memory management
    • Shader resource reflection
    • Async compute and multiple command queues
    • Ray-tracing, mesh shaders, tile shaders, bindless resources, variable rate shading, sparse resources, wave operations, and other state-of-the-art capabilities
  • JSON-based render state description language and state packaging tool
  • 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

Minimum supported low-level API versions:

  • OpenGL 4.1
  • OpenGLES 3.0
  • WebGL 2.0
  • Direct3D11.1
  • Direct3D12 with SDK version 10.0.17763.0
  • Vulkan 1.0
  • Metal 1.0

High-level Rendering components

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.20 or later is required). Another build prerequisite is Python interpreter (3.0 or later is required). If after following the instructions 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

.NET support requires .NET SDK 6.0 or later.

Use either CMake GUI or command line tool to generate build files. For example, to generate Visual Studio 2022 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 17 2022" -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 17 2022" -A x64

If you use MinGW, you can generate the make files using the command below (note however that the functionality 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 the Vulkan SDK and add environment variable VK_LAYER_PATH that contains the 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 Version >

For example, to generate Visual Studio 2022 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 17 2022" -A x64

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

By default, applications 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++14 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 (clang 10 or later is recommended).

⚠️ gcc 9 and above seemingly produces invalid binary code with O2 and O3 optimization levels. To avoid crashes, optimization level is downgraded to O1 in release configurations. It is recommended to use clang or gcc 7 or 8.

You may need to install the following packages:

  1. gcc, clang, 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
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libxrandr-dev
sudo apt-get install libxinerama-dev
sudo apt-get install libxcursor-dev
sudo apt-get install libxi-dev

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 -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug"

To build the engine, run the following command:

cmake --build ./build

On Ubuntu 23 and newer, it may crash if you don't have libtinfo5 installed, you'll need to add it.

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. NDK r24 or later is required. 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.

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

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

MacOS

Prerequisites:

  • Xcode 14 or later
  • Vulkan SDK 1.3.268.1 or later to enable Vulkan

After you clone the repo, run the following command from the engine's root folder to generate Xcode project:

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

The project will be located in build/MacOS folder.

Note that if CMake fails to find the compiler, you may need to run the following command:

sudo xcode-select --reset

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 /Users/MyName/VulkanSDK/1.3.268.1 and you want to use MoltenVK):

export VULKAN_SDK=/Users/MyName/VulkanSDK/1.3.268.1/macOS
export PATH=$VULKAN_SDK/bin:$PATH
export DYLD_LIBRARY_PATH=$VULKAN_SDK/lib:$DYLD_LIBRARY_PATH
export VK_ADD_LAYER_PATH=$VULKAN_SDK/share/vulkan/explicit_layer.d
export VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json
export VK_DRIVER_FILES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json

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.

Latest tested Vulkan SDK version: 1.3.268.1.

⚠️ There are known issues with later versions of the SDK, so it is recommended to use the latest tested version.

iOS

Prerequisites:

  • Xcode 14 or later
  • Vulkan SDK 1.3.268.1 or later to enable Vulkan

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 (13.0 or later is required) as well as other parameters, e.g.:

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

⚠️ To build for iPhone simulator, use the iphonesimulator system root. You may also use the CMAKE_OSX_ARCHITECTURES variable to specify target architecture, for example:

cmake -S . -B ./build/iOSSim -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=arm64 -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 the 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 /Users/MyName/VulkanSDK/1.3.268.1):

cmake -DCMAKE_SYSTEM_NAME=iOS -DVULKAN_SDK=/Users/MyName/VulkanSDK/1.3.268.1 -S . -B ./build/iOS -G "Xcode"

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

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

Latest tested Vulkan SDK version: 1.3.268.1.

⚠️ There are known issues with later versions of the SDK, so it is recommended to use the latest tested version.

Emscripten

Build prerequisites:

  • Emscripten SDK 3.1.61
  • Ninja 1.10.2

To activate PATH and other environment variables in the current terminal

source ${PATH_TO_EMSDK}/emsdk/emsdk_env.sh

⚠️ On Windows, run ${PATH_TO_EMSDK}/emsdk/emsdk_env.bat instead of source ${PATH_TO_EMSDK}/emsdk/emsdk_env.sh

To generate project, run the following CMake command from the engine's root folder:

emcmake cmake -S . -B ./build/Emscripten -G "Ninja"

To build the engine, run the following command:

cmake --build ./build/Emscripten

To test emscripten applications, run a basic web server

cd ./build/Emscripten
python -m http.server

Open a browser, and navigate to http://localhost:8000

For example, the demo will be available at

http://localhost:8000/DiligentSamples/Tutorials/Tutorial01_HelloTriangle/Tutorial01_HelloTriangle.html

Integrating Diligent Engine with Existing Build System

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

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

Don't forget to recursively initialize submodules if you are adding Diligent repos as submodules to your project.

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 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_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. Please also take a look at getting started tutorials for Windows and Linux.

Using FetchContent

You can use FetchContent to download Diligent Engine modules. The only caveat is that you need to specify the source directory for each module to be the same as the module name, so that header files can be found. Below is an example of a CMake file that uses FetchContent:

cmake_minimum_required (VERSION 3.6)

project(HelloDiligent CXX)

include(FetchContent)
FetchContent_Declare(
    DiligentCore
    GIT_REPOSITORY https://github.com/DiligentGraphics/DiligentCore.git
    SOURCE_DIR _deps/DiligentCore
)
FetchContent_Declare(
    DiligentTools
    GIT_REPOSITORY https://github.com/DiligentGraphics/DiligentTools.git
    SOURCE_DIR _deps/DiligentTools
)
FetchContent_Declare(
    DiligentFX
    GIT_REPOSITORY https://github.com/DiligentGraphics/DiligentFX.git
    SOURCE_DIR _deps/DiligentFX
)
FetchContent_MakeAvailable(DiligentCore DiligentTools DiligentFX)

add_executable(HelloDiligent WIN32 HelloDiligent.cpp)
target_include_directories(HelloDiligent
PRIVATE
    ${diligentcore_SOURCE_DIR}
    ${diligenttools_SOURCE_DIR}
    ${diligentfx_SOURCE_DIR}
)

target_compile_definitions(HelloDiligent PRIVATE UNICODE)

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

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. You can download the latest build artifacts from GitHub.

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 17 2022" -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 dxgi.lib d3d11.lib d3d12.lib d3dcompiler.lib opengl32.lib

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 integrate 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

Available CMake options are summarized in the table below:

Option Default value Description
DILIGENT_NO_DIRECT3D11 No Do not build Direct3D11 backend
DILIGENT_NO_DIRECT3D12 No Do not build Direct3D12 backend
DILIGENT_NO_OPENGL No Do not build OpenGL backend
DILIGENT_NO_VULKAN No Do not build Vulkan backend
DILIGENT_NO_METAL No Do not build Metal backend
DILIGENT_NO_ARCHIVER No Do not build Archiver
DILIGENT_NO_RENDER_STATE_PACKAGER No Do not build Render State Packager tool
DILIGENT_ENABLE_DRACO No Enable Draco compression support in GLTF loader
DILIGENT_BUILD_TOOLS Yes Build Tools module
DILIGENT_BUILD_FX Yes Build FX module
DILIGENT_BUILD_SAMPLES Yes Build Samples module
DILIGENT_BUILD_SAMPLE_BASE_ONLY No Build only SampleBase project and no other samples/tutorials
DILIGENT_BUILD_TESTS No Build Unit Tests
DILIGENT_NO_GLSLANG No Do not build GLSLang and SPRIV-Tools
DILIGENT_NO_HLSL No Disable HLSL support in non-Direct3D backends
DILIGENT_NO_FORMAT_VALIDATION No Disable source code formatting validation
DILIGENT_LOAD_PIX_EVENT_RUNTIME No Enable PIX event support
DILIGENT_NVAPI_PATH Path to NVAPI SDK
DILIGENT_INSTALL_CORE Yes Install core module
DILIGENT_INSTALL_TOOLS Yes Install tools module
DILIGENT_INSTALL_FX Yes Install FX module
DILIGENT_INSTALL_SAMPLES Yes Install Samples module
DILIGENT_INSTALL_PDB No Install program debug database
DILIGENT_DEAR_IMGUI_PATH Optional path to a user-provided dear imgui project
DILIGENT_ARGS_DIR Optional path to a user-provided args project
DILIGENT_NUKLEAR_DIR Optional path to a user-provided nuklear project
DILIGENT_MSVC_COMPILE_OPTIONS /WX Additional MSVC compile options for all configurations
DILIGENT_MSVC_DEBUG_COMPILE_OPTIONS Additional MSVC compile options for debug configuration
DILIGENT_MSVC_RELEASE_COMPILE_OPTIONS /arch:AVX2 Additional MSVC compile options for release configurations
DILIGENT_CLANG_COMPILE_OPTIONS -Werror Additional Clang compile options for all configurations
DILIGENT_CLANG_DEBUG_COMPILE_OPTIONS Additional Clang compile options for debug configuration
DILIGENT_CLANG_RELEASE_COMPILE_OPTIONS -mavx2 Additional Clang compile options for release configurations
DILIGENT_USD_PATH Path to USD installation folder

By default, all back-ends available on the 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 17 2022" -A x64

Additionally, individual engine components can be enabled or disabled using the following options: DILIGENT_BUILD_TOOLS, DILIGENT_BUILD_FX, DILIGENT_BUILD_SAMPLES. 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 especially important for mobile applications.

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

Diligent Engine uses extensive validation that is always enabled in Debug build. Some of the checks may be enabled in release configurations by setting DILIGENT_DEVELOPMENT CMake option.

To enable PIX events support, set DILIGENT_LOAD_PIX_EVENT_RUNTIME CMake flag.

To enable some advanced features on NVidia GPUs (such as native multi draw indirect support in Direct3D11), download NVAPI and set the DILIGENT_NVAPI_PATH CMake variable.

Diligent Engine uses multiple third-party libraries. If an application's CMake file defines any of those libraries, Diligent will use existing targets. The application will need to make sure that build settings are compatible with Diligent.

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 17 2022" -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.

Render State Notation

Diligent Render State Notation is 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"
                },
                "BlendDesc": {
                    "RenderTargets": {
                        "0": {
                            "BlendEnable": true
                        }
                    }
                }
            },
            "PSODesc": {
                "Name": "My Pipeline State",
                "PipelineType": "GRAPHICS"
            },
            "pVS": "My Vertex shader",
            "pPS": "My Pixel shader"
        }
    ]
}

JSON files can be parsed dynamically at run time. Alternatively, an application can use the packager tool to preprocess pipeline descriptions (compile shaders for target platforms, define internal resource layouts, etc.) into a binary archive optimized for run-time loading performance.

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.
03 - Texturing-DotNet This tutorial demonstrates how to use the Diligent Engine API in .NET applications.
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 switching 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.
22 - Hybrid Rendering This tutorial demonstrates how to implement a simple hybrid renderer that combines rasterization with ray tracing.
23 - Command Queues This tutorial demonstrates how to use multiple command queues to perform rendering in parallel with copy and compute operations.
24 - Variable Rate Shading This tutorial demonstrates how to use variable rate shading to reduce the pixel shading load.
25 - Render State Packager This tutorial shows how to create and archive pipeline states with the render state packager off-line tool on the example of a simple path tracer.
26 - Render State Cache This tutorial expands the path tracing technique implemented in previous tutorial and demonstrates how to use the render state cache to save pipeline states created at run time and load them when the application starts.
27 - Post-Processing This tutorial demonstrates how to use post-processing effects from the DiligentFX module.

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.
GLFW Demo This maze mini-game demonstrates how to use GLFW to create window and handle keyboard and mouse input.
GLTF Viewer This sample demonstrates how to use the Asset Loader and PBR Renderer to load and render GLTF models.
USD Viewer This sample demonstrates how to render USD files using Hydrogent, an implementation of the Hydra rendering API in Diligent Engine.
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.
Asteroids This sampple is a performance benchmark that renders 50,000 unique textured asteroids and allows 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:

  • Hydrogent, an implementation of the Hydra rendering API in Diligent Engine.

Post-processing effects

Products using Diligent Engine

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

Disclaimer

Diligent Engine is an open project that may be freely used by everyone. We started it to empower the community and help people achieve their goals. Sadly enough, not everyone's goals are worthy. Please don't associate us with suspicious projects you may find on the Web that appear to be using Diligent Engine. We neither can possibly track all such uses nor can we really do anything about them because our permissive license does not give us a lot of leverage.

License

See Apache 2.0 license.

Each module has some third-party dependencies, each of which may have independent licensing:

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 throughout the code base. The format is validated by CI 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

Coding Guidelines

Performance Best Practices

Code Formatting

Release History

See Release History


diligentgraphics.com

Diligent Engine on Twitter Diligent Engine on Facebook

diligentengine's People

Contributors

ahcox avatar azhirnov avatar beeryt avatar dolphineye avatar jayrulez avatar kkulling avatar kvark avatar luzpaz avatar mikhailgorobets avatar randompast avatar scrusader avatar themostdiligent avatar tombish avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

diligentengine's Issues

[Need Help] Few questions

Hi, I would like to use your engine to develop a voxel game and I have few questions about it:

  • What's DiligentEngine repo has more than DiligentCore for development? You added some samples and tutorials that's really great for learning, but is DiligentCore is enough for development and compiling?

  • How compile on windows with Mingw64 and without Visual Studio?

  • How cross compile on linux for windows using also Mingw64?
    I just use this for the moment but does not work because your cmake seems to not setup sources for external libs:

# the name of the target operating system
set(CMAKE_SYSTEM_NAME Windows)

# Which compilers to use for C and C++
set(CMAKE_C_COMPILER /usr/bin/x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER /usr/bin/x86_64-w64-mingw32-g++)
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Check for working C compiler: /usr/bin/x86_64-w64-mingw32-gcc
-- Check for working C compiler: /usr/bin/x86_64-w64-mingw32-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/x86_64-w64-mingw32-g++
-- Check for working CXX compiler: /usr/bin/x86_64-w64-mingw32-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Target platform: Win32. SDK Version: 
D3D11_SUPPORTED: TRUE
D3D12_SUPPORTED: TRUE
GL_SUPPORTED: TRUE
GLES_SUPPORTED: FALSE
VULKAN_SUPPORTED: TRUE
-- spirv-tools not linked - illegal SPIRV may be generated for HLSL
-- Configuring done
CMake Error at DiligentCore/External/SPIRV-Cross/CMakeLists.txt:27 (add_library):
  Cannot find source file:

    readme.md

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx


CMake Error at Projects/Asteroids/CMakeLists.txt:81 (add_executable):
  Cannot find source file:

    readme.md

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx


CMake Error at DiligentCore/External/SPIRV-Cross/CMakeLists.txt:27 (add_library):
  No SOURCES given to target: SPIRVCross


CMake Error at Projects/Asteroids/CMakeLists.txt:81 (add_executable):
  No SOURCES given to target: Asteroids


-- Build files have been written to: DiligentEngine/build
  • Do you use a specific lib for GUI rendering?

Thanks in advance for your further response.

Move GetEngineFactoryXXXType and LoadGraphicsEngineXXX to Diligent namespace

Small issue - the typedefs GetEngineFactoryXXXType and the functions LoadGraphicsEngineXXX are not part of the Diligent namespace.

This leads to code like

Diligent::EngineD3D11Attribs DeviceAttribs;
GetEngineFactoryD3D11Type pfnEngineFactoryD3D11;

LoadGraphicsEngineD3D11(pfnEngineFactoryD3D11);

instead of

Diligent::EngineD3D11Attribs DeviceAttribs;
Diligent::GetEngineFactoryD3D11Type pfnEngineFactoryD3D11;

Diligent::LoadGraphicsEngineD3D11(pfnEngineFactoryD3D11);

Best
Jörn

Win32FileSystem releated functions should use wchar_t (UTF-16)

File related classes like WindowsFile use ANSI functions like fopen_s. This may lead to problems if the app ever runs on computers that use Asian file names (I had to learn this the hard way).

Please consider using "wide" functions like _wfopen_s for this.

Structs like ShaderCreationAttribs (contains a member const Char* FilePath) may stay as they are, as long as the file name is UTF-8 encoded. You can later convert that to wchar_t by using

MultiByteToWideChar(CP_UTF8, 0, pcUTF8, -1, wUTF16, _countof(wUTF16);

Best Regards,
Jörn

Runtime detection of supported render systems

I don't have a system where I can test this - is it safe to indicate potentially unavailable render systems are valid? According to the samples, the available render systems are indicated at compile time by defining specific macros. I would like to default to D3D12, fall back to Vulkan, D3D11, etc., based on the system capabilities, but I don't have any way to test if that's safe or if I need to go with lowest common denominator, since my only dev system supports all of them.

If it is valid to reference them on non-supported systems, is there a safe way to check at runtime which is the highest one available?

Place all build artifacts in a common location

At present it's necessary to run a separate process to scrape all of the DLLs, libs, and PDBs out of the resulting directories as well as dump lists of the interface paths for any scenario that isn't using CMake and move it all elsewhere (filesystem structure of DE is nonsense - has to be automated).

That's an error-prone (or more accurately "forget-prone") process that the CMake scripts should be taking care of themselves XCopying outputs (or properly emitting them like they should) to a common 'bin' location instead of just leaving CMake to dump everything right into the build-tree's folder.

It's a nice project, but the filesystem layout and build is nonsense.

Compilation avec CLion et Mingw64

Quand je compile avec CLion et Mingw64, j'obtiens pleins d'erreurs qui commence par celle-ci :
When I compile with CLion and Mingw64, I got many errors begining by this one :

In file included from C:/msys64/mingw64/include/c++/8.2.0/mutex:42,
                 from DiligentCore/Common/interface/signal.h:26,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread.h:68,
                 from C:/msys64/mingw64/include/c++/8.2.0/x86_64-w64-mingw32/bits/gthr-default.h:35,
                 from C:/msys64/mingw64/include/c++/8.2.0/x86_64-w64-mingw32/bits/gthr.h:148,
                 from C:/msys64/mingw64/include/c++/8.2.0/ext/atomicity.h:35,
                 from C:/msys64/mingw64/include/c++/8.2.0/bits/basic_string.h:39,
                 from C:/msys64/mingw64/include/c++/8.2.0/string:52,
                 from DiligentCore/Primitives/interface/BasicTypes.h:27,
                 from DiligentCore/Common/include/pch.h:32,
                 from DiligentCore\Common\src\BasicFileStream.cpp:24:
C:/msys64/mingw64/include/c++/8.2.0/system_error:189:5: error: return type 'std::__cxx11::string' {aka 'class std::__cxx11::basic_string<char>'} is incomplete
     { return category().message(value()); }

Add option to redirect diligent error messages

Relocated from DiligentGraphics/DiligentTools#2

It would be great if I could redirect the log messages generated by Diligent, so that we could integrate it with our logging system. A simple callback would suffice.

Also, errors in shaders shouldn't display a blocking message box on Win32. Again, a callback or return value with error description would be better.

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++

error cmake + Visual Studio 2019

Sorry, but i can not generate it. Neither using GUI... :(

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

CMake Error at CMakeLists.txt:5 (project):
Generator

Visual Studio 16 2019

could not find any instance of Visual Studio.

Configuring incomplete, errors occurred!

Namespace the various CMake projects

I recommend renaming the various CMake targets in a more namespaced way - e.g. DiligentCommon rather than Common or DiligentGraphicsEngine rather than GraphicsEngine. The current targets have very generic names which are likely to clash with existing targets.

Android win10 "The command line is too long."

I've tried to compile the Android project on win10, but unfortunately this error keeps coming up: "The command line is too long.", because the ninja script tries to compile a lot of things at once.
Can you give some advice on how to tackle this problem?
I'd really like to try it out on Android, and I couldn't figure out, how to fix this problem.
Has anyone faced this issue before?

VulkanDynamicMemoryManager leaking master blocks on OSX

When I run the Tutorial02_Cube sample with latest master code, after a while, I start to get log messages of "Warning: Space in dynamic heap is almost exausted forcing mid-frame shrinkage. Increase the size of the heap buffer by setting EngineVkAttribs::DynamicHeapSize to a greater value or optimize dynamic resource usage", and I noticed its m_MasterBlockCounter keep going up every couple of frames. It seems that release of stale master blocks don't match with allocations. Is this a known issue?

Engine commit: c19a986
OS: macOS 10.14.1 beta
Computer: MacBook Pro, 15-inch, 2017 w/ Radeon Pro 555 gfx card

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

erroneous debug assert

this seems minor. I modified tutorial01 hello triangle to spin the triangle. It runs fine but Debug output for Vulkan back end says:
Diligent Engine: ERROR in Diligent::DeviceContextVkImpl::CommitVkVertexBuffers() (DeviceContextVkImpl.cpp, 313): Currently bound pipeline state 'Simple triangle PSO' expects 1 input buffer slots, but only 0 is bound
and for GL back end:
Diligent Engine: ERROR: Debug assertion failed in Diligent::VAOCache::GetVAO(), file VAOCache.cpp, line 103:
Input layout requires more buffers than bound to the pipeline

I think the issue is that the example doesn't use a buffer for the vertex data -- it uses gl_VertexID as an index into some data defined in the vertex shader -- but my addition does use a buffer for the time parameter (UBO). Looks like if there are any buffers in use then it is assumed one of them must be for vertex data:

assert comes from VAOCache.cpp in GL:

 {
        auto LayoutIt = LayoutElems;
        for (size_t Elem = 0; Elem < NumElems; ++Elem, ++LayoutIt)
        {
            auto BuffSlot = LayoutIt->BufferSlot;
            if (BuffSlot >= NumVertexStreams)
            {
                UNEXPECTED("Input layout requires more buffers than bound to the pipeline");
                continue;
            }

or maybe i'm doing it wrong. attached modified tutorial01 files

Render to multiple windows?

Couldn't find it in the documentation - is it possible to render into multiple windows with Diligent? The use case is games supporting systems with multiple displays, or game editor apps that need to render into multiple child windows (wxWidgets, QT, etc.).

Any plans to support metal?

Hey ;)
Are there any plans to support Metal? The problem is obviously that apple doesn't update OpenGL drivers anymore and not being able to use compute shaders is a huge restriction.

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 :)

Improve "API Basics" article

The article at http://diligentgraphics.com/diligent-engine/api-basics/ seems not up to date and has typos in the example code:

  • EngineD3D12Attribs.member should be EngD3D12Attribs.member (repeats several times in the Win32 initialization example)
  • The CreateDeviceAndSwapChainGL(...) does not take 5 params. The window handle is now passed via EngineGLAtribs.

It would also be great if you could add a section on shutting down the engine.

Linux compile error

System:Ubuntu 18.04.2 LTS (Bionic Beaver)

Commandlog:
git clone --recursive https://github.com/DiligentGraphics/DiligentEngine.git
cd DiligentEngine
mkdir build
cd build
cmake ../
make

Result:
`[ 2%] Building CXX object DiligentCore/External/glslang/hlsl/CMakeFiles/HLSL.dir/hlslAttributes.cpp.o
Scanning dependencies of target spirv-cross-core

[ 2%] Building CXX object DiligentCore/External/SPIRV-Cross/CMakeFiles/spirv-cross-core.dir/spirv_cross.cpp.o

[ 2%] Linking CXX static library libOSDependent.a

[ 2%] Built target enum_string_mapping

[ 2%] Building CXX object DiligentCore/External/SPIRV-Cross/CMakeFiles/spirv-cross-core.dir/spirv_parser.cpp.o

[ 2%] Built target OSDependent

[ 2%] Building CXX object DiligentCore/External/SPIRV-Cross/CMakeFiles/spirv-cross-core.dir/spirv_cross_parsed_ir.cpp.o
Traceback (most recent call last):
File "/docs/src/DiligentEngine/DiligentCore/External/SPIRV-Tools/utils/generate_registry_tables.py", line 19, in
import distutils.dir_util

ModuleNotFoundError: No module named 'distutils.dir_util'

DiligentCore/External/SPIRV-Tools/source/CMakeFiles/core_tables.dir/build.make:72: recipe for target 'DiligentCore/External/SPIRV-Tools/generators.inc' failed

make[2]: *** [DiligentCore/External/SPIRV-Tools/generators.inc] Error 1
CMakeFiles/Makefile2:466: recipe for target 'DiligentCore/External/SPIRV-Tools/source/CMakeFiles/core_tables.dir/all' failed

make[1]: *** [DiligentCore/External/SPIRV-Tools/source/CMakeFiles/core_tables.dir/all] Error 2

make[1]: *** Waiting for unfinished jobs....
`

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

Online/Hosted Documentations

I wish doxygen documents is hosted online somewhere, it's kinda annoying just to clone and make my own copy to read documentations.
Anyway, this framework really helps me to make my own game engine.

Thanks.

can not build on mac

CMake Error at DiligentCore/External/CMakeLists.txt:6 (install):
install TARGETS given target "glew-static" which does not exist in this
directory.

CMake Error at DiligentCore/External/CMakeLists.txt:63 (install):
install TARGETS given target "SPIRV-Tools" which does not exist in this
directory.

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 .

File2String runs on every client build

Hello

When adding Diligent as a library via CMakes add_subdirectory (or in my case FetchContent_Declare/FetchContent_MakeAvailable) Diligent rebuilds parts of the library every time any build is run.

Specifically this:

[build] [2/9  11% :: 0.017] Running utility command for Diligent-ProcessGenerateMipsVkShader
[build] File2String: sucessfully converted shaders/GenerateMipsCS.csh to shaders/GenerateMipsCS_inc.h
[build] [2/9  22% :: 0.018] Running utility command for Diligent-ProcessGLSLDefinitions
[build] File2String: sucessfully converted include/GLSLDefinitions.h to include/GLSLDefinitions_inc.h

Which causes GenerateMipsVkHelper.cpp.obj and HLSL2GLSLConverterImpl.cpp.obj to be re-built. This adds around 20 seconds to the compile time on my machine.

Here is the full compile log when making a tiny whitespace change to one of my files (OpenGLES.cpp.obj)

[build] Starting build
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/Users/chris/Code/Pangolin/build/GCC_9.2.0_x64_MSYS2/Development --config Development --target Dygd -- -j 26
[build] [2/9  11% :: 0.017] Running utility command for Diligent-ProcessGenerateMipsVkShader
[build] File2String: sucessfully converted shaders/GenerateMipsCS.csh to shaders/GenerateMipsCS_inc.h
[build] [2/9  22% :: 0.018] Running utility command for Diligent-ProcessGLSLDefinitions
[build] File2String: sucessfully converted include/GLSLDefinitions.h to include/GLSLDefinitions_inc.h
[build] [5/9  33% :: 1.687] Building CXX object PrimeMatter/CMakeFiles/PrimeMatter.dir/src/actors/renderer/graphics_api/opengles/OpenGLES.cpp.obj
[build] [5/9  44% :: 2.432] Building CXX object _deps/diligent-build/DiligentCore/Graphics/GraphicsEngineVulkan/CMakeFiles/Diligent-GraphicsEngineVk-static.dir/src/GenerateMipsVkHelper.cpp.obj
[build] [5/9  55% :: 26.332] Building CXX object _deps/diligent-build/DiligentCore/Graphics/HLSL2GLSLConverterLib/CMakeFiles/Diligent-HLSL2GLSLConverterLib.dir/src/HLSL2GLSLConverterImpl.cpp.obj
[build] _deps/diligent-src/DiligentCore/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterImpl.cpp: In constructor 'Diligent::HLSL2GLSLConverterImpl::HLSL2GLSLConverterImpl()':
[build] _deps/diligent-src/DiligentCore/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterImpl.cpp:510:1: note: variable tracking size limit exceeded with '-fvar-tracking-assignments', retrying without
[build]   510 | HLSL2GLSLConverterImpl::HLSL2GLSLConverterImpl()
[build]       | ^~~~~~~~~~~~~~~~~~~~~~
[build] [6/9  66% :: 26.449] Linking CXX static library _deps\diligent-build\DiligentCore\Graphics\HLSL2GLSLConverterLib\libDiligent-HLSL2GLSLConverterLib.a
[build] [7/9  77% :: 26.714] Linking CXX static library _deps\diligent-build\DiligentCore\Graphics\GraphicsEngineVulkan\libDiligent-GraphicsEngineVk-static.a
[build] [8/9  88% :: 26.831] Linking CXX static library PrimeMatter\libPrimeMatter.a
[build] [9/9 100% :: 27.783] Linking CXX executable Dygd\Dygd.exe
[build] Build finished with exit code 0

Using Cmake 3.15.3 and MSYS2 GCC 9.2.0 64-bit on Windows 10 and latest Diligent commit from today.

Run unity demo

Hello, this is the first time I have used your library. I have successfully compiled the Xcode project and looked at all the examples. But when I run the unit project, I found that the dynamic library of plugins lacks some dependencies. Do you have any exact documentation? I run on OSX, and I also publish ios. Looking at IOS project on xcode, I also lack dependency, resulting in null function pointer.

screen shot 2019-01-09 at 1 17 09 am

Customizable build scripts

Add ability for the users of the library to easily customize the diligent build options - provide custom list of build targets and pass custom compiler options.

OpenGL ES 2.0 support

Are you planning to add OpenGL ES 2.0 support in the near future?
Note: 23.8% percent of the android devices don't support 3.0 .

gltf 2.0

How to render my blender animation using gltf2.0 as image sequence?

Optimize Android build

There are a number of issues with Android build now:

  • All shared projects in Common are built for every executable target (sample, tutorial, etc.). This makes the build super slow
  • .so of all executable targets are packed in every APK
  • Incremental build is super slow. In fact, trying to run an app from Android studio takes few minutes even if there were no changes because a number of projects are rebuilt no matter what

Occlusion query support?

are there any plans to support occlusion queries?

I'm interested in reworking a GL graphics engine which does occlusion culling via query objects.

ATL support

When using Visual Studio 2017, Visual C++ ATL Support should be installed via Visual Studio Installer.
Should be added to readme.md:)

Messy #include structure?

I'm just trying out Diligent Graphics and I've run into a problem right on the start when trying to initialize the engine. The "API Basics" article says that I need to add the following folders to my include paths:

diligentcore\Graphics\GraphicsEngineD3D11\interface
diligentcore\Graphics\GraphicsEngineD3D12\interface
diligentcore\Graphics\GraphicsEngineOpenGL\interface

But it seems that many more paths are needed when compiling the top level graphics includes. For example, the file "EngineD3D11Attribs.h" includes the file "BasicTypes.h", which is in a totally different folder and can't be found with just the paths given above.

I looked at the samples, and I see that they include many more paths in their settings. 15 paths in case of the SampleBase project...

Correct me if I'm wrong, but this seems very messy, uncomforatble for the end user, and also error prone (if you end up with two files of the same name in different paths, which might be true for large projects).

Wouldn't it be better to use relative paths inside the includes, like this:
#include "....\diligentcore\primitives\interface\basictypes.h"
or like this:
#include <diligentcore\primitives\interface\basictypes.h>
?

The first option doesn't force the end user of the engine to add any paths whatsoever to their proejct, they just need a way to localize the include file they are using. The second way assumes that just one path needs to be defined, in this case this is the top-level engine folder. Most of the libraries I worked with, have a single "includes" folder that needs to be added and they use relative paths inside. I think this is the standard and proven way.

Can you consider fixing this? Or do you have a list of paths that actually need to be included to use different modules?

Anyway, thanks for sharing your code and writing all the awesome articles on Gamasutra :)

Make swapchain's color texture accessible

For some post-processing / Direct2D stuff, I would like to access the color texture(s) of a swap chain.

So, something like:

void ISwapChain::GetTexture(Uint32 BufferIndex, ITexture** ppTexture2D)

Regards,
Jörn

Expression did not evaluate to a known generator expression

Hello,
After to following the installation instruction from link , when execute the cmake -H. -B./cmk_build/Linux64 -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug" command i get the next build error:
``
$<IF:$CONFIG:RELEASE,/home/mgironesd/Documents/DiligentEngine/DiligentCore/Utilities/File2Include/bin/Linux/,$<TARGET_FILE_DIR:File2String>>

Expression did not evaluate to a known generator expression

Memory managers question

Hello,

This is more like a question, but how the internal memory managers compare to VulkanMemoryAllocator / D3D12MemoryAllocator. Did you have a chance to test if it's worth integrating them? I'm not familiar with these libraries. Just read the implementation in Diligent Engine, and I was wondering what such bigger libraries can do better.

Minimal example of CMake setup

It would be nice if there was a minimal example about how to link this to an existing CMake project. I'm struggling to figure out how to link this however, because the existing instructions are based around how to generate the project on its own and build it with the samples, rather than how to link the core only into an existing project.

For example, if I could do add_subdirectory(external/diligentcore) (cloned from your repo) and then target_link_libraries(existing_project DiligentCore) and everything just worked properly, I would be very happy.

build failed with shared lib in windows

10>hlslParseables.obj : error LNK2001: unresolved external symbol "public: void * __cdecl glslang::TPoolAllocator::allocate(unsigned __int64)" (?allocate@TPoolAllocator@glslang@@QEAAPEAX_K@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: void * __cdecl glslang::TPoolAllocator::allocate(unsigned __int64)" (?allocate@TPoolAllocator@glslang@@QEAAPEAX_K@Z)
10>hlslScanContext.obj : error LNK2001: unresolved external symbol "public: void * __cdecl glslang::TPoolAllocator::allocate(unsigned __int64)" (?allocate@TPoolAllocator@glslang@@QEAAPEAX_K@Z)
10>hlslTokenStream.obj : error LNK2001: unresolved external symbol "public: void * __cdecl glslang::TPoolAllocator::allocate(unsigned __int64)" (?allocate@TPoolAllocator@glslang@@QEAAPEAX_K@Z)
10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: void * __cdecl glslang::TPoolAllocator::allocate(unsigned __int64)" (?allocate@TPoolAllocator@glslang@@QEAAPEAX_K@Z)
10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "class glslang::TPoolAllocator & __cdecl glslang::GetThreadPoolAllocator(void)" (?GetThreadPoolAllocator@glslang@@YAAEAVTPoolAllocator@1@XZ) referenced in function "class std::basic_string<char,struct std::char_traits,class glslang::pool_allocator > __cdecl std::operator+<char,struct std::char_traits,class glslang::pool_allocator >(class std::basic_string<char,struct std::char_traits,class glslang::pool_allocator > const &,char)" (??$?HDU?$char_traits@D@std@@v?$pool_allocator@D@glslang@@@std@@ya?AV?$basic_string@DU?$char_traits@D@std@@v?$pool_allocator@D@glslang@@@0@AEBV10@D@Z)
10>hlslScanContext.obj : error LNK2001: unresolved external symbol "class glslang::TPoolAllocator & __cdecl glslang::GetThreadPoolAllocator(void)" (?GetThreadPoolAllocator@glslang@@YAAEAVTPoolAllocator@1@XZ)
10>hlslGrammar.obj : error LNK2001: unresolved external symbol "class glslang::TPoolAllocator & __cdecl glslang::GetThreadPoolAllocator(void)" (?GetThreadPoolAllocator@glslang@@YAAEAVTPoolAllocator@1@XZ)
10>hlslParseables.obj : error LNK2001: unresolved external symbol "class glslang::TPoolAllocator & __cdecl glslang::GetThreadPoolAllocator(void)" (?GetThreadPoolAllocator@glslang@@YAAEAVTPoolAllocator@1@XZ)
10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "protected: void __cdecl glslang::TInfoSinkBase::append(char const *)" (?append@TInfoSinkBase@glslang@@IEAAXPEBD@Z) referenced in function "protected: virtual void __cdecl glslang::HlslParseContext::finish(void)" (?finish@HlslParseContext@glslang@@MEAAXXZ)
10>hlslScanContext.obj : error LNK2001: unresolved external symbol "protected: void __cdecl glslang::TInfoSinkBase::append(char const *)" (?append@TInfoSinkBase@glslang@@IEAAXPEBD@Z)
10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "protected: void __cdecl glslang::TInfoSinkBase::append(class std::basic_string<char,struct std::char_traits,class glslang::pool_allocator > const &)" (?append@TInfoSinkBase@glslang@@IEAAXAEBV?$basic_string@DU?$char_traits@D@std@@v?$pool_allocator@D@glslang@@@std@@@z) referenced in function "public: class glslang::TInfoSinkBase & __cdecl glslang::TInfoSinkBase::operator<<(int)" (??6TInfoSinkBase@glslang@@QEAAAEAV01@H@Z)
10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::initializeExtensionBehavior(void)" (?initializeExtensionBehavior@TParseVersions@glslang@@UEAAXXZ) referenced in function "public: virtual void __cdecl glslang::HlslParseContext::initializeExtensionBehavior(void)" (?initializeExtensionBehavior@HlslParseContext@glslang@@UEAAXXZ)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireProfile(struct glslang::TSourceLoc const &,int,char const *)" (?requireProfile@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@HPEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::profileRequires(struct glslang::TSourceLoc const &,int,int,int,char const * const * const,char const *)" (?profileRequires@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@HHHQEBQEBDPEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::profileRequires(struct glslang::TSourceLoc const &,int,int,char const * const,char const *)" (?profileRequires@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@HHQEBDPEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireStage(struct glslang::TSourceLoc const &,enum EShLanguageMask,char const *)" (?requireStage@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@W4EShLanguageMask@@PeBd@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireStage(struct glslang::TSourceLoc const &,enum EShLanguage,char const *)" (?requireStage@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@W4EShLanguage@@PeBd@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::checkDeprecated(struct glslang::TSourceLoc const &,int,int,char const *)" (?checkDeprecated@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@HHPEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireNotRemoved(struct glslang::TSourceLoc const &,int,int,char const *)" (?requireNotRemoved@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@HHPEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::unimplemented(struct glslang::TSourceLoc const &,char const *)" (?unimplemented@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireExtensions(struct glslang::TSourceLoc const &,int,char const * const * const,char const *)" (?requireExtensions@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@HQEBQEBDPEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::ppRequireExtensions(struct glslang::TSourceLoc const &,int,char const * const * const,char const *)" (?ppRequireExtensions@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@HQEBQEBDPEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual enum glslang::TExtensionBehavior __cdecl glslang::TParseVersions::getExtensionBehavior(char const *)" (?getExtensionBehavior@TParseVersions@glslang@@UEAA?AW4TExtensionBehavior@2@PEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl glslang::TParseVersions::extensionTurnedOn(char const * const)" (?extensionTurnedOn@TParseVersions@glslang@@UEAA_NQEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl glslang::TParseVersions::extensionsTurnedOn(int,char const * const * const)" (?extensionsTurnedOn@TParseVersions@glslang@@UEAA_NHQEBQEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::updateExtensionBehavior(int,char const * const,char const *)" (?updateExtensionBehavior@TParseVersions@glslang@@UEAAXHQEBDPEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::fullIntegerCheck(struct glslang::TSourceLoc const &,char const *)" (?fullIntegerCheck@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::doubleCheck(struct glslang::TSourceLoc const &,char const *)" (?doubleCheck@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::float16Check(struct glslang::TSourceLoc const &,char const *,bool)" (?float16Check@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::float16ScalarVectorCheck(struct glslang::TSourceLoc const &,char const *,bool)" (?float16ScalarVectorCheck@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl glslang::TParseVersions::float16Arithmetic(void)" (?float16Arithmetic@TParseVersions@glslang@@UEAA_NXZ)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireFloat16Arithmetic(struct glslang::TSourceLoc const &,char const *,char const *)" (?requireFloat16Arithmetic@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD1@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::int16ScalarVectorCheck(struct glslang::TSourceLoc const &,char const *,bool)" (?int16ScalarVectorCheck@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl glslang::TParseVersions::int16Arithmetic(void)" (?int16Arithmetic@TParseVersions@glslang@@UEAA_NXZ)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireInt16Arithmetic(struct glslang::TSourceLoc const &,char const *,char const *)" (?requireInt16Arithmetic@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD1@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::int8ScalarVectorCheck(struct glslang::TSourceLoc const &,char const *,bool)" (?int8ScalarVectorCheck@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl glslang::TParseVersions::int8Arithmetic(void)" (?int8Arithmetic@TParseVersions@glslang@@UEAA_NXZ)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireInt8Arithmetic(struct glslang::TSourceLoc const &,char const *,char const *)" (?requireInt8Arithmetic@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD1@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::float16OpaqueCheck(struct glslang::TSourceLoc const &,char const *,bool)" (?float16OpaqueCheck@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::int64Check(struct glslang::TSourceLoc const &,char const *,bool)" (?int64Check@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::explicitInt8Check(struct glslang::TSourceLoc const &,char const *,bool)" (?explicitInt8Check@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::explicitInt16Check(struct glslang::TSourceLoc const &,char const *,bool)" (?explicitInt16Check@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::explicitInt32Check(struct glslang::TSourceLoc const &,char const *,bool)" (?explicitInt32Check@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::explicitFloat32Check(struct glslang::TSourceLoc const &,char const *,bool)" (?explicitFloat32Check@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::explicitFloat64Check(struct glslang::TSourceLoc const &,char const *,bool)" (?explicitFloat64Check@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::spvRemoved(struct glslang::TSourceLoc const &,char const *)" (?spvRemoved@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::vulkanRemoved(struct glslang::TSourceLoc const &,char const *)" (?vulkanRemoved@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireVulkan(struct glslang::TSourceLoc const &,char const *)" (?requireVulkan@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::requireSpv(struct glslang::TSourceLoc const &,char const *)" (?requireSpv@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl glslang::TParseVersions::checkExtensionsRequested(struct glslang::TSourceLoc const &,int,char const * const * const,char const *)" (?checkExtensionsRequested@TParseVersions@glslang@@UEAA_NAEBUTSourceLoc@2@HQEBQEBDPEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::updateExtensionBehavior(char const * const,enum glslang::TExtensionBehavior)" (?updateExtensionBehavior@TParseVersions@glslang@@UEAAXQEBDW4TExtensionBehavior@2@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::checkExtensionStage(struct glslang::TSourceLoc const &,char const * const)" (?checkExtensionStage@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@QEBD@Z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseVersions::fcoopmatCheck(struct glslang::TSourceLoc const &,char const *,bool)" (?fcoopmatCheck@TParseVersions@glslang@@UEAAXAEBUTSourceLoc@2@PEBD_N@Z)
10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "protected: void __cdecl glslang::TType::buildMangledName(class std::basic_string<char,struct std::char_traits,class glslang::pool_allocator > &)const " (?buildMangledName@TType@glslang@@IEBAXAEAV?$basic_string@DU?$char_traits@D@std@@v?$pool_allocator@D@glslang@@@std@@@z) referenced in function "public: virtual void __cdecl glslang::TFunction::addParameter(struct glslang::TParameter &)" (?addParameter@TFunction@glslang@@UEAAXAEAUTParameter@2@@z)
10>hlslGrammar.obj : error LNK2001: unresolved external symbol "protected: void __cdecl glslang::TType::buildMangledName(class std::basic_string<char,struct std::char_traits,class glslang::pool_allocator > &)const " (?buildMangledName@TType@glslang@@IEBAXAEAV?$basic_string@DU?$char_traits@D@std@@v?$pool_allocator@D@glslang@@@std@@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermTyped::propagatePrecision(enum glslang::TPrecisionQualifier)" (?propagatePrecision@TIntermTyped@glslang@@UEAAXW4TPrecisionQualifier@2@@z)
10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermTyped::propagatePrecision(enum glslang::TPrecisionQualifier)" (?propagatePrecision@TIntermTyped@glslang@@UEAAXW4TPrecisionQualifier@2@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermSymbol::traverse(class glslang::TIntermTraverser *)" (?traverse@TIntermSymbol@glslang@@UEAAXPEAVTIntermTraverser@2@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermConstantUnion::traverse(class glslang::TIntermTraverser *)" (?traverse@TIntermConstantUnion@glslang@@UEAAXPEAVTIntermTraverser@2@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual class glslang::TIntermTyped * __cdecl glslang::TIntermConstantUnion::fold(enum glslang::TOperator,class glslang::TIntermTyped const *)const " (?fold@TIntermConstantUnion@glslang@@UEBAPEAVTIntermTyped@2@W4TOperator@2@PEBV32@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual class glslang::TIntermTyped * __cdecl glslang::TIntermConstantUnion::fold(enum glslang::TOperator,class glslang::TType const &)const " (?fold@TIntermConstantUnion@glslang@@UEBAPEAVTIntermTyped@2@W4TOperator@2@AEBVTType@2@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermUnary::traverse(class glslang::TIntermTraverser *)" (?traverse@TIntermUnary@glslang@@UEAAXPEAVTIntermTraverser@2@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermUnary::updatePrecision(void)" (?updatePrecision@TIntermUnary@glslang@@UEAAXXZ)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermAggregate::traverse(class glslang::TIntermTraverser *)" (?traverse@TIntermAggregate@glslang@@UEAAXPEAVTIntermTraverser@2@@z)
10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermAggregate::traverse(class glslang::TIntermTraverser *)" (?traverse@TIntermAggregate@glslang@@UEAAXPEAVTIntermTraverser@2@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermSelection::traverse(class glslang::TIntermTraverser *)" (?traverse@TIntermSelection@glslang@@UEAAXPEAVTIntermTraverser@2@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TIntermSwitch::traverse(class glslang::TIntermTraverser *)" (?traverse@TIntermSwitch@glslang@@UEAAXPEAVTIntermTraverser@2@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual class glslang::TVariable * __cdecl glslang::TVariable::clone(void)const " (?clone@TVariable@glslang@@UEBAPEAV12@XZ)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TVariable::dump(class TInfoSink &)const " (?dump@TVariable@glslang@@UEBAXAEAVTInfoSink@@@z)
10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual class glslang::TFunction * __cdecl glslang::TFunction::clone(void)const " (?clone@TFunction@glslang@@UEBAPEAV12@XZ)
10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: virtual class glslang::TFunction * __cdecl glslang::TFunction::clone(void)const " (?clone@TFunction@glslang@@UEBAPEAV12@XZ)
10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl glslang::TFunction::~TFunction(void)" (??1TFunction@glslang@@UEAA@XZ) referenced in function "public: virtual void * __cdecl glslang::TFunction::scalar deleting destructor'(unsigned int)" (??_GTFunction@glslang@@UEAAPEAXI@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: virtual __cdecl glslang::TFunction::~TFunction(void)" (??1TFunction@glslang@@UEAA@XZ) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TFunction::dump(class TInfoSink &)const " (?dump@TFunction@glslang@@UEBAXAEAVTInfoSink@@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TFunction::dump(class TInfoSink &)const " (?dump@TFunction@glslang@@UEBAXAEAVTInfoSink@@@Z) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual class glslang::TAnonMember * __cdecl glslang::TAnonMember::clone(void)const " (?clone@TAnonMember@glslang@@UEBAPEAV12@XZ) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TAnonMember::dump(class TInfoSink &)const " (?dump@TAnonMember@glslang@@UEBAXAEAVTInfoSink@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: __cdecl glslang::TSymbolTableLevel::~TSymbolTableLevel(void)" (??1TSymbolTableLevel@glslang@@QEAA@XZ) referenced in function "public: void __cdecl glslang::HlslParseContext::handleFunctionBody(struct glslang::TSourceLoc const &,class glslang::TFunction &,class TIntermNode *,class TIntermNode * &)" (?handleFunctionBody@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAVTFunction@2@PEAVTIntermNode@@AEAPEAV5@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: __cdecl glslang::TSymbolTableLevel::~TSymbolTableLevel(void)" (??1TSymbolTableLevel@glslang@@QEAA@XZ) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermSymbol * __cdecl glslang::TIntermediate::addSymbol(class glslang::TVariable const &)" (?addSymbol@TIntermediate@glslang@@QEAAPEAVTIntermSymbol@2@AEBVTVariable@2@@Z) referenced in function "public: void __cdecl <lambda_9d4690868368d49fafad0d6b7372a10f>::operator()(class glslang::TType const &,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const *,class glslang::TIntermSymbol * *)const " (??R<lambda_9d4690868368d49fafad0d6b7372a10f>@@QEBAXAEBVTType@glslang@@PEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@PEAPEAVTIntermSymbol@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermSymbol * __cdecl glslang::TIntermediate::addSymbol(class glslang::TVariable const &,struct glslang::TSourceLoc const &)" (?addSymbol@TIntermediate@glslang@@QEAAPEAVTIntermSymbol@2@AEBVTVariable@2@AEBUTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl <lambda_22c01f4888b5aea6ad4ab967fab0255b>::operator()(class glslang::TIntermTyped *,struct glslang::TSampler const &)const " (??R<lambda_22c01f4888b5aea6ad4ab967fab0255b>@@QEBAPEAVTIntermTyped@glslang@@PEAV12@AEBUTSampler@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermSymbol * __cdecl glslang::TIntermediate::addSymbol(class glslang::TType const &,struct glslang::TSourceLoc const &)" (?addSymbol@TIntermediate@glslang@@QEAAPEAVTIntermSymbol@2@AEBVTType@2@AEBUTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermAggregate * __cdecl glslang::HlslParseContext::handleFunctionDefinition(struct glslang::TSourceLoc const &,class glslang::TFunction &,class glslang::TList<struct glslang::TAttributeArgs> const &,class TIntermNode * &)" (?handleFunctionDefinition@HlslParseContext@glslang@@QEAAPEAVTIntermAggregate@2@AEBUTSourceLoc@2@AEAVTFunction@2@AEBV?$TList@UTAttributeArgs@glslang@@@2@AEAPEAVTIntermNode@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermSymbol * __cdecl glslang::TIntermediate::addSymbol(class glslang::TIntermSymbol const &)" (?addSymbol@TIntermediate@glslang@@QEAAPEAVTIntermSymbol@2@AEBV32@@Z) referenced in function "public: void __cdecl <lambda_36030a2d5258cb3d3e8930266a1b25ac>::operator()(class glslang::TIntermSymbol *,class glslang::TIntermTyped *,class glslang::TIntermTyped *,class glslang::TType const &)const " (??R<lambda_36030a2d5258cb3d3e8930266a1b25ac>@@QEBAXPEAVTIntermSymbol@glslang@@PEAVTIntermTyped@2@1AEBVTType@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addConversion(enum glslang::TOperator,class glslang::TType const &,class glslang::TIntermTyped *)" (?addConversion@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@W4TOperator@2@AEBVTType@2@PEAV32@@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::addInputArgumentConversions(class glslang::TFunction const &,class glslang::TIntermTyped * &)" (?addInputArgumentConversions@HlslParseContext@glslang@@QEAAXAEBVTFunction@2@AEAPEAVTIntermTyped@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addUniShapeConversion(enum glslang::TOperator,class glslang::TType const &,class glslang::TIntermTyped *)" (?addUniShapeConversion@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@W4TOperator@2@AEBVTType@2@PEAV32@@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::addInputArgumentConversions(class glslang::TFunction const &,class glslang::TIntermTyped * &)" (?addInputArgumentConversions@HlslParseContext@glslang@@QEAAXAEBVTFunction@2@AEAPEAVTIntermTyped@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addShapeConversion(class glslang::TType const &,class glslang::TIntermTyped *)" (?addShapeConversion@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@AEBVTType@2@PEAV32@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl glslang::HlslParseContext::addConstructor(struct glslang::TSourceLoc const &,class glslang::TIntermTyped *,class glslang::TType const &)" (?addConstructor@HlslParseContext@glslang@@QEAAPEAVTIntermTyped@2@AEBUTSourceLoc@2@PEAV32@AEBVTType@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addBinaryMath(enum glslang::TOperator,class glslang::TIntermTyped *,class glslang::TIntermTyped *,struct glslang::TSourceLoc)" (?addBinaryMath@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@W4TOperator@2@PEAV32@1UTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl glslang::HlslParseContext::handleBinaryMath(struct glslang::TSourceLoc const &,char const *,enum glslang::TOperator,class glslang::TIntermTyped *,class glslang::TIntermTyped *)" (?handleBinaryMath@HlslParseContext@glslang@@QEAAPEAVTIntermTyped@2@AEBUTSourceLoc@2@PEBDW4TOperator@2@PEAV32@3@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addBinaryMath(enum glslang::TOperator,class glslang::TIntermTyped *,class glslang::TIntermTyped *,struct glslang::TSourceLoc)" (?addBinaryMath@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@W4TOperator@2@PEAV32@1UTSourceLoc@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addAssign(enum glslang::TOperator,class glslang::TIntermTyped *,class glslang::TIntermTyped *,struct glslang::TSourceLoc)" (?addAssign@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@W4TOperator@2@PEAV32@1UTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl <lambda_22c01f4888b5aea6ad4ab967fab0255b>::operator()(class glslang::TIntermTyped *,struct glslang::TSampler const &)const " (??R<lambda_22c01f4888b5aea6ad4ab967fab0255b>@@QEBAPEAVTIntermTyped@glslang@@PEAV12@AEBUTSampler@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addIndex(enum glslang::TOperator,class glslang::TIntermTyped *,class glslang::TIntermTyped *,struct glslang::TSourceLoc)" (?addIndex@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@W4TOperator@2@PEAV32@1UTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl <lambda_22c01f4888b5aea6ad4ab967fab0255b>::operator()(class glslang::TIntermTyped *,struct glslang::TSampler const &)const " (??R<lambda_22c01f4888b5aea6ad4ab967fab0255b>@@QEBAPEAVTIntermTyped@glslang@@PEAV12@AEBUTSampler@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addUnaryMath(enum glslang::TOperator,class glslang::TIntermTyped *,struct glslang::TSourceLoc)" (?addUnaryMath@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@W4TOperator@2@PEAV32@UTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl glslang::HlslParseContext::assignPosition(struct glslang::TSourceLoc const &,enum glslang::TOperator,class glslang::TIntermTyped *,class glslang::TIntermTyped *)" (?assignPosition@HlslParseContext@glslang@@QEAAPEAVTIntermTyped@2@AEBUTSourceLoc@2@W4TOperator@2@PEAV32@2@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addUnaryMath(enum glslang::TOperator,class glslang::TIntermTyped *,struct glslang::TSourceLoc)" (?addUnaryMath@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@W4TOperator@2@PEAV32@UTSourceLoc@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addBuiltInFunctionCall(struct glslang::TSourceLoc const &,enum glslang::TOperator,bool,class TIntermNode *,class glslang::TType const &)" (?addBuiltInFunctionCall@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@AEBUTSourceLoc@2@W4TOperator@2@_NPEAVTIntermNode@@AEBVTType@2@@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::decomposeIntrinsic(struct glslang::TSourceLoc const &,class glslang::TIntermTyped * &,class TIntermNode *)" (?decomposeIntrinsic@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAPEAVTIntermTyped@2@PEAVTIntermNode@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: bool __cdecl glslang::TIntermediate::canImplicitlyPromote(enum glslang::TBasicType,enum glslang::TBasicType,enum glslang::TOperator)const " (?canImplicitlyPromote@TIntermediate@glslang@@QEBA_NW4TBasicType@2@0W4TOperator@2@@Z) referenced in function "public: bool __cdecl <lambda_5c87f3b73f54e559166206b4f2646bb7>::operator()(class glslang::TType const &,class glslang::TType const &,enum glslang::TOperator,int)const " (??R<lambda_5c87f3b73f54e559166206b4f2646bb7>@@QEBA_NAEBVTType@glslang@@0W4TOperator@2@H@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: enum glslang::TOperator __cdecl glslang::TIntermediate::mapTypeToConstructorOp(class glslang::TType const &)const " (?mapTypeToConstructorOp@TIntermediate@glslang@@QEBA?AW4TOperator@2@AEBVTType@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl <lambda_22c01f4888b5aea6ad4ab967fab0255b>::operator()(class glslang::TIntermTyped *,struct glslang::TSampler const &)const " (??R<lambda_22c01f4888b5aea6ad4ab967fab0255b>@@QEBAPEAVTIntermTyped@glslang@@PEAV12@AEBUTSampler@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermAggregate * __cdecl glslang::TIntermediate::growAggregate(class TIntermNode *,class TIntermNode *)" (?growAggregate@TIntermediate@glslang@@QEAAPEAVTIntermAggregate@2@PEAVTIntermNode@@0@Z) referenced in function "public: void __cdecl <lambda_667b870f33fe1d8ce6aeb1955c1af152>::operator()(class glslang::TIntermTyped *,class glslang::TIntermTyped *,class glslang::TIntermSymbol *)const " (??R<lambda_667b870f33fe1d8ce6aeb1955c1af152>@@QEBAXPEAVTIntermTyped@glslang@@0PEAVTIntermSymbol@2@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermAggregate * __cdecl glslang::TIntermediate::growAggregate(class TIntermNode *,class TIntermNode *)" (?growAggregate@TIntermediate@glslang@@QEAAPEAVTIntermAggregate@2@PEAVTIntermNode@@0@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermAggregate * __cdecl glslang::TIntermediate::growAggregate(class TIntermNode *,class TIntermNode *,struct glslang::TSourceLoc const &)" (?growAggregate@TIntermediate@glslang@@QEAAPEAVTIntermAggregate@2@PEAVTIntermNode@@0AEBUTSourceLoc@2@@Z) referenced in function "public: void __cdecl <lambda_36030a2d5258cb3d3e8930266a1b25ac>::operator()(class glslang::TIntermSymbol *,class glslang::TIntermTyped *,class glslang::TIntermTyped *,class glslang::TType const &)const " (??R<lambda_36030a2d5258cb3d3e8930266a1b25ac>@@QEBAXPEAVTIntermSymbol@glslang@@PEAVTIntermTyped@2@1AEBVTType@2@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermAggregate * __cdecl glslang::TIntermediate::growAggregate(class TIntermNode *,class TIntermNode *,struct glslang::TSourceLoc const &)" (?growAggregate@TIntermediate@glslang@@QEAAPEAVTIntermAggregate@2@PEAVTIntermNode@@0AEBUTSourceLoc@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermAggregate * __cdecl glslang::TIntermediate::makeAggregate(class TIntermNode *)" (?makeAggregate@TIntermediate@glslang@@QEAAPEAVTIntermAggregate@2@PEAVTIntermNode@@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl glslang::HlslParseContext::addOutputArgumentConversions(class glslang::TFunction const &,class glslang::TIntermOperator &)" (?addOutputArgumentConversions@HlslParseContext@glslang@@QEAAPEAVTIntermTyped@2@AEBVTFunction@2@AEAVTIntermOperator@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermAggregate * __cdecl glslang::TIntermediate::makeAggregate(class TIntermNode *,struct glslang::TSourceLoc const &)" (?makeAggregate@TIntermediate@glslang@@QEAAPEAVTIntermAggregate@2@PEAVTIntermNode@@AEBUTSourceLoc@2@@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::decomposeIntrinsic(struct glslang::TSourceLoc const &,class glslang::TIntermTyped * &,class TIntermNode *)" (?decomposeIntrinsic@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAPEAVTIntermTyped@2@PEAVTIntermNode@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermAggregate * __cdecl glslang::TIntermediate::makeAggregate(struct glslang::TSourceLoc const &)" (?makeAggregate@TIntermediate@glslang@@QEAAPEAVTIntermAggregate@2@AEBUTSourceLoc@2@@Z) referenced in function "public: class TIntermNode * __cdecl glslang::HlslParseContext::declareVariable(struct glslang::TSourceLoc const &,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const &,class glslang::TType &,class glslang::TIntermTyped *)" (?declareVariable@HlslParseContext@glslang@@QEAAPEAVTIntermNode@@AEBUTSourceLoc@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@AEAVTType@2@PEAVTIntermTyped@2@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermAggregate * __cdecl glslang::TIntermediate::makeAggregate(struct glslang::TSourceLoc const &)" (?makeAggregate@TIntermediate@glslang@@QEAAPEAVTIntermAggregate@2@AEBUTSourceLoc@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::setAggregateOperator(class TIntermNode *,enum glslang::TOperator,class glslang::TType const &,struct glslang::TSourceLoc)" (?setAggregateOperator@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@PEAVTIntermNode@@W4TOperator@2@AEBVTType@2@UTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl <lambda_22c01f4888b5aea6ad4ab967fab0255b>::operator()(class glslang::TIntermTyped *,struct glslang::TSampler const &)const " (??R<lambda_22c01f4888b5aea6ad4ab967fab0255b>@@QEBAPEAVTIntermTyped@glslang@@PEAV12@AEBUTSampler@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addSelection(class glslang::TIntermTyped *,class glslang::TIntermTyped *,class glslang::TIntermTyped *,struct glslang::TSourceLoc const &)" (?addSelection@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@PEAV32@00AEBUTSourceLoc@2@@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::decomposeIntrinsic(struct glslang::TSourceLoc const &,class glslang::TIntermTyped * &,class TIntermNode *)" (?decomposeIntrinsic@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAPEAVTIntermTyped@2@PEAVTIntermNode@@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addSelection(class glslang::TIntermTyped *,class glslang::TIntermTyped *,class glslang::TIntermTyped *,struct glslang::TSourceLoc const &)" (?addSelection@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@PEAV32@00AEBUTSourceLoc@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermConstantUnion * __cdecl glslang::TIntermediate::addConstantUnion(class glslang::TConstUnionArray const &,class glslang::TType const &,struct glslang::TSourceLoc const &,bool)const " (?addConstantUnion@TIntermediate@glslang@@QEBAPEAVTIntermConstantUnion@2@AEBVTConstUnionArray@2@AEBVTType@2@AEBUTSourceLoc@2@_N@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::decomposeIntrinsic(struct glslang::TSourceLoc const &,class glslang::TIntermTyped * &,class TIntermNode *)" (?decomposeIntrinsic@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAPEAVTIntermTyped@2@PEAVTIntermNode@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermConstantUnion * __cdecl glslang::TIntermediate::addConstantUnion(int,struct glslang::TSourceLoc const &,bool)const " (?addConstantUnion@TIntermediate@glslang@@QEBAPEAVTIntermConstantUnion@2@HAEBUTSourceLoc@2@_N@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl <lambda_22c01f4888b5aea6ad4ab967fab0255b>::operator()(class glslang::TIntermTyped *,struct glslang::TSampler const &)const " (??R<lambda_22c01f4888b5aea6ad4ab967fab0255b>@@QEBAPEAVTIntermTyped@glslang@@PEAV12@AEBUTSampler@2@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermConstantUnion * __cdecl glslang::TIntermediate::addConstantUnion(int,struct glslang::TSourceLoc const &,bool)const " (?addConstantUnion@TIntermediate@glslang@@QEBAPEAVTIntermConstantUnion@2@HAEBUTSourceLoc@2@_N@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermConstantUnion * __cdecl glslang::TIntermediate::addConstantUnion(unsigned int,struct glslang::TSourceLoc const &,bool)const " (?addConstantUnion@TIntermediate@glslang@@QEBAPEAVTIntermConstantUnion@2@IAEBUTSourceLoc@2@_N@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl <lambda_22c01f4888b5aea6ad4ab967fab0255b>::operator()(class glslang::TIntermTyped *,struct glslang::TSampler const &)const " (??R<lambda_22c01f4888b5aea6ad4ab967fab0255b>@@QEBAPEAVTIntermTyped@glslang@@PEAV12@AEBUTSampler@2@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermConstantUnion * __cdecl glslang::TIntermediate::addConstantUnion(unsigned int,struct glslang::TSourceLoc const &,bool)const " (?addConstantUnion@TIntermediate@glslang@@QEBAPEAVTIntermConstantUnion@2@IAEBUTSourceLoc@2@_N@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermConstantUnion * __cdecl glslang::TIntermediate::addConstantUnion(double,enum glslang::TBasicType,struct glslang::TSourceLoc const &,bool)const " (?addConstantUnion@TIntermediate@glslang@@QEBAPEAVTIntermConstantUnion@2@NW4TBasicType@2@AEBUTSourceLoc@2@_N@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::decomposeIntrinsic(struct glslang::TSourceLoc const &,class glslang::TIntermTyped * &,class TIntermNode *)" (?decomposeIntrinsic@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAPEAVTIntermTyped@2@PEAVTIntermNode@@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermConstantUnion * __cdecl glslang::TIntermediate::addConstantUnion(double,enum glslang::TBasicType,struct glslang::TSourceLoc const &,bool)const " (?addConstantUnion@TIntermediate@glslang@@QEBAPEAVTIntermConstantUnion@2@NW4TBasicType@2@AEBUTSourceLoc@2@_N@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermBranch * __cdecl glslang::TIntermediate::addBranch(enum glslang::TOperator,struct glslang::TSourceLoc const &)" (?addBranch@TIntermediate@glslang@@QEAAPEAVTIntermBranch@2@W4TOperator@2@AEBUTSourceLoc@2@@Z) referenced in function "public: class TIntermNode * __cdecl glslang::HlslParseContext::addSwitch(struct glslang::TSourceLoc const &,class glslang::TIntermTyped *,class glslang::TIntermAggregate *,class glslang::TList<struct glslang::TAttributeArgs> const &)" (?addSwitch@HlslParseContext@glslang@@QEAAPEAVTIntermNode@@AEBUTSourceLoc@2@PEAVTIntermTyped@2@PEAVTIntermAggregate@2@AEBV?$TList@UTAttributeArgs@glslang@@@2@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermBranch * __cdecl glslang::TIntermediate::addBranch(enum glslang::TOperator,struct glslang::TSourceLoc const &)" (?addBranch@TIntermediate@glslang@@QEAAPEAVTIntermBranch@2@W4TOperator@2@AEBUTSourceLoc@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermBranch * __cdecl glslang::TIntermediate::addBranch(enum glslang::TOperator,class glslang::TIntermTyped *,struct glslang::TSourceLoc const &)" (?addBranch@TIntermediate@glslang@@QEAAPEAVTIntermBranch@2@W4TOperator@2@PEAVTIntermTyped@2@AEBUTSourceLoc@2@@Z) referenced in function "public: class TIntermNode * __cdecl glslang::HlslParseContext::handleReturnValue(struct glslang::TSourceLoc const &,class glslang::TIntermTyped *)" (?handleReturnValue@HlslParseContext@glslang@@QEAAPEAVTIntermNode@@AEBUTSourceLoc@2@PEAVTIntermTyped@2@@Z) 10>hlslGrammar.obj : error LNK2001: unresolved external symbol "public: class glslang::TIntermBranch * __cdecl glslang::TIntermediate::addBranch(enum glslang::TOperator,class glslang::TIntermTyped *,struct glslang::TSourceLoc const &)" (?addBranch@TIntermediate@glslang@@QEAAPEAVTIntermBranch@2@W4TOperator@2@PEAVTIntermTyped@2@AEBUTSourceLoc@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermBinary * __cdecl glslang::TIntermediate::addBinaryNode(enum glslang::TOperator,class glslang::TIntermTyped *,class glslang::TIntermTyped *,struct glslang::TSourceLoc)const " (?addBinaryNode@TIntermediate@glslang@@QEBAPEAVTIntermBinary@2@W4TOperator@2@PEAVTIntermTyped@2@1UTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl glslang::HlslParseContext::handleConstructor(struct glslang::TSourceLoc const &,class glslang::TIntermTyped *,class glslang::TType const &)" (?handleConstructor@HlslParseContext@glslang@@QEAAPEAVTIntermTyped@2@AEBUTSourceLoc@2@PEAV32@AEBVTType@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermBinary * __cdecl glslang::TIntermediate::addBinaryNode(enum glslang::TOperator,class glslang::TIntermTyped *,class glslang::TIntermTyped *,struct glslang::TSourceLoc,class glslang::TType const &)const " (?addBinaryNode@TIntermediate@glslang@@QEBAPEAVTIntermBinary@2@W4TOperator@2@PEAVTIntermTyped@2@1UTSourceLoc@2@AEBVTType@2@@Z) referenced in function "public: void __cdecl <lambda_62c01afb20d16c35916af3e825af4bac>::operator()(enum glslang::TOperator,class glslang::TIntermTyped *,class glslang::TIntermTyped *)const " (??R<lambda_62c01afb20d16c35916af3e825af4bac>@@QEBAXW4TOperator@glslang@@PEAVTIntermTyped@2@1@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermUnary * __cdecl glslang::TIntermediate::addUnaryNode(enum glslang::TOperator,class glslang::TIntermTyped *,struct glslang::TSourceLoc,class glslang::TType const &)const " (?addUnaryNode@TIntermediate@glslang@@QEBAPEAVTIntermUnary@2@W4TOperator@2@PEAVTIntermTyped@2@UTSourceLoc@2@AEBVTType@2@@Z) referenced in function "public: void __cdecl <lambda_de973f19d01eac071aa690d194b60404>::operator()(enum glslang::TOperator,class glslang::TIntermSymbol *)const " (??R<lambda_de973f19d01eac071aa690d194b60404>@@QEBAXW4TOperator@glslang@@PEAVTIntermSymbol@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::foldDereference(class glslang::TIntermTyped *,int,struct glslang::TSourceLoc const &)" (?foldDereference@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@PEAV32@HAEBUTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl glslang::HlslParseContext::handleBracketDereference(struct glslang::TSourceLoc const &,class glslang::TIntermTyped *,class glslang::TIntermTyped *)" (?handleBracketDereference@HlslParseContext@glslang@@QEAAPEAVTIntermTyped@2@AEBUTSourceLoc@2@PEAV32@1@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::foldSwizzle(class glslang::TIntermTyped *,class glslang::TSwizzleSelectors<int> &,struct glslang::TSourceLoc const &)" (?foldSwizzle@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@PEAV32@AEAV?$TSwizzleSelectors@H@2@AEBUTSourceLoc@2@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl glslang::HlslParseContext::handleDotDereference(struct glslang::TSourceLoc const &,class glslang::TIntermTyped *,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const &)" (?handleDotDereference@HlslParseContext@glslang@@QEAAPEAVTIntermTyped@2@AEBUTSourceLoc@2@PEAV32@AEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: static class glslang::TIntermTyped const * __cdecl glslang::TIntermediate::findLValueBase(class glslang::TIntermTyped const *,bool)" (?findLValueBase@TIntermediate@glslang@@SAPEBVTIntermTyped@2@PEBV32@_N@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::builtInOpCheck(struct glslang::TSourceLoc const &,class glslang::TFunction const &,class glslang::TIntermOperator &)" (?builtInOpCheck@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEBVTFunction@2@AEAVTIntermOperator@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: void __cdecl glslang::TIntermediate::addToCallGraph(class TInfoSink &,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const &)" (?addToCallGraph@TIntermediate@glslang@@QEAAXAEAVTInfoSink@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@1@Z) referenced in function "protected: void __cdecl glslang::HlslParseContext::addPatchConstantInvocation(void)" (?addPatchConstantInvocation@HlslParseContext@glslang@@IEAAXXZ) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: bool __cdecl glslang::TIntermediate::addUsedConstantId(int)" (?addUsedConstantId@TIntermediate@glslang@@QEAA_NH@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::setSpecConstantId(struct glslang::TSourceLoc const &,class glslang::TQualifier &,int)" (?setSpecConstantId@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAVTQualifier@2@H@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: static int __cdecl glslang::TIntermediate::computeTypeLocationSize(class glslang::TType const &,enum EShLanguage)" (?computeTypeLocationSize@TIntermediate@glslang@@SAHAEBVTType@2@W4EShLanguage@@@Z) referenced in function "public: void __cdecl <lambda_8704154a8d8549cfaccbb3465df6e1ef>::operator()(class glslang::TVariable &)const " (??R<lambda_8704154a8d8549cfaccbb3465df6e1ef>@@QEBAXAEAVTVariable@glslang@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: unsigned int __cdecl glslang::TIntermediate::computeTypeXfbSize(class glslang::TType const &,bool &,bool &,bool &)const " (?computeTypeXfbSize@TIntermediate@glslang@@QEBAIAEBVTType@2@AEA_N11@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::declareBlock(struct glslang::TSourceLoc const &,class glslang::TType &,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const *)" (?declareBlock@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAVTType@2@PEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: static int __cdecl glslang::TIntermediate::getMemberAlignment(class glslang::TType const &,int &,int &,enum glslang::TLayoutPacking,bool)" (?getMemberAlignment@TIntermediate@glslang@@SAHAEBVTType@2@AEAH1W4TLayoutPacking@2@_N@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::decomposeStructBufferMethods(struct glslang::TSourceLoc const &,class glslang::TIntermTyped * &,class TIntermNode *)" (?decomposeStructBufferMethods@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAPEAVTIntermTyped@2@PEAVTIntermNode@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: bool __cdecl glslang::TIntermediate::promote(class glslang::TIntermOperator *)" (?promote@TIntermediate@glslang@@QEAA_NPEAVTIntermOperator@2@@Z) referenced in function "public: class glslang::TFunction const * __cdecl glslang::HlslParseContext::findFunction(struct glslang::TSourceLoc const &,class glslang::TFunction &,bool &,int &,class glslang::TIntermTyped * &)" (?findFunction@HlslParseContext@glslang@@QEAAPEBVTFunction@2@AEBUTSourceLoc@2@AEAV32@AEA_NAEAHAEAPEAVTIntermTyped@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: bool __cdecl glslang::TAttributeArgs::getInt(int &,int)const " (?getInt@TAttributeArgs@glslang@@QEBA_NAEAHH@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::handleEntryPointAttributes(struct glslang::TSourceLoc const &,class glslang::TList<struct glslang::TAttributeArgs> const &)" (?handleEntryPointAttributes@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEBV?$TList@UTAttributeArgs@glslang@@@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: bool __cdecl glslang::TAttributeArgs::getString(class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > &,int,bool)const " (?getString@TAttributeArgs@glslang@@QEBA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@H_N@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::handleEntryPointAttributes(struct glslang::TSourceLoc const &,class glslang::TList<struct glslang::TAttributeArgs> const &)" (?handleEntryPointAttributes@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEBV?$TList@UTAttributeArgs@glslang@@@2@@Z) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseContextBase::error(struct glslang::TSourceLoc const &,char const *,char const *,char const *,...)" (?error@TParseContextBase@glslang@@UEAAXAEBUTSourceLoc@2@PEBD11ZZ) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseContextBase::warn(struct glslang::TSourceLoc const &,char const *,char const *,char const *,...)" (?warn@TParseContextBase@glslang@@UEAAXAEBUTSourceLoc@2@PEBD11ZZ) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseContextBase::ppError(struct glslang::TSourceLoc const &,char const *,char const *,char const *,...)" (?ppError@TParseContextBase@glslang@@UEAAXAEBUTSourceLoc@2@PEBD11ZZ) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseContextBase::ppWarn(struct glslang::TSourceLoc const &,char const *,char const *,char const *,...)" (?ppWarn@TParseContextBase@glslang@@UEAAXAEBUTSourceLoc@2@PEBD11ZZ) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: void __cdecl glslang::TParseContextBase::checkIndex(struct glslang::TSourceLoc const &,class glslang::TType const &,int &)" (?checkIndex@TParseContextBase@glslang@@QEAAXAEBUTSourceLoc@2@AEBVTType@2@AEAH@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl glslang::HlslParseContext::handleBracketDereference(struct glslang::TSourceLoc const &,class glslang::TIntermTyped *,class glslang::TIntermTyped *)" (?handleBracketDereference@HlslParseContext@glslang@@QEAAPEAVTIntermTyped@2@AEBUTSourceLoc@2@PEAV32@1@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: virtual void __cdecl glslang::TParseContextBase::growGlobalUniformBlock(struct glslang::TSourceLoc const &,class glslang::TType &,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const &,class glslang::TVector<struct glslang::TTypeLoc> *)" (?growGlobalUniformBlock@TParseContextBase@glslang@@UEAAXAEBUTSourceLoc@2@AEAVTType@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@PEAV?$TVector@UTTypeLoc@glslang@@@2@@Z) referenced in function "public: virtual void __cdecl glslang::HlslParseContext::growGlobalUniformBlock(struct glslang::TSourceLoc const &,class glslang::TType &,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const &,class glslang::TVector<struct glslang::TTypeLoc> *)" (?growGlobalUniformBlock@HlslParseContext@glslang@@UEAAXAEBUTSourceLoc@2@AEAVTType@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@PEAV?$TVector@UTTypeLoc@glslang@@@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: virtual bool __cdecl glslang::TParseContextBase::lValueErrorCheck(struct glslang::TSourceLoc const &,char const *,class glslang::TIntermTyped *)" (?lValueErrorCheck@TParseContextBase@glslang@@UEAA_NAEBUTSourceLoc@2@PEBDPEAVTIntermTyped@2@@Z) referenced in function "public: virtual bool __cdecl glslang::HlslParseContext::lValueErrorCheck(struct glslang::TSourceLoc const &,char const *,class glslang::TIntermTyped *)" (?lValueErrorCheck@HlslParseContext@glslang@@UEAA_NAEBUTSourceLoc@2@PEBDPEAVTIntermTyped@2@@Z) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl glslang::TParseContextBase::rValueErrorCheck(struct glslang::TSourceLoc const &,char const *,class glslang::TIntermTyped *)" (?rValueErrorCheck@TParseContextBase@glslang@@UEAAXAEBUTSourceLoc@2@PEBDPEAVTIntermTyped@2@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "protected: class glslang::TFunction const * __cdecl glslang::TParseContextBase::selectFunction(class glslang::TVector<class glslang::TFunction const *>,class glslang::TFunction const &,class std::function<bool __cdecl(class glslang::TType const &,class glslang::TType const &,enum glslang::TOperator,int)>,class std::function<bool __cdecl(class glslang::TType const &,class glslang::TType const &,class glslang::TType const &)>,bool &)" (?selectFunction@TParseContextBase@glslang@@IEAAPEBVTFunction@2@V?$TVector@PEBVTFunction@glslang@@@2@AEBV32@V?$function@$$A6A_NAEBVTType@glslang@@0W4TOperator@2@H@Z@std@@V?$function@$$A6A_NAEBVTType@glslang@@00@Z@6@AEA_N@Z) referenced in function "public: class glslang::TFunction const * __cdecl glslang::HlslParseContext::findFunction(struct glslang::TSourceLoc const &,class glslang::TFunction &,bool &,int &,class glslang::TIntermTyped * &)" (?findFunction@HlslParseContext@glslang@@QEAAPEBVTFunction@2@AEBUTSourceLoc@2@AEAV32@AEA_NAEAHAEAPEAVTIntermTyped@2@@Z) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl glslang::TParseContextBase::parseSwizzleSelector(struct glslang::TSourceLoc const &,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const &,int,class glslang::TSwizzleSelectors<int> &)" (?parseSwizzleSelector@TParseContextBase@glslang@@MEAAXAEBUTSourceLoc@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@HAEAV?$TSwizzleSelectors@H@2@@Z) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl glslang::TParseContextBase::outputMessage(struct glslang::TSourceLoc const &,char const *,char const *,char const *,enum glslang::TPrefixType,char *)" (?outputMessage@TParseContextBase@glslang@@MEAAXAEBUTSourceLoc@2@PEBD11W4TPrefixType@2@PEAD@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "protected: virtual void __cdecl glslang::TParseContextBase::trackLinkage(class glslang::TSymbol &)" (?trackLinkage@TParseContextBase@glslang@@MEAAXAEAVTSymbol@2@@Z) referenced in function "protected: virtual void __cdecl glslang::HlslParseContext::trackLinkage(class glslang::TSymbol &)" (?trackLinkage@HlslParseContext@glslang@@MEAAXAEAVTSymbol@2@@Z) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl glslang::TParseContextBase::makeEditable(class glslang::TSymbol * &)" (?makeEditable@TParseContextBase@glslang@@MEAAXAEAPEAVTSymbol@2@@Z) 10>hlslParseHelper.obj : error LNK2001: unresolved external symbol "protected: virtual class glslang::TVariable * __cdecl glslang::TParseContextBase::getEditableVariable(char const *)" (?getEditableVariable@TParseContextBase@glslang@@MEAAPEAVTVariable@2@PEBD@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "protected: virtual void __cdecl glslang::TParseContextBase::finish(void)" (?finish@TParseContextBase@glslang@@MEAAXXZ) referenced in function "protected: virtual void __cdecl glslang::HlslParseContext::finish(void)" (?finish@HlslParseContext@glslang@@MEAAXXZ) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: void __cdecl glslang::TPpContext::setInput(class glslang::TInputScanner &,bool)" (?setInput@TPpContext@glslang@@QEAAXAEAVTInputScanner@2@_N@Z) referenced in function "public: virtual bool __cdecl glslang::HlslParseContext::parseShaderStrings(class glslang::TPpContext &,class glslang::TInputScanner &,bool)" (?parseShaderStrings@HlslParseContext@glslang@@UEAA_NAEAVTPpContext@2@AEAVTInputScanner@2@_N@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addSwizzle<int>(class glslang::TSwizzleSelectors<int> &,struct glslang::TSourceLoc const &)" (??$addSwizzle@H@TIntermediate@glslang@@QEAAPEAVTIntermTyped@1@AEAV?$TSwizzleSelectors@H@1@AEBUTSourceLoc@1@@Z) referenced in function "public: void __cdecl glslang::HlslParseContext::decomposeIntrinsic(struct glslang::TSourceLoc const &,class glslang::TIntermTyped * &,class TIntermNode *)" (?decomposeIntrinsic@HlslParseContext@glslang@@QEAAXAEBUTSourceLoc@2@AEAPEAVTIntermTyped@2@PEAVTIntermNode@@@Z) 10>hlslParseHelper.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addSwizzle<struct glslang::TMatrixSelector>(class glslang::TSwizzleSelectors<struct glslang::TMatrixSelector> &,struct glslang::TSourceLoc const &)" (??$addSwizzle@UTMatrixSelector@glslang@@@TIntermediate@glslang@@QEAAPEAVTIntermTyped@1@AEAV?$TSwizzleSelectors@UTMatrixSelector@glslang@@@1@AEBUTSourceLoc@1@@Z) referenced in function "public: class glslang::TIntermTyped * __cdecl glslang::HlslParseContext::handleDotDereference(struct glslang::TSourceLoc const &,class glslang::TIntermTyped *,class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const &)" (?handleDotDereference@HlslParseContext@glslang@@QEAAPEAVTIntermTyped@2@AEBUTSourceLoc@2@PEAV32@AEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@@Z) 10>hlslScanContext.obj : error LNK2019: unresolved external symbol "public: int __cdecl glslang::TPpContext::tokenize(class glslang::TPpToken &)" (?tokenize@TPpContext@glslang@@QEAAHAEAVTPpToken@2@@Z) referenced in function "protected: enum glslang::EHlslTokenClass __cdecl glslang::HlslScanContext::tokenizeClass(struct glslang::HlslToken &)" (?tokenizeClass@HlslScanContext@glslang@@IEAA?AW4EHlslTokenClass@2@AEAUHlslToken@2@@Z) 10>hlslGrammar.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermSelection * __cdecl glslang::TIntermediate::addSelection(class glslang::TIntermTyped *,struct glslang::TIntermNodePair,struct glslang::TSourceLoc const &)" (?addSelection@TIntermediate@glslang@@QEAAPEAVTIntermSelection@2@PEAVTIntermTyped@2@UTIntermNodePair@2@AEBUTSourceLoc@2@@Z) referenced in function "protected: bool __cdecl glslang::HlslGrammar::acceptSelectionStatement(class TIntermNode * &,class glslang::TList<struct glslang::TAttributeArgs> const &)" (?acceptSelectionStatement@HlslGrammar@glslang@@IEAA_NAEAPEAVTIntermNode@@AEBV?$TList@UTAttributeArgs@glslang@@@2@@Z) 10>hlslGrammar.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::addComma(class glslang::TIntermTyped *,class glslang::TIntermTyped *,struct glslang::TSourceLoc const &)" (?addComma@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@PEAV32@0AEBUTSourceLoc@2@@Z) referenced in function "protected: bool __cdecl glslang::HlslGrammar::acceptExpression(class glslang::TIntermTyped * &)" (?acceptExpression@HlslGrammar@glslang@@IEAA_NAEAPEAVTIntermTyped@2@@Z) 10>hlslGrammar.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermConstantUnion * __cdecl glslang::TIntermediate::addConstantUnion(bool,struct glslang::TSourceLoc const &,bool)const " (?addConstantUnion@TIntermediate@glslang@@QEBAPEAVTIntermConstantUnion@2@_NAEBUTSourceLoc@2@0@Z) referenced in function "protected: bool __cdecl glslang::HlslGrammar::acceptLiteral(class glslang::TIntermTyped * &)" (?acceptLiteral@HlslGrammar@glslang@@IEAA_NAEAPEAVTIntermTyped@2@@Z) 10>hlslGrammar.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermConstantUnion * __cdecl glslang::TIntermediate::addConstantUnion(class std::basic_string<char,struct std::char_traits<char>,class glslang::pool_allocator<char> > const *,struct glslang::TSourceLoc const &,bool)const " (?addConstantUnion@TIntermediate@glslang@@QEBAPEAVTIntermConstantUnion@2@PEBV?$basic_string@DU?$char_traits@D@std@@V?$pool_allocator@D@glslang@@@std@@AEBUTSourceLoc@2@_N@Z) referenced in function "protected: bool __cdecl glslang::HlslGrammar::acceptLiteral(class glslang::TIntermTyped * &)" (?acceptLiteral@HlslGrammar@glslang@@IEAA_NAEAPEAVTIntermTyped@2@@Z) 10>hlslGrammar.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermLoop * __cdecl glslang::TIntermediate::addLoop(class TIntermNode *,class glslang::TIntermTyped *,class glslang::TIntermTyped *,bool,struct glslang::TSourceLoc const &)" (?addLoop@TIntermediate@glslang@@QEAAPEAVTIntermLoop@2@PEAVTIntermNode@@PEAVTIntermTyped@2@1_NAEBUTSourceLoc@2@@Z) referenced in function "protected: bool __cdecl glslang::HlslGrammar::acceptIterationStatement(class TIntermNode * &,class glslang::TList<struct glslang::TAttributeArgs> const &)" (?acceptIterationStatement@HlslGrammar@glslang@@IEAA_NAEAPEAVTIntermNode@@AEBV?$TList@UTAttributeArgs@glslang@@@2@@Z) 10>hlslGrammar.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermAggregate * __cdecl glslang::TIntermediate::addForLoop(class TIntermNode *,class TIntermNode *,class glslang::TIntermTyped *,class glslang::TIntermTyped *,bool,struct glslang::TSourceLoc const &,class glslang::TIntermLoop * &)" (?addForLoop@TIntermediate@glslang@@QEAAPEAVTIntermAggregate@2@PEAVTIntermNode@@0PEAVTIntermTyped@2@1_NAEBUTSourceLoc@2@AEAPEAVTIntermLoop@2@@Z) referenced in function "protected: bool __cdecl glslang::HlslGrammar::acceptIterationStatement(class TIntermNode * &,class glslang::TList<struct glslang::TAttributeArgs> const &)" (?acceptIterationStatement@HlslGrammar@glslang@@IEAA_NAEAPEAVTIntermNode@@AEBV?$TList@UTAttributeArgs@glslang@@@2@@Z) 10>hlslGrammar.obj : error LNK2019: unresolved external symbol "public: class glslang::TIntermTyped * __cdecl glslang::TIntermediate::fold(class glslang::TIntermAggregate *)" (?fold@TIntermediate@glslang@@QEAAPEAVTIntermTyped@2@PEAVTIntermAggregate@2@@Z) referenced in function "protected: bool __cdecl glslang::HlslGrammar::acceptDefaultParameterDeclaration(class glslang::TType const &,class glslang::TIntermTyped * &)" (?acceptDefaultParameterDeclaration@HlslGrammar@glslang@@IEAA_NAEBVTType@2@AEAPEAVTIntermTyped@2@@Z) 10>hlslParseables.obj : error LNK2019: unresolved external symbol "public: void __cdecl glslang::TSymbolTableLevel::relateToOperator(char const *,enum glslang::TOperator)" (?relateToOperator@TSymbolTableLevel@glslang@@QEAAXPEBDW4TOperator@2@@Z) referenced in function "public: virtual void __cdecl glslang::TBuiltInParseablesHlsl::identifyBuiltIns(int,enum EProfile,struct glslang::SpvVersion const &,enum EShLanguage,class glslang::TSymbolTable &)" (?identifyBuiltIns@TBuiltInParseablesHlsl@glslang@@UEAAXHW4EProfile@@AEBUSpvVersion@2@W4EShLanguage@@AEAVTSymbolTable@2@@Z) 10>hlslParseables.obj : error LNK2019: unresolved external symbol "public: __cdecl glslang::TBuiltInParseables::TBuiltInParseables(void)" (??0TBuiltInParseables@glslang@@QEAA@XZ) referenced in function "public: __cdecl glslang::TBuiltInParseablesHlsl::TBuiltInParseablesHlsl(void)" (??0TBuiltInParseablesHlsl@glslang@@QEAA@XZ) 10>hlslParseables.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl glslang::TBuiltInParseables::~TBuiltInParseables(void)" (??1TBuiltInParseables@glslang@@UEAA@XZ) referenced in function "public: virtual void * __cdecl glslang::TBuiltInParseablesHlsl::scalar deleting destructor'(unsigned int)" (??_GTBuiltInParseablesHlsl@glslang@@UEAAPEAXI@Z)
10>C:\src\r3d\R3D-Engine\ThirdParty\Project\DiligentEngine\DiligentCore\External\glslang\hlsl\Release\HLSL.dll : fatal error LNK1120: 135 unresolved externals
10>Done building project "HLSL.vcxproj" -- FAILED.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.