All Projects → pkurth → D3D12Renderer

pkurth / D3D12Renderer

Licence: MIT License
Custom renderer and physics engine written from scratch in C++/Direct3D 12.

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
HLSL
714 projects

Projects that are alternatives of or similar to D3D12Renderer

Yave
Yet Another Vulkan Engine
Stars: ✭ 211 (+1141.18%)
Mutual labels:  engine, rendering, 3d-graphics
Legion-Engine
Rythe is a data-oriented C++17 game engine built to make optimal use of modern hardware.
Stars: ✭ 502 (+2852.94%)
Mutual labels:  rendering, physics, 3d-graphics
Yocto Gl
Yocto/GL: Tiny C++ Libraries for Data-Driven Physically-based Graphics
Stars: ✭ 1,391 (+8082.35%)
Mutual labels:  rendering, path-tracer, 3d-graphics
Nebula Trifid
Nebula Trifid
Stars: ✭ 62 (+264.71%)
Mutual labels:  engine, rendering, physics
Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+8035.29%)
Mutual labels:  engine, rendering, 3d-graphics
Physics3d
A 3D physics engine
Stars: ✭ 101 (+494.12%)
Mutual labels:  engine, rendering, physics
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (+2805.88%)
Mutual labels:  engine, rendering, 3d-graphics
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+69170.59%)
Mutual labels:  engine, rendering, 3d-graphics
delphi3d-engine
A 3D-graphic and game engine for Delphi and Windows.
Stars: ✭ 52 (+205.88%)
Mutual labels:  engine, rendering, 3d-graphics
Squirrel-Engine
Multithreaded C/C++ Game Engine
Stars: ✭ 90 (+429.41%)
Mutual labels:  engine, rendering
DuEngine
An efficient interactive C++ renderer for ShaderToy-alike demos with 2D/3D/CubeMap/Video/Camera/LightField/Volume textures. (Partially used in my I3D 2018 papers)
Stars: ✭ 62 (+264.71%)
Mutual labels:  engine, rendering
Nexus
🖼️ Actionscript 3, GPU accelerated 2D game engine using Stage3D
Stars: ✭ 12 (-29.41%)
Mutual labels:  engine, rendering
fluctus
An interactive OpenCL wavefront path tracer
Stars: ✭ 55 (+223.53%)
Mutual labels:  rendering, path-tracer
ign-rendering
C++ library designed to provide an abstraction for different rendering engines. It offers unified APIs for creating 3D graphics applications.
Stars: ✭ 34 (+100%)
Mutual labels:  rendering, 3d-graphics
Yune
GPU based framework for writing Raytracers/Pathtracers. (Pronounced as "Yu-nay")
Stars: ✭ 64 (+276.47%)
Mutual labels:  rendering, path-tracer
coin
Coin3D core library
Stars: ✭ 193 (+1035.29%)
Mutual labels:  rendering, 3d-graphics
f3d
Fast and minimalist 3D viewer.
Stars: ✭ 791 (+4552.94%)
Mutual labels:  rendering, 3d-graphics
RenderingX12
Partially open source: real-time scene rendering using XUSG based on DirectX 12. 纯粹秀秀demo……ただ、デモを見せるため……
Stars: ✭ 16 (-5.88%)
Mutual labels:  rendering, 3d-graphics
rend3
Easy to use, customizable, efficient 3D renderer library built on wgpu.
Stars: ✭ 546 (+3111.76%)
Mutual labels:  rendering, 3d-graphics
aisa
AISA is a Software 3D Engine written in TypeScript.
Stars: ✭ 24 (+41.18%)
Mutual labels:  engine, rendering

D3D12Renderer

This project implements a custom rendering engine build from the ground up in C++ using Direct3D 12. It supports some "new" features like raytracing, mesh shaders etc.

It also features a custom written physics engine written completely from scratch.

Table of Contents

Graphics features

  • Forward+ rendering
  • Physically based rendering
  • Dynamic lights and dynamic shadows
    • Sun (with cascaded shadow maps)
    • Point lights
    • Spot lights
  • Decals
  • Post processing stack
    • Temporal anti-aliasing
    • Horizon-based ambient occlusion
    • Screen space shadows
    • Bloom
    • Filmic tone-mapping
    • Sharpening
  • Tiled light and decal culling
  • Screen space reflections
  • Real-time raytracing (DXR)
  • Integrated path tracer
  • Skeletal animation
  • Mesh shaders
  • Hot-reloading of shaders

It has an integrated (albeit pretty simple) path tracer (using hardware-accelerated raytracing), which in the future will be integrated into the real-time pipeline in some form to compute global illumination effects.


Physics features

Images to the right are links to YouTube videos showcasing the various physics features.

Other features

  • Editor tools
  • Integrated CPU and GPU profiler (with multi-threading support)

System Requirements

Since this project uses Direct3D 12 as the only rendering backend, the only supported platforms are Windows 10 or higher. The project is only tested with Visual Studio 2019, and only on NVIDIA GPUs.

For mesh shaders you will need the Windows 10 SDK version 10.0.19041.0 or higher. This can be downloaded using the Visual Studio Installer. If you only have an older version of the SDK installed, the build system will automatically disable mesh shaders. To run you will need the Windows 10 May 2020 Update (20H1) or newer. If these requirements are not met, you should still be able to build and run the program, but without mesh shader support.

If you want to use raytracing or mesh shaders, you need a compatible NVIDIA GPU. For raytracing these are the GPUs with the Pascal architecture or newer. For mesh shaders you will need a Turing GPU or newer.

The project files are currently generated with the AVX2 instruction set. If your processor does not support this, set another instruction set (either in Visual Studio or in premake5.lua).

All other dependencies (external libraries) either come directly with the source code or in the form of submodules.

Build Instructions

I have tried to keep the build process as simple as possible. Therefore you will not need any build tools installed on your machine. The project uses Premake, but all you need comes with the source.

  • Clone the repository and make sure to clone with submodules.
  • Double-click the generate.bat file in the root directory to generate a Visual Studio 2019 solution. The build process will automatically enable and disable certain features based on your installed GPU and the available Windows 10 SDK.
  • Open the solution and build. This should work directly. Visual Studio sometimes reports an "Unspecified error" when building. In that case either restart Visual Studio or re-generate the project (generate.bat) and you are good to go.
  • If you add new source files (or shaders), re-run the generate.bat file.

The assets seen in the screenshots above are not included with the source code.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].