aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs
diff options
context:
space:
mode:
authorZenoArrows <129334871+ZenoArrows@users.noreply.github.com>2024-09-17 20:30:50 +0200
committerGitHub <noreply@github.com>2024-09-17 15:30:50 -0300
commitf39e89ece79436f5058bb58d50a1a4dcd6823f4e (patch)
tree079cd6cd332b1f2691bb13f587789e191ddf2c6d /src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs
parentcf77c011e4f90efd93509c3852350c48f2597344 (diff)
Add area sampling scaler to allow for super-sampled anti-aliasing. (#7304)1.1.1390
* Add area sampling scaler to allow for super-sampled anti-aliasing. * Area scaling filter doesn't have a scaling level. * Add further clarification to the tooltip on how to achieve supersampling. * ShaderHelper: Merge the two CompileProgram functions. * Convert tabs to spaces in area scaling shaders * Fixup Vulkan and OpenGL project files. * AreaScaling: Replace texture() by texelFetch() and use integer vectors. No functional difference, but it cleans up the code a bit. * AreaScaling: Delete unused sharpening level member. Also rename _scale to _sharpeningLevel for clarity and consistency. * AreaScaling: Delete unused scaleX/scaleY uniforms. * AreaScaling: Force the alpha to 1 when storing the pixel. * AreaScaling: Remove left-over sharpening buffer.
Diffstat (limited to 'src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs')
-rw-r--r--src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs b/src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs
index c25fe5b2..637b2fba 100644
--- a/src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs
+++ b/src/Ryujinx.Graphics.OpenGL/Effects/ShaderHelper.cs
@@ -1,4 +1,5 @@
using OpenTK.Graphics.OpenGL;
+using Ryujinx.Common.Logging;
namespace Ryujinx.Graphics.OpenGL.Effects
{
@@ -6,18 +7,7 @@ namespace Ryujinx.Graphics.OpenGL.Effects
{
public static int CompileProgram(string shaderCode, ShaderType shaderType)
{
- var shader = GL.CreateShader(shaderType);
- GL.ShaderSource(shader, shaderCode);
- GL.CompileShader(shader);
-
- var program = GL.CreateProgram();
- GL.AttachShader(program, shader);
- GL.LinkProgram(program);
-
- GL.DetachShader(program, shader);
- GL.DeleteShader(shader);
-
- return program;
+ return CompileProgram(new string[] { shaderCode }, shaderType);
}
public static int CompileProgram(string[] shaders, ShaderType shaderType)
@@ -26,6 +16,15 @@ namespace Ryujinx.Graphics.OpenGL.Effects
GL.ShaderSource(shader, shaders.Length, shaders, (int[])null);
GL.CompileShader(shader);
+ GL.GetShader(shader, ShaderParameter.CompileStatus, out int isCompiled);
+ if (isCompiled == 0)
+ {
+ string log = GL.GetShaderInfoLog(shader);
+ Logger.Error?.Print(LogClass.Gpu, $"Failed to compile effect shader:\n\n{log}\n");
+ GL.DeleteShader(shader);
+ return 0;
+ }
+
var program = GL.CreateProgram();
GL.AttachShader(program, shader);
GL.LinkProgram(program);