Start a new topic

Unity iOS build framerate issues for multiple cylinder trackers

Wikitude Expert Edition: version 9-9-0_210701_4980

Unity 2020.3.4f1, 2020.3.15f2, 2021.1.16f1


Tested on iPhone X running iOS 14.4


Occurs in Wikitude samples for cylinder trackers. Flat image trackers work fine and don't cause issues.


While nothing is scanned, iPhone camera FPS is a smooth 120FPS with ProMotion support.


With 1 tracker scanned, framerate drops to < 30 FPS.

With 2 trackers scanned, framerate drops to 7.5 - 15 FPS.


Moving the camera away from the trackables increases the framerate again.


On Android, the issue is not noticeable for an average user. 


Profiler shows high usage for WikitudeSDK.UpdateInternal()

iOSPlatformBridge.Wikitude.IPlatformBridge.Update()

iOSPlatformBridge.WTUnityBindings_Update()


Taking ~75 - 80 ms to process the frame.


Tried tweaking various player settings for iOS, none of which helps. Changing the resolution does not help so it doesn't seem to be a GPU problem.


Documentation for concurrent trackables states that there is a small performance overhead for each new tracker scanned, and recommended to keep to a minimum.


Seeing major performance drops when 2 cylinder trackers are scanned. 


Trackers are stored in a zip file in streaming assets and are loaded locally on device.


Expected result: Different trackers that are tracked at the same time should not increase CPU overhead so much.


Hi,


While it is expected that the overall runtime increases when multiple cylinder targets are being tracked, the performance does seem a bit slow for an iPhone X. Is it possible for you to share the targets with us? Do you get roughly the same performance when testing with our project and cylinder target? Also, you mentioned that on Android, this is not noticeable. Did you also run the profiler there and could you share the results?

Thank you,

Alexandru

Hi Alexandru,


The targets I used were the Sunflower Oil cylinder targets with the animated augmentations of it. 

Performance issues also occur when using our own cylinder targets.


This is the profiler for the Android build: (Similar results to iOS)

image


You can see big performance differences when 0, 1, or 2 cylinder targets were detected and how the framerate changes quite a lot here.


The frame time on Android is about the same as the iOS frame time, it is just less noticeable because the camera framerate for Android is usually 30 FPS (~33.33 ms) and the profiler reports about 50ms per frame for two scanned targets.


On iOS, the camera framerate should be 60 - 120 FPS (with ProMotion enabled) (~8 ms) but when the performance shows 50ms to render a frame, it is very jarring.


Is this issue reproducible on your end?

Hi,


I apologize for the late reply. We were able to reproduce this behavior on different iOS devices (iPhone XS and iPhone 8) but after consulting with the computer vision team, it seems that this is more or less expected at the moment, as the tracking is not yet optimized for tracking more than 1 cylinder.

Could you please describe the usecase you’re trying to achieve with multiple cylinder tracking, so that we can see internally how we can prioritize optimizing for it?


Thank you and best regards,

Alexandru

Login or Signup to post a comment