Veldrid
veldridとは、完全にクロスプラットフォームであり、DirectXやOpenGLなどのグラフィックスAPIに依存しない.NET用のレンダリングおよびGPGPUのライブラリである。
システムのGPUへの強力で統一されたインターフェイスを提供し、他のどの.NETライブラリよりも高度な機能を備えています。 他のプラットフォームまたはベンダー固有のテクノロジーとは異なり、Veldridを使用して、真にポータブルな高性能3Dアプリケーションを作成できます。
SPIR-Vを利用
Veldridではプログラマブルシェーダは必ず「SPIR-V」を経由する(アプリのビルド時にSPIR-Vで保持する)。
VeldridにはVulkan SDKに含まれる「spirv-cross」を内包しており、これを利用して、DirectX環境であればSPIR-VからHLSLに、OpenGL環境であればSPIR-VからGLSLに、macOSなどであればSPIR-VからMetal(MSL)に実行時に動的に変換される仕組みとなっている。Vulkanの場合はSPIR-Vそのまま実行だ。すばらしいね。
サポートしているグラフィックスAPI
ビュー単位で実装可能
MonoGameなどのようにSDLを利用している似たようなライブラリもあるが、それらはSDLの制約によりウインドウ全面をサーフェイスにしてしまうものばかりだ。この方式のはボタンやテキストボックスなどの部品を自前実装しないといけないなどの制約があり、ゲームであればいいが3DCADなんかを実装しようと思うと非常に不便であった。
一方、Veldridではビュー単位も簡単に実装できる。Xamarin.Macで「ビューコントローラに載る1つのビューだけがVeldridで描画」などということもできる。つまりNSOpenGLViewと同じようなことができる。ボタン類なんかも普通のアプリ開発と同様にXcodeでポチポチすることができる。すばらしいね。