「Veldrid」の版間の差分
Administrator (トーク | 投稿記録) (→外部リンク) |
Administrator (トーク | 投稿記録) |
||
(2人の利用者による、間の8版が非表示) | |||
1行目: | 1行目: | ||
'''veldrid'''とは、完全にクロスプラットフォームであり、[[DirectX]]や[[OpenGL]]などの[[グラフィックスAPI]]に依存しない[[.NET]]用のレンダリングおよび[[GPGPU]]の[[ライブラリ]]である。 | '''veldrid'''とは、完全にクロスプラットフォームであり、[[DirectX]]や[[OpenGL]]などの[[グラフィックスAPI]]に依存しない[[.NET]]用のレンダリングおよび[[GPGPU]]の[[ライブラリ]]である。 | ||
− | + | == 概要 == | |
+ | [[Direct3D]]や[[OpenGL]]、[[Vulkan]]、[[Metal]]といった[[低レベルAPI]]の平滑化に特化したグラフィックスライブラリである。 | ||
− | + | グラフィックスAPIの平滑化といえば[[SDL]]や[[SFML]]などが有名だが、Veldridはこれらと違い「平滑化してもなお低レベルAPI」という特徴がある。 | |
+ | |||
+ | [[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 | ||
+ | * [[Vulkan]] | ||
+ | * [[Metal]] | ||
+ | * [[OpenGL]] 3 | ||
+ | * [[OpenGL ES]] 3 | ||
− | + | 残念ながらOpenGL ES 2.0系には対応していない。 | |
+ | 古い[[Android]]は諦めろ。 | ||
− | + | == 利点 == | |
+ | === ビュー単位で実装可能 === | ||
+ | [[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がない === |
+ | Veldridは[[Direct3D]]や[[OpenGL]]といった低レベルAPIの平滑化に特化しており、標準では[[ポリゴン]]ひとつ描く方法すら提供されていない。[[ポリゴン]]を表示したければ[[グローシェーディング]]や[[フォンシェーディング]]などの[[プログラマブルシェーダー]]から全部自前で書く必要がある。 | ||
− | + | == 関連項目 == | |
− | + | * [[ShaderGen]] - Veldridの人たちが開発しているC#でシェーダーをかけるやつ | |
== 外部リンク == | == 外部リンク == | ||
− | |||
* ソースコード = https://github.com/mellinoe/veldrid | * ソースコード = https://github.com/mellinoe/veldrid | ||
* サンプル = https://github.com/mellinoe/veldrid-samples | * サンプル = https://github.com/mellinoe/veldrid-samples | ||
33行目: | 46行目: | ||
* NuGet = https://www.nuget.org/packages/Veldrid | * NuGet = https://www.nuget.org/packages/Veldrid | ||
− | [[ | + | [[category: 3DCG]] |
+ | [[category: Veldrid]] |
2021年8月30日 (月) 06:09時点における最新版
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がない[編集 | ソースを編集]
VeldridはDirect3DやOpenGLといった低レベルAPIの平滑化に特化しており、標準ではポリゴンひとつ描く方法すら提供されていない。ポリゴンを表示したければグローシェーディングやフォンシェーディングなどのプログラマブルシェーダーから全部自前で書く必要がある。
関連項目[編集 | ソースを編集]
- ShaderGen - Veldridの人たちが開発しているC#でシェーダーをかけるやつ