お日様の下

【SEUS v11.0】ブロック別に発光色を変更する方法【Minecraft】

2020/04/27 23:57 投稿

  • タグ:
  • SEUS
  • Minecraft
  • 影MOD


こんにちは。たいよーです。
この記事ではSonic Ether's Unbelievable Shaders v11.0を改造して、上記の画像のように
ブロック別に発光色を個別に設定する方法を紹介していきます。GLSLの知識もいりません。
よかったらTwitter(@sunshine_look)をフォローしてね。
(SEUS Renewedでの対応は確認していません!!)

【手順】
①用意する物
Sonic Ether's Unbelievable Shaders v11.0

- MinecraftForumから入手してください。
解凍ソフト
- SEUS内のテキストを開くのに必要です。
テキストエディタ
- SEUS内のテキストをいじるのでフリーのテキストエディタ等の使用をお勧めします。
   僕のおすすめはVisual Studio Codeです。

全体の発光色を白色にする
 まずはSEUS全体の発光色を白色にしていきます。画像をよく見るとブロックの周り以外は白く光っているのが分かります。(というのも実はこれブロック本体の光を変えてそれを目に見えるように無理矢理光らせているので、周囲を照らしている光の本体はこの白色の部分です。)
 
 インストールしたSEUSを解凍ソフトで解凍すると、shadersというファイルが出てきます。
その中にあるcomposite1.vshをテキストエディタで開いてください。
ファイル内の最下層、237行目あたりに「
colorTorchlight = vec3(1.00f, 0.22f, 0.00f);」
という記述があると思います。この数字の部分がRGB、左から赤・緑・青の順で示されています。この部分をcolorTorchlight = vec3(1.00f,1.00f, 1.00f);」に書き換えます。

②ブロック別に発光色を設定する
 次にブロック別の発光色を設定していきます。ここが一番難しいです。
まず、ブロック別にテキストに打ち込む名前数字を決めます。
ブロックの名前は半角英数字、数字は100~255までで決めます。(100から順に埋めていった方がいいです。僕はそうしてます)
この記事ではグロウストーンシーランタンレッドストーンランプの3つのブロック色を変更するので、3つ決めていきます。
ここでは例として、
 ・グロウストーン
  - 名前:yellowlamp 数字:100

 ・シーランタン
  - 名前:bluelamp 数字:101

 ・レッドストーンランプ
  - 名前:redlamp 数字:102

とそれぞれ設定します。

composite1.fshを開いてください
次にCtrl+Fでテキスト内から「float glowstone;」という文字列を見つけ、その下に
float yellowlamp;
float bluelamp;
float redlamp;
という要にさっき設定した名前を3つ入れていきます。
同じ要領で「vec3 glowstone;」の文字列を見つけ、その下に
vec3 yellowlamp;

vec3 bluelamp;

vec3 redlamp;
と追加していきます。こういうのを繰り返して設定していきます。

次に「
mask.glowstone = GetMaterialMask(texcoord.st, 32, mask.matIDs);」を見つ「mask.<設定した名前> = GetMaterialMask(texcoord.st, <設定した数字>, mask.matIDs);」と、さっきの要領で3つ追加してください。

次は「final.glow.glowstone = GlowMap(~~~~~)」という記述の下に追加していくのですが、ここと次の設定で光源色を決めることになります。

final.glow.<設定した名前> = Glowmap(surface.albedo, surface.mask.<設定した名前>, 2.0f, mix(vec3(<Rの値>f, <Gの値>f, <Bの値>f), vec3(1.0f), vec3(<ホワイトバランス>f)));

一つ一つ解説していきます。
緑色で書かれた部分は先ほどと同じRGBの値です。ホワイトバランスは説明がややこしいので解説は省きますが、数値を上げるとブロックそのもののテクスチャが薄くなり、下げると濃くなります。0.01ずつで結構変わってきます。
(追記)
2.0fの所も何かホワイトバランスの調整っぽいです!ただ上げると濃くなり、下げると薄くなります!下のredlampの例が3.5fになってるのは僕の設定の名残っぽいです!

僕が使っているシェーダーを例として貼り付けておきます。

「final.glow.yellowlamp = Glowmap(surface.albedo, surface.mask.yellowlamp, 2.0f, mix(vec3(0.50f, 0.50f, 0.00f), vec3(1.0f), vec3(0.05f)));」
「final.glow.bluelamp = Glowmap(surface.albedo, surface.mask.bluelamp, 2.0f, mix(vec3(0.00f, 0.00f, 7.00f), vec3(1.0f), vec3(0.01f)));
」「final.glow.redlamp = Glowmap(surface.albedo, surface.mask.redlamp, 3.5f, mix(vec3(3.00f, 0.00f, 0.10f), vec3(1.0f), vec3(0.04f)));


その次に「+final.glow.glowstone * 1.1f * TORCHLIGHT_BRIGHTNESS」
を見つけます。1.1fの部分で光の大きさを決めていきます。
例です。

「+ final.glow.yellowlamp * 3.1
* TORCHLIGHT_BRIGHTNESS」
「+ final.glow.bluelamp * 4.1f * TORCHLIGHT_BRIGHTNESS」
「+ final.glow.redlamp * 7.1f * TORCHLIGHT_BRIGHTNESS」

これでcomposite1.fshの設定は終わりです。

③さっきの設定をブロック別に割り当てる
最後です。これ書く方も相当だるいんですよね。
gbuffers_terrain.vshを開き、//glowstone and lamp の表記(277行目当たり)を見つけてください。下にある
「if (mc_Entity.x == 89 ~~~~」を削除し、
if (mc_Entity.x == 89) {
materialIDs = max(materialIDs, <設定した数字>.0f);
}else if (mc_Entity.x == 169) {
materialIDs = max(materialIDs, <設定した数字>.0f);
}else if (mc_Entity.x == 124) {
materialIDs = max(materialIDs, <設定した数字>.0f);
}
 」
と書き換えてください。上から順にグロウストーンシーランタンレッドストーンランプ
となっています。

これで読み込んだら大丈夫だと思います。ダメだったらTwitter(@sunshine_look)かコメントで連絡ください。

====================================================
mcSASUKE総合コミュニティというところでマイクラでSASUKEを開催してます。
よかったら遊びに来てね。



  • 一覧へ

コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事