Not signed in
Copyright © 2026 Unity Technologies
Hi, After investigating your ShaderGraph setup (Add → Multiply → Multiply → Vertex Position), here's what we found: Why it works in Play Mode but not on Vision Pro? In Unity Editor Play Mode, ShaderGraph runs as compiled HLSL with full float32 precision. On both the visionOS Simulator and Vision Pro device, ShaderGraph is converted to MaterialX by PolySpatial and handed off to RealityKit. Metal-based shaders are not permitted on visionOS. Why the Simulator didn't catch it? The Simulator runs on the Mac's GPU (float32, looser precision), while the Vision Pro hardware (M2 + R1) may use float16 in certain rendering paths. Precision-related artifacts like this one may only surface on the physical device — the Simulator isn't a reliable environment for catching this class of bug. [Root cause] This is a compounding floating point error in MaterialX's vertex displacement handling, confirmed through progressive testing: ×(1,1,1) → values stay within safe range → no artifact ×(2,2,2) → values begin to exceed MaterialX's reliable threshold → artifact appears Your setup: ×(100,100,100) then ×(4,4,4) → each Multiply compounds the floating point error further, pushing values far out of range → severe artifacts This is not a code-side bug — it is a ShaderGraph authoring issue. [Recommended fix] The simplest fix that keeps your existing graph structure intact is to add a Divide node at the end to bring the value back into a safe range before it reaches Vertex Position: Add → Multiply(4,4,4) → Multiply(100,100,100) → Divide(500,500,500) → Vertex Position https://drive.google.com/file/d/1yM8zEOpc0qu-uVD7k75SJExr1r3H1myL/view?usp=sharing This eliminates the artifact while preserving the same visual result. We verified this fix on physical hardware. https://drive.google.com/file/d/1Y1H--esnGvUYemZ3cOJbqSkJfWRgQvM0/view?usp=sharing [Additional recommendations] * Keep Vertex Position inputs close to the -1 to 1 range where possible — large values combined with multiple operation steps are the main trigger for compounding floating point errors in MaterialX. * Use the MaterialX Keyword node to define separate graph paths for Unity (HLSL) vs visionOS (MaterialX) if the logic needs to differ between platforms. * Always validate on physical hardware for shaders involving vertex displacement — the Simulator may not reproduce precision-related issues. Let me know if you have any questions!
How to reproduce:
1. Open the attached “IN-143115.zip” Project
2. Build and Run the “ReproScene” on Apple Vision Pro
3. Observe the Player
Actual result: Pixelated visual artifacts are visible and not Fade In effect
Expected result: Smooth fade in animation and no visual artifacts
Reproducible with: 2.4.3 (6000.0.75f1), 3.1.5 (6000.3.16f1, 6000.4.8f1, 6000.5.0b9, 6000.6.0a5)
Testing Environment: macOS 26.4.1 (M3 Pro), Apple Vision Pro 26.4
Note: Not reproducilbe in Editor or VisionOS Simulator
Sign in to see your voted issues