Zwinとは
要約:Zwinは、XRウィンドウシステムのためのコンポジッターとプロトコルで、Waylandをベースに作られています。
この文の意味がわかる方は、「Zwinのコア概念」までスキップしてください。わからない場合も、今から説明するのでご安心ください。
ウィンドウシステムとは
ウィンドウシステムは、OSの上で動いている仕組みで、アプリのコンテンツを画面に表示してくれているものです。誰もが毎日使っているのですが、最近のOS(Windows/macOS/Ubuntuなど)ではデフォルトのウィンドウシステムが最初から備わっているので、意識せずに使っているかもしれません。ウィンドウシステムは皆さんがいつも使っている2DのOSにおける概念で、もともとはVRとは関係のないものです。Zwinではこの仕組みをVRに拡張しています。
ウィンドウシステムには3つの構成要素があります。クライアントアプリ、コンポジッター、プロトコルです。
クライアントアプリは、普段GUIで使っているアプリです。Google ChromeやBlender、ファイルエクスプローラなどのいつものアプリです。
コンポジッターは、クライアントアプリとコミュニケーションを取り、実際にアプリのコンテンツをウィンドウとして画面に表示してくれているプログラムです。ウィンドウの配置、重なり順、どのウィンドウがアクティブかなど、ウィンドウにまつわる様々な情報も管理しています。ですので、「OS」と軽い気持ちで言っているとき、実は「コンポジッター」と言ったほうが適切である、というシチュエーションがよくあります。
コンポジッターは厳密に言えばOSの一部ではありません。Linux系のOSではコンポジッターをユーザーが自由に切り替えることができます(WindowsやmacOSではデフォルトのものから変更できません)。コンポジッターが担当するのは見た目の部分だけで、実際にアプリを実行するのはOSの仕事です。
最後に、プロトコルはクライアントアプリとコンポジッターが通信する際の言語・フォーマットのようなものです。WebにおけるHTTPを思い浮かべていただけると分かりやすいです(WebサーバーとWebブラウザはHTTPで会話しています)。
あなたがお使いのOSにもこれらのプログラムが入っているはずです。例えば、Waylandプロトコルを使っているUbuntuではこのようになっています:
Zwinのコア概念
XRのウィンドウシステムを実現するため、私たちはシステムと同じ名を冠した Zwin プロトコルと、対応するコンポジッターである Zen を開発しています。
Zwinはプロトコルであり、実際に2D Waylandアプリケーションと通信をするのはZenです。つまり、Zwinを試すためにインストールする必要があるのはZenです。コンポジッターは気軽に変更できます。UbuntuやArch LinuxといったOSの部分は変更する必要がありません。
Zwinはオープンソースなので、Zwinプロトコルをサポートする3Dアプリや、Zenのようなコンポジッターを自由に誰でも開発することができます。