Unreal Engine 4 PS1 Post-Processing Shader

In this tuto­r­i­al I want to show you a very neat post-pro­cess­ing shad­er that emu­lates the look of the PlaySta­tion 1 visu­als. It adds pix­e­la­tion as well as lim­its the col­or out­put. It’s super-easy to imple­ment and is, in fact, very fast to recreate.

1. Creating the material

First of all, you should prob­a­bly cre­ate a “Mate­ri­als” fold­er in your “Con­tent”. It’s always a good idea to orga­nize your stuff. Inside of that, cre­ate the “PS1” folder. 

Now cre­ate the material. 

Let’s call it M_PS1_PostProcess. M for mate­r­i­al, then goes the actu­al name, and the suf­fix briefly describes what type of mate­r­i­al this is.

Open it up. In the mate­r­i­al options (Details pan­el, when you have no nodes select­ed in the graph), choose Mate­r­i­al DomainPost Process:

Now go ahead and recre­ate this graph:

And let me explain some of the nodes, so you don’t get con­fused where the hell did I get them.

  • Scale is a para­me­ter, so we can change it lat­er in the mate­r­i­al instance. Give it a default val­ue of 300. Just in case you don’t know, see how to cre­ate a mate­r­i­al para­me­ter.
  • Scene­Tex­ture: PostProcessInput0 — for this one you’ll want to add a “Scene­Tex­ture” node, and in its prop­er­ties (select it and look at the Details pan­el) choose “PostProcessInput0”
  • STMul­ti­pli­er is anoth­er para­me­ter. Give it a default val­ue of 15.

2. Applying the material

  • Save the mate­r­i­al and close the mate­r­i­al edi­tor. Now cre­ate a mate­r­i­al instance.
  • Add (if you did­n’t) or find a Post­ProcessVol­ume in your scene. In the details, under “Ren­der­ing Fea­tures”, find a “Post Process Mate­ri­als” option and add one to the array. In the drop­down that says “Choose”, choose asset ref­er­ence.
  • Now assign your M_PS1_PostProcess_Inst (the default name of the mate­r­i­al instance) to asset ref­er­ence field. 

Voilà! You should imme­di­ate­ly see the changes in the viewport:

Now, if you want, you can play around with mate­r­i­al instance set­tings. Just open up the mate­r­i­al instance, and in the details pan­el check the cor­re­spond­ing fields for your Scale and Mul­ti­pli­er to over­ride the defaults, and change them to what­ev­er you like. You can go pret­ty wild with it: