API
シェーダーパック
シェーダーパックは、色、光、エフェクトなど、画面全体の見た目を変えます。Mod ではなくデータで、プレイヤーはそのフォルダをコピーするだけでインストールできます。
パックのインストール
パックのフォルダを、ゲームフォルダ内の shaderpacks/ にコピーします。Crafting がパックをゲームに合わせて調整するため、Minecraft が更新されても同じパックが動き続けます。
shaderpacks/sepia/
├── shaderpack.json
├── tone.glsl
└── vignette.glslパックのファイル
shaderpack.json はパックの名前と、そのパスの一覧を定めます。パスは順に実行され、それぞれ直前のパスが作った画像に対して動きます。
{ "name": "Sepia", "passes": ["tone.glsl", "vignette.glsl"] }パス
パスは、関数を 1 つだけ持つ 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) までです。関数は新しい色を返します。どのパスでも、次の 3 つが使えます。
| 名前 | できること |
|---|---|
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"パックはワールドの中で適用され、メニューは通常どおり表示されます。
パスにエラーがあるとき
ゲームはリソースの警告を表示し、画像は通常のままになります。ゲームのログに、どのファイルの何行目で何が問題かが出力されます。