Graphics engine written in C++ using DirectX12/DXR

Adria-DX12

Graphics engine written in C++ using DirectX12/DXR. For successful build you will need textures that you can find here.

Features

  • Entity-Component System
  • Deferred + Forward Rendering
  • Tiled Deferred Rendering
  • Clustered Deferred Rendering
  • Physically Based Shading
  • Image Based Lighting
  • Normal Mapping
  • Ray Traced Shadows (DXR)
  • Shadows
    • PCF Shadows for Directional, Spot and Point lights
    • Cascade Shadow Maps for Directional Lights
  • Volumetric Lighting
    • Directional Lights with Shadow Maps
    • Directional Lights with Cascade Shadow Maps
    • Point and Spot Lights
  • HDR and Tone Mapping
  • Bloom
  • Depth Of Field
  • Bokeh
  • Ambient Occlusion: SSAO, HBAO, RTAO (DXR)
  • Reflections: SSR, RTR (DXR)
  • SSCS
  • Deferred Decals
  • FXAA
  • TAA
  • God Rays
  • Lens Flare
  • Motion Blur
  • Fog
  • Volumetric Clouds
  • Hosek-Wilkie Sky
  • Ocean FFT
    • Adaptive Tesselation
    • Foam
  • Particles
  • ImGui Editor
  • Profiler
  • Model Loading with tinygltf
  • Shader Hot Reload
  • Camera and Light Frustum Culling
  • Multithreaded Command List Building
  • Bindless Texturing
  • DirectX12 Render Passes

TODO

  • Improve DXR features
  • Add DXR Global Illumination
  • Render Graph

Dependencies

tinygltf

ImGui

ImGuizmo

ImGuiFileDialog

stb

DirectXShaderCompiler

D3D12MemoryAllocator

FastNoiseLite

json

Screenshots

Since this is DirectX 12 port of this engine, you can see some of the screenshots there. All of DXR screenshots will go here:

Cascaded Shadow Maps Hard Ray Traced Shadows

Ray Traced Reflections, RTAO and Depth of Field Bokeh alt text

Similar Resources

ASMotor is a portable and generic assembler engine and development system written in ANSI C99

ASMotor is a portable and generic assembler engine and development system written in ANSI C99 and licensed under the GNU Public License v3. The package consists of the assembler, the librarian and the linker. It can be used as either a cross or native development system.

Nov 18, 2022

this is my simple voxel engine, appart from librairies like glad it is entierly written in C++ and GLSL

simple-voxel-raycaster this is my simple voxel engine, appart from librairies like glad it is entierly written in C++ and GLSL here is a gif: https://

Sep 26, 2022

My first Real-Time 3D Game Engine learning project written in C++.

EyeEngine-Cpp FOA, sry for my poor English. What is Eye Engine? Eye Engine is my first Real-Time 3D Game Engine learning project. There are two editio

Apr 6, 2022

MicroPather is a path finder and A* solver (astar or a-star) written in platform independent C++ that can be easily integrated into existing code. MicroPather focuses on being a path finding engine for video games but is a generic A* solver.

MicroPather MicroPather is a path finder and A* solver (astar or a-star) written in platform independent C++ that can be easily integrated into existi

Nov 16, 2022

A Graphical Engine written in C++ for abstract OpenGL

Lukeda Graphical Engine (LGE) It's a simple graphical library, written in C++ with OpenGL(GLEW) and GLFW Start as a fork from my other project named "

Jul 13, 2022

HEngine - 2D/3D Game Engine written in C++20

HEngine - 2D/3D Game Engine written in C++20

HEngine HEngine: Hbh Game Engine Now only support platform Windows OpenGL 4.5 TODO: D3D11 D3D12 Vulkan 命名规范 命名法 统一采用Pascal命名法(文件夹、类名等),第三方库除外 CMakeLis

Nov 14, 2022

SSD1306 library and simple graphics core library based on Adafruit GFX Library.

Raspberry Pico SSD1306 + GFX Library Based on Adafruit GFX Library https://github.com/adafruit/Adafruit-GFX-Library Usage Hardware Connect your SSD130

Sep 1, 2022

Plua is a superset of Lua for classic PalmOS devices with added support for graphics, UI, networking, events and sound.

Plua2c Plua is a superset of Lua for classic PalmOS devices with added support for graphics, UI, networking, events and sound. This is the source code

May 16, 2022

4 keys rhythm game on Casio Power Graphics calculators.

fx4K 简体中文 - English 简介 运行在卡西欧 fx-9750 与 fx-9860 系列图形计算器上的4K(四按键)下落式音游。 项目开始前可行性的考虑与实现的难度 屏幕刷新率 这个计算器的屏幕刷新率可以非常的高,但由于液晶显示屏在显示上会有延迟而造成残影,有可能会让读谱产生困难。另外,

