レンダリング方式
Zwinでは、通常のVRソリューションと異なるレンダリング方式を採用しています。
アプリの描画
通常のVRソリューションでは、VRアプリはシステムから視点情報を受け取り、自らが持つ仮想カメラを使って物体を描画し、その結果の二次元画像×2(両目分)をシステムに返します。
一方Zwinでは、各VRアプリが自分で画像を描画することはありません。VRアプリは表示したいオブジェクトの頂点情報やメッシュ情報、テクスチャ、シェーダーなどをコンポジッターに送ります。そしてコンポジッターが持つ仮想カメラによってすべての物体の描画がまとめて行われます。
このような仕組みになっていることでいくつか利点があります。例えばあるアプリが突然応答しなくなってしまったとしましょう。通常のレンダリング方式では描画と更新はアプリが持つカメラに任されているので、アプリが応答を停止したら頭を動かしても見た目が更新されなくなり、不快感が生じます。
一方Zwinのレンダリング方式では、描画と視点の更新をするのはコンポジッターなので、あるアプリが応答しなくなったとしてもコンポジッターが停止しない限り視点に応じて見た目が更新されます。「質の悪いアプリ」によって全体の体験が妨げられない仕組みになっています。
リモートレンダリング
Zenの景色をMeta Questを使って見るときのフローは以下の通りです。
Meta QuestにZen MirrorというQuest用アプリをインストールし、それを開いた状態でPCのZenをVRモードにすると、両者が自動的にLAN内で通信を始め、Zenの景色がMeta QuestのZen Mirrorで見られるようになります。
このようにPCで動いているVRアプリをQuestで表示するソリューションとして、有名なのはOculus LinkやALVRなどです。しかしZen/Zwinはここでも異なるアプローチをとっています。
一般的なソリューションでは、VRヘッドセットが毎フレーム視点情報をPCに送信し、それをもとにPCでレンダリングされた両目分の画像が毎フレームネットワーク越しに送られます。このため、常に安定した回線がないと映像の更新が遅れたりして、VR酔いの原因になります。
一方Zen/Zwinでは、アプリから渡されたオブジェクトの頂点情報・メッシュ情報・シェーダーなどをそのままネットワーク越しにヘッドセットに送信し、ヘッドセットが毎フレームの描画を担当します。
この仕組みのおかげで、ネットワークの質が悪く通信に遅れが生じても、ヘッドセット単体で毎フレームの視点を更新できます。ネットワーク越しに情報が送られるのは、アプリがオブジェクトの形状や見た目を更新したいときのみです。それ以外のタイミングではネットワーク帯域を占有しません。
また計算コストのかかるカメラレンダリングにヘッドセット側のGPUを使うので、PC側に強力なGPUが必要ありません。PCを使ってVRをするにはゲーミングPCのように強力なGPUを積んだPCが必要になるのが一般的ですが、Zen/Zwinでは貧弱なノートPCであってもVRが可能になります。
このように、Zwinでは質の悪いPC・質の悪いアプリ・質の悪いネットワークであっても、快適なVR体験が可能になる仕組みを採用しています。