1. Visual Inspiration
Following my previous Halftone and Cross-Hatching experiments, I began exploring a simpler black-and-white rendering style: Soft Two-Tone Shading.
Unlike the previous tests, which relied on procedural patterns to represent light and shadow, this experiment focuses on tonal separation and smooth transitions. I wanted to enhance the contrast while preserving the original lighting, creating a visual style inspired by black-and-white photography and X-ray imagery.
For Rushing Place, this approach could reduce visual distractions caused by complex textures and strengthen the atmosphere through lighting and spatial depth.

2. Technical Development
This experiment was developed using a Post Process Material in Unreal Engine 5, combining grayscale conversion, two-tone shading, and depth-based masking.
Grayscale Conversion
First, I used SceneTexture (PostProcessInput0) to capture the rendered scene and connected its Color output to Desaturation, setting the Fraction to 1 to remove all colour.
I then used Component Mask (R) to extract the grayscale information for further brightness calculations.
Node connection:
SceneTexture → Desaturation → Component Mask (R)
Two-Tone Shading
To separate the image into light and dark regions, I created two grayscale calculations.
Dark Region:
Grayscale → Multiply (DarkRange: 0.4)
Light Region:
Grayscale → Multiply (LightRange: 0.18) → Add (LightMin: 0.8)
These operations remap the original grayscale values into two distinct brightness ranges, increasing the contrast between light and shadow.
I then used SplitThreshold (0.5) and TransitionSoftness (0.15) to control the boundary between these regions.
These parameters were connected to Subtract and Add nodes to calculate the minimum and maximum values for a SmoothStep node.
The grayscale value was connected to the SmoothStep Value input to generate a smooth brightness mask.
Finally, I used a Lerp node to blend the dark and light results, with the SmoothStep output controlling the Alpha input.
Node connection:
Grayscale → SmoothStep → Lerp (DarkResult / LightResult)
Unlike Step, which creates a sharp boundary, SmoothStep allows a gradual transition between the two tonal regions, maintaining strong contrast while producing softer shading.
Depth-Based Masking
To further control the appearance of foreground and background elements, I used SceneDepth to obtain depth information from the scene.
First, I connected ScreenPosition to the UVs input of SceneDepth.
I then used BackgroundDepth (5000) and BackgroundFade (1000) with Add and Subtract nodes to define the depth transition range.
These values were connected to SmoothStep to generate a BackgroundMask.
Node connection:
ScreenPosition → SceneDepth → SmoothStep → BackgroundMask
The BackgroundMask was then inverted using OneMinus (1-x) to create a ForegroundMask.
Based on these masks, I further experimented with Power, Subtract, and Multiply nodes to adjust the mask distribution and explore depth-based edge transitions.
X-Ray and Glow
To explore a more experimental visual appearance, I also developed an X-ray-inspired brightness processing branch.
First, I used a Power node with XRayContrast (1.6) to adjust the grayscale contrast.
The result was then multiplied by XRayOpacity (0.75) to control the intensity of the effect.
I also introduced GlowStrength and EdgeGlowStrength parameters to explore brightness enhancement and depth-based edge effects.
These adjustments provided additional possibilities for controlling contrast, spatial depth, and the overall visual atmosphere.

3. Visual Experiment
After building the material, I focused on adjusting several parameters to observe their influence on the final image:
* SplitThreshold: Controls the brightness level separating light and dark regions.
* TransitionSoftness: Controls the smoothness of the tonal transition. Lower values produce sharper boundaries.
* DarkRange / LightRange: Adjust the brightness distribution within the dark and light regions.
* BackgroundDepth / BackgroundFade: Control the depth boundary and transition between foreground and background elements.
By adjusting these parameters, I could explore different visual results, ranging from soft grayscale shading to stronger black-and-white contrast.
Compared to Halftone and Cross-Hatching, this technique reduces repetitive textures and places greater emphasis on the scene’s lighting and spatial structure.


4. Reflection
This experiment helped me better understand how grayscale remapping and SmoothStep nodes can be used to create stylised lighting effects in UE5.
One of the main challenges I encountered was balancing strong contrast with the preservation of visual details. Initially, the tonal separation was too strong, causing some details to disappear, particularly in darker areas. To address this, I repeatedly adjusted SplitThreshold and TransitionSoftness, aiming to maintain clear contrast while creating more natural transitions between light and shadow.
Another challenge was controlling the depth-based masks. Since objects were positioned at different distances from the camera, a fixed BackgroundDepth value did not work consistently across all scenes. I experimented with BackgroundFade and other mask parameters to reduce abrupt transitions between foreground and background elements.
Compared to my previous Halftone and Cross-Hatching experiments, this rendering approach produces a cleaner image with fewer complex textures, placing greater emphasis on lighting and spatial structure.
For Rushing Place, I believe this style could help create a sense of psychological pressure through strong tonal contrast. However, it is important to avoid excessive simplification that could reduce visual clarity.
Overall, this experiment showed me that stylised rendering is not only about creating a distinctive visual appearance, but also about finding a balance between artistic expression, technical control, and visual readability.