「Veldrid」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
 
(2人の利用者による、間の7版が非表示)
2行目: 2行目:
  
 
== 概要 ==
 
== 概要 ==
[[GPU]]への強力で統一されたインターフェイスを提供し、他のどの.NETライブラリよりも高度な機能を備えています。 他のプラットフォームまたはベンダー固有のテクノロジーとは異なり、Veldridを使用して、真にポータブルな高性能3Dアプリケーションを作成できます。
+
[[Direct3D]]や[[OpenGL]]、[[Vulkan]]、[[Metal]]といった[[低レベルAPI]]の平滑化に特化したグラフィックスライブラリである。
 +
 
 +
グラフィックスAPIの平滑化といえば[[SDL]]や[[SFML]]などが有名だが、Veldridはこれらと違い「平滑化してもなお低レベルAPI」という特徴がある。
 +
 
 +
[[GPU]]への強力で統一されたインターフェイスを提供し、他のどの.NETライブラリよりも高度な機能を備えている。他のプラットフォームまたはベンダー固有のテクノロジーとは異なり、Veldridを使用して、真にポータブルな高性能3Dアプリケーションを作成できる。
  
 
== SPIR-Vを利用 ==
 
== SPIR-Vを利用 ==
10行目: 14行目:
  
 
== サポートしているグラフィックスAPI ==
 
== サポートしているグラフィックスAPI ==
* [[Direct3D 11]]
+
* [[Direct3D]] 11
 
* [[Vulkan]]
 
* [[Vulkan]]
 
* [[Metal]]
 
* [[Metal]]
* [[OpenGL 3]]
+
* [[OpenGL]] 3
* [[OpenGL ES 3]]
+
* [[OpenGL ES]] 3
 +
 
 +
残念ながらOpenGL ES 2.0系には対応していない。
 +
古い[[Android]]は諦めろ。
  
 
== 利点 ==
 
== 利点 ==
28行目: 35行目:
 
== 欠点 ==
 
== 欠点 ==
 
=== 高レベルのAPIがない ===
 
=== 高レベルのAPIがない ===
[[Direct3D]]や[[OpenGL]]といった低レベルAPIの平滑化に特化しており、標準では[[ポリゴン]]9ひとつ描く方法すら提供されていない。[[ポリゴン]]を表示したければ[[フォンシェーディング]]などの[[プログラマブルシェーダー]]から全部自前で書く必要がある。
+
Veldridは[[Direct3D]]や[[OpenGL]]といった低レベルAPIの平滑化に特化しており、標準では[[ポリゴン]]ひとつ描く方法すら提供されていない。[[ポリゴン]]を表示したければ[[グローシェーディング]]や[[フォンシェーディング]]などの[[プログラマブルシェーダー]]から全部自前で書く必要がある。
 +
 
 +
== 関連項目 ==
 +
* [[ShaderGen]] - Veldridの人たちが開発しているC#でシェーダーをかけるやつ
  
 
== 外部リンク ==
 
== 外部リンク ==
36行目: 46行目:
 
* NuGet = https://www.nuget.org/packages/Veldrid
 
* NuGet = https://www.nuget.org/packages/Veldrid
  
[[カテゴリ:3DCG]]
+
[[category: 3DCG]]
 +
[[category: Veldrid]]

2021年8月30日 (月) 06:09時点における最新版

veldridとは、完全にクロスプラットフォームであり、DirectXOpenGLなどのグラフィックスAPIに依存しない.NET用のレンダリングおよびGPGPUライブラリである。

概要[編集 | ソースを編集]

Direct3DOpenGLVulkanMetalといった低レベルAPIの平滑化に特化したグラフィックスライブラリである。

グラフィックスAPIの平滑化といえばSDLSFMLなどが有名だが、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はDirect3DOpenGLといった低レベルAPIの平滑化に特化しており、標準ではポリゴンひとつ描く方法すら提供されていない。ポリゴンを表示したければグローシェーディングフォンシェーディングなどのプログラマブルシェーダーから全部自前で書く必要がある。

関連項目[編集 | ソースを編集]

  • ShaderGen - Veldridの人たちが開発しているC#でシェーダーをかけるやつ

外部リンク[編集 | ソースを編集]