水ノ茉の宣伝
準備中...
ゲームを作る予定なの水ノ茉
始まり
アウトラインカラーとマスクをSceneTextureノードから取得できるようにします。
SceneTextureノードとは?
シーンカラーや深度、GBufferなどを取得するノードです。
| Scene Texture Id | 見た目 |
|---|---|
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
エンジン改造とは?
ゲームエンジンのコードを書き換える行為をエンジン改造と呼びます。
尚エンジン改造という呼称が正式かは知らんです。
これ以上の真面目な説明はググればヒットするので割愛します。
以下、実際の描画まわりの改造事例です。
前髪を透かしたり


毛先まで綺麗に表現できるポストプロセスなアウトラインを描いたり

キャラと背景を別々のシャドウマップに書き込んでセルフシャドウを抑制したり
髪影を落としたり


頂点IDノードを追加して、それを元に鼻に線を引いたり



リポジトリ
最新バージョンのみ保守しています。
過去バージョンが動かないと言われても基本的には知らんがなスタイルです。
- Unreal Engine 5.3
- Unreal Engine 5.4
実装
めっちゃ簡単。

Engine/Source/Runtime/Engine/Public/MaterialSceneTextureId.h
ESceneTextureId列挙体にPPI_OutlineColorを追加します。
RGBでアウトラインカラー、Alphaにアウトラインマスクを格納するレイアウトです。
Engine/Source/Runtime/Engine/Public/MaterialShared.h
SceneTextureノードでPPI_OutlineColorが選択された際にGバッファが使用されることをマークしています。
Gバッファにアクセスすることが許容されていないマテリアル(不透明など)で使えないようにするための対応ですね。
Engine/Shaders/Private/MaterialTemplate.ush
PPI_OutlineColorのシェーダー側の定義です。
IDはMaterialSceneTextureId.h側で定義しているものと一致させておきましょう。
SceneTextureノードでPPI_OutlineColorを選択された際にアウトラインカラーとマスクを返している箇所です。
ポストプロセスマテリアルで使ってみる
以前作成したポストプロセスアウトラインを元に動作確認をしていきます。
アウトラインカラーの反映
髪の毛と肌と衣類で色を別けてみました。


アウトラインマスクの反映
目元のアウトラインをマスクしてみました。


おわり!!!
簡単でしょ。
次回はアウトラインカラーとマスクを可視化するビジュアライザを整備していきます。






