5 years in the past, we wrote about how the visible results in Returnal got here to life, together with the real-time voxeliser that dissolved Phrike into volumetric fog. When you haven’t learn it, that put up is an efficient companion to this one.
That is how that story continues.
With Saros, we didn’t simply lengthen what we’d constructed for Returnal. We stepped again, checked out thirty years of gathered engine improvement, and rebuilt it as a unified framework: Graphite.
What we had, and why we modified it
Our proprietary particle engine, NGP (Subsequent-Gen Particles), began as a prototype for Resogun in 2013 and grew with each recreation since, all the way in which to Returnal. By SAROS, NGP was mature, nevertheless it was additionally a product of twelve years of incremental selections, every one made within the context of a particular, remoted recreation.
Then one thing else modified: us. Becoming a member of PlayStation Studios meant delivering experiences on the stage our gamers count on, and our instruments, and the names we’d given them, now not matched the studio we have been changing into.
Enter Graphite. It brings GPU simulation, rendering, tooling, and DCC integration below one structure, constructed immediately for PlayStation {hardware}. NGP didn’t disappear, it turned a part of Graphite, developed and extra succesful than ever.
Each Housemarque recreation has a visible id gamers recognise instantly. Graphite is what makes that doable.
And what it truly does, body by body, is greatest defined by the unimaginable individuals who constructed it:
Housemarque Graphics Architect Sharman Jagadeesan and Senior Graphics Programmer Konsta Toivanen will stroll you thru the volumetric fog in Saros: the way it developed from Returnal, and the 2 techniques we constructed to make Carcosa’s ambiance really feel alive.
Risto Jankkila (VFX Architect) will clarify how we prolonged Graphite with information from Houdini, together with a full breakdown of the participant spawn sequence.
Volumetric fog
Fog in video games is usually an afterthought, one thing that fills empty area and hides draw distances. In Saros, we wished it to be a dwelling a part of the world, reacting to every little thing occurring in it.
In Returnal, our volumetric fog was already reactive, however too low frequency, and heavy temporal filtering saved it from exhibiting wonderful element. For Saros we constructed two complementary options: low frequency fog for ambient ambiance, and excessive frequency fog for the character results seen in particular story rooms in Carcosa.
Low frequency fog
We took Unreal Engine’s froxel fog, a frustum-aligned voxel grid, as a place to begin and rebuilt important elements of it to fulfill our imaginative and prescient.
The primary problem was temporal stability. The hysteresis coefficient controls how a lot of the earlier body’s information the fog holds onto: Unreal’s default of 90% retains the picture secure however makes the fog sluggish on fast-moving cameras and lights. We pushed it right down to 50%, utilizing blue noise jitter and depth clamping to maintain the ensuing aliasing below management.
Saros additionally wanted fog that would characterize every little thing from low density ambient mist to excessive density floor fog. To render these faithfully we used:
- A twin Henyey-Greenstein part perform, modelling how gentle scatters ahead and backward by the fog relying on viewing angle.
- A colored absorption coefficient, figuring out how a lot gentle is absorbed because it travels by a medium, for a far wider vary of colors than conventional monochromatic options.
- A self shadowing system that aggregates incoming gentle sources right into a dominant shadowing course and ray-marches towards it.
- A bodily primarily based sky lighting integral, for correct distant lighting with out sacrificing efficiency.
Collectively these gave Carcosa’s ambiance a grounded, bodily high quality.
Lastly, the low frequency fog is absolutely interactive. Advection from our player-following fluid simulation feeds immediately into the density hysteresis step, making each participant motion, projectile, explosion, and enemy readable within the fog in actual time.
Excessive frequency fog
For the high-frequency fog we constructed a customized ray marcher. To maintain efficiency in verify whereas preserving constancy, we cluster the scatter information into 8x8x8 voxel teams earlier than marching, drawing solely the clusters that comprise information, with a user-defined threshold retaining their quantity in verify. Whereas marching, empty areas between clusters get skipped, letting the marcher take bigger steps the place it will probably.
For lighting, we evaluated a light-weight quantity per scatter quantity, containing irradiance from all gentle sources, with pre-marched self-shadowing for each gentle voxel. We uncovered parameters for albedo, absorbance, density, and shadowing, letting artists steadiness visuals towards efficiency for every quantity.
The 2 fog techniques are then merged: we pattern the low frequency fog’s scatter information through the excessive frequency march, and feed outcomes again so each keep according to one another.
Use circumstances
We used the excessive frequency volumetric fog in a number of situations. One use case was within the Prologue within the type of a smoky cranium with cables hooked up to it. One other use case was with what we name Mirages. In 4 of our biomes there are particular narrative rooms the place Arjun is confronted with smoke creatures.
Reactivity is essential to all of the VFX we make, and these results have been no exception. Since affect information doesn’t want excessive decision, we retailer it in a separate, low decision quantity, which for the cranium additionally holds its low frequency velocity discipline.
The movies beneath present that quantity on the left, and mixed with the cranium on the precise. Impacts are evaluated as a Signed Distance Discipline that closes again up over time, whereas velocity is proven in color, you’ll be able to see each the affect holes and the turbulence they create.
Right here’s the ultimate cranium impact with out the cables and different secondaries and in a unique setting.
The mirage impact is much like the cranium impact. The distinction is that there are so referred to as mirage “scenes” that rotate. We additionally used our real-time skeletal mesh voxelizer to deliver current meshes into the scenes. The video beneath exhibits a sweep between the voxelized consequence and the ultimate consequence with advecting information from the earlier body.
Right here’s the ultimate impact with rotating two mirage scenes in a take a look at setting. For reactivity, we used the identical technique described for the cranium impact.
Extending Graphite with information from Houdini
Along with enhancing the rendering high quality of our volumetric results we wished to introduce new methods for our artists to creator them.
Beforehand, volumetric results have been created by writing per-voxel expressions for density emission, mixed with fluid simulations driving the advection (the directional motion) of the density discipline. As a result of this grid-and-voxel strategy is the business commonplace for movie VFX, it was our pure first step as properly.
From Returnal days: voxelising Phrike right into a grid for density emission
Throughout Returnal’s improvement, we realized we wanted tighter management over precisely the place density is generated. Per-voxel logic allow us to emit density on close by surfaces or voxelised meshes, however something extra advanced got here with extreme runtime overhead. Emitting density from only a character’s arm, quite than their entire voxelised physique, was very troublesome to do effectively in actual time.
Additionally from Returnal: full physique density emission from the voxelised mesh
To unravel this, we turned to particles to drive volumetric density emission. Graphite’s absolutely programmable particle system gave us a stable basis for tightly managed volumes, leading to two new instruments:
An Offline Houdini Data Pipeline: lets artists pre-compute advanced, high-fidelity information in Houdini that may be too costly to generate at runtime.
A Runtime Point Cloud Rasterizer: a high-performance part that takes simulated factors and rasterizes them immediately right into a quantity in actual time.
Collectively, these freed us from stateless per-voxel expressions and inflexible fluid simulations. Particles can now exactly observe a personality’s animated mesh, giving artists full management over an impact’s habits and lifecycle.
In observe, an artist imports an animated Saros character into Houdini and makes use of its instruments to compute beginning positions and attributes for an impact. That baked information feeds into the sport engine, the place real-time simulation takes over. Within the video beneath, factors generated in Houdini carefully match the in-game character, and customized runtime logic detaches them from the enemy on bullet affect, so preliminary positions come from Houdini, however the habits reacts dynamically to the participant in actual time.
Creating level information in Houdini
Utilizing level information from Houdini in engine
Since artists can export any type of information from Houdini to Graphite, it’s straightforward to transcend static particles hooked up to characters. Under, particles stream throughout the floor of an animated mesh: the floor was unfolded in Houdini right into a 2D simulation area, then exported and mapped again onto the animated mesh in actual time.
Particle stream on Arjun’s physique on the left. Within the center we extract an ISO floor from the particles. On the precise we’ve volumetric fog emitted from the particle stream.
A first-rate in-game instance of this expertise in motion is the participant spawn sequence in Saros. This advanced impact is in-built a number of layers, beginning offline in Houdini, the place we generate splines immediately onto the participant’s skeletal mesh. When exporting these splines into Graphite, we deal with every management level alongside the spline as a person particle.
Simulating particle positions in Houdini. These are solely used as goal positions within the engine and the expansion movement will probably be re-simulated dynamically throughout runtime.
At runtime, our programmable particle system controls how these components behave over time. At first, the splines drift freely in area, then steadily information again towards their goal positions on the character mesh.
We wished the participant to seem like they’re bodily reforming from a pool of shifting “goo.” Marching Cubes gave us that viscous, solid-surface look, and controlling it with particles allow us to construct a sequence the place the participant types from separate strands into a personality.
Marching cubes constructed from particle splines
Very similar to the splines that generated the goo floor, we are able to additionally emit volumetric density as properly. Within the spawn sequence we positioned plenty of particle splines close to the participant location and spawn volumetric fog from them to simulate rising steam or smoke.
Volumetric fog emitted from particle splines
As a closing contact, we added spark particles that collide with the participant character, utilizing a signed distance discipline computed from the participant’s collision capsules. The programmable particle system once more gave us flexibility right here: the participant attracts particles, however as soon as they get too shut, the participant mesh repels them, serving to promote the look of rising from scorching, lava-like liquid.
Particles colliding with participant capsule SDFs
Right here’s every little thing mixed. Each ingredient is simulated at runtime, at 60 fps on base PS5, with no baked simulation property. This lets us ship a number of spawn animations, every with slight randomization so it seems just a little totally different each time the participant wakes up.
Closing participant spawn sequence
An ever-evolving improvement journey
Studying by what Risto, Sharman, and Konsta broke down right here, the purpose for us and our expertise has at all times been the identical: each simulation, each impact, each rendering resolution exists to make you are feeling one thing whenever you play.
Making video games means believing in one thing you’ll be able to’t but show, and the one individuals who can ever affirm it are the gamers themselves. Saros gamers advised us, in their very own phrases, that what we constructed mattered. And which means every little thing to us.
Our video games will hold informing the expertise we develop for Graphite, at all times showcasing what PlayStation as a platform can do. We will’t wait to share that future with you.



