GTNH Cinematic Space PDIM(空を宇宙にするShader)で遊ぶ(1.7.10)

GTNH Cinematic Space PDIMとは

  • GregTech: NewHorizonsというModpackに含まれているPersonalSpaceで作ったパーソナルディメンションで、空に壮大な宇宙を表示するためのShader。通常のオーバーワールドなどでは普通のComplementary Unboundになる。

  • パーソナルディメンションは、日没や雨天、モンスターに邪魔されず、機械や倉庫を置いて作業するための場所。このShaderは、作業中に楽しむために作られたらしい。

  • この記事では非GTNH環境でこのShaderを使う方法を書く。

github.com

modrinth.com

準備1

必要なmod

必要なShader

準備2

  • PersonalSpaceのブロックはクリエタブには無いので、NEI上で探す。

  • ワールドに入ったらサバイバルインベントリを開いて、下の検索欄に「@personal」とでも入力すれば出て来るはず。

  • 画面左下のレンチが赤になっている(=チートモードになっている)ことを確認して、一番左の「Personal Dimention Portal」をCtrl+右クリックすれば手に入る。

  • 設置したら右クリックでGUIを開く。何も弄らず「Done(完了)」で閉じて、また右クリックするとディメンションに飛ぶ。そうしたら一旦ワールドから退出する。

  • saves/[ワールド名]/PERSONAL_DIM_[番号]/personalspace_metadata.cfgを開く。

  • 開いたら、「visual」で、B:cloudsEnabled=trueになっていることを確認し、I:daylightCycle=2を0にする。さらに、I:skyColor=66051を追加する。

遊ぶ

  • ワールドに戻ってディメンションに入ると、太陽が出ているのに空が夜になっている。

  • 上手く行っていれば、ShaderをONにして宇宙を見れる。ShaderがOFFだと謎だった太陽も違和感無く浮かんでいる。周りのブラックホールや星雲を見ると、ちゃんと動いている。

  • もちろんブロックは自由に置けるので、線路を敷いて列車を走らせることも出来る。Baru'sRailの「レールのみ」が良い感じ。

Angelicaでのパフォーマンス計測、描画バグ確認(1.7.10)

他の方法

  • LagGogglesとSparkについてはこちらを参照。

madoha-4862.hatenablog.jp

Tracy Profiler

  • クライアント側の処理の計測ができる。開発者にAngelica環境でのパフォーマンスの問題を報告する際に必要。Sparkよりも詳細に計測できるから自分で調べるのにも役立つと思う。

  • 現在の最新版。angelica-tracy-0.14.1.jarをダウンロードしてmodsに入れる。

github.com

  • ビデオ設定の「Tracy Profiler」設定でTracyを有効にしてからゲームを再起動。
  • 再起動したら、重い場所でキャプチャを開始/停止する。

  • 停止すると、ゲームディレクトリ/angelica/profilesにangelica-tracy-[date]-[time].tracyがつくられている。これをGitHubのissueやDiscordで、詳細な報告文と共に提出する。

  • 自分で調べたい場合はTracy本体をダウンロードして、WIndowsの場合はtracy-profiler.exeを実行し、「Open saved trace」から先程生成されたファイルをインポートする。

github.com

RenderDoc

  • 描画バグの詳細を調べるのに使う。Angelica専用ではないものの、OpenGL 3.2 Core以降が必要で通常の1.7.10(OpenGL 2.1)では使えない。

renderdoc.org

  • 参考資料

shaderlabs.org

  • インストールして起動したら、「Launch Application」タブの「Executable Path」に、ランチャーの実行可能ファイルへのパスを指定する。

  • 次に、「Capture Options」の「Capture Child Processes」を有効にする。

  • そうしたら「Launch」でランチャーを起動し、構成を起動する。

  • ゲームが起動したときに、左上にキャプチャの表示があるのを確認する。また、RenderDocの方で、WIidowsの場合はjavaw.exeが読み込まれているのを確認する。

  • バグっている箇所を画面に映してF12を押す。少しフリーズしてキャプチャが保存される。

  • RenderDocの方で、ランチャーのプロセスのタブの、「Child Processes:」の「javaw.exe」をダブルクリックすると、保存されたキャプチャの一覧が表示される。

  • 「Captures collected:」にあるサムネイルを右クリックし、出て来たメニューの「Save」から名前を付けて保存ができる。保存した.rdcファイルをGitHubのissueやDiscordで、詳細な報告文と共に提出する。

