On Nanite meshes, placing a VertexInterpolator node in a material graph without using it (unconnected, or routed through a disabled static switch) silently breaks the Opacity Mask and the material rasterizes as fully opaque. Connecting at least one interpolator restores correct masking. Non-Nanite paths are unaffected.
Turning off r.Material.UseShaderCompilationParameters fixes the issue therefore I suspect that it was introduced in CL 51712304 "Fix conservative parameters leading to excessive amount of shaders being compiled." submitted by @cristian.bobescu
Root cause summarized by LLM (unverified):
Two independent sources disagree on whether the material uses a vertex interpolator:
With r.Material.UseShaderCompilationParameters=1, the two diverge:
The runtime requests a vertex-UV / vertex-programmable Nanite raster+shading bin that was never compiled, the lookup misses the programmable permutation, and rasterization falls back to the fixed-function opaque path - which never runs the pixel discard. The pre-existing comment at NaniteShared.h:470-473 already notes this class of conservative-flag/static-switch mismatch.
Steps to Reproduce
Now you have a couple workarounds how to get opacity mask working again but with some drawbacks:
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-383600 in the post.
| 0 |
| Component | UE - Rendering - Architecture |
|---|---|
| Affects Versions | 5.8 |
| Created | Jun 8, 2026 |
|---|---|
| Updated | Jun 9, 2026 |