deleted

I’ve looked into VRM4U on UE. Materials alone will not allow you to achieve high-quality, performant NPR.

There are several shading methods in VRM4U. The one that offers the best NPR results is one where you have two overlapping models, with one acting as a shell that renders the inside model via post-processing (like a looking glass with a filter). Considering that NPR will usually require an extra model for the outline using inverted hull (post-processing outlines are not as reliable), if you use this shading method from VRM4U, you’ll have 3 overlapping models in total.

If you use the shader performance inspector, you’ll see that this shading method is in the red for shader complexity. It can gets towards the white (extremely bad shader complexity) if you place the camera inside the model while looking out. Comparing this shading method with any of the custom-code UE solutions, you’ll see that the custom-code solutions are generally in the green for shader complexity.

On PC, Genshin Impact does have dynamic shadows. Try walking through shadow and you’ll see it being casted on the character dynamically. The game also has a non-dynamic shadow version of its toon shader on mobile, where shadows are just either on or off depending on light exposure. The casted shadows are blended into the directional light vector-based shadows seamlessly. Not something you can do easily, or at all, in UE.

Deferred shading has many downsides for NPR, because it gives you less control over lighting and shadows. This issue is made worse with UE’s lack of custom shader integration. If you review the code for any of the custom NPR UE shaders, you’ll see the code is scattered everywhere. Even in the code, custom shading wasn’t top priority.

And even worse, with newer versions of UE, the scattered code that you were able to integrate your NPR rendering code inside of will be moved around or even removed. This can break your NPR implementation, making maintainability extremely difficult. You may even need to re-implement your solution if old rendering functionality were lost upon version upgrades.

2 Likes