Distant HorizonsのGitLab上のアーティファクトをダウンロードする

  • Distant Horizonsの1.7.10版が待ちきれないので、進捗毎の開発版ビルドを試したいが、毎回自分でビルドするのは大変。そこで、GitLab上にあるアーティファクトをダウンロードする。

gitlab.com

  • 「ピン留め」の「パイプライン」を開くと、コミット毎のビルド作業の履歴が出て来る。

  • 1.7.10は既にmainブランチにマージされているので、「main」の「最新」を確認する。
  • 「ステージ」の左から2番目(ステージ: build)をクリックすると、MCバージョンの一覧が出て来る。ここでは「!」が付いている1.17.1だけがビルドに失敗している。1.7.10は問題無い。

  • 「build: 1.7.10」を開き、右側の「ジョブのアーティファクト」の「閲覧」をクリック。「ダウンロード」だとZipファイルで保存されて解凍するのが面倒。

  • ここでファイル名の右にあるダウンロードボタンを押せば.jarファイルでダウンロードできる。

  • まだ正式リリースはされていないが、十分安定していると思う。

開発中のIris Shaders 1.12.2移植

経緯

  • 色々あってEmbeddiumの開発から退いたEmbeddedtが新たに立ち上げたプロジェクト、Celeritas。ライセンス変更前のSodiumをベースとし、Sodiumがサポートしない古いバージョンへの対応と、コードの共通化を目指す。

  • Iris Shadersも含まれているが、Embeddedt自身が用意したのは新しいバージョンのみで、1.7.10や1.12.2には無かった。

git.taumc.orm

  • 1.7.10では既にAngelicaが古いSodiumとIrisの移植を実現していたが、古いSodiumをCeleritasに変更し、古いIrisに新しいIrisの機能を追加していくことで性能を上げていった。

github.com

  • 1.12.2でも古いSodiumの移植であるVintagiumと、IrisのForge版であるOculusの1.12.2版が開発されていたが、メイン開発者のAsek3 (NanoLive)が失踪して頓挫。現在Asek3は復帰しているが、開発は個人的な趣味の範囲に留まっている。

github.com

github.com

  • Celeritas登場後、Iris 1.12.2はしばらく存在しなかったが、最近、AIに大きく依存 (バイブコーディング) しつつも、しっかり使えるIrisの移植がいくつか登場した。

期待ができるIris移植一覧

Actinium

  • Angelicaの1.12.2版と言えるかもしれない。Celeritas 1.12.2とAngelica由来のIris、最新のReese's Sodium Optionsなどを一つにまとめている。多分これが一番良い。

  • Angelicaと同様、GLStateManagerなどを通してOpenGL 3.3 Core Profileを使用する。既存modとの非互換は積極的に修正している。OpenGL 3.3はパフォーマンス向上や新しいShaderとの互換性向上に必要。

  • Cleanroomが必要。

github.com

Demonica

  • 機能を色々追加しているActiniumに対して、Demonicaはシンプルさを重視している。Angelica由来のIrisは同じだが、Demonicaは基本的な機能のみを含んでいるという点で異なる。v0.8.0以降は純正のCeleritasを内蔵しているが、別でCeleritasの.jarをmodsに入れるとそちらを使うようになる。

  • Demonicaは通常のOpenGL 3.3 Core Profileと、古い機能を残していて互換性が高いCompatibility Profileの両方に対応しているが、Compatibility ProfileはmacOSで使えない。やっぱり手間をかけてCore Profileに対応した方が無難。

  • Cleanroomが必要。

github.com

Impetus

  • これはSodium+Irisだけでは飽き足らず、サーバー側の最適化なども含めて一つにまとめている。元はForge向けだったが、今はCleanroomに移行している。.jarファイルは配布されていない。

  • Cleanroomが必要。

