최신 크로스 플랫폼 저수준 3D 그래픽 라이브러리 및 렌더링 프레임 워크
부지런한 엔진은 경량 크로스 플랫폼 그래픽 API 추상화 라이브러리 및 렌더링 프레임 워크입니다. Direct3D11, OpenGL, OpenGles 및 WebGL을 통해 이전 플랫폼을 지원하는 동시에 Direct3d12, Vulkan, Metal 및 WebGPU를 최대한 활용하도록 설계되었습니다. 부지런한 엔진은 공통 프론트 엔드 API를 노출시키고 모든 플랫폼에서 HLSL을 범용 음영 언어로 사용하고 백엔드 렌더링을합니다. 플랫폼 별 셰이더 표현 (GLSL, MSL, DX BYTECODE 또는 SPIRV)은 해당 백엔드와 함께 사용할 수 있습니다. 엔진은 게임 엔진 또는 기타 3D 애플리케이션에서 그래픽 서브 시스템으로 사용되도록 고안되었습니다. Apache 2.0 라이센스에 따라 배포되며 무료로 사용할 수 있습니다.
플랫폼 | D3d11 | D3d12 | Opengl/Gles | vulkan | 금속 | Webgpu | 상태 빌드 상태 |
---|---|---|---|---|---|---|---|
![]() | ✔️ | ✔️ | ✔️ | ✔️ | - | ✔️ 3 | ![]() |
![]() | ✔️ | ✔️ | - | - | - | - | ![]() |
![]() | - | - | ✔️ | ✔️ | - | ✔️ 3 | ![]() |
![]() | - | - | ✔️ | ✔️ | - | - | ![]() |
![]() | - | - | ✔️ | ✔️ 1 | ✔️ 2 | ✔️ 3 | ![]() |
![]() | - | - | ✔️ | ✔️ 1 | ✔️ 2 | - | ![]() |
![]() | - | - | - | ✔️ 1 | ✔️ 2 | - | ![]() |
![]() | - | - | ✔️ | - | - | ✔️ | ![]() |
1 Vulkan API는 MACOS, iOS 및 TVOS 플랫폼에서 기본적으로 지원되지 않으며 MoltenVK 또는 GFX 포트 가능성과 같은 Vulkan 휴대 성 구현이 필요합니다.
2 상업용 라이센스에 따라 사용 가능 - 자세한 내용은 당사에 문의하십시오.
3 WebGPU의 기본 구현이 필요하며 Dawn은 권장됩니다.
#if defined(_WIN32)
... #elif defined(LINUX)
... #elif defined(ANDROID)
...#if defined(D3D11)
... #elif defined(D3D12)
... #elif defined(OPENGL)
...최소 지원되는 저수준 API 버전 :
이것은 4 개의 서브 모듈을 포함하는 마스터 저장소입니다. 저장소 및 모든 하위 모듈을 얻으려면 다음 명령을 사용하십시오.
git clone --recursive https://github.com/DiligentGraphics/DiligentEngine.git
기존 저장소를 업데이트 할 때 모든 하위 모듈을 업데이트하는 것을 잊지 마십시오.
git pull
git submodule update --recursive
또한 최신 버전을 얻은 후 CMake를 재현하고 깨끗하게 재건하는 것이 좋습니다.
마스터 저장소에는 다음과 같은 하위 모듈이 포함됩니다.
부지런한 엔진은 CMAKE를 크로스 플랫폼 빌드 도구로 사용합니다. Cmake 사용을 시작하려면 최신 릴리스를 다운로드하십시오 (3.20 이상이 필요). 또 다른 빌드 전제 조건은 Python 통역사입니다 (3.0 이상이 필요). 아래 지침에 따라 건축/실행 문제가있는 경우 문제 해결을 살펴보십시오.
전제 조건 구축 :
.NET 지원에는 .NET SDK 6.0 이상이 필요합니다.
CMake GUI 또는 명령 줄 도구를 사용하여 빌드 파일을 생성하십시오. 예를 들어, Build/Win64 폴더에서 Visual Studio 2022 64 비트 솔루션 및 프로젝트 파일을 생성하려면 엔진의 루트 폴더로 이동하여 다음 명령을 실행하십시오.
cmake -S . -B ./build/Win64 -G "Visual Studio 17 2022" -A x64
다음 명령을 사용하여 Win8.1 SDK를 대상으로하는 Win32 솔루션을 생성 할 수 있습니다.
cmake -D CMAKE_SYSTEM_VERSION=8.1 -S . -B ./build/Win64_8.1 -G "Visual Studio 17 2022" -A x64
mingw를 사용하는 경우 아래 명령을 사용하여 제조 파일을 생성 할 수 있습니다 (그러나 기능은 제한되고 Mingw는 엔진을 구축하는 권장되는 방법이 아닙니다).
cmake -S . -B ./build/MinGW -D CMAKE_BUILD_TYPE=Release -G "MinGW Makefiles"
Vulkan 유효성 검사 계층을 활성화하려면 Vulkan SDK를 다운로드하고 VulkansDK 설치 폴더의 BIN 디렉토리 경로를 포함하는 환경 변수 VK_LAYER_PATH
추가해야합니다.
DiligentEngine.sln 파일을 Build/Win64 폴더에서 열고 구성을 선택하고 엔진을 빌드하십시오. 원하는 프로젝트를 시작 프로젝트로 설정하고 (기본적으로 GLTF 뷰어를 선택 함) 실행하십시오.
기본적으로 샘플 및 튜토리얼 응용 프로그램에는 렌더링 백엔드 선택 대화 상자가 표시됩니다. 다음 명령 줄 옵션을 사용하여 D3d11, D3d12, Opengl 또는 Vulkan 모드를 강제로 사용하십시오. -모드 D3d11 , -모드 d3d12 , -모드 Gl , 또는 -모드 vk . Visual Studio 환경 외부에서 응용 프로그램을 실행하려면 응용 프로그램의 자산 폴더를 작업 디렉토리로 설정해야합니다. (Visual Studio의 경우 CMAKE에 의해 자동으로 구성됩니다). 또는 빌드 대상으로 이동하거나 폴더를 설치하고 실행 파일을 실행할 수 있습니다.
Universal Windows 플랫폼 용 빌드 파일을 생성하려면 다음 두 CMAKE 변수를 정의해야합니다.
CMAKE_SYSTEM_NAME=WindowsStore
CMAKE_SYSTEM_VERSION=< Windows Version >
예를 들어, Build/UWP64 폴더에서 Visual Studio 2022 64 비트 솔루션 및 프로젝트 파일을 생성하려면 엔진 루트 폴더에서 다음 명령을 실행하십시오.
cmake -D CMAKE_SYSTEM_NAME=WindowsStore -D CMAKE_SYSTEM_VERSION=10.0 -S . -B ./build/UWP64 -G "Visual Studio 17 2022" -A x64
원하는 프로젝트를 시작 프로젝트로 설정하고 (기본적으로 GLTF 뷰어를 선택 함) 실행하십시오.
기본적으로 응용 프로그램은 D3D12 모드로 실행됩니다. 다음 명령 줄 옵션을 사용하여 D3D11 또는 D3D12를 선택할 수 있습니다. -모드 d3d11 , -모드 d3d12 .
참고 : CMAKE_SYSTEM_VERSION = 8.1 CMAKE 변수를 정의하여 Windows 8.1을 대상으로하는 솔루션을 생성 할 수는 있지만 적절한 C ++ 14 지원이없는 Visual Studio 2013 (V120) 도구 세트를 사용하므로 빌드되지 않습니다.
C ++ 개발을 위해 Linux 환경을 설정해야합니다. 이미 있다면 부지런한 엔진이 최신 C ++ 기능을 사용하므로 C ++ 도구가 최신 상태인지 확인하십시오 (Clang 10 이상 권장).
다음 패키지를 설치해야 할 수도 있습니다.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
sudo apt-get install cmake
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
Vulkan을 구성하려면 다음과 같은 것도 필요합니다.
디버그 구성을위한 제조 파일을 생성하려면 엔진의 루트 폴더에서 다음 cmake 명령을 실행하십시오.
cmake -S . -B ./build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug"
엔진을 구축하려면 다음 명령을 실행하십시오.
cmake --build ./build
Ubuntu 23 이상에서는 libtinfo5를 설치하지 않으면 충돌 할 수 있습니다. 추가해야합니다.
엔진의 루트 폴더에는 엔진을 빌드하도록 IDE를 구성하는 Visual Studio Code 설정 파일이 포함되어 있습니다. IDE에서 직접 응용 프로그램을 실행할 수 있습니다. 명령 줄에서 응용 프로그램을 실행하려면 앱의 자산 폴더가 현재 디렉토리 여야합니다.
기계가 Android 개발을 위해 설정되어 있는지 확인하십시오. Android Studio를 다운로드하고 NDK 및 CMAKE 및 기타 필요한 도구를 설치 및 구성하십시오. NDK R24 이상이 필요합니다. Android Studio와 번들 CMAKE 버전을 사용하지 않는 경우 빌드 파일이 올바르게 구성되어 있는지 확인하십시오. 환경이 올바르게 설정되어 있는지 확인하려면 찻 주전자 샘플과 Vulkan Android 자습서를 구축하십시오.
Android Studio를 사용하여 Diligents Tamples/Android 폴더를 열어 Android에서 자습서 및 샘플을 구축하고 실행하십시오.
기본적으로 응용 프로그램은 Vulkan 모드에서 실행됩니다. Vulkan 모드에서 실행하려면 다음 런치 플래그를 추가하십시오. --es mode gles
(Android Studio에서는 런-> 구성 메뉴 편집)로 이동하십시오.
전제 조건 :
Repo를 복제 한 후 엔진 루트 폴더에서 다음 명령을 실행하여 Xcode 프로젝트를 생성하십시오.
cmake -S . -B ./build/MacOS -G "Xcode"
이 프로젝트는 build/MacOS
폴더에 있습니다.
CMAKE가 컴파일러를 찾지 못하면 다음 명령을 실행해야 할 수도 있습니다.
sudo xcode-select --reset
기본적으로 MACOS에는 Vulkan 구현이 없습니다. 부지런한 엔진은 Vulkan을 동적으로로드하고 MoltenVK 또는 GFX 포트 가능성과 같은 Vulkan 휴대 성 구현을 사용할 수 있습니다. VulkansDK를 설치하고 여기에 설명 된대로 시스템이 올바르게 구성되어 있는지 확인하십시오. 특히 다음 환경 변수를 정의해야 할 수도 있습니다 (Vulkan SDK가 /Users/MyName/VulkanSDK/1.3.290.0
에 설치되고 Moltenvk를 사용하려고한다고 가정합니다.
export VULKAN_SDK=/Users/MyName/VulkanSDK/1.3.290.0/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
쉘에 설정된 환경 변수는 LaunchPad 또는 기타 데스크탑 GUI에서 시작된 응용 프로그램에서는 볼 수 없습니다. 따라서 응용 프로그램에서 Vulkan 라이브러리를 찾으려면 명령 줄에서 시작해야합니다. 같은 이유로 인해 Xcode 프로젝트 파일은 open
명령을 사용하여 쉘에서 열어야합니다. Xcode 버전 7 이상을 사용하면 다음 명령을 사용하여 먼저 활성화해야 할 수 있습니다.
defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO
자세한 내용은이 페이지를 참조하십시오.
DYLD_LIBRARY_PATH
및 LD_LIBRARY_PATH
환경 변수는 MACOS에서 무시됩니다. 실행 파일이 Vulkan 라이브러리를 찾으려면 rpath에 있어야합니다. VULKAN_SDK
환경 변수가 설정되고 올바른 위치를 가리키면 부지런한 엔진은 모든 응용 프로그램에 대한 RPATH를 자동으로 구성합니다.
최신 테스트 된 Vulkan SDK 버전 : 1.3.290.0.
전제 조건 :
iOS 빌드에 대해 구성된 Xcode 프로젝트를 생성하려면 엔진의 루트 폴더에서 아래 명령을 실행하십시오.
cmake -S . -B ./build/iOS -DCMAKE_SYSTEM_NAME=iOS -G "Xcode"
필요한 경우 iOS 배포 대상 (13.0 이상이 필요)과 다른 매개 변수를 제공 할 수 있습니다.
cmake -S . -B ./build/iOS -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=13.0 -G "Xcode"
iphonesimulator
시스템 루트를 사용하십시오. CMAKE_OSX_ARCHITECTURES
변수를 사용하여 대상 아키텍처를 지정할 수도 있습니다.
cmake -S . -B ./build/iOSSim -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=arm64 -G "Xcode"
build/IOS
폴더에서 Xcode 프로젝트 파일을 열고 엔진을 빌드하십시오. iOS 장치에서 응용 프로그램을 실행하려면 프로젝트 설정에서 적절한 개발 팀을 설정해야합니다.
iOS에서 Vulkan을 활성화하려면 VulkansDK를 다운로드하여 설치하십시오. iOS에는 Vulkan 로더가 없으며 부지런한 엔진은 MoltenVK XCFramework (MoltenVK 설치 안내서 참조)와 직접 링크되어 금속의 Vulkan을 구현합니다. iOS의 부지런한 엔진에서 Vulkan을 활성화하려면 cmake를 실행할 때 Vulkan SDK 로의 경로를 지정하십시오 (Vulkan SDK가 /Users/MyName/VulkanSDK/1.3.290.0
에 설치되어 있다고 가정) :
cmake -DCMAKE_SYSTEM_NAME=iOS -DVULKAN_SDK=/Users/MyName/VulkanSDK/1.3.290.0 -S . -B ./build/iOS -G "Xcode"
기본적으로 엔진은 Vulkan SDK에 위치한 MoltenVK XCFramework와 연결됩니다. 이것이 바람직하지 않거나 응용 프로그램이 특정 라이브러리를 사용하려는 경우, MOLTENVK_LIBRARY
Cmake 변수를 통해 라이브러리의 전체 경로를 제공 할 수 있습니다.
MoltenVK 설치 및 사용에 대한 자세한 내용은 MoltenVK 사용자 안내서를 참조하십시오.
최신 테스트 된 Vulkan SDK 버전 : 1.3.290.0.
전제 조건 구축 :
현재 터미널에서 경로 및 기타 환경 변수를 활성화하려면
source ${PATH_TO_EMSDK} /emsdk/emsdk_env.sh
${PATH_TO_EMSDK}/emsdk/emsdk_env.bat
를 실행하십시오 source ${PATH_TO_EMSDK}/emsdk/emsdk_env.sh
프로젝트를 생성하려면 엔진의 루트 폴더에서 다음 cmake 명령을 실행하십시오.
emcmake cmake -S . -B ./build/Emscripten -G "Ninja"
엔진을 구축하려면 다음 명령을 실행하십시오.
cmake --build ./build/Emscripten
emscripten 응용 프로그램을 테스트하려면 기본 웹 서버를 실행하십시오
cd ./build/Emscripten
python https_server.py
브라우저를 열고 http://localhost
로 이동하십시오
예를 들어 Hello Triangle 자습서는
http://localhost/DiligentSamples/Tutorials/Tutorial01_HelloTriangle/Tutorial01_HelloTriangle.html
로컬 네트워크의 다른 컴퓨터에서 서버에 액세스하려면 HTTPS 서버를 사용하십시오. 이를 활성화하려면 먼저 cryptography
모듈을 설치하십시오. 다음 명령을 실행하여 그렇게 할 수 있습니다.
pip install cryptography
HTTPS 서버를 시작하려면 다음 명령을 사용하십시오.
python https_server.py --mode=https
HTTPS 프로토콜을 사용하여 페이지를 엽니 다. 예를 들어:
https://localhost/DiligentSamples/Tutorials/Tutorial01_HelloTriangle/Tutorial01_HelloTriangle.html
HTTPS 서버와 달리 HTTPS 서버를 사용하는 경우 페이지를로드 할 때 다음 오류가 발생할 수 있습니다 : net::ERR_CERT_AUTHORITY_INVALID
.
이 문제를 해결하는 두 가지 방법이 있습니다.
Advanced
버튼을 클릭 한 다음 Proceed to localhost (unsafe)
.python https_server.py --mode=https --register
우리는 각각 HTTP/HTTPS 프로토콜, 80
및 443
의 기본 포트를 사용합니다. 해당 포트에서 서버가 이미 실행중인 경우 --port
인수를 사용하여 다른 포트 번호를 지정하고 IP 주소 후 URL에 해당 포트 번호를 포함시킬 수 있습니다. 예를 들어:
http://localhost:${YOUR_PORT}/DiligentSamples/Tutorials/Tutorial01_HelloTriangle/Tutorial01_HelloTriangle.html
부지런한 구조는 모듈 식 구조를 가지고 있으므로 프로젝트의 경우 필요한 기능을 구현하는 하위 모듈 만 사용할 수 있습니다. 아래 다이어그램은 모듈 간의 종속성을 보여줍니다.
Core
|
+------>Tools----------.
| | |
| V |
+------->FX---------. |
| | |
| V V
'----------------->Samples
프로젝트에 서브 모듈로 부지런한 저장소를 추가하는 경우 하위 모듈을 재귀 적으로 초기화하는 것을 잊지 마십시오.
프로젝트가 CMake를 사용하는 경우 부지런한 엔진을 추가하려면 몇 줄의 코드가 필요합니다. 디렉토리 구조가 다음과 같습니다.
|
+-DiligentCore
+-HelloDiligent.cpp
그런 다음 다음 단계를 수행해야합니다.
add_subdirectory(DiligentCore)
전화아래는 cmake 파일의 예입니다.
cmake_minimum_required ( VERSION 3.6)
project (HelloDiligent CXX)
add_subdirectory (DiligentCore)
add_executable (HelloDiligent WIN32 HelloDiligent.cpp)
target_compile_options (HelloDiligent PRIVATE -DUNICODE)
target_link_libraries (HelloDiligent
PRIVATE
Diligent-GraphicsEngineD3D11-shared
Diligent-GraphicsEngineOpenGL-shared
Diligent-GraphicsEngineD3D12-shared
Diligent-GraphicsEngineVk-shared
)
copy_required_dlls(HelloDiligent)
copy_required_dlls()
는 시스템이 시스템을 찾고로드 할 수 있도록 실행 파일 옆에 공유 라이브러리를 복사하는 편의 기능입니다. Windows 및 Linux 용 튜토리얼 시작을 살펴보십시오.
대부분의 플랫폼에서 핵심 엔진 라이브러리는 정적 및 동적 버전 모두 (예 : Diligent-GraphicsEngineD3D12-static
및 Diligent-GraphicsEngineD3D12-shared
)로 구축됩니다. target_link_libraries()
cmake 명령에서 대상 이름을 변경하여 링크 할 버전을 선택할 수 있습니다. 동적 라이브러리와 연결하면 ENGINE_DLL
매크로가 정의되며 런타임에 라이브러리를로드해야합니다. 예를 들어 Direct3d12 백엔드의 경우 :
# if ENGINE_DLL
// Load the dll and import GetEngineFactoryD3D12() function
auto GetEngineFactoryD3D12 = LoadGraphicsEngineD3D12();
# endif
auto * pFactoryD3D12 = GetEngineFactoryD3D12();
정적 링크를 사용하는 경우 ENGINE_DLL
매크로는 정의되지 않으며 GetEngineFactoryD3D12
함수는 실행 파일과 정적으로 연결됩니다.
SampleApp.cpp 파일은 정적 또는 동적 링크를 사용하여 다른 플랫폼에서 엔진을 초기화하는 방법의 예를 제공합니다.
FetchContent를 사용하여 부지런한 엔진 모듈을 다운로드 할 수 있습니다. 유일한 경고는 각 모듈의 소스 디렉토리를 모듈 이름과 동일하게 지정하여 헤더 파일을 찾을 수 있다는 것입니다. 아래는 FetchContent를 사용하는 cmake 파일의 예입니다.
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)
프로젝트에서 CMAKE를 사용하지 않으면 CMAKE를 사용하여 라이브러리를 빌드하여 빌드 시스템에 추가하는 것이 좋습니다. Github에서 최신 빌드 아티팩트를 다운로드 할 수 있습니다.
Global Cmake 설치 디렉토리는 cmake_intall_prefix 변수에 의해 제어됩니다. 기본값은 Unix에서 /usr/local
로, c:/Program Files/${PROJECT_NAME}
로, 당신이 원하는 것이 아닐 수도 있습니다. 사용 -D CMAKE_INSTALL_PREFIX=install
로컬 install
폴더를 사용하려면 설치하십시오.
cmake -S . -B ./build/Win64 -D CMAKE_INSTALL_PREFIX=install -G "Visual Studio 17 2022" -A x64
라이브러리 및 헤더 파일을 설치하려면 빌드 폴더에서 다음 cmake 명령을 실행하십시오.
cmake --build . --target install
DiligentCore 설치 디렉토리는 엔진을 통합하는 데 필요한 모든 것을 포함합니다.
더 쉬운 방법은 동적 라이브러리와 연결하는 것입니다. 정적으로 연결할 때는 DiligentCore와 엔진에서 사용하는 모든 타사 라이브러리를 나열해야합니다. 그 외에도 플랫폼 별 시스템 라이브러리를 지정해야합니다. 예를 들어, Windows 플랫폼의 경우 프로젝트에 링크 해야하는 라이브러리 목록은 다음과 같습니다.
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
부지런한 엔진 헤더는 다음 플랫폼 매크로 중 하나가 1
: PLATFORM_WIN32
, PLATFORM_UNIVERSAL_WINDOWS
, PLATFORM_ANDROID
, PLATFORM_LINUX
, PLATFORM_MACOS
, PLATFORM_IOS
로 정의되어야합니다.
다음 cmake 옵션을 사용하여 설치하려는 엔진의 어떤 구성 요소를 제어 할 수 있습니다 : DILIGENT_INSTALL_CORE
, DILIGENT_INSTALL_FX
, DILIGENT_INSTALL_SAMPLES
및 DILIGENT_INSTALL_TOOLS
.
엔진을 통합하는 또 다른 방법은 빌드 파일 (예 : Visual Studio Projects)을 생성하고 빌드 시스템에 추가하는 것입니다. 아래에 설명 된 사용자 정의 구축은 특정 요구에 대한 설정을 조정하는 데 도움이 될 수 있습니다.
사용 가능한 CMAKE 옵션은 아래 표에 요약되어 있습니다.
옵션 | 기본값 | 설명 |
---|---|---|
DILIGENT_NO_DIRECT3D11 | 아니요 | Direct3d11 백엔드를 구축하지 마십시오 |
DILIGENT_NO_DIRECT3D12 | 아니요 | Direct3D12 백엔드를 구축하지 마십시오 |
DILIGENT_NO_OPENGL | 아니요 | OpenGL 백엔드를 구축하지 마십시오 |
DILIGENT_NO_VULKAN | 아니요 | Vulkan 백엔드를 구축하지 마십시오 |
DILIGENT_NO_METAL | 아니요 | 금속 백엔드를 구축하지 마십시오 |
DILIGENT_NO_WEBGPU | 아니요 | WebGPU 백엔드를 구축하지 마십시오 |
DILIGENT_NO_ARCHIVER | 아니요 | 아카이버를 구축하지 마십시오 |
DILIGENT_NO_RENDER_STATE_PACKAGER | 아니요 | 렌더 스테이트 패키지 도구를 구축하지 마십시오 |
DILIGENT_ENABLE_DRACO | 아니요 | GLTF 로더에서 Draco 압축 지원을 활성화하십시오 |
DILIGENT_USE_RAPIDJSON | 아니요 | GLTF 로더에 RapidJson 파서를 사용하십시오 |
DILIGENT_BUILD_TOOLS | 예 | 도구 모듈을 구축하십시오 |
DILIGENT_BUILD_FX | 예 | FX 모듈을 빌드하십시오 |
DILIGENT_BUILD_SAMPLES | 예 | 샘플 모듈을 작성하십시오 |
DILIGENT_BUILD_SAMPLE_BASE_ONLY | 아니요 | 샘플베이스 프로젝트 및 기타 샘플/튜토리얼 만 구축하십시오 |
DILIGENT_BUILD_TESTS | 아니요 | 단위 테스트를 구축하십시오 |
DILIGENT_NO_GLSLANG | 아니요 | glslang과 spriv-tools를 구축하지 마십시오 |
DILIGENT_NO_HLSL | 아니요 | 비 디렉3D 백엔드에서 HLSL 지원을 비활성화합니다 |
DILIGENT_NO_FORMAT_VALIDATION | 예 | 소스 코드 서식 유효성 검사를 비활성화합니다 |
DILIGENT_LOAD_PIX_EVENT_RUNTIME | 아니요 | PIX 이벤트 지원을 활성화합니다 |
DILIGENT_NVAPI_PATH | NVAPI SDK로가는 길 | |
DILIGENT_INSTALL_CORE | 예 | 코어 모듈을 설치하십시오 |
DILIGENT_INSTALL_TOOLS | 예 | 도구 모듈을 설치하십시오 |
DILIGENT_INSTALL_FX | 예 | FX 모듈을 설치하십시오 |
DILIGENT_INSTALL_SAMPLES | 예 | 샘플 모듈을 설치하십시오 |
DILIGENT_INSTALL_PDB | 아니요 | 프로그램 디버그 데이터베이스를 설치하십시오 |
DILIGENT_DEAR_IMGUI_PATH | 사용자가 제공 한 imgui 프로젝트의 선택적 경로 | |
DILIGENT_ARGS_DIR | 사용자가 제공 한 Args 프로젝트의 선택적 경로 | |
DILIGENT_NUKLEAR_DIR | 사용자가 제공 한 Nuklear 프로젝트의 선택적 경로 | |
DILIGENT_MSVC_COMPILE_OPTIONS | 모든 구성에 대한 추가 MSVC 컴파일 옵션 | |
DILIGENT_MSVC_DEBUG_COMPILE_OPTIONS | 디버그 구성을위한 추가 MSVC 컴파일 옵션 | |
DILIGENT_MSVC_RELEASE_COMPILE_OPTIONS | /GL /아치 : AVX2 | 릴리스 구성을위한 추가 MSVC 컴파일 옵션 |
DILIGENT_CLANG_COMPILE_OPTIONS | 모든 구성에 대한 추가 Clang 컴파일 옵션 | |
DILIGENT_CLANG_DEBUG_COMPILE_OPTIONS | 디버그 구성을위한 추가 Clang 컴파일 옵션 | |
DILIGENT_CLANG_RELEASE_COMPILE_OPTIONS | -mavx2 | 릴리스 구성을위한 추가 Clang 컴파일 옵션 |
DILIGENT_USD_PATH | USD 설치 폴더로가는 경로 |
기본적으로 현재 플랫폼에서 사용 가능한 모든 백엔드가 구축됩니다. 특정 백엔드를 비활성화하려면 다음 옵션을 사용하십시오. DILIGENT_NO_DIRECT3D11
, DILIGENT_NO_DIRECT3D12
, DILIGENT_NO_OPENGL
, DILIGENT_NO_VULKAN
, DILIGENT_NO_METAL
, DILIGENT_NO_WEBGPU
. WebGPU 백엔드는 웹을 구축 할 때 기본적으로 활성화됩니다. 다른 플랫폼에서 활성화하려면 DILIGENT_NO_WEBGPU=OFF
사용하십시오. 옵션은 CMAKE UI를 통해 또는 아래 예제에서와 같이 명령 줄에서 설정할 수 있습니다.
cmake -D DILIGENT_NO_DIRECT3D11=TRUE -S . -B ./build/Win64 -G "Visual Studio 17 2022" -A x64
또한 다음 옵션을 사용하여 개별 엔진 구성 요소를 활성화하거나 비활성화 할 수 있습니다. DILIGENT_BUILD_TOOLS
, DILIGENT_BUILD_FX
, DILIGENT_BUILD_SAMPLES
. SampleBase
프로젝트 만 구축하려면 DILIGENT_BUILD_SAMPLE_BASE_ONLY
옵션을 사용할 수 있습니다.
기본적으로 Vulkan 백엔드는 Glslang과 연결되어있어 런타임에 HLSL 및 GLSL 셰이더를 SPIRV로 컴파일 할 수 있습니다. 런 타임 컴파일이 필요하지 않은 경우 DILIGENT_NO_GLSLANG
cmake 옵션으로 glslang을 비활성화 할 수 있습니다. 또한 DILIGENT_NO_HLSL
옵션을 사용하여 비 디렉3D 백엔드에서 HLSL 지원을 비활성화 할 수 있습니다. 옵션을 활성화하면 Vulkan 및 OpenGL 백엔드 바이너리의 크기가 크게 줄어들어 모바일 애플리케이션에 특히 중요 할 수 있습니다.
부지런한 엔진은 Clang-Format을 사용하여 코드 기반 전체의 일관된 형식을 보장합니다. DILIGENT_NO_FORMAT_VALIDATION
Cmake 옵션을 사용하여 유효성 검사를 비활성화 할 수 있습니다. 서식 문제가있는 경우 모든 풀 요청이 실패합니다.
부지런한 엔진은 디버그 빌드에서 항상 활성화되는 광범위한 검증을 사용합니다. DILIGENT_DEVELOPMENT
CMake 옵션을 설정하여 일부 검사 중 일부는 릴리스 구성에서 활성화 될 수 있습니다.
PIX 이벤트 지원을 활성화하려면 DILIGENT_LOAD_PIX_EVENT_RUNTIME
Cmake 플래그를 설정하십시오.
NVIDIA GPU (Direct3D11의 기본 멀티 드로우 간접 지원과 같은)에서 일부 고급 기능을 활성화하려면 NVAPI를 다운로드하고 DILIGENT_NVAPI_PATH
Cmake 변수를 설정하십시오.
부지런한 엔진은 여러 타사 라이브러리를 사용합니다. 응용 프로그램의 CMake 파일이 해당 라이브러리를 정의하는 경우 부지런는 기존 대상을 사용합니다. 애플리케이션은 빌드 설정이 부지런하고 호환되는지 확인해야합니다.
부지런한 엔진은 다음 옵션 CMAKE 기능을 정의하는 구성 스크립트 파일을 제공하여 빌드 설정을 사용자 정의 할 수 있습니다.
custom_configure_build()
- 빌드 구성, c/c ++ 컴파일 플래그, 링크 플래그 등과 같은 글로벌 빌드 속성을 정의합니다.custom_pre_configure_target()
- 빌드의 모든 대상에 대한 사용자 정의 설정을 정의하고 엔진 빌드 시스템이 대상 구성을 시작하기 전에 호출됩니다.custom_post_configure_target()
- 엔진 빌드 시스템이 클라이언트가 엔진에서 설정 한 속성을 재정의하도록 대상을 구성한 후 호출되었습니다. 구성 스크립트 경로는 CMAKE를 실행할 때 BUILD_CONFIGURATION_FILE
변수를 통해 제공되어야하며 CMAKE 루트 폴더와 관련이 있어야합니다.
cmake -D BUILD_CONFIGURATION_FILE=BuildConfig.cmake -S . -B ./build/Win64 -G "Visual Studio 17 2022" -A x64
정의 된 경우 빌드 대상이 추가되기 전에 custom_configure_build()
함수가 호출됩니다. 기본적으로 CMAKE는 디버그, 릴리스, relwithDebinfo, Minsizerel의 다음 네 가지 구성을 정의합니다. 원하는 경우 CMAKE_CONFIGURATION_TYPES
변수를 설정하여 자신의 빌드 구성을 정의 할 수 있습니다. 예를 들어 두 개의 구성이있는 경우 디버그 및 릴리스 엠트 만 사용하려면 다음 줄을 custom_configure_build()
함수에 추가하십시오.
set (CMAKE_CONFIGURATION_TYPES Debug ReleaseMT CACHE STRING "Configuration types: Debug, ReleaseMT" FORCE )
빌드 시스템은 디버그 및 릴리스 (최적화) 구성 목록을 알아야하므로 CMAKE_CONFIGURATION_TYPES
변수가 정의 될 때 다음 두 변수도 설정해야합니다.
set (DEBUG_CONFIGURATIONS DEBUG CACHE INTERNAL "" FORCE )
set (RELEASE_CONFIGURATIONS RELEASEMT CACHE INTERNAL "" FORCE )
CMAKE 세부 사항으로 인해 DEBUG_CONFIGURATIONS
및 RELEASE_CONFIGURATIONS
에 나열된 구성 이름이 대문자를 사용해야합니다 .
4 개의 표준 CMAKE 구성 이외의 구성을 정의하면 모든 새 구성에 대해 다음 변수를 설정해야합니다.
CMAKE_C_FLAGS_<Config>
- C 플래그를 컴파일합니다CMAKE_CXX_FLAGS_<Config>
- C ++ 플래그를 컴파일합니다CMAKE_EXE_LINKER_FLAGS_<Config>
- 실행 가능한 링크 플래그CMAKE_SHARED_LINKER_FLAGS_<Config>
- 공유 라이브러리 링크 플래그예를 들어:
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 )
아래는 custom_configure_build () 함수의 예입니다.
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 ()
정의 된 경우, custom_pre_configure_target()
빌드 시스템에 의해 생성 된 모든 대상에 대해 호출되며 대상 별 속성을 구성 할 수 있습니다.
기본적으로 빌드 시스템은 일부 대상 속성을 설정합니다. custom_pre_configure_target()
필요한 모든 속성을 설정하면 TARGET_CONFIGURATION_COMPLETE
Parent Scope 변수를 TRUE
로 설정하여 추가 처리가 필요하지 않음을 빌드 시스템에 알릴 수 있습니다.
set (TARGET_CONFIGURATION_COMPLETE TRUE PARENT_SCOPE )
다음은 custom_pre_configure_target()
함수의 예입니다.
function (custom_pre_configure_target TARGET )
set_target_properties ( ${TARGET} PROPERTIES
STATIC_LIBRARY_FLAGS_RELEASEMT /LTCG
)
set (TARGET_CONFIGURATION_COMPLETE TRUE PARENT_SCOPE )
endfunction ()
클라이언트가 일부 설정을 재정의하기 만하면 엔진이 대상 구성을 완료 한 후 호출 된 custom_post_configure_target()
함수를 정의 할 수 있습니다.
function (custom_post_configure_target TARGET )
set_target_properties ( ${TARGET} PROPERTIES
CXX_STANDARD 17
)
endfunction ()
이 페이지를 참조하십시오. 또한 아래 나열된 튜토리얼과 샘플은 시작하기에 좋은 장소입니다.
부지런한 렌더링 상태 표기법은 셰이더, 파이프 라인 상태, 자원 서명 및 기타 객체를 편리한 형태로 설명하는 JSON 기반 언어입니다.
{
"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 파일은 실행 시간에 동적으로 구문 분석 할 수 있습니다. 또는 애플리케이션은 Packager 도구를 사용하여 파이프 라인 설명 (대상 플랫폼 용 셰이더를 컴파일하고 내부 리소스 레이아웃을 정의하는 등)을 런타임로드 성능을 위해 최적화 된 바이너리 아카이브로 전처리 할 수 있습니다.
지도 시간 | 스크린 샷 | 설명 |
---|---|---|
01 -Hello Triangle | ![]() | 이 튜토리얼은 부지런한 엔진 API를 사용하여 간단한 삼각형을 렌더링하는 방법을 보여줍니다. |
02- 큐브 | ![]() | 이 튜토리얼은 실제 3D 객체 인 큐브를 렌더링하는 방법을 보여줍니다. 파일에서 셰이더를로드하고 정점, 인덱스 및 균일 버퍼를 생성 및 사용하는 방법을 보여줍니다. |
03- 텍스처링 | ![]() | 이 튜토리얼은 텍스처를 3D 객체에 적용하는 방법을 보여줍니다. 파일에서 텍스처를로드하고 셰이더 리소스 바인딩 객체를 만들고 셰이더에서 텍스처를 샘플링하는 방법을 보여줍니다. |
03 -Texturing -C | ![]() | 이 튜토리얼은 Tutorial03과 동일하지만 C API를 사용하여 구현됩니다. |
03- 텍스처링 포넷 | ![]() | 이 튜토리얼은 .NET 애플리케이션에서 부지런한 엔진 API를 사용하는 방법을 보여줍니다. |
04- 인스턴스 | ![]() | 이 튜토리얼은 인스턴스를 사용하여 모든 사본에 대해 고유 한 변환 매트릭스를 사용하여 하나의 객체의 여러 사본을 렌더링하는 방법을 보여줍니다. |
05- 텍스처 배열 | ![]() | 이 튜토리얼은 인스턴스를 텍스처 어레이와 결합하여 모든 인스턴스에 고유 한 텍스처를 사용하는 방법을 보여줍니다. |
06- 멀티 스레딩 | ![]() | 이 자습서는 여러 스레드에서 병렬로 명령 목록을 생성하는 방법을 보여줍니다. |
07- 지오메트리 셰이더 | ![]() | 이 튜토리얼은 지오메트리 셰이더를 사용하여 스무어 와이어 프레임을 렌더링하는 방법을 보여줍니다. |
08- 테셀레이션 | ![]() | 이 튜토리얼은 하드웨어 테셀레이션을 사용하여 간단한 적응 형 지형 렌더링 알고리즘을 구현하는 방법을 보여줍니다. |
09- 쿼드 | ![]() | 이 튜토리얼은 여러 2D 쿼드를 렌더링하고 텍스처를 자주 전환하고 혼합 모드를 전환하는 방법을 보여줍니다. |
10- 데이터 스트리밍 | ![]() | 이 튜토리얼은 MAP_FLAG_DISCARD 및 MAP_FLAG_DO_NOT_SYNCHRONIZE FLAGS를 사용하여 동적 버퍼 매핑 전략을 보여주기 위해 GPU로 다양한 양의 데이터를 효율적으로 스트리밍합니다. |
11- 리소스 업데이트 | ![]() | 이 튜토리얼은 부지런한 엔진에서 버퍼와 텍스처를 업데이트하는 다양한 방법을 보여주고 각 방법과 관련된 중요한 내부 세부 사항 및 성능 영향을 설명합니다. |
12- 렌더링 대상 | ![]() | 이 튜토리얼은 3D 큐브를 오프 스크린 렌더링 대상으로 렌더링하고 간단한 사후 처리 효과를 수행하는 방법을 보여줍니다. |
13- 그림자지도 | ![]() | 이 튜토리얼은 그림자 맵을 사용하여 기본 그림자를 렌더링하는 방법을 보여줍니다. |
14- 셰이더를 계산합니다 | ![]() | 이 튜토리얼은 Compute Shaders를 사용하여 간단한 입자 시뮬레이션 시스템을 구현하는 방법을 보여줍니다. |
15- 여러 개의 창 | ![]() | 이 튜토리얼은 부지런한 엔진을 사용하여 여러 창에 렌더링하는 방법을 보여줍니다. |
16- 묶인 자원 | ![]() | 이 튜토리얼은 차세대 API가 활성화 한 동적 셰이더 리소스 인덱싱 기능을 활용하여 렌더링 성능을 크게 향상시키는 Bindless Resources를 구현하는 방법을 보여줍니다. |
17 -MSAA | ![]() | 이 튜토리얼은 멀티 샘플 방지 (MSAA)를 사용하여 기하학적 모서리가 더 매끄럽고 일시적으로 안정적으로 보이게하는 방법을 보여줍니다. |
18- 쿼리 | ![]() | 이 자습서는 쿼리를 사용하여 렌더링 된 렌더링 수, 명령 처리 기간 등과 같은 GPU 작업에 대한 다양한 정보를 검색하는 방법을 보여줍니다. |
19- 렌더 패스 | ![]() | 이 튜토리얼은 렌더 패스 API를 사용하여 간단한 연기 음영을 구현하는 방법을 보여줍니다. |
20- 메쉬 셰이더 | ![]() | 이 튜토리얼은 GPU의 Frustum Culling 및 Object LOD 계산을 구현하기 위해 새로운 프로그래밍 가능한 단계 인 증폭 및 메쉬 셰이더를 사용하는 방법을 보여줍니다. |
21- 레이 추적 | ![]() | 이 튜토리얼은 부지런한 엔진에서 Ray Tracing API를 사용하는 기본 사항을 보여줍니다. |
22- 하이브리드 렌더링 | ![]() | 이 튜토리얼은 래스터 화와 레이 추적을 결합한 간단한 하이브리드 렌더러를 구현하는 방법을 보여줍니다. |
23- 명령 대기열 | ![]() | 이 튜토리얼은 여러 명령 큐를 사용하여 복사 및 계산 작업과 병렬로 렌더링을 수행하는 방법을 보여줍니다. |
24- 가변 속도 음영 | ![]() | 이 튜토리얼은 가변 속도 음영을 사용하여 픽셀 음영 하중을 줄이는 방법을 보여줍니다. |
25- 렌더 스테이트 포장 기 | ![]() | 이 튜토리얼은 간단한 경로 추적기의 예에서 Render State Packager 오프라인 도구를 사용하여 파이프 라인 상태를 작성하고 보관하는 방법을 보여줍니다. |
26- 상태 캐시 렌더링 | ![]() | 이 튜토리얼은 이전 자습서에서 구현 된 경로 추적 기술을 확장하고 렌더 상태 캐시를 사용하여 런타임에 생성 된 파이프 라인 상태를 저장하고 응용 프로그램이 시작될 때로드하는 방법을 보여줍니다. |
27- 사후 처리 | ![]() | 이 튜토리얼은 DiligentFX 모듈에서 후 처리 효과를 사용하는 방법을 보여줍니다. |
견본 | 스크린 샷 | 설명 |
---|---|---|
분위기 샘플 | ![]() | 이 샘플은 에피폴라 광산 산란 사후 처리 효과를 물리적으로 기반의 대기를 렌더링하기 위해 응용 프로그램에 통합하는 방법을 보여줍니다. |
GLFW 데모 | ![]() | 이 Maze Mini-Game은 GLFW를 사용하여 창을 만들고 키보드 및 마우스 입력을 처리하는 방법을 보여줍니다. |
GLTF 뷰어 | ![]() | 이 샘플은 자산 로더 및 PBR 렌더러를 사용하여 GLTF 모델을로드하고 렌더링하는 방법을 보여줍니다. |
USD 뷰어 | ![]() | 이 샘플은 부지런한 엔진에서 Hydra 렌더링 API의 구현 인 Hydrogent를 사용하여 USD 파일을 렌더링하는 방법을 보여줍니다. |
그림자 | ![]() | 이 샘플은 그림자 구성 요소를 사용하여 고품질 그림자를 렌더링하는 방법을 보여줍니다. |
imgui 데모에게 친애하는 | ![]() | 이 샘플은 엔진의 IMGUI UI 라이브러리와의 통합을 보여줍니다. |
Nuklear 데모 | ![]() | 이 샘플은 Nuklear UI 라이브러리와 엔진의 통합을 보여줍니다. |
안녕하세요 AR | ![]() | 이 샘플은 기본 Android AR 응용 프로그램에서 부지런한 엔진을 사용하는 방법을 보여줍니다. |
소행성 | ![]() | 이 Sampple은 50,000 개의 고유 한 텍스처 소행성을 렌더링하고 다양한 렌더링 모드의 성능을 비교할 수있는 성능 벤치 마크입니다. |
유니티 통합 데모 | ![]() | 이 프로젝트는 부지런한 엔진과 유니티의 통합을 보여줍니다. |
고급 렌더링 기능은 DiligentFX 모듈에 의해 구현됩니다. 이제 다음 구성 요소를 사용할 수 있습니다.
![]() | ![]() |
![]() | ![]() |
시간적 반 알리 아스
톤 매핑 셰이더 유틸리티
제품이 부지런한 엔진을 사용하는 경우 링크를 보내 주시면 감사하겠습니다.
Elbit Systems의 파일럿 교육 시뮬레이터를위한 대규모 지형 시각화 시스템
Lumenrt : Bentley Systems의 시각화 및 현실 모델링 소프트웨어
Godus : 22CANS의 수상 경력에 빛나는 샌드 박스 게임
VRMAC 그래픽 : .NET 용 크로스 플랫폼 그래픽 라이브러리
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.
See Apache 2.0 license.
Each module has some third-party dependencies, each of which may have independent licensing:
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.
Coding Guidelines
Performance Best Practices
Code Formatting
See Release History
diligentgraphics.com