API
Шейдерпаки
Шейдерпак змінює вигляд усього зображення: кольори, світло та ефекти. Це дані, а не мод: гравець встановлює його, копіюючи його теку.
Встановлення шейдерпака
Скопіюй теку шейдерпака до shaderpacks/ у теці гри. Той самий шейдерпак працює й після оновлення Minecraft, бо Crafting пристосовує його до гри.
shaderpacks/sepia/
├── shaderpack.json
├── tone.glsl
└── vignette.glslФайл шейдерпака
shaderpack.json задає назву шейдерпака й перелічує його проходи. Вони виконуються по черзі, кожен над зображенням, яке створив попередній.
{ "name": "Sepia", "passes": ["tone.glsl", "vignette.glsl"] }Прохід
Прохід — це файл GLSL з однією функцією:
vec4 effect(vec4 color, vec2 uv) {
float grey = dot(color.rgb, vec3(0.299, 0.587, 0.114));
return vec4(grey * 1.07, grey * 0.74, grey * 0.43, 1.0);
}color — колір пікселя, а uv — його позиція на екрані, від (0, 0) до (1, 1). Функція повертає новий колір. У кожному проході доступні ще три речі:
| Назва | Що дає |
|---|---|
crafting_scene(uv) |
читає зображення в будь-якій позиції: розмиття, межі, спотворення |
crafting_screen |
розмір екрана в пікселях (vec2) |
crafting_time |
час у секундах: анімації, пульсації |
Ще приклади
Віньєтка, що затемнює кути:
vec4 effect(vec4 color, vec2 uv) {
vec2 d = uv - 0.5;
d.x *= crafting_screen.x / crafting_screen.y;
float v = smoothstep(0.85, 0.25, length(d));
return vec4(color.rgb * v, 1.0);
}М'яка хвиля з crafting_time і crafting_scene:
vec4 effect(vec4 color, vec2 uv) {
vec2 shift = vec2(sin(uv.y * 30.0 + crafting_time * 2.0) * 0.002, 0.0);
return crafting_scene(uv + shift);
}Вибір шейдерпака
У теці гри відкрий config/crafting/client.toml і впиши в shader_pack назву теки шейдерпака. Порожньо означає «немає». Потім запусти гру.
shader_pack = "sepia"Шейдерпак діє всередині світів; меню виглядають як звичайно.
Якщо в проході помилка
Гра показує попередження про ресурси, а зображення лишається звичайним. Журнал гри каже, що не так, у якому файлі та в якому рядку.