API

Paczki shaderów

Paczka shaderów zmienia wygląd całego obrazu: kolory, światło i efekty. To dane, a nie mod: gracz instaluje ją, kopiując jej folder.

Instalowanie paczki

Skopiuj folder paczki do shaderpacks/ w folderze gry. Ta sama paczka działa dalej, gdy Minecraft się aktualizuje, bo Crafting dostosowuje ją do gry.

Tekst
shaderpacks/sepia/
├── shaderpack.json
├── tone.glsl
└── vignette.glsl

Plik paczki

shaderpack.json nadaje paczce nazwę i wymienia jej przebiegi. Wykonują się po kolei, każdy na obrazie utworzonym przez poprzedni.

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

Przebieg

Przebieg to plik GLSL z jedną funkcją:

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 to kolor piksela, a uv jego położenie na ekranie, od (0, 0) do (1, 1). Funkcja zwraca nowy kolor. W każdym przebiegu dostępne są jeszcze trzy rzeczy:

Nazwa Co daje
crafting_scene(uv) odczytuje obraz w dowolnym miejscu: rozmycie, krawędzie, zniekształcenie
crafting_screen rozmiar ekranu w pikselach (vec2)
crafting_time czas w sekundach: animacje, pulsowanie

Więcej przykładów

Winieta, która przyciemnia rogi:

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);
}

Łagodna fala, z użyciem crafting_time i 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);
}

Wybór paczki

W folderze gry otwórz config/crafting/client.toml i ustaw shader_pack na nazwę folderu paczki. Puste oznacza brak. Potem uruchom grę.

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

Paczka działa wewnątrz światów; menu wyglądają normalnie.

Gdy przebieg ma błąd

Gra pokazuje ostrzeżenie o zasobach, a obraz pozostaje normalny. Dziennik gry mówi, co jest nie tak, w którym pliku i w której linii.