From 6ce8b9e22fc13be34b442c7b6af48b42cd44275a Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Wed, 13 Mar 2024 11:00:58 +0800 Subject: +init --- UnityEngine.PostProcessing/UserLutComponent.cs | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 UnityEngine.PostProcessing/UserLutComponent.cs (limited to 'UnityEngine.PostProcessing/UserLutComponent.cs') diff --git a/UnityEngine.PostProcessing/UserLutComponent.cs b/UnityEngine.PostProcessing/UserLutComponent.cs new file mode 100644 index 0000000..51f291a --- /dev/null +++ b/UnityEngine.PostProcessing/UserLutComponent.cs @@ -0,0 +1,35 @@ +namespace UnityEngine.PostProcessing; + +public sealed class UserLutComponent : PostProcessingComponentRenderTexture +{ + private static class Uniforms + { + internal static readonly int _UserLut = Shader.PropertyToID("_UserLut"); + + internal static readonly int _UserLut_Params = Shader.PropertyToID("_UserLut_Params"); + } + + public override bool active + { + get + { + UserLutModel.Settings settings = base.model.settings; + return base.model.enabled && settings.lut != null && settings.contribution > 0f && settings.lut.height == (int)Mathf.Sqrt(settings.lut.width) && !context.interrupted; + } + } + + public override void Prepare(Material uberMaterial) + { + UserLutModel.Settings settings = base.model.settings; + uberMaterial.EnableKeyword("USER_LUT"); + uberMaterial.SetTexture(Uniforms._UserLut, settings.lut); + uberMaterial.SetVector(Uniforms._UserLut_Params, new Vector4(1f / (float)settings.lut.width, 1f / (float)settings.lut.height, (float)settings.lut.height - 1f, settings.contribution)); + } + + public void OnGUI() + { + UserLutModel.Settings settings = base.model.settings; + Rect position = new Rect(context.viewport.x * (float)Screen.width + 8f, 8f, settings.lut.width, settings.lut.height); + GUI.DrawTexture(position, settings.lut); + } +} -- cgit v1.1-26-g67d0