A Vulkan-native SPIR-V shader pipeline for Minecraft Java Edition
Deterministic rendering • Strict validation • Developer-first architecture
Vim is a modern shader runtime for Minecraft Java Edition (Fabric) that executes precompiled SPIR-V pipelines through VulkanMod.
The project exists to solve long-standing problems in the Minecraft shader ecosystem:
- Runtime GLSL compilation stutter
- Undefined behavior from loosely structured packs
- Fragile mod interactions
- Poor validation and diagnostics
- Lack of compute pipeline support
Vim replaces those weaknesses with a deterministic, validated, Vulkan-first architecture designed for both players and graphics developers.
Vim is built around a few core engineering principles:
- Determinism — Pipelines are precompiled and validated before activation.
- Safety — Guarded initialization with automatic fallback prevents client crashes.
- Isolation —
.mcshaderpacks do not interfere with legacy.zipshader systems. - Observability — Structured logs and status reporting make debugging practical.
- Extensibility — Architecture supports compute stages and future rendering features.
- Professional workflow — Shader development behaves closer to real graphics engines.
- Executes
.spvmodules instead of compiling GLSL at runtime - Integrates directly with VulkanMod backend
- Predictable pipeline creation with reduced hitching
- File watcher monitors pack changes
- Reload without restart:
/vim reload
Location:
Options → Video Settings → Vim Shaders
Capabilities:
- Pack discovery and activation
- Metadata display
- Compatibility status
- Runtime reload controls
Compute pipelines are supported when:
- Device features allow
- Descriptor layout rules are satisfied
If anything fails during load or initialization:
- Activation is aborted safely
- A fallback renderer is used
- Errors are logged with context
Developer-oriented logging covers:
- Pack validation
- Descriptor mismatches
- Pipeline creation
- Runtime transitions
- Reload events
- Minecraft Java Edition
- Fabric Loader
- VulkanMod (required)
- Vulkan-capable GPU with updated drivers
- Java 17+
- Install Fabric Loader
- Install VulkanMod
- Place Vim jar into:
.minecraft/mods/
- Place
.mcshaderpacks into:
<gameDir>/shaderpacks/
- Launch Minecraft
/vim list
/vim status
/vim activate <pack_id>
/vim reload
Vim uses a structured archive format with strict validation.
A pack is a ZIP renamed to .mcshader.
pack.mcshader
├── metadata.json
├── README.md
├── LICENSE
├── shaders/
│ ├── pack.json
│ └── *.properties.xml
├── lib/
├── world-0/
├── world-1/
├── world-2/
├── textures/
└── config/
├── defaults.json
└── toggles.json
- Precompiled SPIR-V modules (
.spv) - Explicit descriptor layouts
- Pipeline stage separation
- Validation before activation
Specifications are documented in /docs.
git clone https://github.com/AnujaGajaweera/vim.git
cd Vim
./gradlew clean buildOutput:
build/libs/
Use Fabric Loom run configs:
./gradlew runClient
Place test packs into the dev instance shader directory.
High-level system layout:
Vim
├── Shader System
│ ├── ShaderManager
│ ├── PipelineBuilder
│ ├── DescriptorManager
│
├── Vulkan Backend
│ ├── VulkanBackend
│ ├── SafeVulkanBackend
│ └── PipelineHandle
│
├── Pack Loader
│ ├── MetadataParser
│ └── ShaderPackLoader
│
├── Hot Reload
│ ├── FileWatcherService
│ └── HotReloadService
│
├── Compatibility
│ └── CompatibilityGuard
│
├── Fallback Renderer
│
└── Client UI
The architecture intentionally separates validation, resource management, and activation phases to reduce failure risk.
- ✔ Fabric
- ✔ VulkanMod
- ✔ Coexists with Iris/Sodium environments
- ✖ Does not load GLSL
.zipshaderpacks (by design)
Contributions are welcome.
Engineering priorities:
- Vulkan resource lifecycle correctness
- Deterministic pipeline initialization
- Strict pack validation
- Thread-safe hot reload
- Clear diagnostics
Typical workflow:
- Fork repository
- Create feature branch
- Implement changes
- Run build + tests
- Submit pull request
Useful tools:
/vim status
Logs:
net.vim
If a pack fails:
- Validation errors will be logged
- Fallback renderer activates automatically
Planned directions include:
- Shader validation CLI tooling
- Descriptor automation helpers
- Performance telemetry overlay
- Advanced compute orchestration
- Multi-GPU awareness
- Additional example packs
Licensed under GPL-3.0-only.
See:
LICENSE
docs/license-compliance.md
GitHub Issues:
https://github.com/AnujaGajaweera/vim/issues
Please include:
- GPU + driver
- Logs
- VulkanMod developers
- Fabric ecosystem
- SPIR-V tooling community
- Contributors and testers
Built for stability, determinism, and modern graphics workflows.