- Core
- Implemented explicit resource state transitions
- API Changes
- Added
DRAW_FLAGS
andDISPATCH_FLAGS
enums that control state transitions of vertex, index and indirect draw arguments buffers - Added
Uint8 Flags
member toDrawAttribs
structure (values fromDRAW_FLAGS
) - Added
Uint8 Flags
member toDispatchComputeAttribs
structure (values fromDISPATCH_FLAGS
) - Added
RESOURCE_STATE
enum - Added
StateTransitionDesc
structure 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
UseCombinedTextureSamplers
andCombinedSamplerSuffix
members toShaderCreationAttribs
structure - 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_BINDINGS
flag, renamedBIND_SHADER_RESOURCES_KEEP_EXISTING
toBIND_SHADER_RESOURCES_KEEP_EXISTING
. AddedBIND_SHADER_RESOURCES_UPDATE_STATIC
,BIND_SHADER_RESOURCES_UPDATE_MUTABLE
,BIND_SHADER_RESOURCES_UPDATE_DYNAMIC
, andBIND_SHADER_RESOURCES_UPDATE_ALL
flags
- Implemented separate texture samplers:
- Using glslang to compile HLSL to SPIRV in Vulkan backend instead of relying on HLSL->GLSL converter
-
Core
- Added
IFence
interface andIDeviceContext::SignalFence()
method to enable CPU-GPU synchronization - Added
BUFFER_MODE_RAW
mode allowing raw buffer views in D3D11/D3D12. - Moved
Format
member fromBufferDesc
toBufferViewDesc
- Removed
IsIndirect
member fromDrawAttrbis
as settingpIndirectDrawAttribs
to 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
NumViewports
member toGraphicsPipelineDesc
struct - Removed
PRIMITIVE_TOPOLOGY_TYPE
type - Replaced
PRIMITIVE_TOPOLOGY_TYPE GraphicsPipelineDesc::PrimitiveTopologyType
withPRIMITIVE_TOPOLOGY GraphicsPipelineDesc::PrimitiveTopology
- Removed
DrawAttribs::Topology
- Removed
pStrides
parameter fromIDeviceContext::SetVertexBuffers()
. Strides are now defined through vertex layout.
- Added
- API Changes:
- Math library functions
SetNearFarClipPlanes()
,GetNearFarPlaneFromProjMatrix()
,Projection()
,OrthoOffCenter()
, andOrtho()
takebIsGL
flag 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_STATES
flag - Added
NumViewports
member toGraphicsPipelineDesc
structure
- 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