
Description
GAMEPLAY
DEMO
TUTORIAL
DOCUMENTATION
CelDither is a stylized rendering system for Unreal Engine 5 that combines advanced surface stable dithering and halftoning with powerful cel shading. It is designed to transform real time 3D scenes into comic book, retro, printed, or illustrated art styles without requiring you to replace your existing lighting system.
CelDither works with all light types and supports Lumen.
Unlike regular screen space dithering methods, CelDither projects its patterns onto the surfaces of objects. This helps the patterns remain attached while the camera moves instead of sliding across the screen.
Static objects are handled through BP_CelDither without requiring material changes. Moving objects are supported through the included MF_CelDither Material Function, which generates stable patterns in local space or UV space and passes them to the shader through the Specular GBuffer data channel.
Nanite is also supported.
Note: CelDither is written in HLSL. All essential controls are exposed through BP_CelDither and MF_CelDither, allowing you to customize the effect without editing the shader code. However, modifying the shader or pattern library requires knowledge of the shader language.
FEATURES
Surface Stable Dithering and Halftoning: Supports worldspace triplanar projection for static objects and localspace triplanar or UV based projection for moving objects. This keeps patterns attached to surfaces as the camera or object moves, instead of sliding across the screen or through the geometry.
Continuous Distance Scaling: Automatically adjusts the pattern size as the camera moves closer or farther from an object. Instead of suddenly switching between different pattern sizes, CelDither smoothly blends from one scale to the next. This keeps the pattern readable at different distances and prevents noticeable popping.
Lighting Reactive Patterns: CelDither combines celshading and dithering in a way that the patterns becomes part of the actual transition between lighting bands rather than being placed over the final image. This allows dithering and halftoning to react naturally to the lighting and shading of the scene.
Ten Unique Patterns: Includes a structured Bayer ordered dithering pattern and nine additional halftone designs. Patterns can be changed globally, assigned to individual static objects through Custom Stencil IDs, or configured independently for moving object materials.
Dedicated Sky Support: CelDither includes separate controls for both sky cel shading and sky dithering. The dither pattern uses stereographic projection, allowing it to work with both Sky Atmosphere and Volumetric Clouds.
Moving Object Support: Includes MF_CelDither, a dedicated Material Function for moving objects. The function generates the pattern before the object is rendered and passes it through the Specular GBuffer data channel so the shader can read it. This prevents the pattern from sliding across the surface while the object moves. Different moving objects can use different patterns and settings through their own Material Instances, even when they share the same Movable Stencil ID.
Advanced Cel Shading: Includes a luminance based celshading system that works with all light types and supports Lumen. It can be applied to the final scene color for a stronger celshaded look or restricted to the lighting, preserving more of the original textures and base colors. Metallic materials receive their own dedicated celshading controls.
Minimal Art Pipeline Disruption: Static objects work with CelDither out of the box through BP_CelDither, so you do not need to replace your existing materials or rebuild your lighting system. Moving objects only require the included MF_CelDither Material Function to be added to their parent materials and connected to the Specular input. This keeps integration simple while preserving your existing production workflow.
...and much more: Read the documentation for more details.
LIMITATIONS
Forward Shading is not supported. CelDither relies on GBuffer data, which is only available in the deferred renderer.
Mobile rendering is not supported.
Translucent materials are not supported.
Substrate is not fully supported. CelDither was built with the legacy material system in mind. If you have to use Substrate, the Blendable GBuffer configuration may yield better results than Adaptive GBuffer. Under Adaptive GBuffer MF_CelDither may not work correctly on some materials.
The moving object system uses the material’s Specular input, so materials that rely heavily on custom Specular values may require additional adjustment.
The system uses Triplanar Projection in world space by default which can cause the pattern to stretch at certain angles. If this is a problem, using MF_CelDither may yield better results as it can use local space Triplanar Projection and mainly UV based projection.
UV based projection can be affected by UV seams, stretching and inconsistent texel density.
Important Note: Set Custom Depth-Stencil Pass to Enabled with Stencil. It is required for the system to work correctly.
Note: Assets and environments shown in the demonstration images are not included.













