Add beautify post process to project
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Beautify.Universal {
|
||||
|
||||
[ExecuteInEditMode]
|
||||
public class LUTBlending : MonoBehaviour {
|
||||
|
||||
public Texture2D LUT1, LUT2;
|
||||
|
||||
[Range(0, 1)]
|
||||
public float LUT1Intensity = 1f;
|
||||
|
||||
[Range(0, 1)]
|
||||
public float LUT2Intensity = 1f;
|
||||
|
||||
[Range(0, 1)]
|
||||
public float phase;
|
||||
public Shader lerpShader;
|
||||
|
||||
float oldPhase = -1;
|
||||
RenderTexture rt;
|
||||
Material lerpMat;
|
||||
|
||||
static class ShaderParams {
|
||||
public readonly static int LUT2 = Shader.PropertyToID("_LUT2");
|
||||
public readonly static int Phase = Shader.PropertyToID("_Phase");
|
||||
}
|
||||
|
||||
void OnEnable() {
|
||||
UpdateBeautifyLUT();
|
||||
}
|
||||
|
||||
void OnValidate() {
|
||||
oldPhase = -1;
|
||||
UpdateBeautifyLUT();
|
||||
}
|
||||
|
||||
private void OnDestroy() {
|
||||
if (rt != null) {
|
||||
rt.Release();
|
||||
}
|
||||
}
|
||||
|
||||
void LateUpdate() {
|
||||
UpdateBeautifyLUT();
|
||||
}
|
||||
|
||||
void UpdateBeautifyLUT() {
|
||||
if (oldPhase == phase || LUT1 == null || LUT2 == null || lerpShader == null) return;
|
||||
oldPhase = phase;
|
||||
|
||||
if (rt == null) {
|
||||
rt = new RenderTexture(LUT1.width, LUT1.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
|
||||
rt.filterMode = FilterMode.Point;
|
||||
}
|
||||
if (lerpMat == null) {
|
||||
lerpMat = new Material(lerpShader);
|
||||
}
|
||||
lerpMat.SetTexture(ShaderParams.LUT2, LUT2);
|
||||
lerpMat.SetFloat(ShaderParams.Phase, phase);
|
||||
Graphics.Blit(LUT1, rt, lerpMat);
|
||||
BeautifySettings.settings.lut.Override(true);
|
||||
float intensity = Mathf.Lerp(LUT1Intensity, LUT2Intensity, phase);
|
||||
BeautifySettings.settings.lutIntensity.Override(intensity);
|
||||
BeautifySettings.settings.lutTexture.Override(rt);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user