summaryrefslogtreecommitdiff
path: root/UnityEngine.PostProcessing/UserLutComponent.cs
blob: 51f291ab8ef8794f2b0372a4b41f033b25d90b1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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);
	}
}