- Core
- Implemented explicit resource state transitions
- API Changes
- Added
DRAW_FLAGSandDISPATCH_FLAGSenums that control state transitions of vertex, index and indirect draw arguments buffers - Added
Uint8 Flagsmember toDrawAttribsstructure (values fromDRAW_FLAGS) - Added
Uint8 Flagsmember toDispatchComputeAttribsstructure (values fromDISPATCH_FLAGS) - Added
RESOURCE_STATEenum - Added
StateTransitionDescstructure that describes resource state transition - Added
IDeviceContext::TransitionResourceStates(Uint32 BarrierCount, StateTransitionDesc* pResourceBarriers)method - Added
IBuffer::SetState(),IBuffer::GetState(),ITexture::SetState(),ITexture::GetState()methods
- Added
- Core
- Enabled Vulkan backend on Linux
- API Changes
- Implemented separate texture samplers:
- Added
UseCombinedTextureSamplersandCombinedSamplerSuffixmembers toShaderCreationAttribsstructure - When separate samplers are used (
UseCombinedTextureSamplers == false), samplers are set in the same way as other shader variables via shader or SRB objects
- Added
- Removed
BIND_SHADER_RESOURCES_RESET_BINDINGSflag, renamedBIND_SHADER_RESOURCES_KEEP_EXISTINGtoBIND_SHADER_RESOURCES_KEEP_EXISTING. AddedBIND_SHADER_RESOURCES_UPDATE_STATIC,BIND_SHADER_RESOURCES_UPDATE_MUTABLE,BIND_SHADER_RESOURCES_UPDATE_DYNAMIC, andBIND_SHADER_RESOURCES_UPDATE_ALLflags
- Implemented separate texture samplers:
- Using glslang to compile HLSL to SPIRV in Vulkan backend instead of relying on HLSL->GLSL converter
-
Core
- Added
IFenceinterface andIDeviceContext::SignalFence()method to enable CPU-GPU synchronization - Added
BUFFER_MODE_RAWmode allowing raw buffer views in D3D11/D3D12. - Moved
Formatmember fromBufferDesctoBufferViewDesc - Removed
IsIndirectmember fromDrawAttrbisas settingpIndirectDrawAttribsto a non-null buffer already indicates indirect rendering
- Added
-
Samples:
- Added Tutorial 10 - Data Streaming
- Added Tutorial 11 - Resource Updates
- Core:
- Implemented Vulkan backend
- Implemented hardware adapter & display mode enumeration in D3D11 and D3D12 modes
- Implemented initialization in fullscreen mode as well as toggling between fullscreen and windowed modes in run time
- Added sync interval parameter to ISwapChain::Present()
- API Changes
- Added
NumViewportsmember toGraphicsPipelineDescstruct - Removed
PRIMITIVE_TOPOLOGY_TYPEtype - Replaced
PRIMITIVE_TOPOLOGY_TYPE GraphicsPipelineDesc::PrimitiveTopologyTypewithPRIMITIVE_TOPOLOGY GraphicsPipelineDesc::PrimitiveTopology - Removed
DrawAttribs::Topology - Removed
pStridesparameter fromIDeviceContext::SetVertexBuffers(). Strides are now defined through vertex layout.
- Added
- API Changes:
- Math library functions
SetNearFarClipPlanes(),GetNearFarPlaneFromProjMatrix(),Projection(),OrthoOffCenter(), andOrtho()takebIsGLflag instead ofbIsDirectX - Vertex buffer strides are now defined by the pipeline state as part of the input layout description (
LayoutElement::Stride) - Added
COMMIT_SHADER_RESOURCES_FLAG_VERIFY_STATESflag - Added
NumViewportsmember toGraphicsPipelineDescstructure
- Math library functions
- Samples:
- Added fullscreen mode selection dialog box
- Implemented fullscreen mode toggle on UWP with shift + enter
- Implemented fullscreen window toggle on Win32 with alt + enter
- Added Tutorial 09 - Quads
- Fixed the following issues:
- Enabled Win32 build targeting Windows 8.1 SDK
- Enabled build customization through custom build config file
- Implemented PSO compatibility
- Fixed the following issues:
- Added MacOS and iOS support
- Removed legacy Visual Studio solution and project files
- Added API reference
- Added tutorials 1-8
- Refactored build system to use CMake and Gradle for Android
- Added support for Linux platform
- Interoperability with native API
- Accessing internal objects and handles
- Creating diligent engine buffers/textures from native resources
- Attaching to existing D3D11/D3D12 device or GL context
- Resource state and command queue synchronization for D3D12
- Integraion with Unity
- Geometry shader support
- Tessellation support
- Performance optimizations
- Support for structured buffers
- HLSL->GLSL conversion is now a two-stage process:
- Creating conversion stream
- Creating GLSL source from the stream
- Geometry shader support
- Tessellation control and tessellation evaluation shader support
- Support for non-void shader functions
- Allowing structs as input parameters for shader functions
Alpha release of Diligent Engine 2.0. The engine has been updated to take advantages of Direct3D12:
-
Pipeline State Object encompasses all coarse-grain state objects like Depth-Stencil State, Blend State, Rasterizer State, shader states etc.
-
New shader resource binding model implemented to leverage Direct3D12
-
OpenGL and Direct3D11 backends
-
Alpha release is only available on Windows platform
-
Direct3D11 backend is very thoroughly optimized and has very low overhead compared to native D3D11 implementation
-
Direct3D12 implementation is preliminary and not yet optimized
Initial release