Files
2026-05-29 18:21:53 +03:00

97 lines
2.1 KiB
C#

using UnityEngine;
namespace UnityStandardAssets.CinematicEffects
{
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
[AddComponentMenu("Image Effects/Cinematic/Anti-aliasing")]
#if UNITY_5_4_OR_NEWER
[ImageEffectAllowedInSceneView]
#endif
public class AntiAliasing : MonoBehaviour
{
public enum Method
{
Smaa,
Fxaa
}
[SerializeField]
private SMAA m_SMAA = new SMAA();
[SerializeField]
private FXAA m_FXAA = new FXAA();
[SerializeField, HideInInspector]
private int m_Method = (int)Method.Smaa;
public int method
{
get { return m_Method; }
set
{
if (m_Method == value)
return;
m_Method = value;
}
}
public IAntiAliasing current
{
get
{
if (method == (int)Method.Smaa)
return m_SMAA;
else
return m_FXAA;
}
}
private Camera m_Camera;
public Camera cameraComponent
{
get
{
if (m_Camera == null)
m_Camera = GetComponent<Camera>();
return m_Camera;
}
}
private void Awake()
{
m_SMAA.Awake();
m_FXAA.Awake();
}
private void OnEnable()
{
m_SMAA.OnEnable(this);
m_FXAA.OnEnable(this);
}
private void OnDisable()
{
m_SMAA.OnDisable();
m_FXAA.OnDisable();
}
private void OnPreCull()
{
current.OnPreCull(cameraComponent);
}
private void OnPostRender()
{
current.OnPostRender(cameraComponent);
}
private void OnRenderImage(RenderTexture source, RenderTexture destination)
{
current.OnRenderImage(cameraComponent, source, destination);
}
}
}