【リソパシェーダー紹介】第1回 リソパシェーダーとは?
hi こんにちは
突然ですがマインクラフトにある"リソパシェーダー"というものをご存知でしょうか
リソースパックに興味のある人は稀に聞く機会があるかもしれない"リソパシェーダー"ですが
これはJEマイクラ内で今までには出来なかった表現が可能となる新たな(?)機能の事を指しています
△およそマイクラらしからぬ絵作りが可能
新たな、と言っても実際には2013年頃から少しずつ実装はなされていており、度々アップデートにより手が加えられていた実験的な機能でした
最近ではアップデートによる仕様変更も落ち着き、マップなどで活用する方法などについても検討が進められています
ただしイマイチ情報が少ないのが難点となってます(本実装されていないテスト機能のようなものなので紹介自体も少ない…)
既にある一部の情報に関しては前記事のリンク集から見ることができますが、情報がバラバラであったり古かったりしてとっつきにくい状態になっていると思います
これから続く記事ではそれらの情報をまとめて、1から順を追ったなるべく分かりやすいリソパシェーダーの紹介をしていきたいと思っています。
(内容は後の記事ほど、活用例などを交えてより具体的な内容になっていきます)
そもそもリソパシェーダーって?
名前の通りリソースパック(以下リソパ)から導入できるシェーダーのことです。
初めて見る方には「シェーダーという事はOptiFineの導入が必要?」「影MODみたいな物?」と思われるかもしれませんが割りと全然違うものです
これは"バニラのマインクラフトで導入できるリソパの機能の1つ"となっています
バニラのリソパ上においてもシェーダーのフォルダが既にある事から、機能として既に実装されている事がはっきり分かると思います
![](https://gb.huedpaw.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-10-200147-1.png)
△jarファイル内に含まれるバニラのリソパフォルダ
まずはこのバニラで導入されているリソパを詳しく見ることで、構成や仕様についての確認をしていこうと思います。
フォルダ構成
はじめにリソパ内にあるシェーダーのフォルダを見ていきます
C:\Users\[ユーザー名]\AppData\Roaming\.minecraft\versions\[バージョン番号]にある[バージョン番号].jarを解凍し、
\assets\minecraft\shadersからフォルダを確認します
中には core, include, post, program と4つのフォルダがありますが
リソパシェーダーでメインに使われているのはcoreとpostの2つのフォルダとなっています
![](https://gb.huedpaw.com/wp-content/uploads/2023/08/スクリーンショット-2023-08-10-200824.png)
△coreの補助にinclude、postの詳しい設定がprogramへ収納されています
リソパシェーダーには上記のように大きく分けて2つ
coreシェーダー / postシェーダー が存在しています
![](https://gb.huedpaw.com/wp-content/uploads/2023/08/CorePost-1024x512.png)
大まかに役割りを説明すると
coreシェーダーでこまごまとした立体的な部分を
postシェーダーで全体の平面的な絵作りを担当しています。
![](https://gb.huedpaw.com/wp-content/uploads/2023/08/theatres-1024x288.png)
△coreシェーダーでは舞台の撮影、postシェーダーではスクリーン全体へ投影を行っているようなイメージ
リソパシェーダーでは何ができる?
そもそもリソパシェーダーでは何が変更できるの?と思われるかもしれまん
リソパシェーダーでは大まかにモノの"位置"と"色"を変える事ができます
![](https://gb.huedpaw.com/wp-content/uploads/2023/08/2023-08-09_22.30.21-1024x542.png)
△リソパシェーダーを使い"位置"や"色"を極端に変更したブタの例
具体的なファイルで言うと
"数値"などを設定するjsonファイル、"位置"を司るvshファイル、"色"を担当するfshファイルによる3つのファイルでシェーダーの処理は成り立っています
![](https://gb.huedpaw.com/wp-content/uploads/2023/08/icons3-2-1024x341.png)
△jsonでそれぞれに渡す"数値"などが設定され、vshが"位置"、fshが"色"を担当している
表示の例としてブタを挙げると、まずjsonで使われる"数値"が読み込まれた後、vshでブタの頂点の"位置"が決定し、fshでテクスチャの"色"が調整されます
![](https://gb.huedpaw.com/wp-content/uploads/2023/08/pig3-1024x341.png)
これらの処理がcoreシェーダー、postシェーダーの両方でそれぞれ行われて、最終的にプレイ画面として出力されます
まとめると以下のようになります
![](https://gb.huedpaw.com/wp-content/uploads/2023/08/all-1024x494.png)
△coreシェーダー、postシェーダー内でjson→vsh→fshを通して画面が作られる全体の流れ
大まかな紹介は以上になります
次回の記事では、初めに立体的なこまごました部分を担当している"coreシェーダー"についての紹介をしていこうと思います。
つづく
リソパシェーダーに関する質問など以下のDiscordサーバーにて受付けています