Adaptive Performance 2.0



Adaptive Performance 2.0 Userguide (KOREAN ver.)



In the 2.0 version released in August 2020 - 12months after Adaptive Performance 1.0 first released-, we focused on what we missed in 1.0. We improved 3 aspects of content control and enhanced the usability for developers.


  • Indexer and Quality Scaler
  • Unity Editor UX/UI
  • Simulator

In the 1.0 version, developers had to implement a real-time content control module by themselves, but in 2.0 we implemented a Quality Manager System. It provides various Built-in Scalers for developers. We improved the UX/UI of Unity Editor to make it easier for developers to use Adaptive Performance. . There is also a Simulator to help developers test Adaptive Performance easily without connecting devices.

Details of each implementation are as follows.




Unity Editor UX/UI


When you install the Adaptive Performance Package and the Adaptive Performance Samsung Android package , you can find out that [Adaptive Performance] is added on Project Settings. To use this properly you have to select Providers first.

If you use it on your device, select the Samsung Android Provides as follows.





In the case of the Simulator, you have to select Device Simulator Provider on PC MAC & Linux Standalone settings.

If you are finished selecting Providers, you can use Adaptive Performance simply through the Adaptive Performance in Project Settings.

Auto Performance Mode is a part of the Power Manager which is provided from 1.0. it controls Performance automatically to achieve best performance and reduces battery consumption by changing the CPU/GPU levels. If you check Auto Performance Mode in Settings and activate Indexer Settings, you can set the scalers you want to use with simple checkboxes and scaling bars. In this case, a scaler setting is applied for the entire project. If you want to set it manually for each scene, you can do a more detailed setting by attaching Adaptive Performance Setting to an Object in the Scene.




Simulator


The Simulator has been added in AP 2.0 so we can test operations in different thermal settings as well as the scaler values all without a device.

To use the simulator, you have to download “Device Simulator Package” from the Package Manager. Then, as same as Unity Editor UX / UI above, you can set each scaler at Project Settings > Adaptive Performance > Simulator.





When you are done editing the scaler settings, open the Simulator with Window > General > Device Simulator. Through this simulator, you can check Adaptive Performance operation controlled by the temperature and the bottleneck situation.






Indexer and Quality Scaler


The indexer is a quality management system for adaptive performance, it controls the game quality depending on the temperature and the performance status of the device.

The scaler is a tool that controls the quality of a scene based on the values below.


  • Target Current Bottleneck
  • Lowest Level
  • Lowest Visual Impact

The Scaler can only operate when the indexer is activated and you can make this setting in the Project Setting.





Built-in Scalers


Here are Built-in Scalers that Adaptive Performance 2.0 provides.

General Render

  • Adaptive Framerate : automatically control the application’s framerate within the defined min/max ranges.
  • Adaptive LOD : change the LOD bias based on the thermal and performance load.
  • Adaptive Resolution : automatically control the screen resolution of the application by the defined scale.

Universal Render Pipeline Scalers

The scalers below require the Universal Render Pipeline(URP) and directly changes the settings in the URP. So they will not have any effect when using any other Render Pipelines.

  • Adaptive Batching : toggle dynamic batching based on thermal and performance load.
  • Adaptive LUT : change LUT bias of the URP.
  • Adaptive MSAA : change the Anti Aliasing Quality Bias of URP. This scaler only affects the camera’s post processing subpixel morphological Anti-aliasing(SMAA) quality level.
  • Adaptive Shadow Cascades : change the Main Light Shadow Cascades Count Bias of the URP
  • Adaptive Shadow Distance : change the Max Shadow Distance Multiplier of URP
  • Adaptive Shadow Quality : change the Shadow Quality Bias of the URP
  • Adaptive Shadow map Resolution : change the Main Light Shadowmap Resolution Multiplier of the URP.
  • Adaptive Sorting : skip the front-to back sorting of URP.

We provide built in scalers to make it easier for developers to control the quality of the content. Developers can use Built-in scaler easy and safely because they can choose which quality and how much they would control in basic UI.



Custom Scaler

Developers can make their own custom scaler, too. You can create a new class which inherits AdaptivePerformanceScaler.

Below is an example of TextureQualityScaler.




public class TextureQualityScaler : AdaptivePerformanceScaler
{
   public override ScalerVisualImpact VisualImpact => ScalerVisualImpact.High;
   public override ScalerTarget Target => ScalerTarget.GPU;
   public override int MaxLevel => 2;

   int m_DefaultTextureQuality;

   protected override void OnDisabled()
   {
       QualitySettings.masterTextureLimit = m_DefaultTextureQuality;
   }

   protected override void OnEnabled()
   {
       m_DefaultTextureQuality = QualitySettings.masterTextureLimit;
   }

   protected override void OnLevel()
   {
      switch (CurrentLevel)
      {
         case 0:
            QualitySettings.masterTextureLimit = 0;
            break;
         case 1:
            QualitySettings.masterTextureLimit = 1;
            break;
         case 2:
            QualitySettings.masterTextureLimit = 2;
            break;
      }
   }
}



Samsung Provider Scaler


When you select Samsung Provider Scaler in the project settings, You can use Adaptive VRR Scaler which is Samsung specific feature related with VRR (Variable Refresh Rate). Currently, the Galaxy S20 supports VRR among the Galaxy devices.

Basically you can use Automatic VRR with VRR supported devices. It can be enabled in the Project Settings and you can save battery consumption with this by setting refresh rate automatically.

In Samsung Provider, when you enable both Automatic VRR and Adaptive Framerate at the same time, it operates as the refresh rate closest to the achievable framerate, meaning the framerate between the min/max value in Automatic VRR and Adaptive Framerate settings. Through this, you can set target frame per scenes and control framerate within the ranges you want. So game users can play without feeling uncomfortable due to VRR adjustment.

You can also check Adaptive VRR’s operation through Adaptive Framerate Samples.





What will change with Quality Scaler


Game developers don’t like quality control of content because it might cause deteriorated game service quality. But Quality Manager 2.0 provides additional options to minimize visual impact through scaler control. Each scaler has visual impact options that are used to retain the quality of a scene when the performance is controlled.

The images below are Unity's Boat Attack Demo, and you can compare how much you see visual impact by LOD levels. If you see enlarged parts, you can find out that there are some missing trees when LOD level 3.





As you can see above, some Scalers have immediately recognizable visual impact, but some scalers barely have any.

Below is an example of Texture Quality Level differences. You might not see any differences with your eyes, but if you see Renderdoc capture, you can find that real texture size are diminished.





As you can see above two examples, visual impacts may vary depending on the type of scaler, but different visual impacts may occur depending on how the range is set in the same scaler. Therefore, it is recommended that developers properly balance performance and quality by themselves.




※ You can find Supported version of Adaptive Performance 2.0 , more detailed user guide and FAQs as follows.


Unity Editor Version Adaptive Performance Package Version
Unity 2020.2.0a7+
Unity 2020.1.0b5+
Unity 1019.3.11f1

2.0.0


  • Detailed User Guide from Unity (Click)

  • Unity Adaptive Performance FAQs (Click)