Complementary Shaders with Fabric and Quilt
A common point of confusion: players install Fabric, add their favourite mods, and then wonder where Complementary Shaders fits, is it a Fabric mod? Does it need Forge? The answer clarifies the whole ecosystem: Complementary is a shader pack, not a mod for any loader, and it reaches your game through the Iris shader loader, which itself happily lives inside Fabric and Quilt setups. This guide explains the arrangement and what it means for your mod list.
The layers, in order
| Layer | Example | Role |
|---|---|---|
| Game | Minecraft Java Edition | N/A |
| Mod loader | Fabric or Quilt | Runs mods |
| Shader loader (a mod) | Iris | Runs shader packs; itself a Fabric/Quilt mod |
| Shader pack | Complementary Shaders | Rendering code the shader loader executes |
So "Complementary Shaders for Fabric" really means: a Fabric instance, with Iris installed as a mod, with the Complementary ZIP in the shaderpacks folder. The pack never goes in the mods folder, that remains the most common beginner mistake (folder guide).
Complementary in a Fabric setup
- Create your Fabric instance for your Minecraft version as usual.
- Add Iris (and normally Sodium) as mods, in builds matching your game version, see the Iris + Sodium guide.
- Place the Complementary ZIP in the instance's shaderpacks folder and select it in Video Settings (Iris walkthrough).
- Your other Fabric mods are unaffected: shaders are a rendering layer, and Complementary does not interact with gameplay mods' logic.
Quilt
Quilt is a mod loader in the same family as Fabric, designed to run Fabric mods compatibly. In practice, the same arrangement applies: Iris within your Quilt instance, the pack in shaderpacks. Because Quilt's ecosystem leans on Fabric compatibility, version discipline matters doubly, every component (loader, Iris, Sodium, mods) must agree on the Minecraft version. When a Quilt setup misbehaves with shaders, check versions before blaming the pack; the triage order in not working applies unchanged.
What about Forge and NeoForge?
Historically, OptiFine was the shader route for Forge-based play, and it remains the practical answer there: Complementary supports OptiFine as a loader (OptiFine guide). Community projects have at times bridged Iris-style loading into Forge-family environments, but they are not the pack's official path. If your modpack is Forge-based and shaders matter to you, OptiFine is the supported route; if you are building a fresh setup around shaders, the Fabric + Iris stack is the smoother road.
Do mods conflict with the shader pack?
Gameplay mods, almost never, the pack changes rendering, not game logic. The exceptions are other rendering mods: anything that replaces the sky, water, lighting or the renderer itself can fight the pack for the same pixels. If your world renders strangely, disable rendering-related mods one at a time before touching shader settings, the isolation method is in broken lighting and shadows. Performance mods in the Sodium family are designed to cooperate; random "FPS booster" mods of unknown provenance are the usual suspects when cooperation fails.
Keeping instances tidy: one setup per purpose
Modern launchers let you keep several independent game instances, different Minecraft versions, different mod lists, side by side, and shader setups reward that separation. Each instance has its own mods folder and its own shaderpacks folder, so an Iris build that belongs to one instance does nothing in another. Two habits prevent most of the confusion this causes:
- Keep the pack ZIP in each instance you actually play with shaders. Copying the same Complementary ZIP into a second instance is normal and expected; wondering why it does not appear there is the single most common Fabric-side shader question, and the answer is almost always that the ZIP only exists in the first instance's folder. The folder locations are spelled out in where to put the ZIP file.
- Match the whole mods folder to one game version. Fabric and Quilt both refuse, or fail unpredictably, when mod files built for different Minecraft versions are mixed. Iris and Sodium are mods for this purpose: their builds must match the instance's game version exactly, just like every other file in the folder. When you create an instance for a new game version, rebuild its mod list for that version rather than copying an old folder wholesale.
Tidiness pays off at update time as well. A per-instance setup means a game update becomes "create the new instance, add matching Iris and Sodium, copy the pack ZIP across", a contained job that leaves your working old setup untouched until the new one is proven. The settings-preservation steps are in updating without losing your settings.
Moving between Fabric and Quilt
Because Quilt is designed to run Fabric mods compatibly, players sometimes move an existing setup from Fabric to Quilt and expect the shader layer to follow automatically. The arrangement does carry over, Iris as a mod, Sodium alongside it, the pack in shaderpacks, but "compatible" is not the same as "identical", and the move deserves the same care as any loader change:
- Build the Quilt instance fresh for your Minecraft version rather than converting the Fabric instance in place, so you keep a working fallback.
- Add Iris and Sodium builds appropriate to the new instance, and confirm the game reaches the title screen with shaders off before adding the pack.
- Copy the Complementary ZIP into the new instance's shaderpacks folder and select it in Video Settings (enabling the pack).
- Only then bring across your remaining mods, a few at a time, so any rendering conflict is easy to attribute, the isolation method is linked in the conflicts section above.
If shaders work in the Fabric instance but not the Quilt one, resist editing shader settings: compare the two instances' component versions first. In practice the cause is a mismatched Iris or Sodium build in the new instance, not the pack and not Quilt itself.
Client-side clarity: what servers see
One reassurance worth stating plainly, because it decides whether many players try this stack at all: nothing in the Fabric + Iris + Complementary arrangement changes what your client sends to a server. The mod loader runs your mods locally, Iris renders locally, and the pack's lighting, shadows and water exist only on your screen. Other players see your character and actions exactly as they would from a vanilla client, and the server does not need Fabric, Iris or the pack installed, the pack is client-side required and server unsupported by design.
Two boundaries keep that statement honest. First, a server can set its own rules about modded clients generally, and some do; that is a server policy question, not a shader compatibility question, and it applies to the whole mod list rather than to Complementary specifically. Second, gameplay-affecting mods are a separate matter from rendering: this article's reassurance covers the shader layer. If you add mods that change game behaviour, judge those by the server's rules on their own merits. For pure shader play, join, look around, enjoy the light, the Fabric route asks nothing of the server at all, which is exactly how the pack is meant to be used.
Frequently asked questions
Is Complementary Shaders itself a Fabric mod?
No. It is a shader pack, a ZIP of rendering code. It never goes in the mods folder and does not need Fabric; Iris is the mod that loads it, standalone or inside Fabric/Quilt.
Can I use Complementary in a modpack?
Yes, subject to the modpack's own rules and the pack's licence terms. Many packs leave shader choice to the player precisely because it is client-side and visual only.
Do servers need Fabric for me to use shaders?
No. Shaders render entirely on your machine. You can join a vanilla server from a Fabric + Iris client (where the server allows modded clients) and see your world through Complementary while everyone else sees vanilla.


