You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.5 KiB
40 lines
1.5 KiB
4 years ago
|
namespace UnityEngine.PostProcessing
|
||
|
{
|
||
|
public sealed class UserLutComponent : PostProcessingComponentRenderTexture<UserLutModel>
|
||
|
{
|
||
|
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
|
||
|
{
|
||
|
var settings = model.settings;
|
||
|
return 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)
|
||
|
{
|
||
|
var settings = model.settings;
|
||
|
uberMaterial.EnableKeyword("USER_LUT");
|
||
|
uberMaterial.SetTexture(Uniforms._UserLut, settings.lut);
|
||
|
uberMaterial.SetVector(Uniforms._UserLut_Params, new Vector4(1f / settings.lut.width, 1f / settings.lut.height, settings.lut.height - 1f, settings.contribution));
|
||
|
}
|
||
|
|
||
|
public void OnGUI()
|
||
|
{
|
||
|
var settings = model.settings;
|
||
|
var rect = new Rect(context.viewport.x * Screen.width + 8f, 8f, settings.lut.width, settings.lut.height);
|
||
|
GUI.DrawTexture(rect, settings.lut);
|
||
|
}
|
||
|
}
|
||
|
}
|