差分

ナビゲーションに移動 検索に移動

Veldrid

1,472 バイト追加, 2021年8月30日 (月) 06:09
編集の要約なし
'''veldrid'''とは、完全にクロスプラットフォームであり、[[DirectX]]や[[OpenGL]]などの[[グラフィックスAPI]]に依存しない[[.NET]]用のレンダリングおよび[[GPGPU]]の[[ライブラリ]]である。
システムのGPUへの強力で統一されたインターフェイスを提供し、他のどの.NETライブラリよりも高度な機能を備えています。 他のプラットフォームまたはベンダー固有のテクノロジーとは異なり、Veldridを使用して、真にポータブルな高性能3Dアプリケーションを作成できます。== 概要 ==[[Direct3D]]や[[OpenGL]]、[[Vulkan]]、[[Metal]]といった[[低レベルAPI]]の平滑化に特化したグラフィックスライブラリである。
<br />グラフィックスAPIの平滑化といえば[[SDL]]や[[SFML]]などが有名だが、Veldridはこれらと違い「平滑化してもなお低レベルAPI」という特徴がある。 [[GPU]]への強力で統一されたインターフェイスを提供し、他のどの.NETライブラリよりも高度な機能を備えている。他のプラットフォームまたはベンダー固有のテクノロジーとは異なり、Veldridを使用して、真にポータブルな高性能3Dアプリケーションを作成できる。
== SPIR-Vを利用 ==
VeldridではVeldridではあらゆるシェーダーを「[[SPIR-V]]」で保持する。[[Direct3D]]であろうと[[OpenGL]]であろうと[[Metal]]であろうと、[[SPIR-V]]から動的に[[プログラマブルシェーダ]]は必ず「を生成する。Veldridには[[Vulkan SDK]]に含まれる「spirv-cross」を内包しており、これらを実行時にやってる感じだな。* [[SPIR-VVからGLSLを生成する]]」を経由する(アプリのビルド時にSPIR* [[SPIR-Vで保持する)。VからHLSLを生成する]] == サポートしているグラフィックスAPI ==* [[Direct3D]] 11* [[Vulkan]]* [[Metal]]* [[OpenGL]] 3* [[OpenGL ES]] 3
Veldridには残念ながらOpenGL ES 2.0系には対応していない。古い[[Vulkan SDKAndroid]]に含まれる「spirv-cross」を内包しており、これを利用して、[[DirectX]]環境であれば[[SPIR-V]]から[[HLSL]]に、[[OpenGL]]環境であれば[[SPIR-V]]から[[GLSL]]に、[[macOS]]などであれば[[SPIR-V]]から[[Metal]](MSL)に実行時に動的に変換される仕組みとなっている。[[Vulkan]]の場合はSPIR-Vそのまま実行だ。すばらしいね。は諦めろ。
サポートしているグラフィックスAPI== 利点 ===== ビュー単位で実装可能 ===[[SDL]]を利用した似たような[[ライブラリ]]は多数あるが、それらは[[SDL]]の制約によりウインドウ全面をサーフェイスにしてしまうものばかりだ。この方式は[[OS]]が提供するボタンやテキストボックスなどの[[GUI]]部品と併用できず自前実装する必要がある。このため[[SDL]]を利用する[[MonoGame]]などでもUIライブラリが乱立しており、かつ日本語対応(マルチバイト文字対応)は絶望的という状況となっている。[[ゲーム]]であればいいが[[3DCAD]]なんかを実装しようと思うと非常に不便であった。* http://community.monogame.net/t/ui-frameworks/653/128
* 一方、Veldridではビュー単位で簡単に実装できる。[[Direct3D 11Xamarin.Mac]]* で「ビューコントローラに載る1つのビューだけがVeldridで描画」などということもできる。つまりNSOpenGLViewと同じようなことができる。ボタン類なんかも普通のアプリ開発と同様に[[Vulkan]]* [[Metal]]* [[OpenGL 3]]* [[OpenGL ES 3Xcode]]でポチポチすることができる。すばらしいね。
<br />=== ヘッドレスでも実装可能 ===前述のビュー単位で実装可能な点の発展型だが、Veldridはウインドウレスでもビューレスでも実装可能となっている。ウインドウの生成が不要。つまり[[サーバーサイド]]でも動くし、[[GPGPU]]を使う[[アプリ]]も簡単に実装できる。
== ビュー単位で実装可能 欠点 ===== 高レベルのAPIがない ===Veldridは[[Direct3D]]や[[MonoGameOpenGL]]などのようにといった低レベルAPIの平滑化に特化しており、標準では[[SDLポリゴン]]を利用している似たようなひとつ描く方法すら提供されていない。[[ライブラリポリゴン]]もあるが、それらはを表示したければ[[SDLグローシェーディング]]の制約によりウインドウ全面をサーフェイスにしてしまうものばかりだ。この方式のはボタンやテキストボックスなどの部品を自前実装しないといけないなどの制約があり、[[ゲームフォンシェーディング]]であればいいがなどの[[3DCADプログラマブルシェーダー]]なんかを実装しようと思うと非常に不便であった。から全部自前で書く必要がある。
一方、Veldridではビュー単位も簡単に実装できる。[[Xamarin.Mac]]で「ビューコントローラに載る1つのビューだけがVeldridで描画」などということもできる。つまりNSOpenGLViewと同じようなことができる。ボタン類なんかも普通のアプリ開発と同様に== 関連項目 ==* [[XcodeShaderGen]]でポチポチすることができる。すばらしいね。<br />- Veldridの人たちが開発しているC#でシェーダーをかけるやつ
== 外部リンク ==
 
* ソースコード = https://github.com/mellinoe/veldrid
* サンプル = https://github.com/mellinoe/veldrid-samples
* NuGet = https://www.nuget.org/packages/Veldrid
[[カテゴリcategory:3DCG]][[category: Veldrid]]

案内メニュー