API

Шейдерпаки

Шейдерпак змінює вигляд усього зображення: кольори, світло та ефекти. Це дані, а не мод: гравець встановлює його, копіюючи його теку.

Встановлення шейдерпака

Скопіюй теку шейдерпака до shaderpacks/ у теці гри. Той самий шейдерпак працює й після оновлення Minecraft, бо Crafting пристосовує його до гри.

Текст
shaderpacks/sepia/
├── shaderpack.json
├── tone.glsl
└── vignette.glsl

Файл шейдерпака

shaderpack.json задає назву шейдерпака й перелічує його проходи. Вони виконуються по черзі, кожен над зображенням, яке створив попередній.

shaderpacks/sepia/shaderpack.jsonJSON
{ "name": "Sepia", "passes": ["tone.glsl", "vignette.glsl"] }

Прохід

Прохід — це файл GLSL з однією функцією:

shaderpacks/sepia/tone.glslGLSL
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 час у секундах: анімації, пульсації

Ще приклади

Віньєтка, що затемнює кути:

shaderpacks/sepia/vignette.glslGLSL
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:

shaderpacks/sepia/wave.glslGLSL
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 назву теки шейдерпака. Порожньо означає «немає». Потім запусти гру.

config/crafting/client.tomlTOML
shader_pack = "sepia"

Шейдерпак діє всередині світів; меню виглядають як звичайно.

Якщо в проході помилка

Гра показує попередження про ресурси, а зображення лишається звичайним. Журнал гри каже, що не так, у якому файлі та в якому рядку.