I worked as a rendering programmer on Saints Row (2022), primarily in particles, VFX, accessibility, materials, and optimization. Here's a sample of my rendering work:
The most advanced high contrast mode ever shipped
- Adjustable highlights: outline or fill
- Toggleable greyscale filter
- Full color customization
- Automatic exposure - bright or dark, you can always see!
Saints Row's high contrast mode was designed to primarily highlight friend, enemy, and neutral people and vehicles, with optional special objects. Highlight mode and colors are user configurable. Opaque, alpha, and decal objects are able to be masked to show through the optional high contrast filter.
FPS gains with adaptive quality
- Automatically tunes all display settings
- Maximizes framerate and quality
- Custom high-dimensional control system
- Deforms to people, animals, and vehicles
- Bounce spring motion
- Deforms in movement direction
Weather control with ease
- Fully artist adjustable toolchain
- Allows custom particles, sky settings, and prefab spawning
- Data driven open world, with scripted mission support
- Probabilities automatically set by desired states per user experience
Since our weather states had lots of dynamic moving particles and fog, I added interior volumes that can mute fog and particle effects. With a custom shader node, artists could flag shaders as 'exterior-only', preventing them from showing inside stores and tunnels. These interior volumes could affect fog, particles, and meshes.
Advanced particle systems
- High order interpolation for Gen8 hardware
- Correctly oriented ribbons along camera axis
- Fast robust parameter randomization
- And more: turbulence, velocity, blending, optimization
I did much of the particle system work in Saints Row. For ribbons, I added non-linear frame interpolation for smoother blends when framerate is not consistent. I also added view orientation adjustment, to break vertex welding when on-axis views would force interpolation out of the ribbon axis. I wrote scripts and tools to migrate all of our single dimension turbulent particles systems to a 3D turbulence model. I also improved velocity inheritance, frame emission spacing, property randomness, and orientation interpolation.
I implemented Saints Row's borderless window mode and added variable refresh rate support. My method scales the game's render resolution, so the user could reduce resolution for increased performance, while maintaining the benefits of a fullscreen window and not doing a mode switch out of their desktop resolution. When a principal programmer left Volition, I took over the design and implementation of the PC launcher tool for users to select their graphics API. I created a small, minimally dependent executable that could still use game resources and localization.