Professional Documents
Culture Documents
We’ve all been taking up hobbies this year. And while I’m sure my life has
been enriched by marathoning The Crown and astral projecting out of my
body on weekends, Matthew Wilde had a lockdown project that’s a little
more substantial: he made boozy bottle shaders for Half-Life: Alyx.
The shaders were added to the game in a May patch, and they
immediately started getting love on the internet. It’s easy to see why: they
look really, really good. The shader makes bottles appear transparent,
with liquid that reacts when you shake the bottle. Before the patch, the
bottles made a sloshing sound when shaken, but otherwise they appeared
opaque.
I wanted to find out how the shader worked, and there was no better
person to ask than Wilde himself.
Wilde is a VFX developer, and he was working at Valve when Alyx was in
development — but on Dota Underlords. He made a wine glass shader for
the Dota character Jull, which caught the attention of Scott Dalton on the
Half-Life: Alyx team. There are lots of bottles scattered around in Alyx, but
one particular level takes place in a distillery and requires the player to
interact with bottles a lot.
Developing a shader that made the bottles look full of liquid would make
the level that much more impressive. And Wilde wouldn’t be starting from
nothing, either: the game was basically done, with detailed assets and a
powerful lighting system in place.
https://www.polygon.com/videos/2021/1/6/22213232/half-life-alyx-liquid-bottle-shaders Page 1 of 7
Half-Life Alyx liquid shaders: Why they look so good - Polygon 7/1/21, 11:25
“All the bottles existed as models, and they were all beautifully textured
and they look great,” Wilde said. “And so immediately, we could see that it
was really promising.”
But with Alyx’s release date looming, there just wasn’t time to implement
the new shader without causing performance issues.
“If there was just the occasional bottle around... that probably wouldn’t
have been a problem,” Wilde told me. “But again, it was this distillery level
that had thousands of props, and thousands of bottles.”
The shader got shelved for release, and though Wilde was disappointed,
he took it in stride. Half-Life: Alyx came out on March 23, 2020. That
same day, Jay Inslee, the governor of Washington state, issued a stay at
home order that would shut down Valve’s Bellevue offices.
“It’s just that some shaders are a bit more involved than others,” Wilde told
me.
Shaders end up accounting for a lot of the details that we see. Actually
rendering something in 3D — all of the grooves and knots in tree bark, for
example — would be time-consuming and performance-heavy. But a
shader can create the illusion of tree bark, or armor, or skin, or beer
foaming in a bottle, even if the object it’s applied to is just made of
smooth, smooth polygons.
https://www.polygon.com/videos/2021/1/6/22213232/half-life-alyx-liquid-bottle-shaders Page 2 of 7
Half-Life Alyx liquid shaders: Why they look so good - Polygon 7/1/21, 11:25
Now ensconced at home, Wilde returned to the shader. Alyx already had a
lighting system, so what the shader needed to do was figure out what
values to use when the lighting was calculated. The shader takes into
account inputs like base colors, textures, and reflections for both the
liquid and the bottle itself, and then combines all them together.
“And then what you output is another color,” Wilde said. “You do it for
every pixel, and you get a result at the end.”
The shader is, first and foremost, the result of obsessive observation.
Wilde quite literally sat in his basement, picking up and playing with
bottles to see how liquid behaved.
“You look at a shader and you see all the work that’s gone into it, and it’s
pages and pages of stuff, but that has never just kind of flown out of
someone’s mind, you know, straight into the file,” Wilde told me. “It’s
always been a case of building it up slowly... and then getting ideas as you
https://www.polygon.com/videos/2021/1/6/22213232/half-life-alyx-liquid-bottle-shaders Page 3 of 7
Half-Life Alyx liquid shaders: Why they look so good - Polygon 7/1/21, 11:25
Wilde would make observations of the real-life bottle — the foam that
develops on beer, or the way liquid catches the light — and then tweak
those inputs in the shader so that his creation reflected reality. It was like
creating a pointillist painting, pixel by pixel. Notably, there’s no liquid
simulation happening here.
“It’s really made to behave how I have determined that it should behave,
not anything more realistic than that,” Wilde said. “There is no simulation,
it’s just observed.”
That’s why the wording in Alyx’s patch notes is very intentional: “Bottles
now appear to have liquid inside them that sloshes around as you shake
them.”
This booze shader uses a cube map to create reflections, but also to
create the illusion of refraction — which is light passing through an object,
rather than bouncing off it.
https://www.polygon.com/videos/2021/1/6/22213232/half-life-alyx-liquid-bottle-shaders Page 4 of 7
Half-Life Alyx liquid shaders: Why they look so good - Polygon 7/1/21, 11:25
The bottles are not transparent. But they look transparent, because Alyx is
pulling the cube map for your approximate coordinates, and projecting
that pre-baked image onto the side of the bottle you’re looking at. It
shows you a distorted view of the space, but it’s a wild illusion that
absolutely works.
“Using them for a bottle where things are already a bit distorted, where
everything’s a bit dirty... it’s actually a really good way of doing it,” said
Wilde. “I think it also helps that when you’re looking at glass and liquid, no
one knows how it should look, just as an instinctive thing. You just accept
when you start looking through glass and things go a bit weird.”
If you stick a wine bottle in your face, you’ll see that it is, in fact, empty.
Gif: Polygon via Valve
The cube map image is doubly distorted where the shader says there’s
liquid. Wilde combines reflections on top of reflections to make it seem
like there’s two surfaces: the glass bottle, and the liquid “inside” it.
And that’s how you get the illusion of liquid inside a transparent glass
bottle — when in fact, the bottle is empty and opaque.
Fake physics
https://www.polygon.com/videos/2021/1/6/22213232/half-life-alyx-liquid-bottle-shaders Page 5 of 7
Half-Life Alyx liquid shaders: Why they look so good - Polygon 7/1/21, 11:25
What I love most about this shader is that it’s detailed enough to pass our
mental threshold of realism — even though, again, there’s no simulation
involved.
It’s this wobble that initially delayed the shader, as there wasn’t an
efficient way to get the information into the game. In the end, the
performance cost was negligible, because Wilde’s colleagues at Valve
realized they could store data in the shader’s vertex color.
The vertex color is “a relic from an earlier time before realistic lighting and
textures,” Wilde told me in an email. “In this instance, it was just a color
that was applied across the whole thing. And we didn’t use that color for
anything.”
https://www.polygon.com/videos/2021/1/6/22213232/half-life-alyx-liquid-bottle-shaders Page 6 of 7
Half-Life Alyx liquid shaders: Why they look so good - Polygon 7/1/21, 11:25
direction of gravity, and foam or bubbles, are all stored in these unused
RGB channels. When I wave a bottle around wildly, the velocity of the
bottle is used to drive agitation, making the liquid appear to slosh around.
Bubbles or foam are also tied to velocity, and gradually decay when
movement stops. But all the most intensive calculations — lighting,
reflections, shadows — are already being done for every object in the
game, regardless of whether the player is going nuts with bottles or not.
Why it succeeds
Although working on a lockdown project involving copious amounts of
alcohol might sound isolating, when it came to implementing the shader
and cracking the performance issue, Wilde wasn’t alone — Alyx’s visual
effects are a team effort.
“The success of it comes from, first of all, the fact that the assets
themselves are just so good to start with,” Wilde said. “When you’re
writing a shader, certainly this kind of shader... you’re piggybacking onto
an existing pipeline and existing lighting setups. So it’s just about trying to
exploit what’s there as best you can.”
Shaking a bottle might be simple to do in real life, but it’s not so simple to
make a virtual bottle respond in kind. With time and frankly impressive
powers of observation, Half-Life: Alyx’s boozy bottles came to feel so
right that we don’t need to suspend disbelief when we see them. It’s the
kind of clever, creative thinking that game development will always benefit
from, no matter how advanced technology gets.
https://www.polygon.com/videos/2021/1/6/22213232/half-life-alyx-liquid-bottle-shaders Page 7 of 7