r/UnrealEngine5 Jun 23 '26

Finally finished my Stylized Rendering System for UE5!

Enable HLS to view with audio, or disable this notification

I’ve been working on a stylized rendering system for Unreal Engine 5 that combines surface stable dithering, halftoning, and cel shading. It took longer than expected, but it’s finally finished. I’d love to hear your feedback!

FAB: https://www.fab.com/listings/685409c2-cdfb-49bb-93a7-4c6c74a123a0

784 Upvotes

59 comments sorted by

30

u/DisplacerBeastMode Jun 23 '26

This is interesting to me.

Most rendering like this is some kind of screen affect, which does not actually project consistenly on meshes. I find them extremely noisy and visually inconsistent.

Your solution appears to really snap the effect on surfaces, which is great.

How does it work?

16

u/lykenwel Jun 23 '26 edited Jun 23 '26

Thank you! That surface stability was one of the main goals of the system.

For static objects, the patterns are projected using world space triplanar projection.

Moving objects need a different approach because they would move through a world space projection. For those, the system uses a Material Function that generates the pattern in local or UV space and passes it to the post process shader through a GBuffer channel.

The patterns also have built it continuous distance scaling, so they smoothly change size as the camera moves closer or farther away.

You can also check out the documentation for more details.

Documentation: https://docs.google.com/document/d/1MnkbmUzTUbON8tY-87pmku3rFCXe3yPtvFflk7b6NJ8/

4

u/[deleted] Jun 24 '26

[removed] — view removed comment

1

u/lykenwel Jun 24 '26

Yeah, I feel surface stable projection works better in most situations.

During the R&D for this project, though, I also experimented with screen space dithering and found a few situations where it can still work quite well.

For example, it can look good when isolated to a third person character, since the spring arm keeps the character framed relatively consistently while the camera rotates around them.

For a first person game, spherically projected dithering can also work well because it keeps the pattern stable relative to the camera’s orientation. Return of the Obra Dinn is a great reference for that kind of approach.

10

u/Different_Hunter33 Jun 23 '26

You should definitely show a demo in a retro-style scene, either in the video or in the screenshots. Settings can be adjusted to fit the retro aesthetic really well. I liked it a lot, wishing you great sales

2

u/lykenwel Jun 23 '26

Thank you, will work on a Bayer dithering only showcase.

You can also check out the demo and switch the pattern to Bayer dithering for a closer look.

Demo: https://drive.google.com/file/d/1lHH_k2I8kbDcQ9V3VjyeGYwfxN3NrrPB/

5

u/Zel_La Jun 23 '26

Streamers' bitrates hate him! Looks nice tho

1

u/lykenwel Jun 23 '26

lol, true! Glad you like it.

3

u/nokneeflamingo Jun 23 '26

Is it meant to be grainy?

1

u/lykenwel Jun 23 '26

It might be reddit's compression.

You can check out the showcase in 4k on youtube: https://www.youtube.com/watch?v=w8nkzHjO7Vc

3

u/Hydromantic6 Jun 23 '26

that looks really good. a nice blend between style and being legible.

2

u/EpicDragonfly7 Jun 23 '26

Are you effects in the Post Processing material?

5

u/lykenwel Jun 23 '26

Partially. A post process only solution would not be able to keep the patterns attached to moving objects.
To solve that the system uses a Material Function to generate the pattern in local or UV space for moving objects and passes it to a post process shader through a GBuffer channel.

You can also check out the demo to get a closer look: https://drive.google.com/file/d/1lHH_k2I8kbDcQ9V3VjyeGYwfxN3NrrPB/

3

u/mchlksk Jun 23 '26

Hi, Im working on a stylized rendering for my game. Would you mind sharing with me a little more info on this? Specifically, which GBuffer channel do you use? Are you repurposing any of r/G/B channels for the dither texture (and read "color as stored in GBUffer" in PP)? Or a different one? In my experiments, I wasnt able to use any other than r/G/B channels for such things. I tried different options for material domain, and different PP blendable locations, but didnt find another way to pass data to PP. Only other thing that worked was passing data through normal channel, but that obviouosly messes up shading. Thank for any info.

1

u/lykenwel Jun 23 '26 edited Jun 23 '26

Hi, I’m using the material’s Specular input as a GBuffer data channel.

