Introduction
TL;DR - I was working on volumetric data in UE4 before starting this project. The rendering was a little burry when the camera moved. However, it was fine at that time because only static screenshots were needed. Anyhow, it got my attention. So, for the course project for the graphics for games class instructed by Dr. Marc Olano, I tried to implement adaptive temporal antialiasing (ATAA) in UE4 4.20.2 on my Mac to mitigate this problem. If you are interested in the technique and want to refresh the background knowledge, please visit the original paper website from NVIDIA. The paper is published at HPG 2018. All credit goes to the original authors.
This implementation differs from the original paper mainly in the following three ways:
-
API and platform agnostic. Unlike those mentioned in the original paper, this implementation does not require RTX API nor Windows. It is tested on Mac and should be able to run on other platforms supported by UE4. The reason is simple, I did not have the access to an RTX graphics card nor can I switch to Windows due to disk space limits, so compute shaders were used instead. The demo scene was able to run on Intel® Iris™ Plus Graphics 650 on Macbook Pro 2017 with around 20~60 fps based on scene TAA artifacts level with un-optimized code. And amortized ray rate of 7.1G Rays/s on external GTX 1080 (327M Rays/s for full screen tracing) was achieved.
-
Path tracing instead of ray tracing. Unlike the ray tracing in the original papar that includes 1 shadow ray per light per primary ray, the scene in this implementation is rendered with path tracing, because I want the rendering as physically-based as possible. Second, I am interested in to what degree UE4 rendering matches Physically-based rendering (PBR) out of curiosity. My bad.
-
New moving volumetric rendering example. This implementation makes ATAA support volumetric objects in motion, which was not demonstrated in the original paper. To convince you that this post series is at least somewhat helpful, I created the moving `face` demo below with this implementation to show how ATAA compares to
TAA
andTAA with Responsive AA
for volumetric objects in UE4. Just hope that my two cents are somewhat helpful.
Figure 1: Which face is not blurry? ATAA compared to TAA in UE4 for volumetric objects. |
Posts
Below are the posts in series. Due to course time limit, only the first two posts were finished.
Post 1. How to add ATAA into UE4.
Post 2. Add volumetric material support.
Post 3. Add correct global illuminance (TODO).
Post 4. Add specular material (GGX) support (TODO).
Post 5. Boost the performance of Path tracing (TODO).
If you find this post series good or bad, please leave comments or DM me in Gmail or Twitter (@ThisIsTian). I would very much appraciate your time and efforts .