「Veldrid」の版間の差分
Administrator (トーク | 投稿記録) (→概要) |
|||
35行目: | 35行目: | ||
== 欠点 == | == 欠点 == | ||
=== 高レベルのAPIがない === | === 高レベルのAPIがない === | ||
− | [[Direct3D]]や[[OpenGL]]といった低レベルAPIの平滑化に特化しており、標準では[[ポリゴン]] | + | [[Direct3D]]や[[OpenGL]]といった低レベルAPIの平滑化に特化しており、標準では[[ポリゴン]]ひとつ描く方法すら提供されていない。[[ポリゴン]]を表示したければ[[グローシェーディング]]や[[フォンシェーディング]]などの[[プログラマブルシェーダー]]から全部自前で書く必要がある。 |
+ | |||
+ | == 関連項目 == | ||
+ | * [[ShaderGen]] - Veldridの人たちが開発しているC#でシェーダーをかけるやつ | ||
== 外部リンク == | == 外部リンク == |
2020年6月4日 (木) 05:05時点における版
veldridとは、完全にクロスプラットフォームであり、DirectXやOpenGLなどのグラフィックスAPIに依存しない.NET用のレンダリングおよびGPGPUのライブラリである。
目次
概要
Direct3DやOpenGL、Vulkan、Metalといった低レベルAPIの平滑化に特化したグラフィックスライブラリである。
グラフィックスAPIの平滑化といえばSDLやSFMLなどが有名だが、Veldridはこれらと違い「平滑化してもなお低レベルAPI」という特徴がある。
GPUへの強力で統一されたインターフェイスを提供し、他のどの.NETライブラリよりも高度な機能を備えている。他のプラットフォームまたはベンダー固有のテクノロジーとは異なり、Veldridを使用して、真にポータブルな高性能3Dアプリケーションを作成できる。
SPIR-Vを利用
Veldridではあらゆるシェーダーを「SPIR-V」で保持する。Direct3DであろうとOpenGLであろうとMetalであろうと、SPIR-Vから動的にプログラマブルシェーダを生成する。VeldridにはVulkan SDKに含まれる「spirv-cross」を内包しており、これらを実行時にやってる感じだな。
サポートしているグラフィックスAPI
残念ながらOpenGL ES 2.0系には対応していない。 古いAndroidは諦めろ。
利点
ビュー単位で実装可能
SDLを利用した似たようなライブラリは多数あるが、それらはSDLの制約によりウインドウ全面をサーフェイスにしてしまうものばかりだ。この方式はOSが提供するボタンやテキストボックスなどのGUI部品と併用できず自前実装する必要がある。このためSDLを利用するMonoGameなどでもUIライブラリが乱立しており、かつ日本語対応(マルチバイト文字対応)は絶望的という状況となっている。ゲームであればいいが3DCADなんかを実装しようと思うと非常に不便であった。
一方、Veldridではビュー単位で簡単に実装できる。Xamarin.Macで「ビューコントローラに載る1つのビューだけがVeldridで描画」などということもできる。つまりNSOpenGLViewと同じようなことができる。ボタン類なんかも普通のアプリ開発と同様にXcodeでポチポチすることができる。すばらしいね。
ヘッドレスでも実装可能
前述のビュー単位で実装可能な点の発展型だが、Veldridはウインドウレスでもビューレスでも実装可能となっている。ウインドウの生成が不要。つまりサーバーサイドでも動くし、GPGPUを使うアプリも簡単に実装できる。
欠点
高レベルのAPIがない
Direct3DやOpenGLといった低レベルAPIの平滑化に特化しており、標準ではポリゴンひとつ描く方法すら提供されていない。ポリゴンを表示したければグローシェーディングやフォンシェーディングなどのプログラマブルシェーダーから全部自前で書く必要がある。
関連項目
- ShaderGen - Veldridの人たちが開発しているC#でシェーダーをかけるやつ