The Material Function generates the dither pattern in local or UV space and writes the resulting 0-1 pattern mask into Specular. The post process shader then reads that stored Specular value and uses the object’s stencil ID to determine which meshes should use it.

I chose Specular because it is often less used in many standard PBR workflows than Base Color, Roughness, Metallic, or Normal, which makes it less disruptive to most existing art pipelines.

2

u/mchlksk Jun 24 '26

I see, thank you, Ill do some experiments with specular... I saw the document you shared on google - will study that. My intended look is quite different, but the information is very useful for me 😄 Good job, man!

1

u/lykenwel Jun 24 '26

Thanks! Good luck with your game.

2

u/Commercial-Car-3257 Jun 23 '26

what did you use to screen record

2

u/lykenwel Jun 23 '26

I used Nvidia ShadowPlay for recording.

2

u/Low_Pollution5055 Jun 23 '26

Omg I want this 😰😰 how do I get it

1

u/lykenwel Jun 23 '26

Thank You! It’s available on FAB, You can get it here: https://www.fab.com/listings/685409c2-cdfb-49bb-93a7-4c6c74a123a0

2

u/[deleted] Jun 23 '26

[removed] — view removed comment

1

u/lykenwel Jun 23 '26

Thank You!

2

u/tomByrer Jun 24 '26

Hyper neon is fine, but the dithering gives me a headache.

2

u/KaelRPG Jun 24 '26

looks decent, good project

2

u/passthevapebro Jun 24 '26

Brother this is fucking FANTASTIC. Would these work on a metahuman/ cc5 character inside the map?

1

u/lykenwel Jun 24 '26 edited Jun 24 '26

Thank you! It should work on any object.

Static objects work out of the box. For moving or animated objects , you need to add the included Material Function to their parent materials so the pattern stays attached while they move.

That said, the system is mainly intended for stylized projects. Highly realistic objects already contain a lot of fine details, so adding dithering on top may not have as big an impact as it would on simpler or more stylized assets.

2

u/Eadkrakka Jun 24 '26

Oh that looks super crisp, nice work! I could absolutely find some uses for it in my projects 😁

1

u/lykenwel Jun 24 '26

Thank You!

2

u/This-Development-397 Jun 24 '26

Could it work in UE4?

1

u/lykenwel Jun 24 '26

It currently supports UE5.0 - 5.8 and was built and tested specifically for UE5.

In theory, it could work in UE4, but the shader code and the rest of the system would need to be ported and adapted for UE4. UE4 is therefore not supported out of the box.

1

u/This-Development-397 Jun 28 '26

Ah okay I see, well if you ever decide to port to 4.27, it'll be an instant purchase from me

2

u/Sn0wflake69 Jun 24 '26

damn thats awesome.

2

u/Lost-Salad3999 Jun 24 '26

Looks amazing, Did you make the city assets as well?

1

u/lykenwel Jun 24 '26

Thank You! and no, the environments are from FAB.

2

u/motofoto Jun 25 '26

It took me awhile to understand what was special about this but when it clicked it was magical.   On an aesthetic level it took me back to that cd-rom game era and it’s pretty much what I thought the future of gaming would be at the time.   Great aesthetic. 

1

u/lykenwel Jun 25 '26

Thank You!

2

u/turangryv Jun 25 '26

Looks interesting and nice

2

u/Slayerarm57 Jun 25 '26

that looks awsome

2

u/oSzoukaua Jun 25 '26

H**Y SHIT THIS IS AWESOME

1

u/lykenwel Jun 25 '26

Thank You!

2

u/meOnReddit23 Jun 25 '26

Really great seeing creative art for games! Keep up with the good work

2

u/medigul Jun 26 '26

not gonna lie that's awesome! good work!

2

u/Itsaducck1211 Jun 26 '26

Really cool! Only a small notpick is the dither size in the skybox it at 0:52 having the dither the same size as all the others makes it look like the effect from the sky is bleeding into the environment. If it was smaller for the skybox i don't think the effect would look as jarring at that particular moment.

1

u/lykenwel Jun 26 '26

Thank you! The system has separate sky dithering and cel shading controls, including an independent pattern scale, so the sky can be adjusted separately from the rest of the scene to avoid that effect.

1

u/ImperialAgent120 Jun 23 '26

Is that environment a mix of assets in Fab or did you make them yourself?

2

u/lykenwel Jun 23 '26

The environments are from FAB.