Giter Club home page Giter Club logo

helios's Introduction

Helios

An experimental C++20 & DX12 renderer made for learning and trying out various graphics / rendering techniques.

Features

  • Bindless Rendering (Using SM 6.6's Resource / Sampler descriptor Heap).
  • Normal Mapping.
  • Physically based rendering (PBR) [Lambertian Diffuse and Cook Torrence Specular BRDF].
  • Diffuse and Specular IBL.
  • Bloom (Based on the Call of Duty Next Generation Post Processing presentation).
  • Screen Space Ambient Occlusion (SSAO).
  • Blinn-Phong Shading.
  • Deferred Shading.
  • HDR and Tone Mapping.
  • Shadow Mapping.
  • Instanced rendering.
  • Compute Shader mip map generation.
  • Multi-threaded asset loading.
  • Editor (ImGui Integration) with Logging and Content Browser with drag-drop functionality for GLTF models.
  • D3D12MA integration.
  • Shader Compilation using DirectX Shader Compiler (DXC).

Gallery

PBR and IBL

Shadow Mapping (With PCF)

SSAO (Screen Space Ambient Occlusion)

  • Blurred SSAO texture

  • SSAO Disabled (Top) with SSAO Enabled (Bottom)

Bloom (Inspired from the Call of Duty Presentation on Next Generation Post Processing)

Editor (using ImGui)

Deferred Shading

Showcase Video

Link : Click here, or on the Image below!
Youtube link

Performance Metrics:

Current performance metrics after optimizations:

Pre-optimization performance metrics:

Optimization efforts:

Optimized for Turing Architecture NVIDIA GTX1650.

  • Multi-threaded command list recording.
  • Batching of resource barriers (as much as possible).
  • Rewrite shaders to reduce number of registers used (for the SSAO compute shader).
  • Switch several full screen passes to compute shaders (to be noted that Tiled rendering using full screen pixel shader does surpass compute shader performance, but if the optimal work group size is found, compute shader performance will be higher than pixel shader).
  • Reordered render loop to prevent unnecessary Compute to Graphics pipeline switches (which cause wait for idle's internally).

Third Party Libraries

Building

  • This project uses CMake as a build system, and all third party libs are setup using CMake's FetchContent().
  • After cloning the project, build the project using CMake :
cmake -S . -B Build
cmake --build Build --config Release

Alternatively open the folder in Visual Studio's open folder mode.

  • Run the Setup.bat file, which will install the DirectXAgility SDK and the DirectXShader Compiler. You will be asked to enter the build path, which was the same path you gave in cmake -S . -B 'BuildPath'. If you followed the commands above, BuildPath = Build.

NOTE : Since a preview version of Agility SDK is currently being used, you need to enable Developer Mode for the application to run.

Controls

  • WASD -> Move camera.
  • Arrow keys -> Modify camera orientation.
  • Space -> Hold to disable editor UI.
  • Escape -> Exit editor.
  • Drag GLTF / GLB models from scene hierarchy to the main viewport (you might have to drag and drop in a region around the actual model path text).

Reference Projects :

Wicked Engine By Turánszki János.
Vanguard Engine By Andrew Depke.
Adria-DX12 By Mate Buljan.
DirectX Graphics Samples from Microsoft.

helios's People

Contributors

rtarun9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

helios's Issues

Building error

Severity Code Description Project File Line Suppression State Error
CMake Error at C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.20/Modules/ExternalProject.cmake:2633 (message):
error: could not find git for clone of tinygltf-populate

Severity Code Description Project File Line Suppression State Error
CMake Error at C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.20/Modules/FetchContent.cmake:1000 (message):
CMake step for tinygltf failed: 1

Contribution proposal

Hi, I recently got to know about this DirectX based graphic engine, and I'm a bit curious about learning and playing with DirectX for a while now, let me know if you need a contributor for this project. I'd love to contribute.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.