The SDK's standard shader VRChat/Mobile/MatCap Lit is broken. It's looks fine when you look at it from the side, but it's broken when you look on object from bottom or from upside:
It seems, that's happens due to wrong matcap UV calculations: in float2 matcapSample(float3 viewDirection, float3 normalDirection) function in the shader (VRChat-Mobile-MatCapLit.shader) there is a line:
half3 worldViewUp = normalize(worldUp - viewDirection * dot(viewDirection, worldUp));
dot(viewDirection, worldUp) is 1 or -1, when viewDirection is collinear to worldUp, so worldUp - viewDirection * dot(viewDirection, worldUp) will always be zero or close to zero in this case, that means it's normal will be very "noisy" or in worst case "indefinite" as DX11 HLSL docs says: https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-normalize So all further expressions that's rely on worldViewUp is broken.
viewDirection is not camera direction, but normalized distance between vertex and camera origin, that means, when you looking at object closely and a bit downwards or upwards, and due to huge FOV of camera in VRC in VR, there is mathematically guaranteed that at least one vector pointing upwards or downwards will be in sight of view, so closest vertices and fragments rasterized from that vertices will have very noticeable distortion.