From 1628290db7f9f75cac522df170c44120d21e5093 Mon Sep 17 00:00:00 2001 From: mob-sakai <12690315+mob-sakai@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:04:30 +0900 Subject: [PATCH] feat: add project settings for UIParticle - enableLinearToGamma: Enables LinearToGamma during mesh baking --- Assets/ProjectSettings/UIParticle.asset | 15 ++++++++++ Assets/ProjectSettings/UIParticle.asset.meta | 8 ++++++ .../src/Runtime/UIParticleProjectSettings.cs | 28 +++++++++++++++++++ .../Runtime/UIParticleProjectSettings.cs.meta | 11 ++++++++ Packages/src/Runtime/UIParticleRenderer.cs | 17 ++--------- 5 files changed, 64 insertions(+), 15 deletions(-) create mode 100644 Assets/ProjectSettings/UIParticle.asset create mode 100644 Assets/ProjectSettings/UIParticle.asset.meta create mode 100644 Packages/src/Runtime/UIParticleProjectSettings.cs create mode 100644 Packages/src/Runtime/UIParticleProjectSettings.cs.meta diff --git a/Assets/ProjectSettings/UIParticle.asset b/Assets/ProjectSettings/UIParticle.asset new file mode 100644 index 0000000..7b6cd35 --- /dev/null +++ b/Assets/ProjectSettings/UIParticle.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f22a23b9d98e440478697f4adf30e61c, type: 3} + m_Name: UIParticle + m_EditorClassIdentifier: + m_LinearToGamma: 1 diff --git a/Assets/ProjectSettings/UIParticle.asset.meta b/Assets/ProjectSettings/UIParticle.asset.meta new file mode 100644 index 0000000..2f1f22b --- /dev/null +++ b/Assets/ProjectSettings/UIParticle.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8e7744b163af4869b07b8f192c810ed +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/src/Runtime/UIParticleProjectSettings.cs b/Packages/src/Runtime/UIParticleProjectSettings.cs new file mode 100644 index 0000000..0ffa28b --- /dev/null +++ b/Packages/src/Runtime/UIParticleProjectSettings.cs @@ -0,0 +1,28 @@ +#pragma warning disable CS0414 +using Coffee.UIParticleInternal; +using UnityEditor; +using UnityEngine; + +namespace Coffee.UIExtensions +{ + public class UIParticleProjectSettings : PreloadedProjectSettings<UIParticleProjectSettings> + { + [Header("Setting")] + [SerializeField] + internal bool m_EnableLinearToGamma = true; + + public static bool enableLinearToGamma + { + get => instance.m_EnableLinearToGamma; + set => instance.m_EnableLinearToGamma = value; + } + +#if UNITY_EDITOR + [SettingsProvider] + private static SettingsProvider CreateSettingsProvider() + { + return new PreloadedProjectSettingsProvider("Project/UI/UI Particle"); + } +#endif + } +} diff --git a/Packages/src/Runtime/UIParticleProjectSettings.cs.meta b/Packages/src/Runtime/UIParticleProjectSettings.cs.meta new file mode 100644 index 0000000..22e35af --- /dev/null +++ b/Packages/src/Runtime/UIParticleProjectSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f22a23b9d98e440478697f4adf30e61c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/src/Runtime/UIParticleRenderer.cs b/Packages/src/Runtime/UIParticleRenderer.cs index dadecb0..e289bee 100644 --- a/Packages/src/Runtime/UIParticleRenderer.cs +++ b/Packages/src/Runtime/UIParticleRenderer.cs @@ -417,22 +417,9 @@ namespace Coffee.UIExtensions _lastBounds = bounds; // Convert linear color to gamma color. - if (QualitySettings.activeColorSpace == ColorSpace.Linear) + if (UIParticleProjectSettings.enableLinearToGamma && canvas.ShouldGammaToLinearInMesh()) { - Profiler.BeginSample("[UIParticleRenderer] Convert Linear to Gamma"); - workerMesh.GetColors(s_Colors); - var count_c = s_Colors.Count; - for (var i = 0; i < count_c; i++) - { - var c = s_Colors[i]; - c.r = c.r.LinearToGamma(); - c.g = c.g.LinearToGamma(); - c.b = c.b.LinearToGamma(); - s_Colors[i] = c; - } - - workerMesh.SetColors(s_Colors); - Profiler.EndSample(); + workerMesh.LinearToGamma(); } var components = ListPool<Component>.Rent();