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