You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In Build mode on Unity 6 + OpenXR 1.16.1 + D3D12 + Built-in RP + MultiPass, Unity creates the XR eye texture with msaaSamples=1 regardless of QualitySettings.antiAliasing. This produces binary alpha at silhouette edges in alpha-native transparent overlays — visible as hard aliasing on low-frequency-detail content. Textured assets (Mixamo tiger fur) hide it; flat-shaded characters expose it.
The runtime DP composes fractional alpha correctly when given soft alpha — verified independently with semi-transparent (alpha=0.5) test content.
The Preview-path equivalent of this issue was identified as a plugin bug and fixed in Fix(preview): MSAA atlas RT so silhouettes get fractional alpha #120 (the preview's atlas RT was created without MSAA via the no-MSAA RenderTexture constructor). The Build path has no equivalent code in the plugin — Unity's OpenXR loader creates the eye texture internally.
Reproduction
displayxr-unity-test-transparent repo, scene CubeTest.unity with a flat-shaded character (e.g. ghost).
None known on the plugin side without significant work (camera render hook to MSAA RT + Blit-resolve into Unity's XR eye target — non-trivial, Unity manages the eye target opaquely). Most likely root cause is in UnityOpenXR.dll (Unity Technologies' native).
Next steps
Try Vulkan as graphics API (Unity OpenXR on Vulkan historically has different MSAA handling) — blocked on Vulkan-on-Windows backend support in the plugin (separate issue).
File Unity bug if Vulkan also doesn't engage MSAA.
Summary
In Build mode on Unity 6 + OpenXR 1.16.1 + D3D12 + Built-in RP + MultiPass, Unity creates the XR eye texture with
msaaSamples=1regardless ofQualitySettings.antiAliasing. This produces binary alpha at silhouette edges in alpha-native transparent overlays — visible as hard aliasing on low-frequency-detail content. Textured assets (Mixamo tiger fur) hide it; flat-shaded characters expose it.Evidence
Runtime probe attached to
TransparentAutoSetup:QualitySettings.antiAliasing= 8 ✓Camera.allowMSAA= True ✓XRSettings.eyeTextureDesc.msaaSamples= 1 ✗displayxr.logconfirms Unity asks forsamples=1swapchain:Why it's not a plugin bug
EnvironmentBlendMode = AlphaBlendcorrectly (Player.logconfirmsXR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND (Selected)).RenderTextureconstructor). The Build path has no equivalent code in the plugin — Unity's OpenXR loader creates the eye texture internally.Reproduction
displayxr-unity-test-transparentrepo, sceneCubeTest.unitywith a flat-shaded character (e.g. ghost).QualitySettings.antiAliasing = 8,Camera.allowMSAA = true, HDR off, Forward path.m_APIs: 12000000), Built-in RP, OpenXR 1.16.1.Investigations ruled out
eye.msaa=1.allowMSAA = true: ignored by Unity's XR eye RT creation.Workarounds
None known on the plugin side without significant work (camera render hook to MSAA RT + Blit-resolve into Unity's XR eye target — non-trivial, Unity manages the eye target opaquely). Most likely root cause is in
UnityOpenXR.dll(Unity Technologies' native).Next steps