Skip to content

Vitrail Shaders

OptiFine-format shader packs, on Minecraft's native Vulkan renderer.

Vitrail on CurseForge, with its download count Vitrail on Modrinth, with its download count Support Vitrail on Ko-fi


Snow-capped mountains over a cherry grove and a savanna, a mushroom island out at sea, under volumetric clouds, rendered on the Vulkan backend

An OptiFine-format pack, running unmodified on the Vulkan backend.

More screenshots

The sun setting over a savanna and a lake, fog lying on the water, rendered on the Vulkan backend

Sunken ruins on the sea floor, drowned walking through the light shafts, a school of tropical fish beside them, rendered on the Vulkan backend

A lush cave under a cliff, a shaft of sunlight falling through the opening onto glow berries and dripstone, rendered on the Vulkan backend

Minecraft 26.2 ships a native Vulkan renderer alongside the OpenGL one. Every shader pack that exists was written for OpenGL, and none of them run on it.

Vitrail runs them anyway, unmodified. It reads an OptiFine-format pack out of shaderpacks/, translates its GLSL once when the pack loads, and hands it to the compiler the game already embeds. Nothing translates while a frame is drawn.

It started as a question, whether packs written for OpenGL over more than a decade could run untouched on the renderer that now ships with the game. It is one person's side project, worked on every day since July, and an early one: the backend it runs on is marked experimental by the game itself.

It is built the way a lot of software gets built now: AI tools do a real share of the typing and the debugging, and a human decides, tests against real packs and against Iris, reviews every line and carries the blame for every bug. What was taken from Iris and from Kroppeb's stareval is credited file by file in NOTICE, under the same licence. If any of that matters to you, now you know. If the mod is useful, there is a coffee link below, and the issues here are where I answer.

Quick start

  • One jar for Fabric and NeoForge, on Minecraft 26.2. On CurseForge, on Modrinth and on every release here.
  • Put it in mods/ next to Sodium. Client only.
  • Switch the game to Vulkan, in Options then Video Settings, and restart it.
  • Packs go in shaderpacks/ as they always have, and are picked from Vitrail's own settings screen.

INSTALL.md has the versions this needs, the Chloride settings that decide what reaches your pack, and what a game that came up on the wrong backend looks like.

What goes through your pack

Terrain, water, shadows, sky, clouds, weather, particles, mobs, block entities, the held hand, and the far terrain of Distant Horizons given a build of that mod that draws on this backend, which Other mods names. The settings screen reads the pack's own menu layout, and a resource pack's normal and specular maps are served beside the blocks they belong to.

The rest still comes from the game, and that set moves from one release to the next: the engine logs which families do when a place first draws, and pack compatibility starts from what you are seeing and names the cause. If what you want today is a finished picture, use Iris on the OpenGL backend instead, which is the reference this engine is checked against.

Read more

If you want to Read
Know why the format is OptiFine's, and how this sits next to Iris, Sulkan and Aperture Why this exists
Work out why your pack looks wrong, starting from what you see Pack compatibility
See what changed from one version to the next CHANGELOG.md
Install it, and know what it refuses to run beside INSTALL.md
Understand how any of this works The documentation

Support

Buy Me a Coffee at ko-fi.com

Contributing

Open an issue before writing anything substantial. I order the work by risk, and code that lands ahead of what can be verified is hard to accept however good it is.

CONTRIBUTING.md opens on the short version, what refuses a first push, and carries the rest.

Licence

LGPL-3.0-only, in LICENSE, with GPL-3.0.txt beside it because version 3 of the Lesser GPL is written as permissions on top of the ordinary GPL rather than as a standalone document.

Parts of the pack loader and of the value catalogue are adapted from Iris, which is LGPL-3.0 as well. What was taken and what was changed on the way is recorded in NOTICE.

About

OptiFine-format shader packs, on Minecraft's native Vulkan renderer

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

48 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages