Adaptive Performance Package

Hi all,

During GDC 2019 we announced and release Adaptive Performance and would love to hear your feedback and help you integrate it into your projects.

For detailed information please also read the blog post and the package documentation.

If you have questions or feedback please post below. For bug reports, please use the Unity built-in bug reporter.

Enjoy and let us know if you use it for something great, we always love to hear about success stories.

-db

Breaking News:

We are happy to announce that Adaptive Performance 4.0.0 and Samsung Android 4.0.0 are now available. This verified release comes with some new features to improve your device performance. It comes with more samples as well which can be use on the Samsung device but also in the Unity Editor in combination with the Device Simulator:

  • Adaptive Layer Culling
  • Custom Scaler
  • Adaptive Decals
  • Adaptive Physics
  • Visual Scripting support
  • Additional samples

Adaptive Performance Talks

Unite Now 2020 - all of Duty Mobile & Adaptive Performance
Unite Now features a talk about Adaptive Performance called: Build Better AAA Mobile Games with Adaptive Performance


Call of Duty Mobile & Adaptive Performance
During Samsung Developer Conference 2019 Samsung and Unity presented Call of Duty Mobile optimizations using Adaptive Performance to increase the stability of the game on Samsung devices.

Call of Duty Mobile & Adaptive Performance
During Unite Copenhagen 2019 Samsung presented Call of Duty Mobile optimizations using Adaptive Performance to increase the stability of the game on Samsung devices.

https://www.youtube.com/watch?v=r-kICWS-XWI

GDC 2019 and Megacity
During GDC we gave several talks about adaptive performance. Please see the GDC Vault Samsung talk, which includes Adaptive Performance, here. Alternatively, please see the talk from the Unity Booth on our youtube channel here.

https://www.youtube.com/watch?v=3xzNs1JkyJk

Presentations

You can find a slidedeck which describes details of Adaptive Performance here.

Version History

The current version (5.0.0) of Adaptive Performance is compatible with the following versions of the Unity Editor:

  • Unity 2023.1+

The old version (4.0.0) of Adaptive Performance is compatible with the following versions of the Unity Editor:

  • Unity 2021.2+

The old version (3.0.2) of Adaptive Performance is compatible with the following versions of the Unity Editor:

  • Unity 2021.2+

The old version (2.2.3) of Adaptive Performance is compatible with the following versions of the Unity Editor:

  • Unity 2019 LTS+

The old version (1.2.0) of Adaptive Performance is compatible with the following versions of the Unity Editor:

  • 2019 LTS+

The old version (1.1.9) of Adaptive Performance is compatible with the following versions of the Unity Editor:

  • 2018 LTS+
4 Likes

Hi
I am very interested in using Adaptive Performance for VR projects, for it, Is it VR Ready?
Thanks for your time
Regards
Alejandro

[quote=“castana1962”, post:2, topic: 737426]
Hi
I am very interested in using Adaptive Performance for VR projects, for it, Is it VR Ready?
Thanks for your time
Regards
Alejandro
[/quote]

Thanks, Alejandro,

as mentioned in the blog the current preview targets Samsung Galaxy devices and is optimized for the Samsung S10 with more devices of the Samsung Galaxy family to follow. Our goal is to enable as many devices as possible to use Adaptive Performance in the future. The package is open source and you/anyone can take a look at the implementation at any time and add custom provider if necessary. What VR environment are you planning to use?

1 Like

Looking hot. Very cool feature!

...

I know desktops and consoles aren't the target markets but it seems quite handy to be able to see if the bottleneck is GPU or CPU at runtime for any platform, this information seems like something other platforms could use too?

1 Like

[quote=“hippocoder”, post:4, topic: 737426]
Looking hot. Very cool feature!

I know desktops and consoles aren’t the target markets but it seems quite handy to be able to see if the bottleneck is GPU or CPU at runtime for any platform, this information seems like something other platforms could use too?
[/quote]

True! It would be very handy to have that info available during runtime on any platform. In Adaptive Performance, we currently use the GPU frametime exposed by the Samsung GameSDK and compare it with CPU time to implement the feedback for the events (simplified). This is not optimal and can be improved, but that’s what we use right now. Depending on information on other platforms this could be implemented similarly. Said that, the package is open source and it’s designed to add any data provider you wish, so it should be possible to extend it, even if we don’t support the target platform yet.

1 Like

[quote=“David-Berger”, post:3, topic: 737426]
Thanks, Alejandro,

as mentioned in the blog the current preview targets Samsung Galaxy devices and is optimized for the Samsung S10 with more devices of the Samsung Galaxy family to follow. Our goal is to enable as many devices as possible to use Adaptive Performance in the future. The package is open source and you/anyone can take a look at the implementation at any time and add custom provider if necessary. What VR environment are you planning to use?
[/quote]
Hi David
First thanks to answer me so fast !!!
On the other hand and answering your question, I am developing VR project for Oculus ( Rift/Go and hopeful Quest soon since that I think that this one will create a VR massive market) and HTC Vive/Valve.
Since I think that the 3D Environment/Assets used in VR project are Low Poly( low quality), I am looking for some way to improve the VR Quality and its Performance and I would like to build them with DOTS and Adaptive Performance (taking as reference Megacity project).
To be honest with you, It is very hard for me learn Adaptive Performance and ECS since that there are not many tutorials
that teach us more deeply about both topics ( I saw some GDC 2019 conferences about them but unfortunate I cannot find them in the Unity Youtube Channel)
Thanks to let me tell you about my VR projects and sorry for my little English
Cheers
Alejandro

[quote=“David-Berger”, post:5, topic: 737426]
It would be very handy to have that info available during runtime on any platform. In Adaptive Performance, we currently use the GPU frametime exposed by the Samsung GameSDK and compare it with CPU time to implement the feedback for the events (simplified).
[/quote]

Have you looked into integrating it with Unity’s existing FrameTiming APIs?
https://docs.unity3d.com/ScriptReference/FrameTiming.html
https://docs.unity3d.com/ScriptReference/FrameTimingManager.GetLatestTimings.html

[quote=“castana1962”, post:6, topic: 737426]
Hi David
First thanks to answer me so fast !!!
On the other hand and answering your question, I am developing VR project for Oculus ( Rift/Go and hopeful Quest soon since that I think that this one will create a VR massive market) and HTC Vive/Valve.
Since I think that the 3D Environment/Assets used in VR project are Low Poly( low quality), I am looking for some way to improve the VR Quality and its Performance and I would like to build them with DOTS and Adaptive Performance (taking as reference Megacity project).
To be honest with you, It is very hard for me learn Adaptive Performance and ECS since that there are not many tutorials
that teach us more deeply about both topics ( I saw some GDC 2019 conferences about them but unfortunate I cannot find them in the Unity Youtube Channel)
Thanks to let me tell you about my VR projects and sorry for my little English
Cheers
Alejandro
[/quote]

That’s very good use-case, looking at VR and the need for stable framerate makes it a great scenario to add providers to utilize their APIs.

Many of the tech in DOTs is still in preview and will be improved and get tutorials over time. Talking about Adaptive Performance this is the same, but everything you want to look into is in AdaptivePerformanceController in Megacity which controls the LODs. The main areas you might be interested in are mentioned in the blogpost such as thermal and bottleneck events handlers. The slides of my presentation about Adaptive Performance from GDC are linked in the blogpost as well. Once we have it on youtube, I’ll link them here as well.

For Megacity we have the landing page https://unity.com/megacity which includes several talks from Unite which are quite good to learn about the tech. But as it’s still in preview and a lot of APIs and systems still change and get improved, so some talks might be dated.

I hope that helps to get you started!

1 Like

[quote=“slime73”, post:7, topic: 737426]
Have you looked into integrating it with Unity’s existing FrameTiming APIs?
https://docs.unity3d.com/ScriptReference/FrameTiming.html
https://docs.unity3d.com/ScriptReference/FrameTimingManager.GetLatestTimings.html
[/quote]

The APIs are platform/graphics API dependent but were appropriate we might integrate them. Those APIs have been created for dynamic resolution, which is a feature we would love to integrate into Adaptive Performance as well, probably as high-level Component.

[quote=“David-Berger”, post:8, topic: 737426]
That’s very good use-case, looking at VR and the need for stable framerate makes it a great scenario to add providers to utilize their APIs.

Many of the tech in DOTs is still in preview and will be improved and get tutorials over time. Talking about Adaptive Performance this is the same, but everything you want to look into is in AdaptivePerformanceController in Megacity which controls the LODs. The main areas you might be interested in are mentioned in the blogpost such as thermal and bottleneck events handlers. The slides of my presentation about Adaptive Performance from GDC are linked in the blogpost as well. Once we have it on youtube, I’ll link them here as well.

For Megacity we have the landing page https://unity.com/megacity which includes several talks from Unite which are quite good to learn about the tech. But as it’s still in preview and a lot of APIs and systems still change and get improved, so some talks might be dated.

I hope that helps to get you started!
[/quote]
Hi David
Thanks for your help and your advice
Best Regards
Alejandro

Very interesting!
Where's the open source project? I couldn't find it on Unity GitHub. Thanks.

[quote=“roberto_sc”, post:11, topic: 737426]
Very interesting!
Where’s the open source project? I couldn’t find it on Unity GitHub. Thanks.
[/quote]

