Unreal Engine

Summary

During my time at Rare, I have made contributions to Unreal Engine. Rare is an Unreal Engine studio and as such, I spend quite a bit of time in the engine. When I need to modify the engine to achieve the behaviour that I want, I like to make sure that I try and give that new functionality back to Epic.

Contributions

Below are a list of my contributions. Each contribution is tagged with either the version it was released in, or its status, if it has not been merged.

Note

I know that describing Unreal Engine as “Open Source” could be seen as a bit of a stretch. However, anyone can see and grab the source code by following this guide which isn’t too much of a barrier. And Epic do accept pull requests as demonstrated below.

Legend

PRs

Fix StaticDuplicateObject
UE5.4 subtly broke copying of UObjects, which could lead to crashes… if you are lucky. This PR fixes it
5.7
Inline shader registration
Makes creating shader’s easier. Enables Shader factories.
Open
CQTest - Support assert macros in test bases
Makes creating shader’s easier. Enables Shader factories.
5.7
TFixedString
std::basic_fixed_string implementation
Rejected
TWeakObjectPtr in FNiagaraAction_NewNode
Fixes a crash in Niagara that was caused by a use after garbage collection
5.6
Support negation in Custom HLSL nodes
E.g. !MyVar will now negate MyVar in custom HLSL nodes
5.6
FVector2f overload of UStaticMesh::SetUVChannel
Allows packing of data in UV channels since there will be no double -> float conversion
5.6
Use TUniquePtr for Residency Handle in FD3D12Resource
Reduced the size of each D3D12 Resource by 1KB each
5.3, 5.4
Removing ambiguous equality operator
FNiagaraVariable and its base defined equality operators leading to ambiguous functions
5.3
Landscape NDI tick optimization
Cache expensive to calculate data on init rather than calculating every tick
5.3
Improve extensibility of Niagara Editor
Support developers creating custom menu extensions for the Niagara Editor
5.3
Fix use after free in niagara data interface details
Cache object with a TWeakPtr rather than a raw ptr
5.5
Ensure Types used in Data Interface Function Signatures are defined in HLSL
Bug fix for Niagara Data Interfaces not defining types in certain circumstances
5.2
Public and exported Niagara GPU Readback
Enables custom NDIs to use the GPU Readback manager
5.2, 5.3
Interface support for GetSubsystem
Supports grabbing a World/Engine/Player subsystem using its interface rather than concrete class
Rejected