MixedReality-GraphicsTools-Unity
MixedReality-GraphicsTools-Unity copied to clipboard
MRTK URP support for Unity 2021.3.29+ (URP 12.1.12+)
MRTK URP support for Unity 2021 (URP 12.1.12+)
Installing MRTK in a Unity 2021 project that is using URP incorrectly produces invisible materials. When the MRTK Standard opaque shader is applied the material is incorrectly invisible. The problem is not seen in Unity 2020 projects. The problem occurs for both MRTK v2 and v3.
To reproduce
Steps to reproduce the behavior:
- Create an Unity 2021 project using the URP (3D) Template
- Using the MRTK feature tool add the standard set of assets and the Shader examples.
- Use the MRTK Upgrade URP Materials tool menu (if using v2)
- Once the install is complete view the Shader Material examples or create a new opaque material using the MRTK Standard shader
- Note that you cannot see the resulting material in either the preview or when the material is applied to a mesh (e.g. a simple cube)
Expected behavior
The Shader should display the color as stipulated in the shader settings
Screenshots
Expected (from Unity 2020)
Unity 2021
MRTK 2
MRTK 3
Your setup (please complete the following information)
- Unity Versions 2021.3.29f1 2020.3.42
- MRTK Version MRTK2 2.8.3 MRKT3 3.0.0-pre18
Target platform
- HoloLens 2, UWP
Additional context
Add any other context about the problem here.
Thank you @paulio for the bug report, we will try and reproduce this. One quick question, do you see any shader compilation issues in the Standard shader's inspector? They would appear roughly here:
No, the only thing I noticed was something about it not being batch compatible which was further down that inspector
Awesome, good to know. Also if you clone this repository and open the Unity project do you see the same issue? You can show the samples via Window > Graphics Tools > Show Samples in this repo's sample project.
I can confirm the repro works... 0.6.1
vs. Feature Tool Install Graphics Tools v0.5.12
Now to understand why, and see if the fix is available (or can be applied to) MRTK2 too.
Interesting! @shaynie you are more knowledgeable about the feature tool than I am - do you have any ideas?
I compared the shaders and they seem exactly the same, apart from, maybe the dependency on the version of URP.
Aha, it's something to do with the URP Pipeline Asset Renderer. I copied UniversalRenderPipelineAsset & UniversalRenderPipelineAsset_Render and set them as the default in Settings URP and Settings Quality. This seems to have fixed the issue.
Found it...
Change needed is from Auto to Disabled
Great catch @paulio! Sounds like we need to add extra passes to the shader to support this: https://forum.unity.com/threads/custom-shaders-make-mesh-invisible-in-urp-2021-3-22f1-solved.1422327/