mirror of
https://github.com/libretro/Libretro-Supermodel.git
synced 2026-11-10 03:01:26 -10:00
(cherry picked from commit 800e6dfe11, adapted)
Render the 3D scene at an integer multiple of the output resolution and
let SuperAA downsample it into the libretro framebuffer. SuperAA's output
now always reaches the frontend, which also makes CRT Colour take effect.
Adapted on dev:
- SuperAA keeps its own target handling; it gains SetOutputTarget() so
Draw() writes into the libretro resolved FBO, which is now always
created at the output size and returned by getSuperModelFBO().
- The option is shown on desktop OpenGL builds only (HAVE_SUPERSAMPLING
in CoreOptionsTypes.h, from the GLES defines) instead of a Makefile
platform list. No LibretroConfigProvider change was needed.
- The value is applied after the Supermodel.ini merge, like the other
core options, and changes reuse the existing "apply after restarting
the content" message.
- The 3D scissor is scaled by the supersampling factor.
- CRLF line endings kept in SuperAA.cpp/.h.
Tested: Linux: default output unchanged; CRT Colour now visibly changes
the colours (Japan D93 strongly, USA D65 subtly); Supersampling 2x and
4x give the full picture with anti-aliased edges in Virtua Fighter 3 and
Scud Race; 2x Resolution + 2x Supersampling and Wide Background + 2x
Supersampling fill the frame; Supersampling + CRT Colour both apply.
Windows build has 3D Renderer, CRT Colour and Supersampling, macOS CRT
Colour and Supersampling, RPi5 none.