Not every shader works for every game. Here is a curated optimization list.
| Game Title | Best Shader | Reasoning | | :--- | :--- | :--- | | Pokémon Ultra Sun/Moon | FidelityFX CAS | The games have a soft watercolor aesthetic. CAS restores texture detail without breaking the art style. | | Super Mario 3D Land | xBRZ (Level 2) | The game uses simple textures. xBRZ prevents the "blocky" look of the flag poles and coins. | | The Legend of Zelda: OoT 3D | Anime4K (Upscale) | Removes the muddy textures of the 3DS port and sharpens Link’s tunic details. | | Fire Emblem: Awakening | Darken + Selective Bloom | The battle sprites benefit from higher contrast; lower the bloom to see the battlefield map clearly. | | Monster Hunter 4 Ultimate | No Shader (Use 4x Res) + FXAA | MH4U has dynamic depth of field. Most shaders break the UI compass. Stick to internal upscaling only. |
You don't need to be a coder to tweak a shader. Open a sharpening.glsl file in Notepad. Look for: citra shader
float sharp_strength = 0.65;
Change 0.65 to 0.85 for extreme sharpness, or to 0.30 for a natural look.
Citra shaders generally fall into three categories: Not every shader works for every game
No need to recompile — Citra loads shaders dynamically.
vec2 texel = 1.0 / tex_size;
vec3 sharp = color.rgb * 5.0;
sharp -= texture(color_texture, uv + vec2(-texel.x, -texel.y)).rgb;
sharp -= texture(color_texture, uv + vec2( texel.x, -texel.y)).rgb;
sharp -= texture(color_texture, uv + vec2(-texel.x, texel.y)).rgb;
sharp -= texture(color_texture, uv + vec2( texel.x, texel.y)).rgb;
color.rgb += (color.rgb - sharp / 4.0) * 0.5;
The Nintendo 3DS has a native screen resolution of $400 \times 240$ (top screen) and $320 \times 240$ (bottom screen). When upscaled to a modern 1080p or 4K monitor, the image can look blocky or "jagged" due to nearest-neighbor scaling. You don't need to be a coder to tweak a shader
Shaders act as a post-processing layer. After the 3DS renders the game frame, Citra passes that frame through the shader pipeline before displaying it on your screen.