aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs
diff options
context:
space:
mode:
authorTSR Berry <20988865+TSRBerry@users.noreply.github.com>2023-04-08 01:22:00 +0200
committerMary <thog@protonmail.com>2023-04-27 23:51:14 +0200
commitcee712105850ac3385cd0091a923438167433f9f (patch)
tree4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs
parentcd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff)
Move solution and projects to src
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs')
-rw-r--r--Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs111
1 files changed, 0 insertions, 111 deletions
diff --git a/Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs b/Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs
deleted file mode 100644
index b7316d85..00000000
--- a/Ryujinx.Graphics.Vulkan/Effects/FxaaPostProcessingEffect.cs
+++ /dev/null
@@ -1,111 +0,0 @@
-using Ryujinx.Common;
-using Ryujinx.Graphics.GAL;
-using Ryujinx.Graphics.Shader;
-using Ryujinx.Graphics.Shader.Translation;
-using Silk.NET.Vulkan;
-using System;
-
-namespace Ryujinx.Graphics.Vulkan.Effects
-{
- internal partial class FxaaPostProcessingEffect : IPostProcessingEffect
- {
- private readonly VulkanRenderer _renderer;
- private ISampler _samplerLinear;
- private ShaderCollection _shaderProgram;
-
- private PipelineHelperShader _pipeline;
- private TextureView _texture;
-
- public FxaaPostProcessingEffect(VulkanRenderer renderer, Device device)
- {
- _renderer = renderer;
- _pipeline = new PipelineHelperShader(renderer, device);
-
- Initialize();
- }
-
- public void Dispose()
- {
- _shaderProgram.Dispose();
- _pipeline.Dispose();
- _samplerLinear.Dispose();
- _texture?.Dispose();
- }
-
- private void Initialize()
- {
- _pipeline.Initialize();
-
- var shader = EmbeddedResources.Read("Ryujinx.Graphics.Vulkan/Effects/Shaders/Fxaa.spv");
-
- var computeBindings = new ShaderBindings(
- new[] { 2 },
- Array.Empty<int>(),
- new[] { 1 },
- new[] { 0 });
-
- _samplerLinear = _renderer.CreateSampler(GAL.SamplerCreateInfo.Create(MinFilter.Linear, MagFilter.Linear));
-
- _shaderProgram = _renderer.CreateProgramWithMinimalLayout(new[]
- {
- new ShaderSource(shader, computeBindings, ShaderStage.Compute, TargetLanguage.Spirv)
- });
- }
-
- public TextureView Run(TextureView view, CommandBufferScoped cbs, int width, int height)
- {
- if (_texture == null || _texture.Width != view.Width || _texture.Height != view.Height)
- {
- _texture?.Dispose();
-
- var info = view.Info;
-
- if (view.Info.Format.IsBgr())
- {
- info = new TextureCreateInfo(info.Width,
- info.Height,
- info.Depth,
- info.Levels,
- info.Samples,
- info.BlockWidth,
- info.BlockHeight,
- info.BytesPerPixel,
- info.Format,
- info.DepthStencilMode,
- info.Target,
- info.SwizzleB,
- info.SwizzleG,
- info.SwizzleR,
- info.SwizzleA);
- }
- _texture = _renderer.CreateTexture(info, view.ScaleFactor) as TextureView;
- }
-
- _pipeline.SetCommandBuffer(cbs);
- _pipeline.SetProgram(_shaderProgram);
- _pipeline.SetTextureAndSampler(ShaderStage.Compute, 1, view, _samplerLinear);
-
- ReadOnlySpan<float> resolutionBuffer = stackalloc float[] { view.Width, view.Height };
- int rangeSize = resolutionBuffer.Length * sizeof(float);
- var bufferHandle = _renderer.BufferManager.CreateWithHandle(_renderer, rangeSize);
-
- _renderer.BufferManager.SetData(bufferHandle, 0, resolutionBuffer);
-
- var bufferRanges = new BufferRange(bufferHandle, 0, rangeSize);
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(2, bufferRanges) });
-
- var dispatchX = BitUtils.DivRoundUp(view.Width, IPostProcessingEffect.LocalGroupSize);
- var dispatchY = BitUtils.DivRoundUp(view.Height, IPostProcessingEffect.LocalGroupSize);
-
- _pipeline.SetImage(0, _texture, GAL.Format.R8G8B8A8Unorm);
- _pipeline.DispatchCompute(dispatchX, dispatchY, 1);
-
- _renderer.BufferManager.Delete(bufferHandle);
- _pipeline.ComputeBarrier();
-
- _pipeline.Finish();
-
- return _texture;
- }
- }
-} \ No newline at end of file