サイバーエージェント「NOVA Shader」というパーティクル用OSS多機能シェーダをGitHubで公開している。これはUnityのUniversal Render Pipeline(以下、URP)に対応した、Particle SystemのためのUberシェーダである。主にビジュアルエフェクト制作の汎用的な機能をまとめ、効率良くエフェクト制作ができることを魅力としている。商用利用も許可されているため、広い用途で使用できるという特徴もある。

NOVA Shaderを開発したのは、サイバーエージェント ゲーム・エンターテイメント事業部 SGEコア技術本部(以下、コアテク)のクライアントサイドエンジニア 矢野春樹氏と、アプリボットのチーフエフェクトアーティスト 邑上貴洋氏。ここに、エフェクト受託制作を行う合同会社Flypot代表の秋山高廣氏を加え、本シェーダ開発の経緯や、エフェクトアーティストからみた使用感などについて語ってもらった。

記事の目次
    NOVA Shaderの詳細はこちらから(GitHub)

    多機能シェーダ「NOVA Shader」はいかにして開発されたのか?

    NOVA Shaderの特徴として、まずエフェクト制作において必要な機能の多くを網羅していることが挙げられるだろう。フローマップやFlip-Book(連番テクスチャアニメーション)のほか、ディゾルブ、フェード、回転、アニメーション可能なTintマップ、エミッション、ディストーションの機能が用意されている。

    ▲NOVA Shaderに収録されているサンプルエフェクトは、邑上氏が制作している。画像はフローマップを活用した炎のエフェクト

    このように網羅的な仕様にした背景には、本シェーダ開発以前のエフェクト制作現場が煩雑な開発環境だったことが挙げられる。かつて矢野氏は、サイバーエージェントの子会社であるアプリボットでのプロジェクトに関わったとき、少しずつ機能の異なるシェーダが大量に存在し、制作がやりづらかったのだそうだ。

    「エフェクト制作用のシェーダが50個くらいあり、分散していたのであまり使い勝手が良くありませんでした」(矢野氏)。そこでエフェクト制作の機能をまとめ、制作をスムーズにしようと考えたことがNOVA Shader制作の発端だった。

    矢野春樹/Haruki Yano
    株式会社サイバーエージェント
    ゲーム・エンターテイメント事業部
    SGEコア技術本部 エンジニア

    とはいえ、最初からNOVA Shaderという名前で開発されたわけではない。「5〜6年前に前身となる『アプリボットシェーダ』をつくったんです」と矢野氏は語る。この「アプリボットシェーダ」が、当時のプロジェクトの開発環境を円滑にし、NOVA Shaderの前身となった。

    ところがアプリボットシェーダはそのプロジェクトだけで終わらず、他のプロジェクトでも使われるようになる。「共通のシェーダを利用していれば、プロジェクトで困ったときに他のプロジェクトからヘルプに来てもらったり、逆に僕らもヘルプに行くといったことが容易になると考え、社内で広めました」(邑上氏)。煩雑な開発環境を整理する効果は大きく、様々な現場で需要があったようだ。

    邑上貴洋/Takahiro Murakami
    株式会社アプリボット
    シネマエフェクトアーティスト

    こうした反響を受けた矢野氏は「そんなに多くのプロジェクトで使うような設計ではありませんでした」とふり返る。「なので、本格的に汎用シェーダをつくることにしたんです」。

    NOVA ShaderがOSSとして公開された理由

    さてNOVA Shaderでもうひとつ気になるところは、OSS(オープンソース・ソフトウェア)として公開されていることだろう。サイバーエージェントのような大企業から、かなり便利なシェーダがリリースされていることについてどんな意図があるのだろうか。

    OSSにしたのは、矢野氏が所属するサイバーエージェントの部署も関係していた。「僕が所属するコアテクという部署は開設して1年経っていないんですね。ゲーム・エンターテイメント(SGE)事業部では部署を全て子会社化して独立採算でやっているため、横断的に何かをやるということがあまりないんです」。

    SGE事業部に所属する子会社の一覧

    コアテクで開発するのは「汎用的に使えるもの」である。社外でも使えるものをつくることが目的であり、そのなかでもOSSで公開することにメリットがあるプロダクトはどんどん公開していく方針だという。まさしくNOVA Shaderはコアテクが目指す効率化という目的どおりのソフトウェアであり、初のOSSとしての公開に繋がった。

    「普段の業務で様々なOSSを使わせていただいているので、われわれも業界に貢献したいという思いも大きかったんです。OSS化の活動を今後もコアテクでやっていこうという方針もあります」(矢野氏)。

    一方、様々なOSSを利用する際には注意点も多いことが語られた。OSSを利用してきた経験も、NOVA Shaderの開発や運用に影響を与えているようだ。

    それぞれがOSSを利用する基準には様々なものが挙げられた。「求める機能を満たしていることが第一ですが、メンテナンスされているか、最新のUnityのバージョンに合っているかを見て採用しています」と矢野氏は注意するポイントを挙げる。

    「更新頻度が重要ですね。1年くらい更新されていないと触るのは怖いので、やめておこうかなと」と秋山氏も定期的に調整が行われているかに注目していた。邑上氏は更新頻度が高いことが信頼できるOSSと判断する根拠に「Unityの進化が激しいので、バージョンアップに合わせてケアしているかが重要」だと指摘した。

    OSSは「作って終わり」ではなく、広めるまでが仕事

    では、NOVA Shader公開後の反響はどんなものだったのだろうか?

    「直接の反応は多くはないですが、GitHub上で公開しているのでバグの修正などをもらっています」。矢野氏は控えめな反応があったことを語ってくれた。「GitHubのStar(※お気に入り)に400以上も登録があり、またForkというリポジトリをコピーする数もなかなか多かったので、結構使われているのかなと」。

    「本当はもっと直接フィードバックをいただけるといいんですけど(笑)、GitHubで配布している形式上そういうものかなと」と矢野氏は反応をまとめた。

    そんなNOVA Shaderを開発や教育現場に利用しているのが秋山氏だ。「うちのエフェクト制作講座の生徒さんにもNOVA Shaderを使っている方はいらっしゃいます。ただ多機能なので、いきなり触ると迷子になってしまうと思い、一度勉強会をしました」。

    秋山高廣/Takahiro Akiyama
    合同会社Flypot 代表

    邑上氏も、自身が講師を務めるデジタルハリウッドCGGYMのエフェクト講座でNOVA Shaderを採用している一方、開発現場では前身のアプリボットシェーダを継続して使っている。「アプリボットはこれからNOVA Shaderの導入を開始するところです。ただし、アプリボットシェーダはほとんどの環境に入っている状態なので、バージョンアップ版として導入しようとしていますね」。

    矢野氏はさらにNOVA Shaderを広めるために、社内のUnity勉強会の動画に出演するなど様々な活動を行なっている。「NOVA Shaderのドキュメントをまとめましたが、どの機能を使うと、どういう表現ができるかにはハードルがあると思います。そこで社外に向けてアピールしていきたいです」。

    パーティクル用OSS多機能シェーダー「NOVA SHader」サクッとまとめ! | CA.Unity#3

    実際に矢野氏の活動は秋山氏も認知しており、「布教活動を積極的にされているな、と感じます」と評していた。「OSSはリリースして『出しましたよ』で終わっちゃうものが多くて、そういう意味ではNOVA Shaderはいろんなところで宣伝されているなと思います」。

    「プロモーションはコアテクでOSSを公開する上でも大事にしています。“出して終わり”だと全然使われないからです」、矢野氏はそう強調する。「使われないと、こっちとしてもメンテナンスしづらくなる。そうするとさらに使われなくなる負のループに入ってしまいます。だから気合を入れて “ちゃんと広めるところまでが仕事だ!”という認識でやっています」。

    エフェクトアーティストから見たNOVA Shaderの使用感

    さて、実際にエフェクトアーティストとして邑上氏や秋山氏はNOVA Shaderを使ってみてどのように感じたのだろうか。

    「自分が使ってみた感じは、まずはエフェクト制作に必要な機能はほぼほぼ入っているんじゃないかと」。そう語るのは秋山氏だ。「いくつかの機能を組み合わせれば大抵のエフェクトはできそうだと思うくらい、機能が揃っていると思います」。

    秋山氏は「個人的にいいなと思ったのは、エフェクトの余韻の部分」だという。「生徒さんに教えるときにも言うことで、余韻をきれいにつくるとクオリティが高く見えるんです」。

    「例えばパーティクルを消すときに単純に透明にするんじゃなくて、ディゾルブを使うなどして消え方を工夫できるような機能がいっぱい入っているのがいいですね。フェードで消すにしても、マップを使って部分的に消したりもできますよね。色を付けたりもできますし。それもかなりいいんじゃないかなと思いました」。また、多機能ながらUIがわかりやすくまとまっている点も高く評価した。

    ▲サンプルエフェクトとして収録されている氷のエフェクト。氷の溶解表現にディゾルブ機能を使用している

    邑上氏も秋山氏の評価を受けて、魅力ある部分をこう語った。「エミッションなども、テクスチャにしてもらえれば適切なところで光らせることができますね」。これも普通に作るとエミッションはポストエフェクトで光らせるだけになりがちなところを、より細やかな光らせ方ができるとのことだ。

    またNOVA Shaderは、アルファによるアニメーションもできるのだという。矢野氏はふたりに「実は頂点アルファのモードがあるんですよ」と実機で説明した。「これは普通の透明度として使うか、さっきのアルファトランジションのプログレスに変換するみたいに使うことができます」。

    ▲アルファトランジションによるエフェクトの例

    矢野氏がこうした機能を実装していった背景には、邑上氏のオーダーもかなり入っているという。「前身のアプリボットシェーダのときにオーダーをもらって実装したものを、NOVA Shaderにも入れています」。

    「そういったオーダーって、エンジニアだと思いつかないというか、こういう機能が必要というのがわからないんですよね。言っていただいて助かっています」。矢野氏は邑上氏にシェーダを使ってもらうことで、より完成度の高いプロダクトに仕上げられた。エンジニアとアーティストのやりとりによって、ソフトウェアの内容を掘り下げることができた事例とも言えるだろう。

    もちろん完成形ではなく、秋山氏からはNOVA Shaderについての要望も挙がった。例えばUVスクロールに関する仕様や、各種設定をワンボタンで一括して設定できるような機能などが追加されると嬉しい、という話が挙がった。

    これらの要望について、矢野氏は素早く「検討します!」と返答。NOVA Shaderはまだまだ磨き上げられる模様だ。

    これからのNOVA Shaderの展望

    今後NOVA Shaderの運用に関して、機能追加などはあるかを聞いた。

    「NOVA Shader自体の更新は続けていきます。さっき秋山さんからいただいた提案も採り入れていきたいと思いますし」。そう矢野氏は答える。「これから予定しているのは、今のバージョンはライティングが反映されていないUnlit版なので、反映されたLit版の開発です」。

    一方で、矢野氏はこれからのNOVA Shaderの更新スタンスについてはこうも語った。「何でもできれば必ず使いやすい、ということではありません。思想的には、これ以上のことがやりたかったら別のシェーダをつくります。あくまでNOVA Shaderは汎用シェーダなんです」。

    矢野氏に他のOSSを開発する予定があるかも聞いてみたところ、「実は先日新しいものをリリースしました。Unityでアセットレギュレーションをテスト・自動化できる『Asset Regulation Manager』というものです」とのこと。「公開したほうがいいものはOSSにします。ただ、技術そのものが自社の強みになるものは公開しないと決めています。難しい技術を使っていない汎用的な技術のものは、公開することに会社としても、業界としてもメリットがあると考えています」。

    学生にも使ってほしい直感的なシェーダ

    ひと通りの話題が終わると、邑上氏は「NOVA Shaderは商用利用OKのOSSですが、それ以上に学生に使ってほしいですね」と魅力をまとめた。

    「例えば学生がエフェクト制作を始めようとすると、けっこう技術的な部分のハードルが高いんです。NOVA Shaderはそのあたりをカバーしていて、エフェクト制作を直感的に行えます。最初のとっかかりとしては楽しいので、つくる魅力があるんじゃないでしょうか」。

    邑上氏によれば、「(技術知識の弱い)美大生の人でも使いやすいエフェクトをつくれるシェーダなんです。やっぱり美大生やグラフィックを勉強している人は、複雑な色の組み合わせが上手いですし」。

    秋山氏はこうまとめた。「非常に良いシェーダだと思います。いろんな媒体で宣伝されていますし、これからエフェクトを始める人に広まっていくといいなと思います」。

    矢野氏は「こういう機能がほしい、という話をする機会がなかったので嬉しいです」、と最後に語った。エンジニアとアーティストがレスポンスを返し合うことによって、汎用的なシェーダとして完成したNOVA Shader。これからのアップデートにも期待したい。

    TEXT_葛西 祝 / Hajime Kasai
    EDIT_小村仁美 / Hitomi Komura(CGWORLD)
    PHOTO_Hide Watanabe