Old Camera Post Processing Shader (UE)

For a current game project I wanted to imitate the look of an old camera with a custom post processing material in the Unreal Engine. This was very inspired by ‘The Lighthouse’ (2019) which is a black and white movie. After some research I learned that this movie in turn wanted to imitate the look of orthochromatic cameras, which is to say that they don’t pick up red light very well. So while the video you see looks like it’s basic black and white, it’s basically only taking the average of the green and blue channel so as to darken the red colors.

Additionally, there are quite a few noises in there that do various things. One is being stretched vertically a lot and slowly moved downwards. This creates the dark vertical lines. Another is moved at the speed of 12 frames per second, but there is some math following it so that it only shows every now and again something. That “something” are bigger darker spots. This is to firstly imitate a much lower framerate but also to imitate random artefacts showing up in the camera. The exact same two functions comes from another additional noise which is manipulated so that it shows much more but tiny white spots. It too runs at twelve frames per second.

Lastly, I had a problem with objects simply looking too sharp, especially when they were further away. After a lot of experimenting with noises again, I realized that this was not going to solve my issue. Depth of Field just didn’t feel right either. I came up with a solution, although I know it won’t work in every scenario yet. What I did was this: Every single pixel randomly takes the color of a neighboring pixel. That was it. Firstly, it automatically seems to create a bigger offset the further away an object is. Secondly, it’s rather cheap. Thirdly, it creates a weirdly noisy image without it looking noisy. The reason why I said it won’t work in every case is because this effect of course changes depending on the screen resolution, and that is not quite what I want. I assume one solution could be to not full-on switch the colors of pixels, but to lerp between them based on the resolution. I have not yet tried that though.

I will keep updating the shader here if there’ll be major changes.

Leave a comment