グラフィックスメソッド
モバイルデバイスでは何ができるのでしょうか?ゲームに応じた、どのような計画が必要になるでしょう?ゲームの実行が遅く、プロファイラーがレンダリングのボトルネックを指し示しているとき何を変更したらよいかどうやったら判るでしょう?見栄えがよいままに実行を速くするにはどうしたらよいのでしょうか?このページでは、一般的かつ専門的になり過ぎないように、その方法を解説しています。詳細な情報が必要な場合は、レンダリングの最適化を参照してください。
どのくらい、現在のコンシューマー向けモバイルで合理的に実行を期待できるか:
- 静的なジオメトリをライトマップしますが、以下に注意:
- アルファテストシェーダーを多くを使う
- バンプマッピング、特に組み込みシェーダーを使う。
- 多ポリゴン回数
- 派手なシェーダーでの文字のアニメーションは以下に注意:
- スプライトと 2D ゲームは以下に注意:
- オーバードロー、またはお互いの上に多くのレイヤーを描く
- パーティクルエフェクトは以下に注意:
- 大きな粒子上で高密度(多くの粒子が互いの上に描かれ、これは別のオーバードロー状況)
- 粒子の莫大な数、または粒子加速器
- フィジクスは以下に注意:
現在のコンシューマー向けモバイル端末で何の動作を期待できないのか。
- グローと被写界深度のようなフルスクリーン画面イメージ効果
- ダイナミックピクセル単位のライティング(複数の光が重要とマークされ、ライトマップにベイクされない)
- すべての影響を受けるオブジェクトは、使用するすべての動的光のために追加の時間内に描いているが、これはすぐに遅くなります。
- すべてのものにリアルタイムシャドウ
- Unity は、モバイルプラットフォーム上でリアルタイムのシャドウのネイティブサポートを提供していますが、使用はハイエンドデバイスに限定するのが非常に賢明と思われます。
例 - 一流のモバイルゲームで行われている方法
Shadowgun は、現在のモバイルハードウェアでできることを示す印象的な例です。より具体的に、何ができないのか、どのように制限を回避するかを示すよい例です。ゲームの一部が ブログ投稿の中で公開されています。
ここは、Shadowgun の性能を上げるために行った基本的なことの要約です:
- ダイナミックライティング - あまり使用されない。
- ブロブシャドウとライトマップが実際の影の代わりに使用されている。
- Lightprobes は、実際の光の代わりに、自分のキャラクターに使用されている。
- マズルフラッシュがスクリプトを経由してライトプローブデータに追加される。
- 唯一の動的ピクセル単位のライティングはキャラクター上の BRDF (反射成分)を計算するために使用される任意の光の方向です。
- バンプマッピング - あまり使用されない。
- リアルバンプマッピングは、キャラクター上だけで使用される。
- 可能な限りコントラストや細部を拡散テクスチャマップにベイクし、バンプマップからのライティング情報でベイクします。
- よい例が右側に見られるような、彫像の質感または、光沢のある壁です。バンプマップはこれらのレンダリングに使用されておらず、鏡面性はテクスチャにそれをベイクすることでフェイクされています。これらのモデルに光沢のある外観を与えるために、頂点ライティングベースの鏡面ハイライトとライトマッピングが組み合わされてます。
- あなたがこのようなテクスチャを作成する方法を学習したい場合、レンダリングの最適化ページをチェックしてください。
- 高密度の粒子 - 回避
- UV スクロールテクスチャで密なパーティクルエフェクトを代りに使う
- フォグ効果 - 回避
- それらの神の光は、手でモデル化されている
- フェードインとアウトの一平面は、実際にフォグをレンダリングせず、シネマフォグ効果を達成するために使用される。
- これはプレーンが極めて少ないので、より高速になります。それはフォグはすべてのピクセルとすべてのシェーダーで計算する必要がないことを意味します。
- グロー - 回避。
- ブレンドスプライト面は特定のオブジェクト上にグローな外観を与えるために使用されます。
このデモは、ハイエンド Android デバイス上で Unity の持つ可能性を示すために設計されました。
- ダイナミックライティング - 使用しない。
- バンプマッピング - 使用
- レンガはすべてバンプマップされ、指向性のライトマップに照らされます。これは“ハイエンドデバイス”の役割の出番です。
- リアルタイムの反射 - 制限されています。
- 彼らは個別にそれらのリアルタイム反射面を慎重に配置し、切り離されたエリアを一度に 1 回実行します。そして、二度実行する必要がある環境は簡単に選別できます。
最低限のライン - これがあなたのゲームに対して意味するもの
あなたがより多く、モバイルデバイスの限界を尊重し、理解して、スムーズにそれが実行されることで、あなたのゲームはより良くなります。モバイル用にハイクラスのゲームを作りたい場合、Unity のグラフィックス·パイプラインを理解し、独自のシェーダーを書けるようになると為になります。あなたが何かすぐにでも掴んで使えるようになりたい場合でも、ShadowGun のシェーダー、ここは利用でき、始めるにはよい場所です。
シミュレートせず、焼き付ける!
ゲームで自然の法則に従おうとすることは疑いようはありません。すべての発射体の放物線状の動きと光沢のあるクロームのあらゆるピクセルの色は、現実世界の観察結果を模倣するために最初に記述された式で引き出されます。しかし、ゲームは科学的シミュレーションの部分と絵の部分があります。あなたは、モバイル市場では物理的に正確なレンダリングでは競争することはできません:ハードウェアは単に、まだ存在せず、現実の世界のすべてを模倣しようとすると、あなたのゲームは、制限され、単調で、もたつくものになってしまいます。
あなたはポリゴンとペイントブラシのようなブレンドモードをピックアップする必要があります。
Shadowgunに示されている レンダリングの最適化は、このすばらしい例です。スペキュラハイライトは、テクスチャにすでにあり - 人間の目は、実際に反射光とビューの方向と合わないと気付かない - それらは、単なるテクスチャ上のハイコントラストの詳い絵であり、完全に偽せたもので、見た目だけのものに終わってます。これは多くの成功したゲームで使用されている一般的なチートな技法です。 過去にリリースされた最初の Helo のスクリーンショットの中のバイザーとこの リリース中のもののスクリーンショットのバイザーを比較してみます。ヘルメットの上から装甲の突起がバイザーに反射してが表示されてますが、反射が実際にバイザーテクスチャにベイクされてます。League of Legends では、スペル効果がそれに取り付けられた画素の光を出しているように見えますが、実際にはおそらく地面に輝く画素の光のスクリーンショットを取って生成されたテクスチャとブレンドのプレーンです。
何がうまく動作しているか:
- ライトマップ静的ジオメトリ
- ドラマチックなライティングと動的な環境を混同しないでください。どちらか一方を選択してください。
- オブジェクトを移動するためのライトプローブ
- 現在、モバイルのハードウェアでは多くのダイナミックな光を本当に切りとらず、影をつけることはできません。ライトプローブは静的なライティングで複雑なゲームの世界のためにリアルにしようとする解決方法です。
- 専門のシェーダーや詳細、高コントラストのテクスチャ
- ShadowGun でシェーダーは、ピクセル単位の計算を最小にし、複雑かつ高品質のテクスチャを利用してます。シェーダーでシンプルで、見栄えのあるテクスチャを作る方法については、レンダリングの最適化ページを参照してください。
- カートゥーングラフィックス
- 誰かがあなたのゲームが写真のように見えるようにと言っている?ライティングやアトモスフィアをテクスチャ・アーティスト(エンジンでなく)の責任なら、あなたはレンダリングの最適化についてほとんど心配する必要はありません。。
何が動作しないのか:
- グローと他の後処理の影響
- 可能であればブレンドされたクワッドを使って、おおよそこのような効果の例として Shadowgun プロジェクトをチェックしてください。
- バンプマッピング、特に組み込みのシェーダーと一緒に使われる
- いちばん重要なキャラクターやオブジェクトだけに、控えめに使用するようにしてください。スクリーン全体を占有するようなものには、バンプマップを使わない方が良いでしょう。
- バンプマップを使用する代わりに、拡散テクスチャに詳細とコントラストをベイクします。League of Legends のエフェクトは業界でよく使われる成功した興味ある例です。
しかし、実際にそれをどのように行えばいいのでしょうか?
レンダリングの最適化ページを参照してください。