summaryrefslogtreecommitdiff
path: root/UnityEngine.PostProcessing/FxaaComponent.cs
blob: 9d74204687f6b6af91376aa97bfcd2e8e97a0c79 (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
namespace UnityEngine.PostProcessing;

public sealed class FxaaComponent : PostProcessingComponentRenderTexture<AntialiasingModel>
{
	private static class Uniforms
	{
		internal static readonly int _QualitySettings = Shader.PropertyToID("_QualitySettings");

		internal static readonly int _ConsoleSettings = Shader.PropertyToID("_ConsoleSettings");
	}

	public override bool active => base.model.enabled && base.model.settings.method == AntialiasingModel.Method.Fxaa && !context.interrupted;

	public void Render(RenderTexture source, RenderTexture destination)
	{
		AntialiasingModel.FxaaSettings fxaaSettings = base.model.settings.fxaaSettings;
		Material material = context.materialFactory.Get("Hidden/Post FX/FXAA");
		AntialiasingModel.FxaaQualitySettings fxaaQualitySettings = AntialiasingModel.FxaaQualitySettings.presets[(int)fxaaSettings.preset];
		AntialiasingModel.FxaaConsoleSettings fxaaConsoleSettings = AntialiasingModel.FxaaConsoleSettings.presets[(int)fxaaSettings.preset];
		material.SetVector(Uniforms._QualitySettings, new Vector3(fxaaQualitySettings.subpixelAliasingRemovalAmount, fxaaQualitySettings.edgeDetectionThreshold, fxaaQualitySettings.minimumRequiredLuminance));
		material.SetVector(Uniforms._ConsoleSettings, new Vector4(fxaaConsoleSettings.subpixelSpreadAmount, fxaaConsoleSettings.edgeSharpnessAmount, fxaaConsoleSettings.edgeDetectionThreshold, fxaaConsoleSettings.minimumRequiredLuminance));
		Graphics.Blit(source, destination, material, 0);
	}
}