Coder Social home page Coder Social logo

d3d12raytracingfallback's Introduction

D3D12 Raytracing Fallback Layer

The D3D12 Raytracing Fallback Layer is a library that emulates the DirectX Raytracing (DXR) API on devices without native driver/hardware support.

[Windows October 2018 Update] The Fallback Layer emulation runtime works with the final DXR API in Windows October 2018 update. The emulation feature proved useful during the experimental phase of DXR design. But as of the first shipping release of DXR, the plan is to stop maintaining this codebase. The cost/benefit is not justified and further, over time as more native DXR support comes online, the value of emulation will diminish further. That said, the code functionality that was implemented is left in place for any further external contributions or if a strong justification crops up to resurrect the feature. We welcome external pull requests on extending or improving the Fallback Layer codebase.

Overview

MiniEngine Screenshot The library is built as a wrapper around the DirectX 12 API and has distinct but similar interfaces from the DirectX Raytracing (DXR) API. The library also redirects to the DXR API when driver support exists, so developers do not need to branch code to support the DXR API simultaneously.

The goal of the Fallback Layer is to enable developers to hit the ground running with the new DXR API without the need for a GPU with hardware support and a DXR capable variant of Windows. As of the GDC release, the Fallback Layer is in an early prototype stage and is a limited substitute for a DXR driver, particularly in terms of performance. A future goal of this project is to tune the Fallback to be performant enough for real-world scenarios in lieu of a DXR driver for small-scale raytracing techniques.

Building the Fallback Layer

In order to build and run the Fallback Layer you will need:

  • Windows 10 with the Fall Creators Update or higher.
  • Visual Studio 2017 version 15.8.4 or higher.
  • Windows 10 Fall Creators Update SDK or higher.
  • A graphics card with retail DXIL capabilities.
  • DXIL.dll should be pulled from the latest Windows SDK to accompany the compiler or enable Developer mode.
  • DXR Fallback Compiler - download DirectXRaytracingBinariesV1.5.zip and copy all the contents to Samples/Desktop/D3D12Raytracing/tools/x64.

API Samples

After cloning the project, you can open up D3D12Raytracing.sln in Samples/Desktop/D3D12Raytracing/src. There are several projects that demonstrate basic usage of the Fallback Layer/DXR API including a larger demo integrated with the MiniEngine. More details in the readme

Developing with the Fallback Layer

For details on developing an app using the Fallback Layer, please consult the developer guide

Driver requirements

  • Retail support for DXIL
  • Resource Binding Tier 3

Contributing

See contributing

Feedback

We would love to hear how you're using the Fallback Layer! We're also interested in any form of feedback you may have:

  • How many rays per sec would make the Fallback Layer usable in practice for your scenario? Real-time or offline?
  • Are there functional issues blocking adoption of the Fallback Layer? Are the ways the interface could be less obstructive?
  • Bugs/Issues using the Fallback Layer?

Please feel free to reach out at DirectX Raytracing forums.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.