The latest release v2.4.g adds support for arguably the most innovative GPU capability of recent years: hardware-accelerated ray tracing. Ray tracing is supported in D3D12 and Vulkan backends and is exposed through common easy-to use yet fully exhaustive API: exactly the same host code works in both backends. Similar to other shader types, ray-tracing shaders authored in HLSL will work in both backends verbatim. Vulkan backend also supports GLSL as well as SPIRV bytecode.
A new tutorial demonstrates how ray tracing API in Diligent Engine can be used to simulate physics-based light transport in a scene to render soft shadows, multiple-bounce reflections and refractions, and dispersion.
API Changes
- Enabled ray tracing (API Version 240080)
- Added
IDeviceContext::GetFrameNumber
method (API Version 240079) - Added
ShaderResourceQueries
device feature andEngineGLCreateInfo::ForceNonSeparablePrograms
parameter (API Version 240078) - Renamed
USAGE_STATIC
toUSAGE_IMMUTABLE
(API Version 240077) - Renamed static samplers into immutable samplers (API Version 240076)
- Renamed
StaticSamplerDesc
->ImmutableSamplerDesc
- Renamed
PipelineResourceLayoutDesc::NumStaticSamplers
->PipelineResourceLayoutDesc::NumImmutableSamplers
- Renamed
PipelineResourceLayoutDesc::StaticSamplers
->PipelineResourceLayoutDesc::ImmutableSamplers
- Renamed
- Refactored pipeline state creation (API Version 240075)
- Replaced
PipelineStateCreateInfo
withGraphicsPipelineStateCreateInfo
andComputePipelineStateCreateInfo
- Replaced
IRenderDevice::CreatePipelineState
withIRenderDevice::CreateGraphicsPipelineState
and IRenderDevice::CreateComputePipelineState pVS
,pGS
,pHS
,pDS
,pPS
,pAS
,pMS
were moved fromGraphicsPipelineDesc
toGraphicsPipelineStateCreateInfo
GraphicsPipelineDesc GraphicsPipeline
was moved fromPipelineStateDesc
toGraphicsPipelineStateCreateInfo
pCS
is now a member ofComputePipelineStateCreateInfo
,ComputePipelineDesc
was removed- Added
IPipelineState::GetGraphicsPipelineDesc
method
- Replaced
Old API for graphics pipeline initialization:
PipelineStateCreateInfo PSOCreateInfo; PipelineStateDesc& PSODesc = PSOCreateInfo.PSODesc; PSODesc.GraphicsPipeline.pVS = pVS; PSODesc.GraphicsPipeline.pPS = pVS; // ... Device->CreatePipelineState(PSOCreateInfo, &pPSO);
New API for graphics pipeline initialization:
GraphicsPipelineStateCreateInfo PSOCreateInfo; // ... PSOCreateInfo.pVS = pVS; PSOCreateInfo.pPS = pVS; Device->CreateGraphicsPipelineState(PSOCreateInfo, &pPSO);
Old API for compute pipeline initialization:
PipelineStateCreateInfo PSOCreateInfo; PipelineStateDesc& PSODesc = PSOCreateInfo.PSODesc; PSODesc.ComputePipeline.pCS = pCS; // ... Device->CreatePipelineState(PSOCreateInfo, &pPSO);
New API for compute pipeline initialization:
ComputePipelineStateCreateInfo PSOCreateInfo; PSOCreateInfo.pCS = pCS; Device->CreateComputePipelineState(PSOCreateInfo, &pPSO);
- Added
ShaderInt8
,ResourceBuffer8BitAccess
, andUniformBuffer8BitAccess
device features. (API Version 240074) - Added
ShaderFloat16
,ResourceBuffer16BitAccess
,UniformBuffer16BitAccess
, andShaderInputOutput16
device features. (API Version 240073)