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.
39 lines
1.5 KiB
39 lines
1.5 KiB
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); |
|
} |
|
} |
|
}
|
|
|