Steam Page
For almost four years I worked on the Portal 2 mod Portal: Revolution, which has received over 23,000 positive reviews on Steam.
In 2020, I joined the Portal: Revolution team as a 3D Artist, working on modeling various props such as vents, doors, and elevators.
In 2022, I transitioned from being a 3D Artist to becoming a Graphics and Engine Programmer. This gave me access to the Portal 2 engine’s source code, allowing me to modify a branch of it to add new features for Portal: Revolution.
Currently I am working on the sequel, which is in the early stages of development!
Ground Truth Ambient Occlusion (Portal: Revolution 2)
As my first technical contribution to the sequel, I am integrating a new ambient occlusion system into the Source Engine, using Ground Truth Ambient Occlusion (GTAO).
One of the primary challenges with integrating this modern graphics effect into an older engine is performance. As it is a Portal mod, many people will be playing on lower end devices. To optimize the effect, I profiled throughout development with tools such as NSight and Microsoft’s PIX debugger.
In addition, I made sure that the effect was scalable, so the effect can be adjusted in various ways to maintain a high frame-rate on slower machines.
Volumetric Lighting
Over the course of a year, I worked on and off to implement Raymarched Volumetric Lighting in the Portal 2 engine for use in Portal: Revolution. This feature is used throughout the game to create light shafts from particularly bright light sources.
The effect was achieved using a combination of engine code written in C++ and DirectX, shaders written in HLSL, and RenderDoc for the hours of debugging.
This was a long process, going from me having never touched the rendering side of the engine, to eventually having added a new feature that can enhance the look of many maps where it is used.
By far the biggest challenge was getting the effect to render through portals, something very important for a Portal mod. This required me to develop a far deeper understanding of stencil buffers, depth buffers, and the inter-workings of both DirectX and the engine itself.
Limited Angle Camera
For multiple scenes in the game, we needed the player’s camera to remain fixed in place while still allowing limited movement within a fixed angle. To achieve this, I modified the point_viewcontrol entity using C++.
This was one of the first programming tasks I worked on for the mod, and it helped me become far more familiar with the process of making changes to such a large engine, such as proper use of version control, subjecting my code to code reviews, and writing code to a quality where it could be maintained in the future.



