|
@@ -437,39 +437,29 @@ void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) {
|
|
|
|
|
|
|
|
glBindTextureUnit(0, fxaa_texture.handle);
|
|
glBindTextureUnit(0, fxaa_texture.handle);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- // Set projection matrix
|
|
|
|
|
const std::array ortho_matrix =
|
|
const std::array ortho_matrix =
|
|
|
MakeOrthographicMatrix(static_cast<float>(layout.width), static_cast<float>(layout.height));
|
|
MakeOrthographicMatrix(static_cast<float>(layout.width), static_cast<float>(layout.height));
|
|
|
|
|
|
|
|
- GLuint fragment_handle;
|
|
|
|
|
- const auto filter = Settings::values.scaling_filter.GetValue();
|
|
|
|
|
- switch (filter) {
|
|
|
|
|
- case Settings::ScalingFilter::NearestNeighbor:
|
|
|
|
|
- fragment_handle = present_bilinear_fragment.handle;
|
|
|
|
|
- break;
|
|
|
|
|
- case Settings::ScalingFilter::Bilinear:
|
|
|
|
|
- fragment_handle = present_bilinear_fragment.handle;
|
|
|
|
|
- break;
|
|
|
|
|
- case Settings::ScalingFilter::Bicubic:
|
|
|
|
|
- fragment_handle = present_bicubic_fragment.handle;
|
|
|
|
|
- break;
|
|
|
|
|
- case Settings::ScalingFilter::Gaussian:
|
|
|
|
|
- fragment_handle = present_gaussian_fragment.handle;
|
|
|
|
|
- break;
|
|
|
|
|
- case Settings::ScalingFilter::ScaleForce:
|
|
|
|
|
- fragment_handle = present_scaleforce_fragment.handle;
|
|
|
|
|
- break;
|
|
|
|
|
- case Settings::ScalingFilter::Fsr:
|
|
|
|
|
- LOG_WARNING(
|
|
|
|
|
- Render_OpenGL,
|
|
|
|
|
- "FidelityFX FSR Super Sampling is not supported in OpenGL, changing to ScaleForce");
|
|
|
|
|
- fragment_handle = present_scaleforce_fragment.handle;
|
|
|
|
|
- break;
|
|
|
|
|
- default:
|
|
|
|
|
- fragment_handle = present_bilinear_fragment.handle;
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const auto fragment_handle = [this]() {
|
|
|
|
|
+ switch (Settings::values.scaling_filter.GetValue()) {
|
|
|
|
|
+ case Settings::ScalingFilter::NearestNeighbor:
|
|
|
|
|
+ case Settings::ScalingFilter::Bilinear:
|
|
|
|
|
+ return present_bilinear_fragment.handle;
|
|
|
|
|
+ case Settings::ScalingFilter::Bicubic:
|
|
|
|
|
+ return present_bicubic_fragment.handle;
|
|
|
|
|
+ case Settings::ScalingFilter::Gaussian:
|
|
|
|
|
+ return present_gaussian_fragment.handle;
|
|
|
|
|
+ case Settings::ScalingFilter::ScaleForce:
|
|
|
|
|
+ return present_scaleforce_fragment.handle;
|
|
|
|
|
+ case Settings::ScalingFilter::Fsr:
|
|
|
|
|
+ LOG_WARNING(
|
|
|
|
|
+ Render_OpenGL,
|
|
|
|
|
+ "FidelityFX Super Resolution is not supported in OpenGL, changing to ScaleForce");
|
|
|
|
|
+ return present_scaleforce_fragment.handle;
|
|
|
|
|
+ default:
|
|
|
|
|
+ return present_bilinear_fragment.handle;
|
|
|
|
|
+ }
|
|
|
|
|
+ }();
|
|
|
program_manager.BindPresentPrograms(present_vertex.handle, fragment_handle);
|
|
program_manager.BindPresentPrograms(present_vertex.handle, fragment_handle);
|
|
|
glProgramUniformMatrix3x2fv(present_vertex.handle, ModelViewMatrixLocation, 1, GL_FALSE,
|
|
glProgramUniformMatrix3x2fv(present_vertex.handle, ModelViewMatrixLocation, 1, GL_FALSE,
|
|
|
ortho_matrix.data());
|
|
ortho_matrix.data());
|