top of page

Rendering With DirectX 12 (Ongoing)

DirectX 12 is a master level modern graphics API . Mastery is not a quick win and the journey to become a master time. The goal of this project was to obtain a growing understanding of the DirectX 12 API and what new features it has to offer such as real-time ray tracing using DXR.

Role

Graphics/Engine Programmer

Game Engine

Personal Phoenix Engine

Platform

PC (Windows)

Development Time

Ongoing, 2 Months, 2021

Team Size

Solo Developer

DirectX 12 | Phoenix Engine | Rendering | Graphics | Porgrammer | Untextured 3D Model | Phoenix Game Engine
Trailer
Rendering With DirectX 12 Trailer
Screenshots
Screenshots
What did I plan to accomplish?
  • Gain a growing understanding of DirectX 12 API.

  • Implement DirectX 12 API Rendering pipeline.

  • Implement DirectX 12 Real Time Ray tracing (DXR) Pipeline.

What the artifact currently features?
  • 3D untextured model rendering.

  • (ongoing) Real Time Ray tracing (DXR) pipeline.

What would I do to make it better?
  • Develop a Rendering Hardware Interface (RHI) first to support multiple graphics APIs.

  • More elegant interfaces.

Goals
DirectX 12 Rendering Pipeline
DirectX 12 Rendering Pipeline

The goal of this project was to obtain a growing understanding of the DirectX 12 API and what new features it has to offer such as real-time ray tracing using DXR. To save development time the primary focus was more from a learning standpoint rather than a scalable well designed architecture.

DirectX 12 | Back Face Culling | Phoenix Engine | Phoenix Game Engine | Rendering | Graphics | Programming | Untextured 3D Model Rendering

Rendering with DirectX12 - Untextured 3D model and back face culling

DirectX 12 - RenderDoc Capture | RenderDoc | DirectX 12 | Phoenix Game Engine | Rendering | Graphics | Programming

Rendering with DirectX12 - RenderDoc Capture (Click to Enlarge)

DirectX 12 Real Time Ray tracing (DXR) Current Status

Real-time ray tracing using DXR pipeline integration into the regular pipeline with feature to toggle it at run time. 

Raytraced Triangle | Raytracing | DXR | Real time Raytracing | DirectX 12 API | Phoenix Game Engine | Phoenix Engine | Rendering | Graphics | Programming

Rendering with DirectX12 - Rasterized vs. Real-time Ray traced Triangle 

DirectX 12 Real Time Ray tracing (DXR)
Development Insights and Deep Learning
  • The API is much more than just about the newer features of Real-time raytracing, mesh shaders and Variable Rate Shading.

  • Managing memory and keeping CPU-GPU synchronizations and interactions with that memory is what makes it a master level API.

  • The API is designed for people who very explicitly understand when and how a certain resource/memory will be accessed and updated.

  • A major difference in the modern APIs as compared to their predecessors is that they were designed to utilize the hardware to its full potential, which means that it lets more than one CPU core to submit commands to the graphic card at the same time. With DirectX 11 or earlier games were effectively limited to accessing the video card from only one CPU core of a multicore CPU at a time.

Development Insights and Deep Learning
Post Mortem
Post Mortem

What Went Well ?

  • The task estimates were accurate in terms getting something working on screen.

  • Focusing more on the learning aspect of the API and the newer features it has to offer.

What Went Wrong ?

  • Changed the plans to fit more along the lines of major learning goals rather than trying to have a great overall architecture as at the end.

  • Integrating DirectX 12 Renderer with the existing Engine with insufficient knowledge of DirectX 12 was a bad idea.

 What I Learned ?

  • Tutorials and documentation can only get you so far and those implementations are not scalable in the context of a game engine.

  • Through research is needed and design decision need to be made before implementing a new API into the engine.

bottom of page