summaryrefslogtreecommitdiff
path: root/UnityEngine.PostProcessing/FxaaComponent.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-03-13 11:00:58 +0800
committerchai <215380520@qq.com>2024-03-13 11:00:58 +0800
commit6ce8b9e22fc13be34b442c7b6af48b42cd44275a (patch)
treeb38119d2acf0a982cb67e381f146924b9bfc3b3f /UnityEngine.PostProcessing/FxaaComponent.cs
+init
Diffstat (limited to 'UnityEngine.PostProcessing/FxaaComponent.cs')
-rw-r--r--UnityEngine.PostProcessing/FxaaComponent.cs24
1 files changed, 24 insertions, 0 deletions
diff --git a/UnityEngine.PostProcessing/FxaaComponent.cs b/UnityEngine.PostProcessing/FxaaComponent.cs
new file mode 100644
index 0000000..9d74204
--- /dev/null
+++ b/UnityEngine.PostProcessing/FxaaComponent.cs
@@ -0,0 +1,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);
+ }
+}