87
Granite テクスチャストリーミング 101: Graphine の CEO による概要

Graphineは先日、テクスチャストリーミングミドルウェアの第4世代となるGraniteをリリースしました。Graniteについては以前にも取り上げており、グラフィックスパフォーマンスを向上させ、3Dオブジェクトや環境でより高解像度のテクスチャを使用できるようになることは承知しています。しかし、Graphineの魔法がどのように機能するのか、私たちはこれまで完全に理解していませんでした。Granite SDK 4.0のリリースを受けて、そろそろその真価を解明すべき時だと判断しました。

Granite SDK 4.0のリリース直後、GraphineのCEOであるAljosha Demeulemeester氏にインタビューする機会があり、Graniteの仕組みと用途について詳しく伺いました。3Dコンテンツ開発者、特にVRゲーム開発者の方は、ぜひ注目してみてください。Graniteは、GPUの負荷を大幅に軽減し、ビジュアルの忠実度を向上させる可能性を秘めています。

ドゥムルメステール氏は、まず自社のソフトウェアについて簡単に概要を説明しました。「Granite SDK は、テクスチャ ストリーミングに特化したあらゆるリアルタイム 3D エンジンに統合できるミドルウェアです」と彼は述べました。 

巧みなテクニックがパフォーマンス向上をもたらす

Graphineの本質は、3Dオブジェクトや環境の視覚的な忠実度を制限するハードウェアの限界を軽減することにあります。この限界は、表面を覆うテクスチャの品質に左右されます。たとえ高解像度のポリゴンモデルであっても、低解像度のテクスチャで覆うと、見た目はひどいものになります。高解像度のテクスチャは視覚的な品質を向上させますが、ドゥムルメステール氏が述べたように、「あるレベルに達すると、ビデオメモリの消費量が多すぎてしまいます。」

彼は自分が話していた内容をさらに明確に説明し続けた。

例えば、8K x 8KのPBR(物理ベースレンダリング)テクスチャがあり、複数の異なるチャンネルを持つとします。そのテクスチャ1つ(キャラクターやテーブルなど)のデータ量は256MBになるかもしれません。つまり、カメラの近くにこのようなテクスチャが10個あるとしたら、正しくレンダリングするにはすでに2GB以上のビデオメモリが必要になります。

たった「10個のオブジェクト」に対して、これは途方もない量のビデオメモリです。6GB、8GB、さらには12GBのグラフィックメモリを搭載する今日の最高級グラフィックカードでさえ、このシナリオが手に負えない状況になるのは明らかです。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

8Kを超える解像度のテクスチャを使いたい場合、問題はさらに悪化します。例えば16K解像度のテクスチャでは、メモリの制約だけでなく、ソフトウェアの限界にも直面することになります。「さらに高解像度にしたい場合、グラフィックドライバーは機能しなくなります」とデミュールメステール氏は言います。「Direct XやOpenGLなどのグラフィックAPIは、開発者が16Kを超えるテクスチャ解像度を使うことを制限しているのです。」

Graniteは、テクスチャ解像度の制限を回避するために、テクスチャデータを小さな断片に分割します。ミドルウェアは各テクスチャを128 x 128ピクセルのタイルに分割し、タイルセットと呼ばれる「テクスチャタイルデータベース」を作成します。Graphineは、プリフェッチアルゴリズムを使用して、必要に応じてリアルタイムでタイルを呼び出します。ミドルウェアは、可視シーンをレンダリングするために必要なテクスチャセグメントのみを送信します。ある意味で、Granite SDKは中心窩レンダリングと同じ原理に基づいて構築されています。つまり、目に見える部分に影響を与えるものだけに焦点を当てているのです。

ドゥムルメステールは続けた。

