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

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

May 17, 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(四按键)下落式音游。 项目开始前可行性的考虑与实现的难度 屏幕刷新率 这个计算器的屏幕刷新率可以非常的高,但由于液晶显示屏在显示上会有延迟而造成残影,有可能会让读谱产生困难。另外,

Feb 25, 2022

hb-libgd is a graphics library for the dynamic manipulation of images.

hb-libgd Harbour bindings for libGD 2.3.3, GD is an open source code library for the dynamic creation of images by programmers. GD has builtin support

Dec 10, 2021

Reference Implementations of P0267, the proposed 2D graphics API for ISO C++

P0267 Reference Implementation Please read the LICENSE before cloning or forking the code as there is important information there! Please see the wiki

May 17, 2022

Gfx - A minimalist and easy to use graphics API.

gfx gfx is a minimalist and easy to use graphics API built on top of Direct3D12/HLSL intended for rapid prototyping. It supports: Full shader reflecti

May 18, 2022

CMake modules for common applications related to computer graphics

cgcmake CMake modules for common applications related to computer graphics Sample Usage Maya Project |-- CMakeLists.txt |-- cgcmake |-- modules

Apr 27, 2022

Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on OpenGL 1.x-4.x supporting Windows, Linux and Mac OS X.

Visualization Library 2.2 Gallery About Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on the in

May 19, 2022

Window.js is an open-source Javascript runtime for desktop graphics programming.

Window.js Window.js is an open-source Javascript runtime for desktop graphics programming. It is documented at windowjs.org. Introduction Window.js pr

May 19, 2022
Comments
  • 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

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

May 6, 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

Apr 18, 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

May 15, 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

May 11, 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

Apr 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

Mar 13, 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

Feb 27, 2022