目次
はじめに
どうもこんにちは、情熱開発部の今井です。
残暑も落ち着いてエアコン付けっぱの日々からやっとおさらばできました。
でも急に涼しくなりすぎですね…
最近、UE5のマテリアル周りを調べる機会があり、知っておくと便利そうな機能を色々見つけることができました。
今回はその中の1つのUserSceneTextureというUE5で追加された機能について紹介していきたいと思います。
UserSceneTextureについて
UserSceneTextureはポストプロセスマテリアル内で書き込みと読み取りが可能なユーザー定義のレンダーターゲットを一時的に保存する機能です。
簡単に言うとポストプロセスマテリアルの描画結果を一時保存して別のポストプロセスマテリアルで使用できます。
これを活用すれば複雑な処理構成になりがちなマルチパスのポストエフェクトを従来より手軽に作成することができます…!
使い方
それでは実際にUserSceneTextureを用いてポストエフェクトを作成する手順を紹介していきます。
使用バージョン
※UnrealEngine 5.6.1
※ベースプロジェクト GAMES→ThirdPerson
UserSceneTexture保存用のマテリアル作成
まずは描画結果をUserSceneTextureに保存する用のポストプロセスマテリアルを作成していきます。
ContentBrowserのAddからMaterial→Materialでマテリアルを作成し、MaterialDomainを「PostProcess」に変更します。

グレースケール化のノードを組む
今回はUserSceneTextureに保存する用のポストエフェクトとして画面全体をグレースケール化させるノードを例として組みます。
※SceneTexture部分は後で差し替え

UserSceneTextureを設定
元となるポストエフェクトを作成できたので、UserSceneTextureとして使用するための設定を行っていきましょう。
UserSceneTextureは保存するテクスチャの名称として「GrayScaleTexture」、
ResolutionRelativeToInputを「Input」に変更します。
また、SceneTexture部分もUserSceneTextureを使う形に差し替えます。
※UserTextureDivisorはUserSceneTextureの縮小度になっていて、
0だとそのまま(おそらく1も)値が増えるごとに粗く保存されます
※Filteredは歪み軽減、Clampedはテクスチャのクランプ設定

マテリアルインスタンスを作成
次は追加したポストプロセスマテリアルをインスタンスとして使用するためのマテリアルインスタンスを作成します。
ContentBrowserのAddからMaterial→MaterialInstanceでマテリアルインスタンスを作成し、
Parentには先ほど作成したポストプロセスマテリアルを設定、
Inputは「SceneColor」、UserSceneTextureOutputは「GrayScaleTexture」に設定します。
これでグレースケール化した描画結果を他のポストプロセスマテリアルで使用できる形になりました!


保存したUserSceneTextureを使用するマテリアル作成
では上と同じ手順でマテリアルを追加し、グレースケール化を行ったUserSceneTextureを使用するポストエフェクトを作成していきましょう。
今回は画面のピクセル化と色合いの変更を入れてレトロゲーム風の画面になるポストエフェクトを例として組みます。
このポストプロセスマテリアルではUserSceneTextureとResolutionRelativeToInputは「None」のままでOKです。
※ノードの作成中はテスト用として「SceneColor」のUserSceneTextureを使うのがオススメ

マテリアルインスタンスも作成します。

ポストエフェクトの適用
では作成した2つのポストプロセスマテリアルをThirdPersonのレベルに適用していきましょう。
PostProcessVolumeが配置してあるはずなので、DetailsのPostProcessMaterialsに作成した2つのマテリアルインスタンスをアタッチしましょう。
これでグレースケール化→レトロゲーム風エフェクトの形でレベルに適用されます!
レトロゲーム風エフェクトのマテリアルの方にもUserSceneTextureの設定を行えば、この描画結果を他のポストプロセスマテリアルで使用できます。

まとめ
今回作成手順を紹介したUserSceneTextureを使ったポストエフェクトはノード構成が簡単なものだったので1つのマテリアルで事足りる形ではありましたが、もっと複雑なポストエフェクトを作成する場合や複数人でマテリアルを編集する場合にはUseSceneTextureを活用することでエフェクト別にマテリアルを分けられて便利なので知っておいて損はないと思います…!
最後までご覧いただきありがとうございました!
参考文献
【免責事項】
本サイトでの情報を利用することによる損害等に対し、
株式会社ロジカルビートは一切の責任を負いません。