Granite が実際に行っているのは、データの読み込みです。GPU メモリに読み込むのは、実際に表示されるデータ、つまり画面のピクセルをレンダリングするために実際に必要なデータだけです。デジタル画像全体を非常に小さなピースに分割します。そして、ゲームの実行中、つまりプレイヤーが環境内を走り回っている間に、どのタイルが実際に表示されているかを判断します。Granite の優れた点は、目に見えないこれらの余分なピースはメモリに必要ないことです。そのため、実際には必要なメモリが大幅に削減され、環境に多くのテクスチャコンテンツを追加して、よりユニークで興味深い環境を実現できます。

もちろん、あらゆるものには現実的な限界があり、Granite は実用性を超えて拡張可能です。Graphine のミドルウェアは、計り知れないほど巨大な 256,000 x 256,000 ピクセルのテクスチャをサポートしています。また、1 つの Granite プロジェクトでは、最大 64 個の個別のタイルセットを使用でき、各タイルセットは理論上 128GB のテクスチャデータを含むため、合計 8TB のテクスチャ情報を持つ可能性があります。

これほど大量のテクスチャデータを搭載したゲームをリリースすることは不可能ですが、Graphine はゲーム開発だけに限りません。非常に高解像度のテクスチャを必要とするものの、ビデオゲームほどのレンダリング性能(フレームレート)は必ずしも必要としないビジュアライゼーションプロジェクトにも活用できます。

ワークステーションが8TBのテクスチャデータを保存できるほどのハードドライブストレージを備えているとは考えにくいですが、この規模のプロジェクトではローカルストレージに依存することはありません。Graniteはローカルストレージで動作するように設計されていますが、Graphineはネットワークストレージソリューションの開発に取り組んでいます。「ネットワークストリーミングのプロトタイプは既にあります」とDemeulemeester氏は述べました。「現在はテクスチャデータをディスクに保存していますが、次のステップはクラウドサーバーからのストリーミングデータです。」

ネットワークストレージソリューションからのストリーミングデータは、Graphineが解決すべき新たな問題を引き起こします。Graphineは、ハードドライブからテクスチャデータを取得し、画面表示領域を一定のフレームレートで埋め尽くすのに要する時間を予測可能にしています。ネットワーク転送は信頼性がはるかに低く、ローカルハードドライブへのアクセスよりもはるかに遅くなることがよくあります。Graphineは、「より多くのコンテンツをプリフェッチする」ことでネットワークの遅延に対処しています。Graphineは、この問題を解決するための予測に関する特許を保有しています。

ストリーミング オプションは実際には Granite の一部ではありませんが、Graphine は適切な開発者と技術を共有するというアイデアを検討するつもりです。

「詳細を全てお伝えすることはできません」とドゥムルメステール氏は述べた。「もし開発者がそのような機能を求めているなら、協力することは可能ですが、既製品ではありません。Graniteは、ローカルドライブからビデオメモリにストリーミングする製品です。」

Granite SDKの過去のリリースでは、タイルベースのテクスチャストリーミングのみがサポートされていましたが、このソリューションはすべての種類のテクスチャに対応しているわけではありません。Graniteでは「超高解像度テクスチャ専用のストリーミングシステムではなく、汎用的なストリーミングシステムが必要でした」とDemeulemeester氏は述べました。タイルベースのストリーミングシステムは、テクスチャの10~30%には「意味をなさない」ためです。

「Granite に追加した興味深い機能の一つは、全く新しいストリーミングシステムです」と Demeulemeester 氏は語ります。「タイルベースの仮想テクスチャリングストリーミングシステムに加え、より昔ながらの MIP マップシェーディングシステムも搭載しています。これは Unreal Engine でも今でも使われています。」

仮想現実への影響

GraphineのGraniteテクスチャストリーミングミドルウェアのような技術は、VR開発に非常に役立ちます。インタラクティブ性や体験が向上すればするほど、高解像度テクスチャの必要性が高まります。SurviosはRaw Dataにおける高解像度テクスチャの必要性を認識し、まさにその理由からGraphineと提携しました。

