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>
62 lines
4.4 KiB
Markdown
62 lines
4.4 KiB
Markdown
# 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](https://web.archive.org/web/20110831051323/http://timothylottes.blogspot.com/2011/03/nvidia-fxaa.html). Generally fast but with some innocuos artifacts.
|
|
- **SMAA**: Subpixel Morphological Anti-Aliasing, an implementation as described on [this article](https://web.archive.org/web/20250000000000*/https://www.iryoku.com/smaa/).
|
|
|
|
### 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](https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VkSamplerCubicWeightsCreateInfoQCOM).
|
|
- **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](https://github.com/BreadFish64/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](https://github.com/crosire/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](https://web.archive.org/web/20250000000000*/https://docs.mesa3d.org/envvars.html).
|
|
|
|
### 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](https://web.archive.org/web/20250115162518/https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/openglenvvariables.html).
|
|
|
|
### 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](../../tools/llvmpipe-run.sh).
|