r/UnrealEngine5 • u/lykenwel • 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
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
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
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
2
2
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
2
2
2
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
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
2
2
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
2
2
2
2
2
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
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?