From b85452e1a23f3c2253d5b50163c40e401f81ad4b Mon Sep 17 00:00:00 2001 From: nishinji Date: Sat, 22 Jul 2023 11:02:57 +0900 Subject: [PATCH] aaa --- vita3k/renderer/src/gl/screen_render.cpp | 2 +- .../opengl/render_main_4xhq.frag | 2 +- .../opengl/render_main_4xhq.vert | 2 +- .../opengl/render_main_5xBR.frag | 2 +- .../opengl/render_main_gaussian.frag | 2 +- .../opengl/render_main_scale2x.frag | 45 +++++++++++++++++++ .../vulkan/render_main_4xhq.frag | 2 +- .../vulkan/render_main_4xhq.vert | 2 +- .../vulkan/render_main_5xBR.frag | 2 +- .../vulkan/render_main_gaussian.frag | 2 +- 10 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 vita3k/shaders-builtin/opengl/render_main_scale2x.frag diff --git a/vita3k/renderer/src/gl/screen_render.cpp b/vita3k/renderer/src/gl/screen_render.cpp index 3e9c7420ff..c0e7f7b095 100644 --- a/vita3k/renderer/src/gl/screen_render.cpp +++ b/vita3k/renderer/src/gl/screen_render.cpp @@ -29,7 +29,7 @@ bool ScreenRenderer::init(const std::string &base_path) { const auto builtin_shaders_path = base_path + "shaders-builtin/opengl/"; m_render_shader_nofilter = ::gl::load_shaders(builtin_shaders_path + "render_main.vert", builtin_shaders_path + "render_main.frag"); - m_render_shader_fxaa = ::gl::load_shaders(builtin_shaders_path + "render_main.vert", builtin_shaders_path + "render_main_color_inversion.frag"); + m_render_shader_fxaa = ::gl::load_shaders(builtin_shaders_path + "render_main.vert", builtin_shaders_path + "render_main_fxaa.frag"); if (!m_render_shader_nofilter || !m_render_shader_fxaa) { LOG_CRITICAL("Couldn't compile essential shaders for rendering. Exiting"); return false; diff --git a/vita3k/shaders-builtin/opengl/render_main_4xhq.frag b/vita3k/shaders-builtin/opengl/render_main_4xhq.frag index d367890e08..722e936780 100644 --- a/vita3k/shaders-builtin/opengl/render_main_4xhq.frag +++ b/vita3k/shaders-builtin/opengl/render_main_4xhq.frag @@ -69,4 +69,4 @@ void main() w4 = clamp(k*dot(abs(c-i4),dt)/w4+mx,min_w,max_w); color_frag.rgb = w1*i1 + w2*i2 + w3*i3 + w4*i4 + (1.0-w1-w2-w3-w4)*c; -} \ No newline at end of file +} diff --git a/vita3k/shaders-builtin/opengl/render_main_4xhq.vert b/vita3k/shaders-builtin/opengl/render_main_4xhq.vert index 8f92f7f042..bc9f63e3eb 100644 --- a/vita3k/shaders-builtin/opengl/render_main_4xhq.vert +++ b/vita3k/shaders-builtin/opengl/render_main_4xhq.vert @@ -33,4 +33,4 @@ void main() v_texcoord6.xy = v_texcoord0.xy + dg1; v_texcoord5.zw = v_texcoord0.xy - dg2; v_texcoord6.zw = v_texcoord0.xy + dg2; -} \ No newline at end of file +} diff --git a/vita3k/shaders-builtin/opengl/render_main_5xBR.frag b/vita3k/shaders-builtin/opengl/render_main_5xBR.frag index f0414deeb5..534b934813 100644 --- a/vita3k/shaders-builtin/opengl/render_main_5xBR.frag +++ b/vita3k/shaders-builtin/opengl/render_main_5xBR.frag @@ -110,4 +110,4 @@ void main(){ //} FragColor.rgb = res; //FragColor.a = 1.0; -} \ No newline at end of file +} diff --git a/vita3k/shaders-builtin/opengl/render_main_gaussian.frag b/vita3k/shaders-builtin/opengl/render_main_gaussian.frag index 9fe7d6352b..55883f0e96 100644 --- a/vita3k/shaders-builtin/opengl/render_main_gaussian.frag +++ b/vita3k/shaders-builtin/opengl/render_main_gaussian.frag @@ -60,4 +60,4 @@ void main() { vec3 diagonalB = blurDiagonal(fb, uv_frag, tex_offset * vec2(1.0, -1.0)).rgb; vec3 combination = mix(mix(horizontal, vertical, 0.5f), mix(diagonalA, diagonalB, 0.5f), 0.5f); color_frag = vec4(combination + base, 1.0f); -} \ No newline at end of file +} diff --git a/vita3k/shaders-builtin/opengl/render_main_scale2x.frag b/vita3k/shaders-builtin/opengl/render_main_scale2x.frag new file mode 100644 index 0000000000..af1e7f1a59 --- /dev/null +++ b/vita3k/shaders-builtin/opengl/render_main_scale2x.frag @@ -0,0 +1,45 @@ +// Vita3K emulator project +// Shader implementation of Scale2x is adapted from https://gist.github.com/singron/3161079 + +#version 410 core + +in vec2 uv_frag; +uniform sampler2D fb; +uniform vec2 inv_frame_size; + +out vec3 color_frag; + +void main() { + // o = offset, the width of a pixel + vec2 o = 1.0 / inv_frame_size; + + // texel arrangement + // A B C + // D E F + // G H I + vec3 B = texture2D(fb, uv_frag.xy + vec2( 0.0, o.y)).xyz; + vec3 D = texture2D(fb, uv_frag.xy + vec2( -o.x, 0.0)).xyz; + vec3 E = texture2D(fb, uv_frag.xy + vec2( 0.0, 0.0)).xyz; + vec3 F = texture2D(fb, uv_frag.xy + vec2( o.x, 0.0)).xyz; + vec3 H = texture2D(fb, uv_frag.xy + vec2( 0.0, -o.y)).xyz; + vec2 p = uv_frag * inv_frame_size; + // p = the uv_frag within a pixel [0...1] + p = fract(p); + if (p.x > .5) { + if (p.y > .5) { + // Top Right + color_frag.xyz = B == F && B != D && F != H ? F : E; + } else { + // Bottom Right + color_frag.xyz = H == F && D != H && B != F ? F : E; + } + } else { + if (p.y > .5) { + // Top Left + color_frag.xyz = D == B && B != F && D != H ? D : E; + } else { + // Bottom Left + color_frag.xyz = D == H && D != B && H != F ? D : E; + } + } +} diff --git a/vita3k/shaders-builtin/vulkan/render_main_4xhq.frag b/vita3k/shaders-builtin/vulkan/render_main_4xhq.frag index cd69e80220..e995a096a3 100644 --- a/vita3k/shaders-builtin/vulkan/render_main_4xhq.frag +++ b/vita3k/shaders-builtin/vulkan/render_main_4xhq.frag @@ -69,4 +69,4 @@ void main() w4 = clamp(k*dot(abs(c-i4),dt)/w4+mx,min_w,max_w); color_frag.rgb = w1*i1 + w2*i2 + w3*i3 + w4*i4 + (1.0-w1-w2-w3-w4)*c; -} \ No newline at end of file +} diff --git a/vita3k/shaders-builtin/vulkan/render_main_4xhq.vert b/vita3k/shaders-builtin/vulkan/render_main_4xhq.vert index 62b7ac94f5..632417591c 100644 --- a/vita3k/shaders-builtin/vulkan/render_main_4xhq.vert +++ b/vita3k/shaders-builtin/vulkan/render_main_4xhq.vert @@ -36,4 +36,4 @@ void main() v_texcoord6.xy = v_texcoord0.xy + dg1; v_texcoord5.zw = v_texcoord0.xy - dg2; v_texcoord6.zw = v_texcoord0.xy + dg2; -} \ No newline at end of file +} diff --git a/vita3k/shaders-builtin/vulkan/render_main_5xBR.frag b/vita3k/shaders-builtin/vulkan/render_main_5xBR.frag index 01dec72eac..7e8e112073 100644 --- a/vita3k/shaders-builtin/vulkan/render_main_5xBR.frag +++ b/vita3k/shaders-builtin/vulkan/render_main_5xBR.frag @@ -135,4 +135,4 @@ void main(){ //} color_frag.rgb = res; //FragColor.a = 1.0; -} \ No newline at end of file +} diff --git a/vita3k/shaders-builtin/vulkan/render_main_gaussian.frag b/vita3k/shaders-builtin/vulkan/render_main_gaussian.frag index a23315b985..d3b73752db 100644 --- a/vita3k/shaders-builtin/vulkan/render_main_gaussian.frag +++ b/vita3k/shaders-builtin/vulkan/render_main_gaussian.frag @@ -60,4 +60,4 @@ void main() { vec3 diagonalB = blurDiagonal(fb, uv_frag, tex_offset * vec2(1.0, -1.0)).rgb; vec3 combination = mix(mix(horizontal, vertical, 0.5f), mix(diagonalA, diagonalB, 0.5f), 0.5f); color_frag = vec3(combination + base); -} \ No newline at end of file +}