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