Yet another approach to developing a personal 3D graphics engine. Windows + Direct3D 12.
Work in progress... Nothing to see here. Just playing around 😀 Features implemented:
Rendering:
- Direct3D 12 initialization and usage
- Loading 3D models (using Assimp library)
- Basic deferred shading
Other:
- GUI (using Dear ImGui library)
- Configuration loaded from and saved to a file (using RapidJSON library)
The project is open source under MIT license. See file LICENSE.txt.
The project source code depends on:
- C++ standard library, including some of the latest C++11/14/17/20 features
- WinAPI from Windows 10 with some reasonably new Windows SDK, including Direct3D 12
- Visual Studio 2022
The project uses following thirt-party libraries:
- D3D12 Memory Allocator - easy to integrate memory allocation library for Direct3D 12, by AMD. License: MIT.
- Directory: ThirdParty\D3D12MemoryAllocator
- d3dx12.h - D3D12 helpers, by Microsoft. License: MIT.
- Directory: ThirdParty\d3dx12
- Dear ImGui by Omar Cornut. License: MIT.
- Directory: ThirdParty\imgui-1.87
- DirectX Shader Compiler by Microsoft. License: University of Illinois Open Source License.
- Directory: ThirdParty\dxc_2021_12_08
- DirectXTex - for reading and writing texture file formats, by Microsoft. License: MIT.
- Directory: Source\packages\directxtex_desktop_win10.2021.11.8.1
- Font Awesome - font with icons, by Fonticons, Inc. License: Font Awesome Free license.
- File: WorkingDir\Data\Fonts\Font Awesome 6 Free-Solid-900.otf
- GLM - mathematics library for graphics software, by G-Truc Creation. License: The Happy Bunny License or MIT.
- Directory: ThirdParty\glm
- IconFontCppHeaders - haader with constants for icons from Font Awesome, by Juliette Foucaut and Doug Binks. License: zlib.
- Directory: ThirdParty\IconFontCppHeaders
- Open Asset Import Library (assimp) - for loading 3D model file formats, by assimp team. License: BSD.
- Directory: Source\packages\AssimpCpp.5.0.1.6
- RapidJSON - a fast JSON parser/generator, by Tencent. License: MIT.
- Directory: ThirdParty\rapidjson
- str_view - null-termination-aware string-view class for C++, by Adam Sawicki. License: MIT.
- Directory: ThirdParty\str_view
- WinPixEventRuntime - a library for PIX events, by Microsoft. License: custom freeware.
- Directory: Source\packages\WinPixEventRuntime.1.0.210818001
The project requires following hardware/software environment to run: PC, Windows 10+, Direct3D 12 compatible display adapter (graphics card).
Running the project in a system without beforementioned development environment installed or without Developer Mode enabled in Windows settings has not been tested yet and may not work properly.