API
Shader packs
Un shader pack cambia el aspecto de toda la imagen: colores, luz y efectos. Son datos, no un mod: el jugador lo instala copiando su carpeta.
Instalar un pack
Copia la carpeta del pack en shaderpacks/, dentro de la carpeta del juego. El mismo pack sigue funcionando cuando Minecraft se actualiza, porque Crafting lo adapta al juego.
shaderpacks/sepia/
├── shaderpack.json
├── tone.glsl
└── vignette.glslEl archivo del pack
shaderpack.json da nombre al pack y lista sus pasadas. Se ejecutan en orden, cada una sobre la imagen que produjo la anterior.
{ "name": "Sepia", "passes": ["tone.glsl", "vignette.glsl"] }Una pasada
Una pasada es un archivo GLSL con una sola función:
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 es el color del píxel y uv su posición en la pantalla, de (0, 0) a (1, 1). La función devuelve el color nuevo. En todas las pasadas hay además tres cosas disponibles:
| Nombre | Qué te da |
|---|---|
crafting_scene(uv) |
lee la imagen en cualquier posición: desenfoque, bordes, distorsión |
crafting_screen |
el tamaño de la pantalla en píxeles (vec2) |
crafting_time |
el tiempo en segundos: animaciones, pulsos |
Más ejemplos
Una viñeta que oscurece las esquinas:
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);
}Una onda suave, con crafting_time y 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);
}Elegir el pack
En la carpeta del juego, abre config/crafting/client.toml y pon en shader_pack el nombre de la carpeta del pack. Vacío significa ninguno. Luego inicia el juego.
shader_pack = "sepia"El pack se aplica dentro de los mundos; los menús se ven normales.
Cuando una pasada tiene un error
El juego muestra un aviso de recursos y la imagen se queda normal. El log del juego dice qué falla, en qué archivo y en qué línea.