eden/docs/user/Graphics.md
lizzie f6d99e5032
[docs] initial user handbook draft (#2629)
This is the initial draft of a "User Handbook", or FAQ. Currently contains useful info on the basics, graphics, and architecture/platform info.

Archive.org OR archive.is should be used for linking external websites, especially since their content should not change. And most often than not, in a few years these could change.

Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: #2629
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-10-05 20:44:48 +02:00

4.4 KiB

User Handbook - Graphics

Visual Enhancements

Anti-aliasing

Enhancements aimed at removing jagged lines/sharp edges and/or masking artifacts.

  • No AA: Default, provides no anti-aliasing.
  • FXAA: Fast Anti-Aliasing, an implementation as described on this blog post. Generally fast but with some innocuos artifacts.
  • SMAA: Subpixel Morphological Anti-Aliasing, an implementation as described on this article.

Filters

Various graphical filters exist - each of them aimed at a specific target/image quality preset.

  • Nearest: Provides no filtering - useful for debugging.
    • Pros: Fast, works in any hardware.
    • Cons: Less image quality.
  • Bilinear: Provides the hardware default filtering of the Tegra X1.
    • Pros: Fast with acceptable image quality.
  • Bicubic: Provides a bicubic interpolation using a Catmull-Rom (or hardware-accelerated) implementation.
    • Pros: Better image quality with more rounded edges.
  • Zero-Tangent, B-Spline, Mitchell: Provides bicubic interpolation using the respective matrix weights. They're normally not hardware accelerated unless the device supports the VK_QCOM_filter_cubic_weights extension. The matrix weights are those matching the specification itself.
    • Pros/Cons: Each of them is a variation of the Bicubic interpolation model with different weights, they offer different methods to fix some artifacts present in Catmull-Rom.
  • Spline-1: Bicubic interpolation (similar to Mitchell) but with a faster texel fetch method. Generally less blurry than bicubic.
    • Pros: Faster than bicubic even without hardware accelerated bicubic.
  • Gaussian: Whole-area blur, an applied gaussian blur is done to the entire frame.
    • Pros: Less edge artifacts.
    • Cons: Slow and sometimes blurry.
  • Lanczos: An implementation using a = 3 (49 texel fetches). Provides sharper edges but blurrier artifacts.
    • Pros: Less edge artifacts and less blurry than gaussian.
    • Cons: Slow.
  • ScaleForce: Experimental texture upscale method, see ScaleFish.
    • Pros: Relatively fast.
  • FSR: Uses AMD FidelityFX Super Resolution to enhance image quality.
    • Pros: Great for upscaling, and offers sharper visual quality.
    • Cons: Somewhat slow, and may be offputtingly sharp.
  • Area: Area interpolation (high kernel count).
    • Pros: Best for downscaling (internal resolution > display resolution).
    • Cons: Costly and slow.
  • MMPX: Nearest-neighbour filter aimed at providing higher pixel-art quality.
    • Pros: Offers decent pixel-art upscaling.
    • Cons: Only works for pixel-art.

External

While stock shaders offer a basic subset of options for most users, programs such as ReShade offer a more flexible experience. In addition to that users can also seek out modifications (mods) for enhancing visual experience (60 FPS mods, HDR, etc).

Driver specifics

Mesa environment variable hacks

The software requires a certain version of Vulkan and a certain version of OpenGL to work - otherwise it will refuse to load, this can be easily bypassed by setting an environment variable: MESA_GL_VERSION_OVERRIDE=4.6 MESA_GLSL_VERSION_OVERRIDE=460 (OpenGL) and MESA_VK_VERSION_OVERRIDE=1.3 (Vulkan), for more information see Environment variables for Mesa.

NVIDIA OpenGL environment variables

Unstable multithreaded optimisations are offered by the stock proprietary NVIDIA driver on X11 platforms. Setting __GL_THREADED_OPTIMIZATIONS to 1 would enable such optimisations. This mainly benefits the OpenGL backend. For more information see Environment Variables for X11 NVIDIA.

swrast/LLVMpipe crashes under high load

The OpenGL backend would invoke behaviour that would result in swarst/LLVMpipe writing an invalid SSA IR (on old versions of Mesa), and then proceeding to crash. The solution is using a script found in tools/llvmpipe-run.sh.