It’s a package, you can simply take the package content from its install location (Library/PackageCache) after installing it and add it to your local project e.g. into the local Package folder in your project root. See also the packages documentation here. Let me know how it goes!

[quote=“David-Berger”, post:12, topic: 737426]
It’s a package, you can simply take the package content from its install location (Library/PackageCache) after installing it and add it to your local project e.g. into the local Package folder in your project root. See also the packages documentation here. Let me know how it goes!
[/quote]
I wanted the repo to check if anyone is doing something on the iOS side.

[quote=“roberto_sc”, post:13, topic: 737426]
I wanted the repo to check if anyone is doing something on the iOS side.
[/quote]
There’s no public repo. You can easily integrate an iOS provider yourself. However, iOS currently only exposes thermal events, but no temperature trends or skin temperatures and does not provide the functionality to adjust CPU or GPU frequency.

Cool concept, but only one single device is supported thanks to a very specific SDK found on that manufacturers devices? What is plan of attack for rolling this feature out to all mobile devices from a variety of manufacturers? As cool as this feature is, it is a bit hard to adopt when there is no guarantee that this will ever fully work on anything other than Galaxy devices..? I love the ideas here though. Being able to tell the CPU and GPU to chill out when in the menu's, and being able to adjust performance on the fly to avoid overheating - all sounds great.

For now, we'll just tick on 'Sustained Performance' and try out best to hit 60fps even with the lower CPU/GPU power.

[quote=“Prodigga”, post:15, topic: 737426]
Cool concept, but only one single device is supported thanks to a very specific SDK found on that manufacturers devices? What is plan of attack for rolling this feature out to all mobile devices from a variety of manufacturers? As cool as this feature is, it is a bit hard to adopt when there is no guarantee that this will ever fully work on anything other than Galaxy devices…? I love the ideas here though. Being able to tell the CPU and GPU to chill out when in the menu’s, and being able to adjust performance on the fly to avoid overheating - all sounds great.

For now, we’ll just tick on ‘Sustained Performance’ and try out best to hit 60fps even with the lower CPU/GPU power.
[/quote]
We hear you and yes, we believe in adaptive performance and that it would be very valuable on many platforms. However, it requires functionality only OEMs can expose those (or override them) and we want to ensure our API is right for the use-case Unity developer face.

Hi all,

We have released a new version of Adaptive Performance. We made several changes to the API and package structure and hope it makes it more intuitive to use in the future. If you are new to Adaptive Performance, simply download the Adaptive Performance Samsung (Android) package via Unity Package Manager, it will install the Adaptive Performance package automatically as a dependency.

Note: If you have installed a preview version of Adaptive Performance before 0.2.0-preview.1 you will need to manually uninstall the Adaptive Performance package before installing the latest Adaptive Performance Samsung (Android) package through the Package Manager. Please see the first post which we updated with some uninstall notes.

What’s new in 0.2.0-preview.1?

  • Overhaul of the API and split into several interfaces for easier access and future binary compatibility.

  • Split of package into Adaptive Performance package and Adaptive Performance Samsung (Android) subsystem package.

  • CPU frame time added

  • Configurable logging frequency added

  • Added a AutoPerformanceLevelController which updates CPU and GPU level automatically based on the target framerate.

Hi,
is there a way to use Adaptive Performance on a Samsung Galaxy Tab S4,
we would like to try it in our specific project.

[quote=“VagantB”, post:18, topic: 737426]
Hi,
is there a way to use Adaptive Performance on a Samsung Galaxy Tab S4,
we would like to try it in our specific project.
[/quote]

No. Currently, Adaptive Performance is available on Galaxy S10. We work on expanding it to more devices in future.

Hi all,

We have released Adaptive Performance 1.0.0 and moved it out of preview.

If you are new to Adaptive Performance, simply download the AP Samsung Android 1.0.0 package via Unity Package Manager, it will install the Adaptive Performance package automatically as a dependency.

If you are upgrading from Adaptive Performance 0.2.0-preview.1 you will need to update both packages; Adaptive Performance and AP Samsung Android manually from 0.2.0-preview.1 to 1.0.0.

4882592--471374--Screen Shot 2019-08-21 at 2.36.56 PM copy.png

Note: If you have installed a preview version of Adaptive Performance before 0.2.0-preview.1 you will need to manually uninstall the Adaptive Performance package before installing the latest AP Samsung Android package through the Package Manager. Please see the first post which we updated with some uninstall notes.

What’s new in 1.0.0?

  • Compatibility with On Demand Rendering (Unity 2019.3 feature)
  • Added compatibility for Samsung GameSDK 3.0
  • Fix GPU time evaluation resulting in unknown bottlenecks in rare cases when using Samsung GameSDK 1.5