Matthew Wilde
skilful.bsky.social
Matthew Wilde
@skilful.bsky.social
Visual Effects Developer at Valve
The Grandaddy show in Seattle last night, they had a slideshow of old photos taken from various places on tour mostly. The headline got a chuckle from the audience when it popped up. It was followed by a cool horse.
September 19, 2025 at 5:10 PM
I hope this was interesting, it's nice when people take an interest in how things are made. There are lots of little ideas and solutions that go into this kind of thing and it's really fun to work with the awesome people at Valve to make it happen.

p.s. we're always hiring www.valvesoftware.com/en/
Valve Corporation
We make games, Steam, and hardware. Join Us.
www.valvesoftware.com
June 13, 2025 at 9:06 PM
I don't really have anything to add about the bottle shader but do check out @doomquasar.bsky.social 's video if you haven't seen it!
www.youtube.com/watch?v=9XWx...

The CS2 version is pretty much the same, although the physics/not physics is done a bit differently.
June 13, 2025 at 9:06 PM
The caustics from the interactions come from sampling the buffer again, this time reprojected to fit the underwater geometry from the direction of the sunlight. It has its limits and the fade happens when you approach the edge of the buffer. It's also refracted in the same way as the frame buffer.
June 13, 2025 at 9:06 PM
The blue channel was originally just to add silt being kicked up but ended up used for more general long-lasting interations. It's used to carve out a path in the surface debris and the normal derived from this channel allows us to push the UVs apart a bit so it feels like you're moving it around.
June 13, 2025 at 9:06 PM
The green channel is used to define where foam should be and is combined with other textures to make it look more detailed than the buffer can handle by itself (although I wish this looked better to be honest).

You can also see here how the red channel perturbs the UVs to give it a parallax effect.
June 13, 2025 at 9:06 PM
The red channel's ripples become normals and are combined with ambient normals along with those from the surface debris and a little from the foam shape too (as we're calculating it anyway). These are then used for the lighting, reflection and refraction effects in the shader.
June 13, 2025 at 9:06 PM
Exactly as stated, the red channel is used for waves/ripples, green for foam, blue for softer and longer lasting interactions. The buffer is sampled directly in the water shader - 3 times for the surface so we convert the channels to normals too.
June 13, 2025 at 9:06 PM
The buffer is smaller still on lower settings. The reason it's not shrunk the same in both dimensions is we noticed the limitation of where it starts to look too blocky happens sooner in the vertical due to the foreshortening you usually get when looking out horizontally across the plane.
Buffer size is ¼ of the horizontal and ½ of the vertical screen resolution.

Red channel is used for waves and caustics.
Green channel is used for splashes and foam.
Blue channel is used for dust and trails on mud/junk on the water surface.

Everything is rendered using flat 2D textures.
June 13, 2025 at 9:06 PM
Interactions are where particle effects would tend to be anyway. E.g. when a character intersects the water plane a particle system is spawned containing both the splashes (normal particles) and the water interaction (water plane oriented interaction effects).
June 13, 2025 at 9:06 PM
Munoz on -1 for a double game week though
April 16, 2025 at 8:15 PM
The hardest chance. Phew!
April 16, 2025 at 8:04 PM
8 goals now so far and 1 assist 😭
April 16, 2025 at 7:24 PM
It might also be the Harold Shipman beard. Hope you're well mate!
March 23, 2025 at 10:45 PM
On reflection I blame @vizcomic.bsky.social
February 9, 2025 at 11:52 PM
I'm not even sure where I got that picture. This was the early 90s, it's not like today where people are accustomed to being able to Google pictures of Peter Beardsley's cock and balls whenever they want
February 9, 2025 at 2:26 PM