API

シェーダーパック

シェーダーパックは、色、光、エフェクトなど、画面全体の見た目を変えます。Mod ではなくデータで、プレイヤーはそのフォルダをコピーするだけでインストールできます。

パックのインストール

パックのフォルダを、ゲームフォルダ内の shaderpacks/ にコピーします。Crafting がパックをゲームに合わせて調整するため、Minecraft が更新されても同じパックが動き続けます。

テキスト
shaderpacks/sepia/
├── shaderpack.json
├── tone.glsl
└── vignette.glsl

パックのファイル

shaderpack.json はパックの名前と、そのパスの一覧を定めます。パスは順に実行され、それぞれ直前のパスが作った画像に対して動きます。

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

パス

パスは、関数を 1 つだけ持つ 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) までです。関数は新しい色を返します。どのパスでも、次の 3 つが使えます。

名前 できること
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"

パックはワールドの中で適用され、メニューは通常どおり表示されます。

パスにエラーがあるとき

ゲームはリソースの警告を表示し、画像は通常のままになります。ゲームのログに、どのファイルの何行目で何が問題かが出力されます。