github.com

Pintonium

  • 名前は時々挙げられているけれども、試していないのでよく分からないが、とりあえず更新はされている。.jarファイルは配布されていない。

github.com

Distant Horizonsについて

  • Actinium、Demonica、ImpetusはDHをサポートしている。Pintoniumは不明。

ID拡張のためにEndlessIDsを使おう(1.7.10)

EndlessIDsとは

modrinth.com

  • ID拡張modの一つ。Endlessという名前の通り、普通にmodを入れて遊ぶ分には枯渇することが無くなるくらいのID数を実現してくれる。

  • 既存のNotEnoughIDsと比べて大幅に高性能。Angelicaなどの新しいmodにも対応している。NotEnoughIDs Unofficialという改良版もあるが、開発元のGregTech: NewHorizonsがEndlessIDsへの移行を進めているため、今後サポートが終了する。

  • これからAngelica環境への移行をするとき、既存環境にNotEnoughIDsが入っているならEndlessIDsへの移行が必要になる。

導入方法

必要なもの

・EndlessIDs

https://modrinth.com/mod/endlessids/versions

・FalsePatternLib(前提)

https://modrinth.com/mod/fplib/versions

・UniMixins(前提)

https://modrinth.com/mod/unimixins/versions

・ChunkAPI(前提)

https://modrinth.com/mod/chunkapi/versions

  • 前提modが多いが、これらは他のmodも要求する場合があるので、そこまで無駄な手間にはならないはず。

警告画面

  • 前提modのChunkAPIは、チャンクの機能を拡張してバニラのチャンクでは出来ないことを出来るようにする。その際に書き換えが発生し、既存ワールドに入ると警告画面が出て来る。マルチプレイサーバーでも起動時に同じ警告が出る。

  • 「はい」を押せばOK。別に取り返しのつかない変更ではなく、後でEndlessIDsやChunkAPIを抜いてもワールドが壊れたりはしない。不安ならバックアップを取ってから試す。

  • 画像では、同じくChunkAPIを利用する季節変更modのSeasonal Horizonsによる変更の警告も含まれている。

  • ChunkAPIも含め、全て抜くと警告画面も無しに元に戻る。ChunkAPIは抜かずにEndlessIDsだけを抜くと、EndlessIDsによる改変が無くなる旨の警告画面が出る。同様に「はい」を押せばOK。

SeasonalHorizonsで季節を変更する(1.7.10)

  • 前提mod
    ChunkAPI、UniMixins

github.com

  • コマンド
    /season set で季節を変更。
    early_spring, mid_spring, late_spring
    early_summer, mid_summer, late_summer
    early_autumn, mid_autumn, late_autumn
    early_winter, mid_winter, late_winter

  • 雪
    冬だと勝手に雪が積もるようになる。ゆっくりと積もり、冬以外になるとゆっくりと解けていく。雪が降ると雪が速く積もる。
    画像では雨になっているが、
    Dynamic Surroundings Unofficial 1.7.10 - Minecraft Mod
    を入れるとちゃんと雪が降るようになる。

  • 予定
    Distant Horizonsに対応する予定。

Angelica+KaizPatchXでEclipse-Shaderを使う

Eclipse - A Bliss Editとは

  • Chocapic13's Shaderを改造したBliss Shadersをさらに改造したもの。見た目をリアルにする機能が多数含まれる、重量級Shaderとなっている。また、DistantHorizonsにも対応している。

  • Angelica v2.2.10での機能追加によってまともに使えるようになった。Lwjgl3ify環境と、通常のJava8環境の両方で動作する。RTMでの描画バグも比較的少なく、少しの設定変更で実用的になる。もちろんRTMU 1.21.1でも使える。

  • 検証環境:Windows11 25H2、Core i5 13400F&GTX 1660 Super。内蔵GPUでは設定を落とさないと厳しい。macOSでも動くかは不明。

github.com

導入方法

  • 「< > Code ▼」を押して、「Download ZIP」からダウンロードする。

  • ダウンロードしたZipファイルをそのままshaderpacksフォルダに入れればOK。

