Quantcast
Channel: Diligent Graphics
Viewing all articles
Browse latest Browse all 31

Release v2.4.g: Ray Tracing comes to Diligent Engine

$
0
0

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.

Tutorial21_Animation_Small

API Changes

  • Enabled ray tracing (API Version 240080)
  • Added
    IDeviceContext::GetFrameNumber
     method (API Version 240079)
  • Added
    ShaderResourceQueries
     device feature and
    EngineGLCreateInfo::ForceNonSeparablePrograms
     parameter (API Version 240078)
  • Renamed
    USAGE_STATIC
     to
    USAGE_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
  • Refactored pipeline state creation (API Version 240075)
    • Replaced
      PipelineStateCreateInfo
        with
      GraphicsPipelineStateCreateInfo
       and
      ComputePipelineStateCreateInfo
    • Replaced
      IRenderDevice::CreatePipelineState
        with
      IRenderDevice::CreateGraphicsPipelineState
        and IRenderDevice::CreateComputePipelineState
    • pVS
       ,
      pGS
       ,
      pHS
       ,
      pDS
       ,
      pPS
       ,
      pAS
       ,
      pMS
       were moved from
      GraphicsPipelineDesc
        to
      GraphicsPipelineStateCreateInfo
    • GraphicsPipelineDesc GraphicsPipeline
        was moved from
      PipelineStateDesc
        to
      GraphicsPipelineStateCreateInfo
    • pCS
        is now a member of
      ComputePipelineStateCreateInfo
      ,
      ComputePipelineDesc
       was removed
    • Added
      IPipelineState::GetGraphicsPipelineDesc
       method

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, and UniformBuffer8BitAccess device features. (API Version 240074)
  • Added ShaderFloat16, ResourceBuffer16BitAccess, UniformBuffer16BitAccess, and ShaderInputOutput16 device features. (API Version 240073)

Viewing all articles
Browse latest Browse all 31

Trending Articles