API

셰이더 팩

셰이더 팩은 색, 빛, 효과 등 화면 전체의 모습을 바꿉니다. 모드가 아니라 데이터이며, 플레이어는 폴더를 복사하는 것만으로 설치합니다.

팩 설치하기

팩의 폴더를 게임 폴더의 shaderpacks/ 안에 복사합니다. Crafting이 팩을 게임에 맞게 조정하므로, Minecraft가 업데이트되어도 같은 팩이 계속 동작합니다.

텍스트
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"

팩은 월드 안에서 적용되며, 메뉴는 평소처럼 보입니다.

패스에 오류가 있을 때

게임이 리소스 경고를 표시하고 이미지는 평소대로 유지됩니다. 게임 로그에 어느 파일의 몇 번째 줄에서 무엇이 잘못되었는지 나옵니다.