Graphics engine written in C++ using DirectX12/DXR

Overview

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

Issues
  • 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.

    opened by MicrocosmeStudio 5
  • 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.

    opened by fdsamxn 2
Owner
Mate Buljan
Mate Buljan
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.

Marcus Nesse Madland 2 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

Filipe Chagas 8 Dec 14, 2021
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

Google 502 Jul 27, 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

AMEY THAKUR 7 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

Artem G. 94 Jul 22, 2022
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

Doyub Kim 1.4k Aug 9, 2022
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

Codam 76 Jul 26, 2022
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

Love6 2 May 24, 2022
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

swordcube 7 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

Two Tribes 117 Jun 21, 2022
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.

null 40 Jul 28, 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://

null 1 Jun 4, 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

F-seeeye 5 Apr 6, 2022
Lee Thomason 293 Aug 8, 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 "

Lucas Morais 2 Jul 13, 2022
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

null 62 Aug 4, 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

Marcin Bober 29 Jul 27, 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

Cameron Kaiser 8 May 16, 2022
4 keys rhythm game on Casio Power Graphics calculators.

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

陈湛明 4 Jun 1, 2022