ドゥムルメステールは続けた。

バーチャルリアリティでは、物体に非常に近づいてじっくり観察する傾向があります。そのため、非常に近づいた瞬間から、細部まで再現するために超高解像度のテクスチャが必要になります。また、高解像度のスクリーンでは画面ピクセル数が多くなり、さらに高解像度化への強い要望が生まれます。そのため、画面ピクセルごとにテクスチャデータが必要になります。画面ピクセル数が増えれば、より多くのテクスチャデータが必要になります。物体に近づくほど、より多くのテクスチャが必要になります。そのため、超高解像度テクスチャの使用が非常に強く求められています。しかし一方で、ViveとOculusでは安定した90fps、Daydreamでは安定した60fpsというパフォーマンスが求められています。そのため、フレームレートを乱すようなストリーミングシステムは避けなければなりません。大量のデータをアップロードすることで、レンダリングパイプラインが突然ロックしてしまうのです。

花崗岩は写真測量に最適

Graniteがフォトグラメトリ環境のパフォーマンス向上に役立つと考えているなら、それはあなただけではありません。実際、Graphineははるかに優れています。

「Graniteは高解像度のテクスチャのストリーミングに非常に優れているため、フォトグラメトリは非常に優れたユースケースです」とDemeulemeester氏は語ります。「フォトグラメトリでは、既存の環境を実際にスキャンするという全く異なるアプローチを採用しています。スキャンすると、環境内のすべてのピクセルが一意になるため、大量のテクスチャコンテンツが生成されます。Graniteが真価を発揮するのはまさにそこです。」

柔軟なライセンスプラン

GraphineはGraphine SDKライセンスの価格を公表していません。これは、顧客ごとに価格が異なるためです。Granite SDKはプロジェクトライセンスとして販売されます。つまり、開発者は特定の開発プロジェクトごとにライセンスを交渉し、プロジェクト期間中はライセンスを保持します。開発チームはそれぞれ異なり、プロジェクトの開発期間も一定ではないため、Graphineはすべてのライセンシーと価格交渉を行います。Demeulemeester氏によると、同社は小規模なプロジェクトにも対応するよう努めていますが、そのようなプロジェクトでは通常はより安価なプラグインライセンスが選ばれるとのこと。

GraphineはUnityおよびUnreal Engine用のGraniteプラグインを提供しており、シート単位で販売しています。開発者は年間サブスクリプションを選択でき、Graniteプラグインとすべてのアップデートを1年間ご利用いただけます。また、Graniteプラグインへの生涯アクセスと2年間のアップデートが含まれる永久ライセンスオプションもご用意しています。

「ケースバイケースです。小規模なプロジェクトについては、何らかの対応を試みています」とドゥムルメステール氏は述べた。「VRプロジェクトの多くは、大規模なゲームプロジェクトよりも規模が小さいため、こうしたVRプロジェクトとの相性を良くしたいと考えており、何らかの対応策を講じています。しかし、ほとんどの場合、UnityまたはUnrealを使用しているため、そうした方々向けにSDKベースのプラグインを提供しています。」

Graphineは、UnityおよびUnreal EngineプラグインのIndie版とPro版を提供しています。UnityのIndie版ライセンスは65ドルで永久ライセンスです。Pro版は年間199ドルですが、349ドルで永久ライセンスを購入することもできます。Unreal Engineプラグインはさらに高価です。永久ライセンスのIndie版は249ドル、永久ライセンスのPro版は890ドルです。年間サブスクリプションをご希望の場合は、年間490ドルです。

Graniteプラグインのシートライセンスは、Graphineのウェブサイトから直接ご購入いただけます。SDKライセンスをご希望の場合は、リクエストフォームにご記入ください。

ケビン・カルボットはTom's Hardwareの寄稿ライターで、主にVRとARのハードウェアを扱っています。彼は4年以上にわたりTom's Hardwareに寄稿しています。