アプリ・ゲーム業界向けの開発&運営ソリューション総合イベント「Game Tools & Middleware Forum(GTMF) 2016」。東京・大阪で毎年7月に開催され、国内外のツール&ミドルウェアベンダー約30社が出展する。ゲーム開発者にとっては見逃せないイベントだ。本稿では7月15日に秋葉原UDXで開催された東京会場の講演群から、「ギルティギアXrdテクニカルアーティストによる『アーティストのための』リアルタイムシェーダー入門」のセッション(http://gtmf.jp/2016/tokyo/session.html)レポートをお送りする。

TEXT_
PHOTO_小野憲史

<1>シェーダーは正しい手順で学習すれば誰でも習得できる

講演者はアークシステムワークスでテクニカルアーティスト兼リードモデラーをつとめた本村・クリストファー・純也氏で、3DCG歴13年をほこるベテランクリエイターだ。講演のタイトルにも名を連ねた『ギルティギアXrd(イグザード)』シリーズは、同社が開発する対戦格闘ゲーム。最大の特徴はゲームエンジンにUnreal Engine 3を採用しており、リアルタイム3DCGにもかかわらず、アニメ調の「絵作り」が行われている点だ。

これを可能にしているのが本村氏が書いたシェーダーで、筋肉のラインにあわせて漫画のような影が落ちるなど、細部にいたるまでクオリティアップに貢献している。もっとも本村氏自身はプログラム経験がなく、シェーダーを書き始めたのも4年前のことで、独学でマスターしたとのこと。そのため「シェーダーはそこまで難しくなく、正しい手順で学習すれば誰でも書けるようになる。そのうえプロジェクトに与える効果が絶大」だと指摘した。

<2>シェーダーとは料理のレシピのようなもの

本村氏ははじめに「シェーダーとは『絵柄』である」と切り出した。同じポリゴンとテクスチャーを使用した3DCGでも、シェーダーによってセル画風の絵柄にも、リアル風の絵柄にもなる。言い換えればシェーダーとは、「ポリゴンやテクスチャなどの素材をどのように画面に表示するか決めるプログラム」だといえる。

「もっとも一般のプログラムが分岐やループなど複雑な構造をとるのに対して、シェーダープログラムは一方通行でシンプルです。それだけにアーティストでも習熟がしやすい。いわば『料理のレシピ』に似ています」(本村氏)。

たとえばカレーを作る場合、はじめに肉とタマネギをフライパンで炒める。次に人参とジャガイモを加えて鍋で煮込む。野菜が柔らかくなったらカレールーの投入だ。一方で米と水を炊飯器にセットして白米を炊いておく。最後に両者を皿によそえば完成だ。このように料理は一定の手順で進んでいき、(通常は)逆戻りしない。

これに対してシェーダーも、はじめにポリゴンでモデルを作ってカメラを設定する。これに対して法線とライトの処理を行う。一方でテクスチャと頂点カラーを用意しておき、最後に両者を加えて画面に出力すれば、映像となって表示される。同じ食材でも調味料を変えるだけでシチューや肉じゃがが作れるように、CGでも同じ素材からシェーダーを変えるだけで異なった絵柄の映像が出力可能だ。

「ただしカレーの場合は材料をそろえるだけでなく、実際に調理しなければなりません。しかしシェーダーの場合はプログラムを書けば、あとはコンピュータが勝手に処理をしてくれます。これを考えればシェーダーの方がずっと楽ですね」(本村氏)

<3>わずか5行のサンプルシェーダーコード

次に本村氏はサンプルで用意された簡易的セルシェーダーを用いてデモを行った。球体のモデルにライトを当てただけのシンプルなものだが、シェーダーのパラメータや数値を修正するだけで、影の色が変化したり、明暗の比率が変わったり、グラデーションがついたり、影の形が複雑に変化したりする。

これを可能にしているのが、わずか5行のシェーダーコードだ。コードはテキストファイルで作成され、修正を加えて上書き保存するだけで、瞬時にDCCツール上で絵柄が変化した。本村氏はこのように、アーティストがシェーダーを覚えるメリットは、「DCCツール上で自ら『絵柄』をコントロールできる点」だと強調する。



これまではプログラマーが絵柄を作っていて、アーティストはその枠の中で表現を行ってきた。しかしプログラマーは必ずしも絵のプロフェッショナルではない。絵の善し悪しも感覚的な部分が多く、意思疎通が難しい。そのため絵柄の決め込みに時間がかかったり、妥協せざるを得ない部分があった。これがアーティストが自分でシェーダーを書ければ(処理負荷などに注意する必要はあるが)、一気に問題が解決するというわけだ。

本村氏は最終グラフィックのクオリティが上がるだけでなく、「モデルなど素材のクオリティが上がるメリットも大きい」と補足する。モデラーがシェーダーを理解していれば、シェーダーに最適化された無駄のないモデル作成ワークフローがくめるからだ。特にDCCツールのビューポートにシェーダーを反映させられれば、実機と同じルックを確認しながら作業でき、無駄の少ないモデル作業が可能になる。

実際に『ギルティギアXrd』シリーズでは、筋肉の影の太さがパラメータを修正するだけで、リアルタイムにDCCツール上で確認できるように工夫されている。これを可能にしているのが本村氏が書いたシェーダーだ。仮にこうした機能を持つシェーダーがなければ、影の落ち具合をいちいちプログラマーの手を借りて、実機上で確認せざるを得ず、作業効率への悪化は避けられなかったという。

<4>DCCツールとテキストファイルで学ぶのがお勧め

では、実際にどのようにシェーダーを勉強すればいいのだろうか。本村氏はデモで示したようにDCCツール上で、テキストエディターを使って書く方法を勧めた。自分が書いたシェーダーが即座に作業中のビューポートに反映されるため、結果がわかりやすいからだ。もっとも、昨今では「ShaderFX」など、ノードベースでシェーダーが書けるツールも存在する。しかしノードベースではネット上のサンプルコードをコピー&ペーストできないため、最初は避けた方が無難だという。

またシェーダーのファイルフォーマットにはNvidia製の「CgFX」と、マイクロソフト製の「HLSL」、そしてOpenGL向けの「GLSL」がある。もっとも主流DCCツールやゲームエンジンは、おおむねどれも対応している。さらにCgFXとHLSLはかなり似ているため、どちらかを覚えればことが足りる。自分の環境にあわせて選べばいいと補足された。

最後に本村氏は日本のゲーム業界をとりまく環境について「PBRシェーダーやHDRによって、写実的な表現は完成に近づきつつあるが、写実性や物量では欧米の巨大スタジオには対抗しにくい」と分析した。そのため日本のゲーム開発者は「個性とクオリティ」で勝負せざるを得ず、そうした意味でもシェーダーのはたす役割が大きいという。すでに述べてきたように、ルックの独自性を打ち出す上で鍵を握るのがシェーダーだからだ。

「エンジンやツールの進化でシェーダーはかつてなく作りやすい状況になりました。アーティストがシェーダーを書くための道具はすでにそろっています。あとは最初の一歩を踏み出すだけです」と指摘する本村氏。「需要も環境もそろっている。やるなら今でしょ!」と呼びかけ、講演を締めくくった。