Skip to content

Commit 053a265

Browse files
Updated submodules (misc updates/fixes), readme and release history
1 parent 8d303fb commit 053a265

6 files changed

Lines changed: 100 additions & 30 deletions

File tree

DiligentCore

DiligentSamples

Submodule DiligentSamples updated 44 files

DiligentTools

README.md

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
API abstraction library and rendering framework. It is designed to take full advantage of Direct3D12, Vulkan
77
and Metal, while supporting older platforms via Direct3D11, OpenGL and OpenGLES. Diligent Engine exposes common
88
front-end API and uses HLSL as universal shading language on all platforms and rendering back-ends.
9-
Platform-specific shader representations (GLSL, DX bytecode or SPIRV) can be used with corresponding back-ends.
9+
Platform-specific shader representations (GLSL, MSL, DX bytecode or SPIRV) can be used with corresponding back-ends.
1010
The engine is intended to be used as graphics subsystem in a game engine or any other 3D application.
1111
It is distributed under [Apache 2.0 license](License.txt) and is free to use.
1212

@@ -51,7 +51,6 @@ or [gfx-portability](https://github.com/gfx-rs/portability).
5151
* Key graphics features:
5252
* [Automatic shader resource binding](http://diligentgraphics.com/2016/03/23/resource-binding-model-in-diligent-engine-2-0/) designed to leverage next-generation graphics APIs
5353
* Multithreaded command buffer generation
54-
* [50,000 draw calls at 300 fps](https://github.com/DiligentGraphics/DiligentEngine/tree/master/Projects/Asteroids) with D3D12/Vulkan backend
5554
* Multithreaded resource creation
5655
* [Automatic or explicit control over resource state transitions](http://diligentgraphics.com/2018/12/09/resource-state-management/)
5756
* Descriptor and memory management
@@ -224,7 +223,7 @@ to build as it will use Visual Studio 2013 (v120) toolset that lacks proper c++1
224223
## Linux
225224

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

229228
1. gcc, make and other essential c/c++ tools:
230229

@@ -279,7 +278,7 @@ the app's assets folder must be current directory.
279278
Please make sure that your machine is set up for Android development. Download
280279
[Android Studio](https://developer.android.com/studio/index.html),
281280
[install and configure the NDK and CMake](https://developer.android.com/studio/projects/install-ndk)
282-
and other required tools. If you are not using CMake version bundled with Android Studio, make sure
281+
and other required tools. NDK r22 or later is required. If you are not using CMake version bundled with Android Studio, make sure
283282
your build files are [properly configured](https://developer.android.com/studio/projects/add-native-code.html#use_a_custom_cmake_version).
284283
To verify that your environment is properly set up, try building the
285284
[teapots sample](https://github.com/googlesamples/android-ndk/tree/master/teapots) as well as
@@ -344,7 +343,7 @@ System Integrity Protection is disabled (which generally is not recommended). In
344343
Vulkan library, it must be in rpath. If `VULKAN_SDK` environment variable is set and points to correct location, Diligent
345344
Engine will configure the rpath for all applications automatically.
346345

347-
Last tested LunarG SDK version: 1.2.154.0.
346+
Last tested LunarG SDK version: 1.2.176.1.
348347

349348
<a name="build_and_run_ios"></a>
350349
## iOS
@@ -383,7 +382,7 @@ to use a framework from a specific location, it can provide the full path to the
383382
Refer to [MoltenVK user guide](https://github.com/KhronosGroup/MoltenVK/blob/master/Docs/MoltenVK_Runtime_UserGuide.md#install)
384383
for more information about MoltenVK installation and usage.
385384

386-
Last tested LunarG SDK version: 1.2.154.0.
385+
Last tested LunarG SDK version: 1.2.176.1.
387386

388387
<a name="build_and_run_integration"></a>
389388
## Integrating Diligent Engine with Existing Build System
@@ -444,18 +443,15 @@ copy_required_dlls(HelloDiligent)
444443
```
445444

446445
`copy_required_dlls()` is a convenience function that copies shared libraries next to
447-
the executable so that the system can find and load them. Alternatively, you can link against
448-
static (as well as shared) versions of libraries using `target_link_libraries()` command. In this case
449-
there is no need to explicitly add *DiligentCore* to the list of include directories as the targets export
450-
all required include paths.
446+
the executable so that the system can find and load them.
451447
Please also take a look at getting started tutorials for
452448
[Windows](https://github.com/DiligentGraphics/DiligentSamples/tree/master/Tutorials/Tutorial00_HelloWin32) and
453449
[Linux](https://github.com/DiligentGraphics/DiligentSamples/tree/master/Tutorials/Tutorial00_HelloLinux).
454450

455451
### Your Project Does Not Use Cmake
456452

457453
If your project doesn't use CMake, it is recommended to build libraries with CMake and add them to your build system.
458-
For Windows platforms, you can download the latest build artifacts from [appveyor](https://ci.appveyor.com/project/DiligentGraphics/diligentcore).
454+
You can download the latest build artifacts from [GitHub](https://github.com/DiligentGraphics/DiligentCore/actions).
459455

460456
Global CMake installation directory is controlled by
461457
[CMAKE_INTALL_PREFIX](https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html) variable.
@@ -732,32 +728,34 @@ The following components are now available:
732728

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

731+
* [Godus](https://apps.apple.com/gb/app/godus/id815181808): An award-winning sandbox game by [22cans](http://22cans.com/)
732+
<img src="http://22cans.com/wp-content/uploads/2016/11/godus_header1-01.jpg" width=480>
733+
735734
* [Vrmac Graphics](https://github.com/Const-me/Vrmac): A cross-platform graphics library for .NET
736735
<img src="https://github.com/Const-me/Vrmac/blob/master/screenshots/Linux/TigerFullHD-1.png" width=480>
736+
737737
* Your product here (please submit a [PR](https://github.com/DiligentGraphics/DiligentEngine/pulls))!
738738

739739

740+
<a name="disclaimer"></a>
741+
## Disclaimer
742+
743+
Diligent Engine is an open project that may be freely used by everyone. We started it to empower the community
744+
and help people achive their goals. Sadly enough, not everyone's goals are worthy. Please don't associate us with
745+
suspicious projects you may find on the Web that appear to be using Diligent Engine. We neither can possibly track
746+
all such uses nor can we really do anything about them because our permissive license does not give us a lot of leverage.
747+
748+
740749
<a name="license"></a>
741750
# License
742751

743752
See [Apache 2.0 license](License.txt).
744753

745-
This project has some third-party dependencies, each of which may have independent licensing:
746-
747-
* Core module:
748-
* [SPIRV-Cross](https://github.com/KhronosGroup/SPIRV-Cross): SPIRV parsing and cross-compilation tools.
749-
* [SPIRV-Headers](https://github.com/KhronosGroup/SPIRV-Headers): SPIRV header files.
750-
* [SPIRV-Tools](https://github.com/KhronosGroup/SPIRV-Tools): SPIRV optimization and validation tools.
751-
* [glslang](https://github.com/KhronosGroup/glslang): Khronos reference compiler and validator for GLSL, ESSL, and HLSL.
752-
* [glew](http://glew.sourceforge.net/): OpenGL Extension Wrangler Library.
753-
* Tools module:
754-
* [libjpeg](http://libjpeg.sourceforge.net/): C library for reading and writing JPEG image files.
755-
* [libtiff](http://www.libtiff.org/): TIFF Library and Utilities.
756-
* [libpng](http://www.libpng.org/pub/png/libpng.html): Official PNG reference library.
757-
* [zlib](https://zlib.net/): A compression library.
758-
* [tinygltf](https://github.com/syoyo/tinygltf): A header only C++11 glTF 2.0 library.
759-
* [dear imgui](https://github.com/ocornut/imgui): A bloat-free immediate mode graphical user interface library.
754+
Each module has some third-party dependencies, each of which may have independent licensing:
760755

756+
* [Core module](https://github.com/DiligentGraphics/DiligentCore#license)
757+
* [Tools module](https://github.com/DiligentGraphics/DiligentTools#license)
758+
* [Samples module](https://github.com/DiligentGraphics/DiligentSamples#license)
761759

762760
<a name="contributing"></a>
763761
# Contributing

ReleaseHistory.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,75 @@
1+
## v2.5
2+
3+
### API Changes
4+
5+
* Removed `RayTracing2` device feature and added `RAY_TRACING_CAP_FLAGS` enum (API Version 240099)
6+
* Added tile shaders (API Version 240098)
7+
* Added `PIPELINE_TYPE_TILE` and `SHADER_TYPE_TILE` enum values
8+
* Added `TileShaders` device feature
9+
* Added `TilePipelineDesc`, `TilePipelineStateCreateInfo` and `DispatchTileAttribs` structs
10+
* Added `IRenderDevice::CreateTilePipelineState`, `IPipelineState::GetTilePipelineDesc`,
11+
`IDeviceContext::DispatchTile` and `IDeviceContext::GetTileSize` methods
12+
* Removed `GetNextFenceValue`, `GetCompletedFenceValue`, and `IsFenceSignaled` methods from `IRenderDeviceD3D12` and `IRenderDeviceVk` interfaces
13+
as they are now in `ICommandQueue` interface (API Version 240097)
14+
* Added `ICommandQueue` interface, `IDeviceContext::LockCommandQueue` and `IDeviceContext::UnlockCommandQueue` methods,
15+
removed fence query methods from `IRenderDeviceVk`, `IRenderDeviceD3D12`, and `IRenderDeviceMtl` (API Version 240096)
16+
* Added multiple immediate device contexts and refactored adapter queries (API Version 240095)
17+
* `CommandQueueMask` member of `TextureDesc`, `BufferDesc`, `PipelineStateDesc`, `TopLevelASDesc`,
18+
and `BottomLevelASDesc`, was renamed to `ImmediateContextMask`
19+
* Added `pContext` member to `TextureData` and `BufferData` structs to indicate which context to
20+
use for initialization.
21+
* Removed `GetDeviceCaps` and `GetDeviceProperties` `IDeviceContext` methods and added
22+
`GetDeviceInfo` and `GetAdapterInfo` methods; added `RenderDeviceInfo` struct.
23+
* Renamed `SamplerCaps` to `SamplerProperties, `TextureCaps` to `TextureProperties`; added `BufferProperties`,
24+
`RayTracingProperties`, and `MeshShaderProperties` structs
25+
* Removed `DeviceLimits` struct
26+
* Removed `DeviceCaps` struct and moved its members to `GraphicsAdapterInfo` and `RenderDeviceInfo` structs
27+
* Added `NativeFence` to `DeviceFeatures`
28+
* Added `CommandQueueInfo` struct
29+
* Added `COMMAND_QUEUE_TYPE` and `QUEUE_PRIORITY` enums
30+
* Renamed `ShaderVersion` struct to `Version`
31+
* Reworked `GraphicsAdapterInfo` struct
32+
* Added `ImmediateContextCreateInfo` struct and `pImmediateContextInfo`, `NumImmediateContexts` members to `EngineCreateInfo` struct
33+
* Added `AdapterId` and `GraphicsAPIVersion` members to `EngineCreateInfo` struct
34+
* Removed `DIRECT3D_FEATURE_LEVEL` enum
35+
* Added `FENCE_TYPE` enum
36+
* Renamed `IFence::Reset` to `IFence::Signal`; added `IFence::Wait` method
37+
* Added `IEngineFactory::EnumerateAdapters` method
38+
* Added `DeviceContextDesc` struct and `IDeviceContext::GetDesc` method
39+
* Added `IDeviceContext::Begin` method, renamed `IDeviceContext::SignalFence` to `IDeviceContext::EnqueueSignal`
40+
* Added debug annotations `IDeviceContext::BeginDebugGroup`, `IDeviceContext::EndDebugGroup`,
41+
`IDeviceContext::InsertDebugLabel` (API Version 240095)
42+
* Added `DefaultVariableMergeStages` member to `PipelineResourceLayoutDesc` struct (API240094)
43+
* Added `IShaderResourceVariable::SetBufferRange` and `IShaderResourceVariable::SetBufferOffset` methods,
44+
added `DeviceLimits` struct (API240093)
45+
* Updated API to allow explicitly flushing/invlidating mapped buffer memory range :
46+
added `MEMORY_PROPERTIES` enum, `IBuffer::GetMemoryProperties()`, `IBuffer::FlushMappedRange()`,
47+
and `IBuffer::InvalidateMappedRange()` methods (API240092)
48+
* Added `IDeviceContext::SetUserData()` and `IDeviceContext::GetUserData()` methods (API240091)
49+
* Added `SHADER_VARIABLE_FLAGS` enum and `SHADER_VARIABLE_FLAGS Flags` member to ShaderResourceVariableDesc struct (API240090)
50+
* Reworked validation options (API240089)
51+
* Added `VALIDATION_FLAGS` and `D3D12_VALIDATION_FLAGS` enums; renamed `D3D11_DEBUG_FLAGS` to `D3D11_VALIDATION_FLAGS`
52+
* Added `VALIDATION_FLAGS ValidationFlags` and `bool EnableValidation` to `EngineCreateInfo`
53+
* Added `D3D12_VALIDATION_FLAGS D3D12ValidationFlags` to `EngineD3D12CreateInfo`; removed `EnableDebugLayer`, `EnableGPUBasedValidation`,
54+
`BreakOnError`, `BreakOnCorruption`
55+
* Added `VALIDATION_LEVEL` enum and `SetValidationLevel()` create info structs' helper functions
56+
* Removed `EngineGLCreateInfo::CreateDebugContext` member (it is replaced with `EnableValidation`)
57+
* Added `MtlThreadGroupSizeX`, `MtlThreadGroupSizeY`, and `MtlThreadGroupSizeZ` members to
58+
`DispatchComputeAttribs` and `DispatchComputeIndirectAttribs` structs (API Version 240088)
59+
* Added InstanceDataStepRate device feature (API Version 240087)
60+
* Added WaveOp device feature (API Version 240086)
61+
* Added UpdateSBT command (API Version 240085)
62+
* Removed `EngineD3D12CreateInfo::NumCommandsToFlushCmdList` and `EngineVkCreateInfo::NumCommandsToFlushCmdBuffer` as flushing
63+
the context based on the number of commands is unreasonable (API Version 240084)
64+
* Added pipeline resource signatures, enabled inline ray tracing, added indirect draw mesh command (API Version 240083)
65+
* Replaced `IDeviceContext::ExecuteCommandList()` with `IDeviceContext::ExecuteCommandLists()` method that takes
66+
an array of command lists instead of one (API Version 240082)
67+
* Added `IDeviceObject::SetUserData()` and `IDeviceObject::GetUserData()` methods (API Version 240081)
68+
69+
### Samples and Tutorials
70+
71+
* Added [Tutorial22 - Hybrid Rendering](https://github.com/DiligentGraphics/DiligentSamples/tree/master/Tutorials/Tutorial22_HybridRendering)
72+
173

274
## v2.4.g
375

0 commit comments

Comments
 (0)