Hologram effect - Death Stranding case study

Hello there! First post on this wonderful website, I hope I will not disappoint anyone!

I’ve been recently watching some gameplay videos from Death Stranding, and I gotta say that the tech in this game is crazy! The level of detail of each thing is incredible…
And one effect caught my eye, which is the hologram effect, specially the version when the player is inside a building talking to remote NPCs.

Death-Stranding-Holograms-Unlock-Add-Celebrities-to-Constructions

So I was like “what if I recreate it inside Unity?”, challenge accepted!
I went with two main shaders, one for the 3d model, projected inside a render texture, and one on the basic plane, shown on the actual scene. This would allow me to create a perfect outline effect all around the character, without having to deal with pushing vertex normals…

And there is the final clip I made:

And some closeup screenshots:


If you’re curious about some aspect from the effect, feel free to ask any question. I used Amplify Shader Editor on legacy rendering pipeline, with some free assets and the help of the Animator and Cinemachine.
A breakdown is coming up on this thread as well.

Thank you for reading me, hope you liked it!
The C.reator.

11 Likes

How did you do it? Can you talk about the production process?

1 Like

Sorry for the delay, here’s the process explained.
I’m not sure if they had two parts inside the real game but I went like this:

  • First there is a 3d model somewhere in the world, viewed by a camera, rendering the result into a render texture. In this 3d model I have a special shader that will do the vertex noisy offset (which can be seen as transmission issues), and scanlines. Scanlines felt to be part of the 3d model, so I added them at this step.

3d model:

shader (the scanlines are messy, there should be a better way to do it) (big file, open it on another tab to zoom into it):

  • The second part is the hologram itself. I use a simple quad with a custom shader on it. The shader will use the render texture as a base, and will put different things on top of it:
    • an outline (I think in DS they did it differently, as the line appears inside the 3d model as well)
    • color correction
    • while noise effect (I’m not sure about this one, in DS it looks like it’s also put on the 3d model)
    • chromatic aberration (which is not on DS, at least on this hologram, but I love doing it ^^)

The outline is a multisampling of the texture with a small offset in 4 directions, that will give a thicker version of the texture, subtracting by the alpha of the base texture will give the outline.

float finalA = 0;
finalA += tex2D(_MainTex, uv + float2(offset, 0)).a;
finalA += tex2D(_MainTex, uv + float2(-offset, 0)).a;
finalA += tex2D(_MainTex, uv + float2(0, offset)).a;
finalA += tex2D(_MainTex, uv + float2(0, -offset)).a;
return saturate(finalA);

I put this on a custom expression node, as it avoids dealing with a lot of nodes.

For the chromatic I simply sample 3 times the texture with an offset and extract R G and B individually, then combine them and add it to the base texture. I also have a custom chromatic UV that is shifting with a mask I made, to add some variety on the effect.

The white noise is juste a noise texture panning randomly with a mask panning vertically that will remove a part of the noise.

Around that I made a simple hologram fake light, with a custom mesh and a custom texture:
fake_light_mesh

There is also some “plus” floating in the air, I used a basic tiled texture with a simple shader that will shake the UV:

Finally I used Cinemachine to add some fake random movement and add a bit of life, and made a animation to trigger everything for the last shot.

Feel free to ask me more questions if you want more details on a specific point.

Cheers!

4 Likes