Files
ApexSurgery/Assets/Oculus/VR/Editor/OVRProjectSetup/Tasks/Implementations/OVRProjectSetupQualityTasks.cs
T
2025-07-04 20:33:06 +03:00

92 lines
4.3 KiB
C#

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* Licensed under the Oculus SDK License Agreement (the "License");
* you may not use the Oculus SDK except in compliance with the License,
* which is provided at the time of installation or download, or which
* otherwise accompanies this software in either electronic or hard copy form.
*
* You may obtain a copy of the License at
*
* https://developer.oculus.com/licenses/oculussdk/
*
* Unless required by applicable law or agreed to in writing, the Oculus SDK
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using UnityEditor;
using UnityEngine;
[InitializeOnLoad]
internal static class OVRProjectSetupQualityTasks
{
private static readonly int RecommendedPixelLightCountAndroid = 1;
private static readonly int RecommendedPixelLightCountStandalone = 3;
private static int GetRecommendedPixelLightCount(BuildTargetGroup buildTargetGroup)
=> buildTargetGroup == BuildTargetGroup.Standalone
? RecommendedPixelLightCountStandalone
: RecommendedPixelLightCountAndroid;
static OVRProjectSetupQualityTasks()
{
var taskGroup = OVRProjectSetup.TaskGroup.Quality;
// [Recommended] Set Pixel Light Count
OVRProjectSetup.AddTask(
level: OVRProjectSetup.TaskLevel.Recommended,
group: taskGroup,
isDone: buildTargetGroup =>
QualitySettings.pixelLightCount <= GetRecommendedPixelLightCount(buildTargetGroup),
conditionalMessage: buildTargetGroup =>
$"Set maximum pixel lights count to {GetRecommendedPixelLightCount(buildTargetGroup)}",
fix: buildTargetGroup => QualitySettings.pixelLightCount = GetRecommendedPixelLightCount(buildTargetGroup),
conditionalFixMessage: buildTargetGroup =>
$"QualitySettings.pixelLightCount = {GetRecommendedPixelLightCount(buildTargetGroup)}"
);
// [Recommended] Set Texture Quality to Full Res
OVRProjectSetup.AddTask(
level: OVRProjectSetup.TaskLevel.Recommended,
group: taskGroup,
message: "Set Texture Quality to Full Res",
#if UNITY_2022_2_OR_NEWER // masterTextureLimit has become obsolete with 2022.2
isDone: buildTargetGroup => QualitySettings.globalTextureMipmapLimit == 0,
fix: buildTargetGroup => QualitySettings.globalTextureMipmapLimit = 0,
fixMessage: "QualitySettings.globalTextureMipmapLimit = 0"
#else
isDone: buildTargetGroup => QualitySettings.masterTextureLimit == 0,
fix: buildTargetGroup => QualitySettings.masterTextureLimit = 0,
fixMessage: "QualitySettings.masterTextureLimit = 0"
#endif
);
// [Recommended] Enable Anisotropic Filtering
OVRProjectSetup.AddTask(
level: OVRProjectSetup.TaskLevel.Recommended,
group: taskGroup,
isDone: buildTargetGroup => QualitySettings.anisotropicFiltering == AnisotropicFiltering.Enable,
message: "Enable Anisotropic Filtering on a per-texture basis",
fix: buildTargetGroup => QualitySettings.anisotropicFiltering = AnisotropicFiltering.Enable,
fixMessage: "QualitySettings.anisotropicFiltering = AnisotropicFiltering.Enable"
);
// Texture compression : Use ASTC
OVRProjectSetup.AddTask(
level: OVRProjectSetup.TaskLevel.Recommended,
group: taskGroup,
platform: BuildTargetGroup.Android,
isDone: group => EditorUserBuildSettings.androidBuildSubtarget == MobileTextureSubtarget.ASTC ||
EditorUserBuildSettings.androidBuildSubtarget == MobileTextureSubtarget.ETC2,
message: "Optimize Texture Compression : For GPU performance, please use ETC2. In some cases, " +
"ASTC may produce better visuals and is also a viable solution",
fix: group => EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.ETC2,
fixMessage: "EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.ETC2"
);
}
}