このサイトはダイキン工業が運営するCG業界ニュースサイトです。
お問い合わせ

「Unite Tokyo 2018」講演レポート ~カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!~(1)

2018年5月7日~9日、東京・有楽町の「東京国際フォーラム」にて開催された国内最大のUnityカンファレンスイベント「Unite Tokyo 2018」。5月9日におこなわれた株式会社バンダイナムコスタジオによる講演「カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!」の模様について、前2本に続けてレポートしたい。

 

『TEKKEN』のクオリティはどのように実現したのか

本講演に登壇したのは、バンダイナムコスタジオでリードプログラマを務め、現在は「TEKKEN MOBILEプロジェクト」でグラフィックスを担当している冨澤茂樹氏。講演内容として、現在スマートフォンアプリとして展開しているゲームアプリ『TEKKEN』で、どのようにしてアーケードゲームやPS4(PlayStation4)などに見劣りしないクオリティを実現したのかについて語った。

「『TEKKEN』にUnityを採用した理由としては、Androidの多種多様なデバイスやバージョン、チップセット、端末メーカー、キャリアのほか、iOSにも対応していること。そして、多種多様なデバイスにおける解像度やアスペクト比 が高いことが挙げられます。それに加えて、チーム内にUnity開発経験者がいることが大きかったですね」と冨澤氏は話す。

 

Unityは賢く、任せればなんでもやってくれることがわかったが、Unityに頼れば頼るほどCPU負荷が増すこともわかったという。そこで冨澤氏は、すべてUnity に乗っかるのではなく、使う機能を取捨選択することにした。

「ライトにおいては、Unityのリアルタイムライティングはおこなわず、静的なオブジェクト(ステージ)は事前ベイクライトマップにし、動的なオブジェクト(キャラ)は独自ライティングにしました。また、影についても、Unityのリアルタイムシャドウイングはおこなわずに、静的なオブジェクト(ステージ)はライトマップにベイクして、動的なオブジェクト(キャラ)は独自シャドウイングを施しています」(冨澤氏)

 

次に、カスタムシェーダーの書き方の説明へと話が進む。記述スタイルとしては、まずシェーダー名を重複しないことが重要であり、インスペクターは大事であり必ず作成する必要があるという。そして次に自分でライトマップを貼ることになるが、 Unity内蔵の Enlightenでベイクしているため、PlatformをAndroid/iOSでおこなった場合には結果がLDR になってしまう。しかし、PC、Mac OS、Linux StandaloneだとHDRでベイクされる。そこで「TEKKEN」では、PC、Mac OS、Linux Standaloneでベイクして、それをAndroid/iOSに持ってきている。

「PC、Mac OS、Linux Standaloneでそのまま描画するだけなら簡単です。ライトマップのUV値は二番目のUVに入ってきます。これをunity_LightmapSTでスケールオフセットをかけます。そしてテクスチャーは、unity_Lightmap に入っていますので、フェッチした値をDecodeLightmap()関数を通すことで値を得ます。これでライトマップを貼るシェーダーは書けたことになります」(冨澤氏)

 

Android/iOSにHDRテクスチャーを持ち込むには、トーンマップで使われるReinhard変換を利用してLDRで保存しシェーダー内でReinhard逆変換をかけてHDRに戻す作業が必要になる。次に、ライトマップに対してReinhard変換をかけるシェーダーを書き、作成済みのシェーダーでライトマップを保存していく。

「描画するシェーダーですが、Unityのライトマップは使わず、テクスチャーは自分で変数を用意しフェッチした値にReinhard逆変換をかければ完了です。次に、影のレンダリングについてですが、まずはシャドウマップをレンダリングします。これは基本的には光源位置からライティング方向へデプスをレンダリングしていきますが、視点カメラとは別物であり、私はシャドウカメラと呼んでいます。近年では、きれいな影をレンダリングするためにデプス以外にもいくつかのパラメーターを記録するようになってきました。ただ、モバイルではコストを抑えるために、まだしばらくデプスシャドウマップが主体となるのではないかと考えています」(冨澤氏)

 

シャドウマップ技法にいくつかの種類がある。それは、USM(Uniform Shadow Maps)、PSM(Perspective Shadow Maps)、LSPSM(Light Space Perspective Shadow Maps)の3種類だ。

「USMは平行投影でシャドウマップをレンダリングするもので、簡単というメリットがあるものの、視点近くの影の解像度が粗くなるというデメリットがあります。

PSMは視点カメラのPerspectiveを適用し、視点近くの解像度を上げるものです。視点近くの解像度が高いというメリットがあるものの、場合分けする必要があることと、視点より後ろの影を落とすオブジェクトの処理ができないというデメリットがあります。

LSPSMはPSMに似ていますが、視点近くほど解像度が高く 必要なすべてのオブジェクトをレンダリングするものです。これも、視点近くの解像度が高いほか、すべてのオブジェクトに対応するというメリットがありますが、 視線ベクトルと光線ベクトルが平行に近いと使用できないというデメリットもあります。そこで『TEKKEN』では、USMを使用して影をレンダリングしました」(冨澤氏)

 

「Unite Tokyo 2018」講演レポート ~カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!~(2)へと続く