Shader Cache Citra Info
In 3DS games, the console uses specialized hardware to draw graphics. To run these games on a PC or phone, Citra must translate those 3DS-specific instructions into something your GPU understands (like OpenGL or Vulkan).
auto shader = CompileFromPICA(hash); saveToDisk(hash, shader); cache[hash] = shader; return shader;
On the 3DS, shaders are small programs that run on the PICA200 GPU to control vertex transformation and fragment (pixel) coloring. Unlike modern desktop GPUs, the 3DS uses a fixed-function pipeline with some programmable aspects. Citra must:
| Emulator | Cache Type | Invalidation Strategy | |----------|------------|------------------------| | Citra | Transferable + pipeline (Vulkan) | GameID + driver version | | Yuzu (Switch) | Pipeline + shader cache | Robust; requires manual reset | | Dolphin (GC/Wii) | Uber shaders + cache | Rarely invalidated | | PCSX2 | No true shader cache | Recompiles per game session | shader cache citra
When you play a game on Citra, the emulator needs to render 3D graphics. To do this, it uses shaders to communicate with the GPU. Without a shader cache, Citra would have to compile shaders on the fly, which can lead to slower performance and increased GPU usage.
Check Disk Space: If your drive is full, Citra cannot save new shader files.
By default, Citra translates these "shaders" exactly when the game calls for them. If your character casts a fire spell for the first time, Citra pauses the game for a millisecond to compile that "fire" shader. In 3DS games, the console uses specialized hardware
Here’s a technical write-up on (the Nintendo 3DS emulator).
Or in a single .bin + .idx file.
Delete the cache folder while Citra is closed → forces recompilation. Unlike modern desktop GPUs, the 3DS uses a
Shader caches are often tied to your specific GPU driver version and hardware architecture. Using a cache from a different GPU manufacturer (e.g., moving an Nvidia cache to an AMD system) can cause crashes or visual artifacts.
New Updates: Citra frequently updates its rendering engine. Older caches often become incompatible with newer versions of the emulator.