API
셰이더 팩
셰이더 팩은 색, 빛, 효과 등 화면 전체의 모습을 바꿉니다. 모드가 아니라 데이터이며, 플레이어는 폴더를 복사하는 것만으로 설치합니다.
팩 설치하기
팩의 폴더를 게임 폴더의 shaderpacks/ 안에 복사합니다. Crafting이 팩을 게임에 맞게 조정하므로, Minecraft가 업데이트되어도 같은 팩이 계속 동작합니다.
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"팩은 월드 안에서 적용되며, 메뉴는 평소처럼 보입니다.
패스에 오류가 있을 때
게임이 리소스 경고를 표시하고 이미지는 평소대로 유지됩니다. 게임 로그에 어느 파일의 몇 번째 줄에서 무엇이 잘못되었는지 나옵니다.