From f6d99e5032e8aeb55833c0b8edce01dc12297269 Mon Sep 17 00:00:00 2001 From: lizzie Date: Sun, 5 Oct 2025 20:44:48 +0200 Subject: [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 Co-authored-by: crueter Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2629 Reviewed-by: crueter Reviewed-by: CamilleLaVey Co-authored-by: lizzie Co-committed-by: lizzie --- docs/user/Graphics.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 docs/user/Graphics.md (limited to 'docs/user/Graphics.md') diff --git a/docs/user/Graphics.md b/docs/user/Graphics.md new file mode 100644 index 0000000000..1b4c0dc4c3 --- /dev/null +++ b/docs/user/Graphics.md @@ -0,0 +1,62 @@ +# 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). -- cgit v1.2.3