「Veldrid」を編集中

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

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
 
'''veldrid'''とは、完全にクロスプラットフォームであり、[[DirectX]]や[[OpenGL]]などの[[グラフィックスAPI]]に依存しない[[.NET]]用のレンダリングおよび[[GPGPU]]の[[ライブラリ]]である。
 
'''veldrid'''とは、完全にクロスプラットフォームであり、[[DirectX]]や[[OpenGL]]などの[[グラフィックスAPI]]に依存しない[[.NET]]用のレンダリングおよび[[GPGPU]]の[[ライブラリ]]である。
  
== 概要 ==
+
システムのGPUへの強力で統一されたインターフェイスを提供し、他のどの.NETライブラリよりも高度な機能を備えています。 他のプラットフォームまたはベンダー固有のテクノロジーとは異なり、Veldridを使用して、真にポータブルな高性能3Dアプリケーションを作成できます。
[[Direct3D]]や[[OpenGL]]、[[Vulkan]]、[[Metal]]といった[[低レベルAPI]]の平滑化に特化したグラフィックスライブラリである。
 
  
グラフィックスAPIの平滑化といえば[[SDL]]や[[SFML]]などが有名だが、Veldridはこれらと違い「平滑化してもなお低レベルAPI」という特徴がある。
+
<br />
  
[[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そのまま実行だ。すばらしいね。
  
== SPIR-Vを利用 ==
+
サポートしているグラフィックスAPI
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]]
 
* [[Metal]]
 
* [[Metal]]
* [[OpenGL]] 3
+
* [[OpenGL 3]]
* [[OpenGL ES]] 3
+
* [[OpenGL ES 3]]
  
残念ながらOpenGL ES 2.0系には対応していない。
+
<br />
古い[[Android]]は諦めろ。
 
  
== 利点 ==
+
== ビュー単位で実装可能 ==
=== ビュー単位で実装可能 ===
+
[[MonoGame]]などのように[[SDL]]を利用している似たような[[ライブラリ]]もあるが、それらは[[SDL]]の制約によりウインドウ全面をサーフェイスにしてしまうものばかりだ。この方式のはボタンやテキストボックスなどの部品を自前実装しないといけないなどの制約があり、[[ゲーム]]であればいいが[[3DCAD]]なんかを実装しようと思うと非常に不便であった。
[[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ではビュー単位も簡単に実装できる。[[Xamarin.Mac]]で「ビューコントローラに載る1つのビューだけがVeldridで描画」などということもできる。つまりNSOpenGLViewと同じようなことができる。ボタン類なんかも普通のアプリ開発と同様に[[Xcode]]でポチポチすることができる。すばらしいね。
 +
<br />
  
=== ヘッドレスでも実装可能 ===
+
== 外部リンク ==
前述のビュー単位で実装可能な点の発展型だが、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
46行目: 33行目:
 
* NuGet = https://www.nuget.org/packages/Veldrid
 
* NuGet = https://www.nuget.org/packages/Veldrid
  
[[category: 3DCG]]
+
[[カテゴリ:3DCG]]
[[category: Veldrid]]
 

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)