既知のバグ

  • 「Ambient Light」⇒「FloodFill (Colored Lights)」⇒「Enabled:」をOFFにする。

    Colored Lightsは光源が出す光に色を付ける機能だが、このShaderではmodで追加される光源ブロックと相性が悪く、画像のように暗くなってしまう。OFFにすれば通常通り明るくなる。

  • 蛍光灯を横から見るとおかしくなっている。カバー付き蛍光灯では発生しない。

  • 遠くの物体を高倍率の望遠で見ると描画が乱れる。1.21.1でも発生したので、Iris本体かShader側のバグだと思われる。

動作の重さ

  • RTMで広く使われているSEUS RenewedやComplementaryなどと比べると、機能が多い分重い。設定の「プロファイル:」で大まかに調整できる。

  • 機能が多い分、どの描写もリアルで、設定の自由度も高い。設定を詰めるモチベーションがあるなら使いやすくて楽しいと思う。

おすすめ設定&一部解説

設定の検索

  • Shader設定画面左上にある「Search」で、設定項目の検索ができる。
    Iris & Oculus Searchの作者がAngelicaに移植したもの。

光の設定

  • 「Ambient Light」⇒ 「Torch Color」でブロックライトの色を変更できる。

    「Red Amount:」「Green Amount:」「Blue Amount:」を全部1.0にすると真っ白になる。

雲の設定

  • 「Cloud Settings」⇒「Cloud Shadow Strength:」を0にする。

    画像にある雲の影を追加する機能。撮影の邪魔になるので無効化を推奨。

  • 「Volumetric Clouds」をOFFにすると雲が全て消える。

  • 下にある「Cumulus Clouds」や「High Altitude Clouds」では、雲の種類ごとの設定ができる。個別にON/OFFすれば雲の量を調節できる。

  • 「Volumetric Resolution Scaling:」と「Cloud Samples:」で雲の解像度を調整する。値が大きいと激重になるため、小さめの方が良い。

空の設定

  • 「World」⇒「Sky Coefficients」⇒「Sky_Brightness:」で空の明るさを設定する。デフォルトだと少し暗いので、明るくした方が良い。

  • 「World」⇒「Atmosphere Ground:」をOFFにすると、地上付近の暗い部分が無くなる。上の雲の設定やSky_Brightnessと併せると、明るく開放的な空になる。

雨の設定

  • 「World」⇒「Weather Effects」⇒「Puddles:」を、「Only Complete Wetness」にすると、SEUS Renewedと同じように地面全体が濡れるようになる。

  • 下の「Ripples Intensity:」は、値が大きいほど雨粒が落ちた際の波紋が多くなる。さらに下の「Water Ripple Strength:」で、波紋の大きさを調整する。

    波紋の数を増やして、波紋を小さくすると現実での様子に近くなった気がする。

影の設定

  • 「Direct Light」⇒「Shadows」⇒「Shadow Distance:」で影の描画距離を調整する。

  • 上にある「Entity Shadow Distance:」で、エンティティの影の描画距離を調整する。デフォルトでは25%(Shadow Distanceの0.25倍の距離)。

  • 「Direct Light」⇒「Shadows」⇒「Shadow Filtering Settings」⇒「Basic Shadow Filter:」をOFFにすると、影の輪郭がはっきりとするようになる。

    代わりにギザギザが目立つようになるが、「Direct Light」⇒「Shadows」⇒「Shadow Resolution:」で影の解像度を上げることである程度対処できる。解像度を上げると当然重くなる。

暗い場所の設定

  • 「Ambient Light」⇒「Ambient Light Color」⇒「Minimum Light Brightness Outside」で、屋外で最も暗いとき(夜)の明るさを調整する。

    このShaderの夜はデフォルトだとかなり暗いので、この設定を弄ることをおすすめする。

  • 「Ambient Light」⇒「Ambient Light Color」⇒「Minimum Light Brightness Inside:」で、屋内で最も暗い場所の明るさを調整する。

    光源を明るくするとまぶしくなってしまうため、この設定で調整するのが良いと思う。

