Drop the pack into shaders/
Sulkan discovers packs from the game directory's shaders/ folder. A folder or a zip directly under that directory is supported.
Open Video Settings -> Shaders
Use the in-game Shaders screen to enable Sulkan, switch between the built-in pack and external packs, and open the pack folder.
Choose a global preset
Shadow, AO, water, cloud, and atmosphere quality are controlled independently, while bloom and anti-aliasing stay as separate toggles.
Reload and evaluate in-world
The screen keeps the scene visible so pack and preset changes can be judged live instead of through a blurred menu state.
Use the full starter, not a partial subset
base-shader.zip now mirrors Sulkan's current built-in shader tree instead of only a few receiver passes. That means the downloadable starter already contains shadows, terrain, water, AO, clouds, atmosphere, bloom, exposure, FXAA, and the shared include helpers pack authors actually depend on.
Runtime requirements
Sulkan is Vulkan-only and client-side. The current source tree targets a specific snapshot-era renderer API, so treat these requirements as release-facing compatibility notes rather than generic shader-mod assumptions.
| Requirement | Current source-tree note |
|---|---|
| Minecraft target | Current source tree targets the 26.2 Snapshot 3 renderer API. |
| Loader | Fabric Loader 0.19.2 or newer. |
| Fabric API | Fabric API 0.146.1+26.2. |
| Java | Java 25. |
| Graphics backend | Vulkan is required. Sulkan forces Prefer Vulkan and fails fast if another backend is active. |
| Install side | Client-side only. There is no server install requirement. |
Persisted configuration
Sulkan writes its live config to config/sulkan-shaders.json. Missing or invalid values are normalized to safe defaults instead of aborting startup. Pack selection and global enable live in the outer Shaders screen, while subsystem tuning lives in the detailed settings screen.
Sulkan computes active pipelines from the current config. Global shaders, shadows, AO, water, clouds, atmosphere, bloom, FXAA, and terrain wind do not all toggle the same way, so configuration changes can have different reload costs.
{
"enabled": true,
"selectedPackId": "__builtin__",
"shadowQualityPreset": "normal",
"aoQualityPreset": "off",
"waterQualityPreset": "normal",
"cloudQualityPreset": "off",
"atmosphericQualityPreset": "normal",
"bloomEnabled": true,
"antiAliasingMode": "off"
} Quality preset semantics
Sulkan shares one preset enum across shadows, AO, water, clouds, and atmosphere. Not every subsystem uses every numeric field, but the preset bundle controls several shadow and AO behaviors at once.
| Preset | Shadow scale | Coverage | Max cascades | AO samples |
|---|---|---|---|---|
| off | 0.25 | 0.68 | 0 | 0 |
| low | 0.50 | 0.68 | 2 | 4 |
| normal | 1.00 | 0.85 | 3 | 6 |
| high | 1.50 | 1.00 | 3 | 10 |
| ultra | 2.00 | 1.12 | 3 | 16 |
normal is the serialized form of the internal medium preset. Shadow coverage and active terrain cascade count are derived from the configured coverage distance, then capped by the preset's maximum cascade count.
Operational tips
Most support issues come from configuration assumptions, path layout mistakes, or expecting a hot swap when Sulkan actually needs a clean shader reload. These are the rules worth remembering.
- If a selected external pack can no longer be found, Sulkan normalizes the selection back to the built-in pack instead of failing hard.
- Changes that alter pipeline topology trigger a clean shader reload. In the current source tree that includes shadows, AO, water, volumetric clouds, and FXAA enablement changes.
- Bloom is controlled by its own boolean toggle, and anti-aliasing currently exposes OFF and FXAA only.
- If the config file is missing or unreadable, Sulkan falls back to safe defaults instead of refusing to boot.
- Use the client log and in-world visual confirmation together. A valid config file does not guarantee runtime shader compatibility.
Pack layout rules
Accepted internal layouts, path mapping rules, and the full base template surface including AO, clouds, atmosphere, bloom, FXAA, and include helpers.
Core entrypoints
Which shader files are pack-facing and how they map to Sulkan subsystems.
Bindings and samplers
Current UBO and sampler names used by shadows, receivers, and water.
Authoring workflow
Template-pack guidance, compile-time defines, and practical testing advice.