Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
May 28, 2020
arrowPress Releases

If you enjoy reading this site, you might also want to check out these UBM Tech sites:


UE4 Engine Development

by Trent Polack on 12/22/16 10:48:00 am   Expert Blogs   Featured Blogs

3 comments Share on Twitter    RSS

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.


This post was originally posted at its lovely home on Joy Machine's website.

I'll resume both the system design and lighting & shading series of posts fairly soon (once things lighten up on the bizdev and actual game-making side a bit), but in the mean time, the joys of working within a custom fork of the behemoth known as Unreal Engine 4.

I integrated the 4.14 release of Unreal Engine 4 into my custom fork early last week. The 4.14 UE4 update was pretty great. So, since I have a fairly good workflow in place to (relatively) easily merge in UE updates into my fork, I did so.

And the merge went fine!

Unfortunately, changes made to the way UE handles Child Actor Blueprints (which I use pretty frequently) caused some... Issues. Like crash issues. Like frequent crash issues. Like crash issues that once resolved still resulted in a somewhat-corrupted blueprint where if you selected a certain variable, the editor would crash. So, you know, that was super great. But! I conquered it.

Since I was spending so much time in Visual Studio, I figured I'd re-integrated some GameWorks tech back into my fork (as I had wiped it clean for, well, reasons a few weeks ago). Namely, I needed to get NVIDIA's Horizon-Based Ambient Occlusion (HBAO+) back into the fold, as I haven't been extremely happy with UE's built-in screen-space AO.

So, I did that, and all was fine. Though, one thing I was beginning to notice is that the HBAO+ just wasn't as crisp as I wanted it to be. It was either too blurry or, as shown below, the non-blurred option isn't really viable due to the disparate pixel offsets.

So, I started searching around the internet of things a bit. And I discovered (fairly randomly) that the HBAO+ distribution I was using was version v2.4.

That, in and of itself, meant absolutely nothing to me, but I did see that GameWorks ShadowWorks was at v3.0. Score, I thought. So I downloaded the binaries and... HBAO+ was not included amongst them. It was a distribution for a shadowing method (hybrid frustum traced shadows, ie. HFTS). That was not helpful.

I tried some general-purpose google queries to see if I could nail down any information on whether or not HBAO+ had an updated version I could use (tangent: learning to intelligently search with google is the best skill you can ever learn). And - lo and behold - I found the binaries for a v3 distribution of HBAO+.

With the documentation for v2.4.

So, I went to the NVIDIA GameWorks developer's site and found the documentation for HBAO+. Also v3.0.

I then just started scouring GitHub (including NVIDIA's own repo) for anything related to HBAO+. And eventually I found the documentation for the version I had! Kind of. It was a bit out of date still, but I was able to at least have the primary header file to use as a reference for everything.

Of course, that's when I discovered that the header version I was using was not the same version as the binaries that I had found. Apologies for the image quality:

This was easy enough to resolve in theory, but I had to track down (through history) which repo ultimately had the latest version of the binaries.

But then success! And now, for a comparison between HBAO+ disabled (first image), HBAO+ v2.4 (second image), and HBAO+ v3.0 (final image).

Related Jobs

innogames — Hamburg, Germany

Java Software Developer - Core Team
Scanline VFX
Scanline VFX — Los Angeles, California, United States

Unreal Technical Director
Square Enix Co., Ltd.
Square Enix Co., Ltd. — Tokyo, Japan

Experienced Game Developer
Moon Studios
Moon Studios — Remote, California, United States

Senior Character TD

Loading Comments

loader image