画質の設定

  • ポリゴン端部のギザギザを軽減する機能の一つである、Temporal Anti-Aliasing (TAA)は、効果が高い代わりにRTMの車両走行と相性が悪く、走行中に少し残像が発生したりしてしまう。
    「Post Processing」⇒「Anti-Aliasing Settings」⇒「TAA:」をOFFにすれば残像は無くなるが、画質がかなり悪化する。OptiFineにあった描画解像度2倍が欲しいところである。

  • 「Post Processing」⇒「Anti-Aliasing Settings」⇒「Temporal Upscaling:」をONにすると、映像のアップスケーリングをするようになる。

    下の「Scale Factor:」の値で調整する。値が小さいほど低画質&高FPS。

ブルームの設定

  • 「Post Processing」⇒「Bloom Multiplier」を0.0にすると、明るい部分がはっきりと見えるようになる。

太陽と月の設定

  • 「Direct Light」⇒「Sun Settings」⇒「Sun Angle:」で太陽の角度を調整する。

  • 「Direct Light」⇒「Moon Settings」⇒「Moon Brightness:」を0にすると月が消える。このShaderの月は昼でも明るく、邪魔になるかもしれないので、消すのを推奨する。

雪の設定

  • 「World」⇒「Weather Effects」⇒「Shader Snow Effect:」を「Always on」にする。

  • デフォルトだと微妙だが、下にある「Shader Snow Strength:」を最大の1.5にすればいい感じになる。

水の波の設定

  • 「Other Settings」⇒「Experimental Stuff」⇒「HYPER_DETAILED_WAVES」をONにすると、波がよりきめ細かく、リアルになる。

アンビエント・オクルージョン (AO) の設定

  • 見えづらいが、画像では座席が光を少し遮っていて、床が少し暗くなっている。これを実現するのがAOで、バニラでもブロック照明に使われている。

  • 「Ambient Light」⇒「Indirect Lighting:」を変更するとAOの品質を変更できる。
    「Vanilla AO」<「SSAO」<「HQ SSAO」<「GTAO」の順。
    GTAOより右はレイトレーシング (RT) となる。RTについては後述する。
    ※SS: Screen Space、HQ: High Quality、GT: Ground Truth

  • Vanilla AOはバニラ (Shader OFF)と同様。

  • SSAO~GTAOは、より細かくAOを適用する。
    「GTAO Quality:」を上げるとGTAOのノイズが減る。当然負荷も上がる。
    「AO Multiplier:」を上げると、SSAOでの暗い部分がより暗くなる。

  • RTMでは至る所に複雑なモデルを置くことになるため、SSAOやGTAOは重要。モデルのテクスチャで影を表現すればさらに良くなると思う。

レイトレーシング (RT)の設定

  • 「Ambient Light」⇒「Indirect Lighting:」を、「SSRT (AO Only)」「SSRT (AO + GI)」にすると、ハードウェア (RTXなど)に依存しないレイトレーシングが使える。AO + GIにするのをおすすめする。
    ※GI: Global Illumination

  • 画像では、幕や前照灯の光が車体の一部を照らし、窓から出た光が地面と壁を照らしている。何故か床下も照らされている。

  • 「Ambient Light」⇒「SSRT Settings」⇒「Ray Count:」「Ray Steps:」で品質を変更。値が大きいほど重くなる。

  • 本当は、IrisにRTを追加するPhotonicsというmodを使うのが本命で、Shader内蔵のRTはおまけ程度だと思われるが、現在Photonicsは1.21.11でしか使えない。誰かが1.7.10に移植してくれることを願う。

撮影に関する設定

  • 「Camera Settings」⇒「Screenshot Mode:」をONにすると、長時間露光によってノイズの少ないSSが撮れるようになる。視点を動かすとぼやけてしまうので、視点を固定してからONにする。動きのある、雨、雪、水の波、葉の揺れの撮影には向かない。
    この記事の画像でもScreenshot Modeを多用しているため、ノイズが少なくなっているが、実際の画面はもっとノイズまみれである。

  • 「Depth Of Field Settings」でDoFの有効化や細かい設定ができる。私は詳しくないので各自で試してほしい。