【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理 | GameBusiness.jp

【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理

ゲーム開発 ゲームエンジン

【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理
  • 【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理
  • 【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理
  • 【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理
  • 【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理
  • 【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理
  • 【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理
  • 【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理
  • 【レポート】GDMゲームエンジニア向け勉強会―ロジカルビート堂前氏が解説するグラフィックスの最適化処理
DeNAは2017年6月27日、同社セミナールームで「Game Developer’s Meeting エンジニア向け勉強会Vol.2」を開催しました。

テーマは「Unityを使ってモバイル向けの描画設計で考慮すること(+α)」で、書籍『ゲームを動かす技術と発想』などで知られる堂前嘉樹氏(ロジカルビート)が登壇。頂点シェーダとフラグメント(ピクセル)シェーダを中心に、各々の使い分けについて解説しました。



「Game Developer’s Meeting」は2016年に同社がゲーム開発者の知見共有と交流機会の提供を目的にスタートしたセミナーイベントです。初年度はプランナー(ゲームデザイナー)向けに開催し、今年度からはエンジニア・デザイナー(アーティスト)・キャリア形成と対象や内容を拡充して、毎月2-3回のペースで開催されています。



もともとコンシューマ系の開発出身で、直近では『いけにえと雪のセツナ』(スクウェア・エニックス)の描画プログラムを担当した堂前氏。一方で最近Unityを用いたスマホゲームの開発案件が増えてきたともいいます。もっともスマートフォンではハイエンドからローエンドまで多数の機種に対応させる必要があり、より描画関係の最適化を進める必要があるとして、基本となる考え方を紹介しました。

◆頂点シェーダとフラグメントシェーダの違い


フレームごと(1/30または1/60)にCPUが描画の計算を行い、GPUが描画を実行していくゲームの描画処理。中でも重要になるのが頂点シェーダとフラグメントシェーダです。DCCツールなどで作成された3DCGモデルは頂点シェーダによってXYZ空間上に射影座標変換が行われ、フラグメントシェーダによってテクスチャの貼り付けなどが行われます。





頂点シェーダがポリゴンの頂点に対してのみ演算をするのに対して(=ポリゴン1枚につき3回)、フラグメントシェーダはポリゴン内で塗りつぶされるピクセルの数(=表示面積)だけ処理が行われるので、より負荷が高まります。つまりフラグメントシェーダの処理が描画最適化の鍵を握ることに。そこで両者にどのような処理を行わせるかがポイントというわけです。

近年ではシェーダの計算をミドルウェアやゲームエンジン側が自動的に行い、プログラマーの手をわずらわす機会が減少しています。Unityでも自分でスクリプトを書く「頂点&フラグメントシェーダ」以外に、「Surfaceシェーダ」「Standardシェーダ」の3種類が備わっており、特にStandardシェーダは物理レンダリング(PBR)にも対応するなど高性能だと解説しました。







しかし、Standardシェーダを活用すると、モバイルでは処理が重くなりがちなので注意が必要だともいいます。また、Standardシェーダの中身も実は頂点&フラグメントシェーダです。そのため自分で書ける人なら頂点&フラグメントシェーダで作ってしまうのが楽ですが、ゲームエンジン側のライティング機能などを享受しづらいため、バランスをとることが必要になるといいます。

◆それぞれに向く処理・避けた方が良い処理


続いてのトピックは頂点シェーダとフラグメントシェーダの具体的な処理に移りました。堂前氏は「UV操作(UVスクロールなど)は1枚のテクスチャ参照位置を演算で求めているだけなので、頂点シェーダが担うべき。ライティングは品質とのトレードオフで、バンプマップなどフラグメントシェーダが必須となる場合もあるが、頂点シェーダで対応できるものも少なくない」とします。





ライティングの例で上げられたのが法線マッピングです。法線マッピングは頂点単位とピクセル単位で指定でき、前者より後者の方がより美麗な映像が得られます。ただし前者は頂点シェーダで処理できるのに対して、後者はフラグメントシェーダでの処理が必要になり、そのぶんだけ負荷が重くなります。どこまでグラフィックにこだわるかで、トレードオフになるというわけです。

また大前提としてスマホの画面解像度が減れば、そのぶんフラグメントシェーダの演算量も減少すると指摘。最初から2K(1980×1080)解像度ではなく、1K(1280×720)解像度でゲームを作る選択肢もあるとしました(実際に2Kと1Kでは総ピクセル数が2倍近く異なります)。このほかマテリアルやカメラ単位で処理を分けることも検討するべきだと補足しました。





最後に触れられたのがノードベースでのシェーダ作成です。Unreal Engine 4では標準機能として、UnityでもShader Forgeなどのアセットを使用することで、手軽にシェーダが作れるようになります。もっとも内部処理が不透明で、時にはUV操作が頂点ではなくフラグメントシェーダに割り当てられていることもあるので、注意が必要とのこと。「内部挙動を理解して活用することが重要」だと注意されました。

堂前氏が紹介した内容は描画周りの最適化を進めるうえで基本的な内容であり、一つひとつシェーダの内容を確認して修正していくことは、いってみれば地味な作業です。しかし、そうした細かい工夫の積み重ねのうえに、他では実現できない美麗なグラフィックのキモが隠されているといえそうです。基本を知り、ツールを使いこなす重要性が改めて示されたセッションでした。
《小野憲史》

関連ニュース

特集

人気ニュースランキングや特集をお届け…メルマガ会員はこちら