Contenu connexe Plus de エピック・ゲームズ・ジャパン Epic Games Japan (20) 大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD1. ©2016 SQUARE ENIX CO., LTD. All Rights Reserved.©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
Deep Dive
大規模タイトルのエフェクトマテリアル運用
株式会社スクウェア・エニックス 林 武尊
公開版
4. 自己紹介
• 林 武尊( TAKERU HAYASHI )
• エフェクトアーティスト
• KINGDOM HEARTS シリーズ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
9. 今日お話する内容
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アジェンダ
• エフェクトアセットの概要
あるタイトルでの事例
• アセット管理
• アセット管理での工夫
• ファイルサイズの計測
• チェック環境
補足事項
• テクスチャ
• マテリアル
• マテリアルの利便性向上
30. エフェクトアセットの概要
エフェクトの汎用アセットはこんなイメージ
Tex Tex Tex
テクスチャ
Tex Tex Tex
Tex Tex Tex
Tex Tex Tex
マテリアル
Mat Mat Mat
Mat
Inst
Mat
Inst
Mat
Inst
Mat
Inst
Mat
Inst
Mat
Inst
Mat
Inst
Mat
Inst
Mat
Inst
メッシュ
Mdl Mdl Mdl
Mdl Mdl Mdl
Mdl Mdl Mdl
Mdl Mdl Mdl
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
39. エフェクトアセットの概要
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ではどんなアセットを常駐させるのかというと
ゲーム中の読み込み時にネックになるアセット
つまりゲーム中の使用頻度が高い上で
「サイズが大きい」ものと「数が多い」もの
今後、ロード処理の抜本的な変更により
細かなアセットのロードも改善されるとのこと
41. エフェクトアセットの概要
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• TC_Default (DXT1)
• TC_Default (DXT5)
• TC_Alpha (BC4)
• VectorDisplacementmap
(非圧縮4チャンネル)
テクスチャのサイズ
※PS4向けにクック後のファイルサイズ / 全てMipmapあり
UE4.13で計測
‥1024x1024で約680KB
‥1024x1024で約1370KB
‥1024x1024で約680KB
‥1024x1024で約5460KB
42. エフェクトアセットの概要
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• マスターマテリアル
標準(半透明/Unlit)
不透明でやや複雑
半透明でDefaultLit
デカールでやや複雑
• マテリアルインスタンス
マテリアル関数
マテリアルのサイズ
※PS4向けにクック後のファイルサイズ
UE4.13で計測
‥約110~140KB
‥約230~270KB
‥約470~480KB
‥約280~320KB
‥約1~3KB
‥約1.6~2KB
44. エフェクトアセットの概要
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
これらを踏まえると‥
• テクスチャとマスターマテリアルは常駐の対象
• メッシュは容量は小さめだが使用頻度が高いものは
常駐させて良いように思う
• マテリアルインスタンスは容量は極小だが
UE4.11~12当時はファイル数が多いことがロードの
ネックになっていたので常駐に含めていた
今後のロードの改善に合わせて方針も変わりそう
47. エフェクトアセットの概要
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
プレイヤーの汎用技
汎用的に配置されるもの
いつでも出る可能性のあるもの
プレイヤーの読み込み技
ボス
カットシーン
背景エフェクト
固有アセット
理想
テクスチャ、メッシュ、マテリアル
メモリに常駐させるアセット
レベルに依存しないもの レベルに依存するもの
48. エフェクトアセットの概要
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
テクスチャ、メッシュ、マテリアル
プレイヤーの読み込み技
ボス
カットシーン
背景エフェクト
プレイヤー
汎用配置物など
プレイヤーの汎用技
汎用的に配置されるもの
いつでも出る可能性のあるもの
実際常駐させる固有アセットメモリに常駐させるアセット
レベルに依存しないもの レベルに依存するもの
50. ©2016 SQUARE ENIX CO., LTD. All Rights Reserved.
あ る タ イ ト ル で の 事 例
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
54. あるタイトルでの事例
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
21
67
1 0 6 6 0
9
34
0 0
14 22
0
132
98
1 0
44
52
0
テクスチャ マテリアル インスタンス 関数 メッシュ パーティクル その他
○ アセットの総ファイルサイズ 約500 MB
常駐指定100 MB プレイヤー80 MB 固有320 MB
162MB 200MB 2MB 0MB 64MB 80MB 0MB
※常駐テクスチャの大多数は実際にはストリーミングされていた
UE4.13で計測
59. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
level
useful
common
enemy
player
effect
メモリに常駐させるアセット
常駐させないが汎用的なアセット
エフェクト全体の主なフォルダ構成
管理者だけ編集可
60. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
level
useful
common
enemy
player
effect
各地にちらばっている
汎用的なアセットを移動
エフェクト全体の主なフォルダ構成
61. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
level
useful
common
enemy
player
effect
エフェクト全体の主なフォルダ構成
使用頻度が低いなら降格
使用頻度が高いなら昇格
64. アセット管理
エフェクトのマテリアルで扱う主な要素
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• アルファ合成 / 加算合成
• 両面 / 片面
• Particle Colorの反映
• 頂点カラーの反映
• テクスチャの反映
• SubUVアニメーション
• UV周りの設定
• Dynamic Parameter
• ソフトパーティクル
• フレネル
• ニアフェード
• その他いろいろ‥
66. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
マスターマテリアルが組み合わせ爆発を起こす
アルファ
加算
両面
片面
ParCol
あり
ParCol
無し
VerCol
あり
VerCol
無し
通常TEX
SubUV
カラー
モノクロ
DynParam
あり
DynParam
無し
ソフトあり
ソフト無し
フレネルあり
フレネル無し
フェードあり
フェード無し
1024種類
67. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
なので何を制限・統一するかという話になる
アルファ
加算
両面
片面
ParCol
あり
ParCol
無し
VerCol
あり
VerCol
無し
通常TEX
SubUV
カラー
モノクロ
DynParam
あり
DynParam
無し
ソフトあり
ソフト無し
フレネルあり
フレネル無し
フェードあり
フェード無し
64種類
71. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• ライティングあり か 無し か
⇒ どちらも使うケースがあるが基本的には無し
Shading Model
あり 無し
72. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 片面 か 両面 か
⇒ どちらも使うケースがあるが基本的には両面
両面処理
両面じゃないと困る例1 両面じゃないと困る例2
73. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 半透明を別バッファに描き被写界深度の後に合成する
またいわゆる縮小バッファとして利用できる
あり か 無し か
⇒ 基本的には無し
Separate Translucency
Separate
Translucency
OFF
被
写
界
深
度
Separate
Translucency
ON
不
透
明
描画の流れ
74. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 半透明へのTemporal AAの影響をマスクする
あり か 無し か
⇒ Temporal AAを使用しないので無し
Responsive AA
75. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• する か しない か
⇒ 拡張対応面で便利なものの今回は無しで運用
次の機会に使ってみたい
マテリアルアトリビュートを使用
77. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• エフェクト側から色を与えるノード構成
あり か 無し か
⇒ 基本的にあり
使用しないのは屈折マテリアルなど一部の例外のみ
Particle Color
あり 無し
78. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• メッシュの頂点カラーを取得するノード構成
あり か 無し か
⇒ 不要なものも沢山あるが基本的にあり
スプライトパーティクルには必要ないが全てに内包
頂点カラー
あり 無し
79. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• TextureSamplerノードで色を与える構成
カラー か モノクロ か
⇒ どちらも使うケースがある
Sampler Typeの種類分だけ数が増えるので‥
カラーはDXT1、モノクロはBC4で統一
テクスチャの種類
DXT1 BC4
80. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 余談
テクスチャを使用する か 固定値 か
⇒ マテリアルの種類を増やしたくなかったので
必ずテクスチャを使用する形にした
固定値は1x1ドットの真っ白テクスチャを使う
テクスチャの種類
1x1
81. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• フリップブックアニメーションが可能なノード構成
通常のテクスチャ か SubUVを利用する か
⇒ どちらも使うケースがある
パターン切り替え時にブレンド補間が可能
全てParticleSubUVにするという選択肢もある?
Particle SubUV
82. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• UVのタイリングやスクロール速度を指定する構成
あり か 無し か
⇒ タイリングに関しては基本的にあり
1. 全てのテクスチャノードはタイリング可能
2. メッシュ用ではスクロール速度を指定可能
UV周りの設定
83. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 余談
エフェクト側の機能としてマテリアル全体の
UVの90度回転とタイリング数の指定が可能なよう拡張
UV周りの設定
90度回転 タイリング
84. • エフェクト側からの動的な値をマテリアルで取得する
あり か 無し か
⇒ どちらも使うケースがある
UVスクロールやUVの初期値ランダム用にメッシュ限定で使用
アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
Dynamic Parameter
85. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• いわゆる「ソフトパーティクル」を行うノード構成
あり か 無し か
⇒ どちらのケースもある
GPU負荷もあるので全てのマスターマテリアルには含めない
Depth Fade
あり 無し
86. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• いわゆる「フレネル」を行うノード構成
あり か 無し か
⇒ どちらのケースもある
大抵はメッシュパーティクル用途に限られる
Fresnel
あり 無し
87. • カメラ方向にパーティクルの位置をズラすノード構成
あり か 無し か
⇒ GPUパーティクル用途では欲しい
エフェクト側に代替となる機能を追加拡張
なのでマスターマテリアルには含めない
アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
カメラオフセット
※GPUパーティクルではCamera Offset
モジュールが使えないため
88. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• パーティクルがカメラに近いとフェードするノード構成
あり か 無し か
⇒ どちらのケースもあるが基本的には無し
どうしても欲しい場合は固有マテリアルで対応
⇒ 後にエフェクト側に機能を追加拡張
ニアフェード
89. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
以上をベースにして必要最小限の組み合わせを決めた
アルファ
加算
カラー
モノクロ
通常
SubUV
ソフトあり
ソフト無し
フレネルあり
フレネル無し
32種類
SubUVに統一できるならさらに半分に減る‥
モノクロに統一できるならさらに半分に減る‥
90. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
統一性を取るならこのような感じだが‥
アルファ
加算
カラー
モノクロ
通常
SubUV
ソフトあり
ソフト無し
フレネルあり
フレネル無し
32種類
両面
頂点カラー:あり
UVタイリング指定 ・ スクロール速度指定
DynamicParameterはどうしよう‥
91. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
スプライトパーティクル用途の場合
アルファ
加算
カラー
モノクロ
通常
SubUV
ソフトあり
ソフト無し
メッシュパーティクル用途の場合
アルファ
加算
カラー
モノクロ
ソフトあり
ソフト無し
フレネルあり
フレネル無し
16種類
16種類
DynamicParam含む
92. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
さらに千切れマスターマテリアルが欲しいとなった場合‥
アルファ
加算
カラー
モノクロ
通常
SubUV
ソフトあり
ソフト無し
フレネルあり
フレネル無し
32種類
8
いくつか制限を決めて8種類をリリース‥という感じ
モノクロのみに制限できるならさらに半分に減る
93. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
ただしスプライトパーティクル用のマテリアルを
メッシュパーティクルに転用したり、その逆も考えられる
ので、設定は統一できるところは統一した方が良い
97. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• Static Switch Parameterを使いたかった
当初は使っていたが、分岐を変えると別シェーダーに
なりファイルサイズ増大に繋がったため全て撤廃
スイッチの切り替えは「管理者しか触らない」運用も考えたが
うっかり触ってしまうケースを懸念して断念した
シンプルさとメンテナンス性について
98. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• ブレンドモードの変更はマテリアルインスタンス側で
マテリアルプロパティオーバーライドで上書いて
上書いたものだけは孫インスタンスで利用する
別シェーダー扱いになるので管理者のみ行うルール
こちらは設定場所が離れていて分かりやすいのでアリとした
シンプルさとメンテナンス性について
アルファ
子
加算
孫 孫子
99. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• PS4実機上で処理負荷をざっと計測して
マスターマテリアル構築時に判断材料にした
※具体的なことは後述
処理負荷について
101. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• テクスチャの場合‥
かなりガチガチに決めている
作成者 カテゴリ 内容 補足
htx_fir_8x4_00
林作成 テクスチャ 炎 8x4パターン 00番
htx_smk_02n
林作成 テクスチャ 煙 02番のノーマルマップ
連番
102. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• マテリアル / マテリアルインスタンスの場合‥
かなりガチガチに決めている
作成者 カテゴリ 内容 連番
hmi_smk_8x4_fs02a
林作成 マテリアルインスタンス 煙 8x4パターン
フレネル付 ソフトパーティクル付 02番 アルファ合成
f (フレネル) / s (ソフトパーティクル) / a (アルファ) / k (加算)
機能 合成
103. アセット管理
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• ParticleSystemの場合‥
かなりガチガチに決めている
V カテゴリ 内容A
vp_aaa_hit1
プレイヤーの 技「AAA」のヒットエフェクト 1番
ve_bbb_ccc0
敵「BBB」の技「CCC」のエフェクト 0番
内容B 連番
104. ア セ ッ ト 管 理 で の 工 夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
105. アセット管理での工夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
コンテンツブラウザ上でマテリアルやパーティクルの
アセット名とサムネイルでは中身が判断つきにくい
でもエクセルやWikiで一覧を作るのも大変だし
スタッフがそれを確認しながら作業するのも大変なので‥
107. アセット管理での工夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• パーティクルにもタグ付けの機能を追加してもらった
説明文、担当者、カテゴリ、属性、進捗状況など
コンテンツブラウザ上でポップアップ表示される
タグ付け
109. アセット管理での工夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• タグの内容や使用モジュールで検索が可能
設定に注意が必要なモジュールを検索したりできる
• エフェクトのプレビューも可能
プレビューでのポストプロセスの設定変更も可能
• ツール上からの設定変更が可能
エフェクトアセットサーチャー
110. アセット管理での工夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
アセットの使用頻度を調べたいことがよくある
① 使用頻度が高いものを常駐アセットに昇格させたい
② 使用頻度が少ないものを常駐から外したい
③ 全く使用されていないものを削除したい
‥1つ1つリファレンスビューワで確認する?
116. アセット管理での工夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• テクスチャの基本的な設定の漏れに関しては
たまにプロパティマトリクスで調べて一括変更する
マテリアルは昔は使えたが今は使えない模様
設定の一括変更
117. アセット管理での工夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• マテリアルの内部に対して検索をかけ、ノードの設定
を一括で変更するコマンドレットを作成してもらった
実行ファイルで直接アセットデータを書き換える
例1:TextureSamplarノードのSamplarTypeを
TC_GrayscaleからTC_Alphaに一括変更する
例2:メインマテリアルノードの設定を一括変更
設定の一括変更
118. アセット管理での工夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 開発が進むにつれ気軽に一括変換できなくなった
※意図しない設定でエフェクトが調整されているため
なので今後は検索して重要な設定の漏れがあるものを
リストアップだけして手動で変更する方向で検討
設定の一括変更
119. アセット管理での工夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 巨大なサイズのテクスチャはサイズマップで調べる
LOD Biasは反映されないがMaximum Texture Sizeは反映される
巨大なテクスチャの検出
120. アセット管理での工夫
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 背景班のアセットを使用したい場合にルールを設けた
① 事前に連絡する
② 基本的にはコピーはしない
③ 共有コレクションに登録する
• エフェクトのアセットの削除やリダイレクタ修正で
他の班のアセットに更新がかかる場合は事前確認する
他セクション間でのやり取り
121. フ ァ イ ル サ イ ズ の 計 測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
123. ファイルサイズの計測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
クックとは
指定プラットフォーム向けに
アセットをフォーマット変換する行為
デプロイとは
データを開発機にコピーしたりなどの
各プラットフォームで動かすこととその準備
By Epic 篠山さん
124. ファイルサイズの計測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 開発途中から毎晩自動でクック
• ログのテキストでクック後のアセットが一覧できる
• マクロで集計しやすい形に整形して簡易的に確認
秀丸マクロとExelのVBAマクロを併用した
のちに背景班ではPythonスクリプトを用意
ナイトリークック
125. ファイルサイズの計測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• クックサイズをグラフで確認できるウェブページが
プロジェクトのHP内に用意された
各パートごとのファイルサイズが一目で分かる
日々の推移も確認できる
こちらでデータの総容量を確認していた
ナイトリークックの自動集計ページ
126. ファイルサイズの計測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• クック後のファイルサイズを調べるだけなら
実機は必要無いので手軽に可能
専用マップを作ってUnreal Frontendでクック
• 少し条件を変えてすぐに再クックするなら5~15分
指定フォルダ内のファイルを検索してファイルサイズ情報も
込みでリストアップ、CSVで出力するツールを利用
手動でのクック
129. ファイルサイズの計測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
※sRGB = ON
GrayscaleはsRGBがONだとPS4でもXboxOneでも4チャンネル扱い
VectorDisplacementはアルファチャンネル無しでも4チャンネル扱い
UE4.13で計測PS4向けにクック後のテクスチャ(KiB)
131. ファイルサイズの計測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
LOD Biasはファイルサイズに反映されるがマイナスの値は反映されない
LOD BiasはNoMipmap設定時には当然ながら反映されない
MaximumTextureSizeはNoMipmap設定時でも反映される
LOD BiasとMaximumTextureSizeは併用しても反映される
UE4.13で計測PS4向けにクック後のテクスチャ(KiB)
134. ファイルサイズの計測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
インポート設定のAuto Generate Collisionと
Generate Lightmap UVsがONだと約1.7倍のサイズになる
UE4.13で計測PS4向けにクック後のメッシュ(KiB)
135. ファイルサイズの計測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 条件:EmissiveとOpacityにBC4のテクスチャ2枚
頂点カラーとパーティクルカラーを混ぜたもの
テクスチャはUVのタイリング数を指定可能
UE4.13で計測PS4向けにクック後のマテリアル(KiB)
139. ファイルサイズの計測
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• マテリアル内のテクスチャ系のパラメータ化した
ノードでデフォルトで設定しているテクスチャ
• メッシュにデフォルトで設定しているマテリアル
クック時に含まれてしまう要素
144. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
パフォーマンスで指標になるのは
シェーダー複雑度、パーティクル数、エミッター数や
パーティクルに内包したライトの数や範囲
147. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 台座に近付くかレベル開始時に再生
• エフェクトのオフセットの指定も可能
• 台座を中心に周回させる機能
周回速度の指定が可能
周回方向にエフェクトの向きを
合わせる設定もある
• チェックで非常に重宝
エフェクト台座
149. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• エフェクトをいくつでも登録することが可能
ゲームプレイ時にキーボードショートカットで
エフェクトを切り替えて再生できる
エフェクト切り替え表示アクター
150. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 矢印キー左右でエフェクトの切り替え&再生
スペースキーで現在のエフェクトを再度再生
• 今どのエフェクトが表示されているかはログに表示
• エフェクトをXY軸方向に
好きな数だけ並べられる
指定範囲で等間隔に配置する
エフェクト切り替え表示アクター
152. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 朝から夜の10個の時間帯のライティング環境を設定
したサブレベルをショートカットで切り替えられる
• PostProcessVoumeアクターの設定もプロジェクトで
標準的な設定にしてもらう
• 暗いシーン、明るいシーンどちらでも破綻のない
見た目になっているかチェックする
全時間帯が切り替えられるレベル
155. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 最低限の構成のレベルを用意
床と平行光源1つとエフェクト切り替え表示アクター
• 余計な処理を全てOFF
• 垂直同期をOFF
FPSの天井を上げる
r.VSync 0
t.maxFPS 120
処理負荷の計測の流れ
156. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• オーソドックスなテクスチャとマテリアルのセットを
5種類用意して、それぞれをエミッターに登録した
シンプルな標準想定のエフェクトを基準として用意
• さらに一部の条件を色々と変えたエフェクトを用意
• それらをエフェクト切り替え表示アクターに登録
処理負荷の計測の流れ
157. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• エフェクト1個では差が僅かで計測しづらいため
単体と25個など同時再生数を変えてそれぞれ計測
• Stat Unitの値でざっくりとチェック
バージョンアップごとにはやってられないが
どこかのタイミングで一度行っておくと参考になる
処理負荷の計測の流れ
158. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 基本構成(Unlit)
• DefaultLit
• 片面と両面
• Fresnelあり
• ソフトパーティクルあり
• World Position Offsetあり
• Powerを沢山入れたもの
• 極座標を沢山入れたもの
• DynamicParameter入り
マテリアル関連での計測結果 UE4.9の頃
159. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 基本構成(Unlit)
• DefaultLit
• 片面と両面
• Fresnelあり
• ソフトパーティクルあり
• World Position Offsetあり
• Powerを沢山入れたもの
• 極座標を沢山入れたもの
• DynamicParameter入り
-
CPU/GPU上昇
差は無し
GPU微上昇
GPU上昇
差はほぼ無し
GPU微上昇
GPUかなり上昇
GPUかなり上昇
UE4.9の頃マテリアル関連での計測結果
UE4.13で差は無し
161. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 最初に班内のメンバーに日替わりでクックしてもらい
Unreal Frontendを覚えてもらった
• プログラマに負荷チェックのアドバイスを
実機プレイしながらレクチャーしてもらった
• テストはDevelopersフォルダで行ってもらう
実機に乗らない実験データや途中段階のデータも
キリの良いタイミングでDevelopersに移してもらう
その他 ちょっとしたこと
162. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 特別に重たい表現は描画エンジニアに相談
例えばParallax Occlusionは処理負荷を実機で計測
して班内に周知し、使用場面を限定してもらう
(大技で画面に1個だけ出る場合ならOKのような)
画面内での描画面積にも気を付けてもらう
その他 ちょっとしたこと
163. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 描画に不具合が起こった場合はRenderDocで
キャプチャーして描画エンジニアに提出
シンプルなのでアーティストでも使いやすい
キャプチャーデータを
提出時には描画のどの
タイミングで起こって
いるか、大まかに見る
くらいはしている
その他 ちょっとしたこと
164. チェック環境
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• こんなXYZ三軸メッシュモデルを用意しておくと
スプライトの挙動やアタッチのチェック等で大変便利
その他 ちょっとしたこと
165. ©2016 SQUARE ENIX CO., LTD. All Rights Reserved.
補足事項
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
167. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• なるべく必要最小限にする前提で
ゲーム中に表示して許せる解像度にする
• 1024 x 1024 を上限の目安としてルール化
• どうしても大きいものが欲しい場合もある
(広範囲のデカール、SubUVテクスチャ)
解像度
169. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 可能なものは 1/4カット、1/2カットで用意
Tilling MethodはMirrorにしておく
マスターマテリアルでは全てのテクスチャをタイリング可能にしておく
解像度
170. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• ミップマップの仕様を理解しておく必要がある
テクセル密度が高いほどMipLevelが上がる
• つまりカメラからの距離だけでなく
パーティクルのスケーリングや
UVのタイリング数によってMipLevelが変化する
当初は理解していなかったため、GPUパーティクル用に
解像度の低いテクスチャを用意したりしていた‥
ミップマップ
171. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• カットシーンでもカメラから少し離れてるなら
512 x 512 で十分だったりする
• アンコウさん(@dgtanaka)のブログ記事が分かり易い
ミップマップ
『MipMapを可視化しよう』
http://qiita.com/dgtanaka/items/2ec0fd88236daa5c3cc7
174. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 基本的にはNoMipmapsにはしない
MipMapが生成されない分ファイルサイズは減るが
常に最大解像度のテクスチャがメモリに乗るため
またエイリアシングが目立つ
Mip Gen Settings
175. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• マテリアル内でタイリングしてスケール調整する例
微調整できるのでスタッフには好まれているが‥
MipLevelが上がるので可能ならやめた方が無難
やるなら専用にNoMipmaps設定にした方が良いかも
U1, V1U2, V2
※Clamp設定にする必要あり
Mip Gen Settings
176. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• Effectsで統一するルール
一括で内部設定を変えることができる
アセットの種類を特定することができる
Texture Group
177. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• カラー(DXT1)はsRGBをON / モノクロ(BC4)はOFF
モノクロテクスチャはマテリアル内で累乗している
また不透明度も累乗しないと違和感が出る問題がある
なので不透明度もマテリアル内で累乗するよう対応
ガンマ
181. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 2.2乗から2乗へ移行する際はテクスチャをPhotoshop
のレベル補正で中間ポイント0.91あたりで調整する
ガンマ
182. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• すると調整前のテクスチャに2.2乗した結果と
並べてみてほぼ分からないくらいに一致する
調整済み
2.2乗
2乗
ガンマ
183. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 圧縮設定をBC7はVectorDisplacementmapの
代わりに使用して大幅にファイルサイズが減らせる?
Compression Settings
184. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• テクスチャの最大サイズはLOD Biasでは無く
Maximum Texture Sizeで指定した方が良い
NoMipamapでも反映される / サイズマップにも反映される
Maximum Texture Size
185. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 特に意図が無ければ基本的にはWrapから変えない
同じ絵柄でWrapとClamp両方用意するのは避けたい
X(Y)-axis Tiling Method
186. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 国際基準のsRGB IEC61966-2.1に対応したので
Photoshopと一致させるにはチェックをOFFにする
Use Legacy Gamma
187. テクスチャ
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 基本的にONにはしない
全てのMipLevelをメモリ上に乗せてしまうから
• ただしどのMipLevelも使用頻度が高いならONもアリ
また炎のようにディティールがあるものも検討対象
一発目のロード時間を念頭に入れつつ設定する
Never Stream
189. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• ONとOFFが混在すると描画順に影響が出る
なので基本的には統一した方が良い
これによってマテリアルの運用に影響が出る
Separate Translucency
Separate
Translucency
OFF
被
写
界
深
度
Separate
Translucency
ON
不
透
明
190. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 基本的にOFFにする場合
ゲーム中に被写界深度があり、影響を受ける
ただし影響を受けたくない場合にSeparate ONの
汎用マテリアルを別途用意&管理する必要がある
プログラマにデフォルト設定をOFFにかえてもらった
• 基本的にONにする場合
ボケを擬似的に表現するマスターマテリアルを
別途用意&管理が必要?
Separate Translucency
採用
191. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 必要最小限の設定にしたい
しかし汎用マテリアルには
最初から設定しておきたい
ので‥
Particle Sprites
Beam Trails
Mesh Particles
の3点はチェックONで運用
Static Lightingも入れといてOKかも
Usage
192. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• プログラマにマテリアルの詳細パネル内に
専用の項目を追加してもらった
チェックボックスをONにするだけなのでとても楽
例:エミッシブカラーの値の露出補正への対策など
独自の設定項目
193. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• Divideノード使用時にはBポートに0が入る可能性を
考慮して0.0001をAddするなど対策を行う
実際に描画の不具合の原因だったことが何度かあった
0除算対策
Addの方が高速で、厳密にやるならMaxやMinやClampが良い(篠山さん)
194. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 複数のTexture Parameterにマテリアルインスタンス
内で同一テクスチャを複数指定した場合、その数だけ
サンプリングされてしまう
同一テクスチャの複数回の参照
195. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• テクスチャのSamplerTypeがAlphaの場合は
Rチャンネルの値を使用するようにする
SamplerType周りの注意点
プラットフォームで赤く表示される可能性あり / R を使用するのが無難
200. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• DynamicParameterノードの利用先
定番はUV周りの設定?
ここで吸収することでマテリアルインスタンスの数を
一気に減らせるので何気に重要
• ParticleColorノードの色以外への利用先
EmissiveColorが固定値で良い場合に活用できる
例えば屈折マテリアルでは屈折の強さに使用している
工夫しがいのある部分
201. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• ParticleRandomノードの利用
GPUパーティクルに限定されるものの
パーティクルごとに0~1のランダムな値を与えられる
UVスクロールの初期値ランダムやSubUVの
開始パターンのランダムに利用するなどが考えられる
工夫しがいのある部分
202. マテリアル
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• Static Component Mask Parameterノードの利用
BC7を使用して4チャンネルを使い分ける構成ができる
ただし切り替えで別シェーダーになるため注意が必要
工夫しがいのある部分
204. マテリアルの利便性向上
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 汎用アセットのマテリアル、マテリアルインスタン
ス、
マテリアル関数にはしっかりと説明文を記入する
コンテンツブラウザでポップアップ表示される
説明文の記載
207. マテリアルの利便性向上
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• マテリアル関数のInput / Outputノードには
適切なデフォルト値を入力して
Use Preview Value as DefaultをONにする
デフォルト値の設定
208. マテリアルの利便性向上
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• マテリアル内でパラメータ化したノードや
DynamicParameterに適切なデフォルト値を入力する
テクスチャの場合クックされることに注意する
デフォルト値の設定
210. マテリアルの利便性向上
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• パラメータには可能なものは値に制限を付ける
インスタンス側でスライドバーでの確認が容易になり
マイナス値など想定外の値で使用されるのも防げる
そうすると後のメンテナンスが楽になる
パラメータの値の制限
211. マテリアルの利便性向上
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 親マテリアルを差し替えた時パラメータ名が同じだと
設定した値を引き継いでくれるので、パラメータ名は
シンプルでストレートなものが良いが、その前提で‥
パラメータ名の設定
212. マテリアルの利便性向上
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• Group名の並び順を指定できないので基本要素の
「1 Emissive」「2 Opacity」「3 Normal」など
一部だけ先頭に連番を付けた
パラメータ名の設定
214. 最 後 に
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
215. 最後に
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
• 開発が進むと大きく変更するのが厳しくなるので
最初に考えられることはできるだけ考えるのが良い
• 初めてだとUE4の機能や仕様の把握、実機で出すと
どうなのかという検証などにとても労力がかかった
なので積極的に情報交換した方が良いように思う
• 今後のDeepDiveもとても楽しみ!
216. 最後に
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
長時間お付き合いくださりありがとうございました!
駆け足でお見苦しかったらすみません
後日ゆっくりスライドを見て頂けたらと思います
217. 最後に
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
何かご意見やご質問等ありましたらこちらまで
お気軽にメールください!
hatakeru@square-enix.com
218. ご清聴ありがとうございました!
©2017 SQUARE ENIX CO., LTD. All Rights Reserved.
Unreal Engine 4 は Epic Games 社の商標または登録商標です。
PlayStationは株式会社ソニー・インタラクティブエンタテインメントの商標または登録商標です。
その他掲載されている会社名、商品名は、各社の商標または登録商標です。