Jun 1, 2022
Comments
  • need some help

    need some help

    Hi, Thanks for sharing this. The project look nice and the code look net.

    Unfortunately, i am not able to run successfully this project. Can you add a short and sweet "how to" compile and run ?

    About the textures: I have add the entire Textures directory in the Resources directory. Do it is the right ?

    The solution compile fine (with some warnings but no errors) in debug and in release. But the programme fail on start up.

    The error in debug: D3D12 ERROR: ID3D12CommandList::BuildRaytracingAccelerationStructure: D3D12_RAYTRACING_GEOMETRY_DESC.Triangles.IndexCount must be 0 when IndexBuffer is null (geometry [0]). [ RESOURCE_MANIPULATION ERROR #1158: BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID] D3D12: BREAK enabled for the previous message, which was: [ ERROR RESOURCE_MANIPULATION #1158: BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID ] Exception levée à 0x00007FFFFEF04FD9 (KernelBase.dll) dans Adria.exe : 0x0000087A (paramètres : 0x0000000000000001, 0x000000E62774A470, 0x000000E62774C240). Exception non gérée à 0x00007FFFFEF04FD9 (KernelBase.dll) dans Adria.exe : 0x0000087A (paramètres : 0x0000000000000001, 0x000000E62774A470, 0x000000E62774C240).

    The error in release: Exception levée à 0x00007FFFFEF04FD9 dans Adria.exe : exception Microsoft C++ : _com_error à l'emplacement de mémoire 0x000000CC400FECC8. Adria.exe a déclenché un point d'arrêt.

  • Error when CreateCommittedResource loading Cube map

    Error when CreateCommittedResource loading Cube map

    Hi when I run the project I found this error : D3D12 ERROR: ID3D12Device::CreateCommittedResource: D3D12_RESOURCE_DESC::Width, D3D12_RESOURCE_DESC::Height, and/ or D3D12_RESOURCE_DESC::DepthOrArraySize are too large for the D3D12_RESOURCE_DESC::Dimension and FeatureLevel. Width = 3435973836 and must be <= 16384, Height = 3435973836 and must be <= 16384, DepthOrArraySize = 1 and must be <= 2048, Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D, and FeatureLevel = D3D_FEATURE_LEVEL_12_1. [ STATE_CREATION ERROR #597: CREATERESOURCE_INVALIDDIMENSIONS] D3D12: **BREAK** enabled for the previous message, which was: [ ERROR STATE_CREATION #597: CREATERESOURCE_INVALIDDIMENSIONS ]

    Apparently "equirect_hdr_image" Image has wrong dimension(3435973836 ,3435973836). How can I solver this error? Thx.

OpenGL Template Engine - a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects.
OpenGL Template Engine - a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects.

OpenGL Template Engine is a C++ OpenGL graphics engine which aimed to be a simple startup template for 3D OpenGL projects. This is the template I personally use for my own projects and provides me with the general OpenGL 3D render setup with model import and UI.

May 16, 2022
F Graphics Library (FGL) is a small graphics C++ portable library for LCD displays on embedded systems

F Graphics Library (FGL) Full documentation: fgl.docsforge.com (By Filipe Chagas) F Graphics Library is a C++ library that I created for use in embedd

Oct 31, 2022
GraphicsFuzz provides tools for automatically finding and simplifying bugs in graphics drivers, specifically graphics shader compilers.

GraphicsFuzz GraphicsFuzz is a set of tools for testing shader compilers GraphicsFuzz provides tools for automatically finding and simplifying bugs in

Nov 18, 2022
CSC404: Computer Graphics [CG] & CSL402: Computer Graphics Lab [CG Lab]

COMPUTER-GRAPHICS-AND-COMPUTER-GRAPHICS-LAB CSC404: CG & CSL402: CG LAB [SEMESTER IV] Syllabus CG - Reference Books THE WALL MEGA SATISH - AUTHOR CG C

Apr 28, 2022
Anti-Grain Evolution. 2D graphics engine for Speed and Quality in C++.

Anti-Grain Evolution This project is based on ideas found in Maxim (mcseem) Shemanarev's Anti-Grain Geometry library, but oriented towards maximizing

Oct 31, 2022
Fluid simulation engine for computer graphics applications
Fluid simulation engine for computer graphics applications

Fluid Engine Dev - Jet Jet framework is a fluid simulation engine SDK for computer graphics applications that was created by Doyub Kim as part of the

Nov 19, 2022
Rewritten version of the MiniLibX graphics API used by 42, using glfw & glad. Running on OpenGL.
Rewritten version of the MiniLibX graphics API used by 42, using glfw & glad. Running on OpenGL.

Written by W2.Wizard for the 42 Network A recreation of the MiniLibX library used by 42, using GLFW & glad, running on OpenGL. The goal of MLX42 is to

Nov 22, 2022
Love 6's Regular Expression Engine. Support Concat/Select/Closure Basic function. Hope u can enjoy this tiny engine :)
Love 6's Regular Expression Engine. Support Concat/Select/Closure Basic function. Hope u can enjoy this tiny engine :)

Regex_Engine Love 6's Blog Website: https://love6.blog.csdn.net/ Love 6's Regular Expression Engine Hope u can love my tiny regex engine :) maybe a fe

May 24, 2022
Sword Engine is a fork of Psych Engine that plans on adding more features and quality of life improvements.
Sword Engine is a fork of Psych Engine that plans on adding more features and quality of life improvements.

⚠️ WARNING: This README is currently incomplete, This warning will be removed once it's complete. Friday Night Funkin' - Sword Engine Sword Engine is

Jul 9, 2022
Two Tribes Engine; the engine which we used to create Toki Tori 2+ and RIVE with

Two Tribes Engine We, Two Tribes, have used this engine for over a decade. It started with early development on the Nintendo DS and ultimately resulte

Oct 21, 2022