A fork of Microsoft's D3D12 Raytracing Fallback Layer

Overview

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.

Owner
Phil Guo
Graphics programmer
Phil Guo
Minimal pathtracer using Vulkan RayTracing

Single File Vulkan Pathtracing Minimal pathtracer using Vulkan RayTracing Environment Vulkan SDK 1.2.162.0 GPU / Driver that support Vulkan Ray Tracin

Yuki Nishidate 26 Jul 16, 2022
Software RayTracing engine written in C++ without the usage of any libraries.

Software Raytracing Engine This is a software unidirectional raytracing engine, fully written in C++17, with no dependencies or external libraries use

Makar Ivashko 2 Jun 23, 2022
Minimal raytracing example with a combination of embree and tinyobjloader

embree-tinyobj-example minimal raytracing example with a combination of embree and tinyobjloader Requirements CMake (>=3.20) Embree (>=3) OpenMP (Opti

yumcyawiz 2 Apr 7, 2022
A rendering sample that demonstrates bindless deferred texturing using D3D12

Bindless Deferred Texturing and Decals Sample This project is a D3D12 rendering sample that implements a deferred renderer using bindless deferred tex

MJP 339 Jul 28, 2022
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal

Low Level Graphics Library (LLGL) Documentation NOTE: This repository receives bug fixes only, but no major updates. Pull requests may still be accept

Lukas Hermanns 1.4k Aug 1, 2022
This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer GPU libraries.

OpenGL Cube Demo using PVR_PSP2 Driver layer GPU libraries This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer

David Cantu 5 Oct 31, 2021
NVRHI (NVIDIA Rendering Hardware Interface) is a library that implements a common abstraction layer over multiple graphics APIs

NVRHI Introduction NVRHI (NVIDIA Rendering Hardware Interface) is a library that implements a common abstraction layer over multiple graphics APIs (GA

NVIDIA GameWorks 389 Jul 31, 2022
Direct3D to OpenGL abstraction layer

TOGL Direct3D -> OpenGL translation layer. Taken directly from the DOTA2 source tree; supports: Limited subset of Direct3D 9.0c Bytecode-level HLSL ->

Valve Software 2k Jul 27, 2022
This is a fork of prboom+ with extra tooling for demo recording and playback, with a focus on speedrunning.

dsda-doom v0.15.1 This is a fork of prboom+ with extra tooling for demo recording and playback, with a focus on speedrunning. Heretic Support (beta) D

Ryan Krafnick 101 Jul 22, 2022
Implementing Nvidia DXR tutorial with Microsoft DXR Fallback Layer

DXRNvTutorial Implemented the Nvidia DXR tutorial with Microsoft DXR Fallback Layer, tested on Nvidia GTX 980Ti (AMD won't work). Extended nv_helpers_

Phil Guo 2 Sep 21, 2019
A recreation of the "Nobelium" malware based on Microsofts Malware analysis - Part 1: PDF2Pwn

Nobelium PdfDownloadRunAesMalware A recreation of the "Nobelium" malware based on Microsofts Malware analysis - Part 1: PDF2Pwn 1. Download PDF file f

boku 94 Jul 26, 2022
D3D9On12 is a mapping layer, which maps graphics commands from D3D9 to D3D12

D3D9On12 is a mapping layer, which maps graphics commands from D3D9 to D3D12. D3D9On12 is not an implementation of the D3D9 API, but is instead an implementation of the D3D9 usermode DDI (device driver interface).

Microsoft 165 Jul 31, 2022
GnuTLS implements the TLS/SSL (Transport Layer Security aka Secure Sockets Layer) protocol

GnuTLS implements the TLS/SSL (Transport Layer Security aka Secure Sockets Layer) protocol

Jonathan Bastien-Filiatrault 3 Jun 3, 2021
ESP8266 WiFi Connection manager with fallback web configuration portal

ESP8266 WiFi Connection manager with fallback web configuration portal

null 5.3k Jul 27, 2022
Minimal pathtracer using Vulkan RayTracing

Single File Vulkan Pathtracing Minimal pathtracer using Vulkan RayTracing Environment Vulkan SDK 1.2.162.0 GPU / Driver that support Vulkan Ray Tracin

Yuki Nishidate 26 Jul 16, 2022
Software RayTracing engine written in C++ without the usage of any libraries.

Software Raytracing Engine This is a software unidirectional raytracing engine, fully written in C++17, with no dependencies or external libraries use

Makar Ivashko 2 Jun 23, 2022
Minimal raytracing example with a combination of embree and tinyobjloader

embree-tinyobj-example minimal raytracing example with a combination of embree and tinyobjloader Requirements CMake (>=3.20) Embree (>=3) OpenMP (Opti

yumcyawiz 2 Apr 7, 2022
A fast and modern voxel based raytracing engine

CubiCAD A fast and modern voxel based raytracing engine Currently in heavy development and unusable at its current state. This reposity will hold the

RedNicStone 11 Jul 28, 2022
OptimizedMetaBall - 🔮GPU-based real-time raytracing rendering of transparent metaball

Optimized Raytracing MetaBall: Acceleration and Transparent ?? GPU-based real-time raytracing rendering of transparent metaball. (Project for CS337 Co

Hangyu Ye 3 Mar 9, 2022
An implementation of physically based shading & image based lighting in D3D11, D3D12, Vulkan, and OpenGL 4.

Physically Based Rendering (c) 2017 - 2018 Michał Siejak (@Nadrin) An implementation of physically based shading model & image based lighting in vario

Michał Siejak 1k Jul 26, 2022
A bunch of functions and helpers classes for D3D12, and DXGI libraries

TypedD3D A bunch of functions and helpers classes for D3D12, and DXGI libraries Namespaces Helpers A bunch of helper functions that interface more wit

Renzy Alarcon 6 Jun 17, 2022
A rendering sample that demonstrates bindless deferred texturing using D3D12

Bindless Deferred Texturing and Decals Sample This project is a D3D12 rendering sample that implements a deferred renderer using bindless deferred tex

MJP 339 Jul 28, 2022
Fork of junaburg's picom fork with a patch for rounded corners and shadows

picom new! : You'll now also find tryone's dual_kawase blur for the new backend, as well as rounded corners from sdhand if they are so desired, merged

Arian Rezazadeh 42 Jul 20, 2022
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal

Low Level Graphics Library (LLGL) Documentation NOTE: This repository receives bug fixes only, but no major updates. Pull requests may still be accept

Lukas Hermanns 1.4k Aug 1, 2022
eCAL - enhanced Communication Abstraction Layer

eCAL - enhanced Communication Abstraction Layer Copyright (c) 2020, Continental Corporation. ?? http://ecal.io License Build States Preface The enhanc

Continental 1 Aug 1, 2022
Support for TrueType (.ttf) font files with Simple Directmedia Layer.

This library is a wrapper around the excellent FreeType 2.0 library

Simple Directmedia Layer 147 Aug 1, 2022
An audio mixer that supports various file formats for Simple Directmedia Layer.

An audio mixer that supports various file formats for Simple Directmedia Layer.

Simple Directmedia Layer 140 Jul 28, 2022
Simple Directmedia Layer, 1.2 branch ... ***DEPRECATED***, please use https://github.com/libsdl-org/SDL for new projects!

DEPRECATED The 1.2 branch of SDL is deprecated. While we occasionally collect fixes in revision control, there has not been a formal release since 201

Simple Directmedia Layer 38 Jul 25, 2022
Image decoding for many popular formats for Simple Directmedia Layer.

SDL_image 2.0 The latest version of this library is available from: http://www.libsdl.org/projects/SDL_image/ This is a simple library to load image

Simple Directmedia Layer 157 Jul 26, 2022