diff options
author | chai <215380520@qq.com> | 2024-03-13 11:00:58 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2024-03-13 11:00:58 +0800 |
commit | 6ce8b9e22fc13be34b442c7b6af48b42cd44275a (patch) | |
tree | b38119d2acf0a982cb67e381f146924b9bfc3b3f /UnityEngine.PostProcessing/UserLutComponent.cs |
+init
Diffstat (limited to 'UnityEngine.PostProcessing/UserLutComponent.cs')
-rw-r--r-- | UnityEngine.PostProcessing/UserLutComponent.cs | 35 |
1 files changed, 35 insertions, 0 deletions
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<UserLutModel> +{ + 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); + } +} |