3Dライブラリ
3Dライブラリは、3DCGソフトウェアや3D CAD、ゲームエンジンなどの3D関連プログラムに良く用いられているソフトウェアライブラリである。ここでは、テクスチャなどの3Dに付随する2Dライブラリについても解説する。
3Dグラフィクスライブラリ
3Dグラフィクスライブラリは、3Dを表示するために必要なライブラリである。OS及びカーネルドライバを通してGPUレンダリングを行う時だけでなく、GPUを使わずにソフトウェアレンダリングする時にも使われる。
ラスタライズベース
- Windows SDK
- Direct3D APIに対応するWindows用の開発キット。昔はDirectX部分がDirectX SDKとして分離されていた。
- macOS SDK
- OpenGL(非推奨)、Metal APIに対応するmacOS用の開発キット。
- Mesa 3D
- OpenGL、OpenGL ES、Vulkan、Direct3D 9 API、OpenCLに対応するライブラリ集及びツール。Unix系OSで良く使われているがWindowsにも対応している。ソフトウェア実装のllvmpipeも実装されている。
- かつてはIntelのソフトウェア定義可視化(SDViz)構想の一環として開発されたソフトウェア実装のSWR (旧OpenSWR) も搭載されていた[1][2]。
ソフトウェアラスタライザ
補助ライブラリ
大域照明 (GI) ライブラリ
- Enlighten (シリコンスタジオ[3]←ARM[4]←Geomerics)
- リアルタイムGIミドルウェア。Unreal Engine用のものが提供されている。以前はUnityに標準搭載されていた[5]。
- NVIDIA VXGI (NVIDIA)
- リアルタイムGIミドルウェア。ボクセルコーントレーシングを実装している。iClone 7以降に搭載されているほか、Unreal EngineのVXGI統合ブランチが公開されている。
- RTXGI SDK (NVIDIA)
- Nvidia RTXを使ったDynamic Diffuse Global Illumination (DDGI) 実装[6]。2.0で Neural Radiance Cache (NRC) と Spatial Hash Radiance Cache (SHaRC) を搭載した[7]。
- KICKSTART RT SDK (NVIDIA)
- Direct3D 11までなどのレイトレーシングAPI未対応の古い環境でレイトレーシングを行うための実装[8]。
- Beast (Autodesk ← Illuminate Labs)
- リアルタイムGIミドルウェア。Autodesk Stingrayに標準搭載されていた。販売終了[9]。
直接照明 (DI) ライブラリ
- NVIDIA RTX Direct Illumination (RTXDI) SDK - Nvidia RTXを使って多光源を処理するライブラリ。
環境遮蔽(AO) ライブラリ
なお、DirectX 10.1のSDKには、AMDの開発したHDAO (高解像度環境遮蔽) のサンプルが付属していた[10]。
- NVIDA ShadowWorks - 「HBAO+」(水平ベース環境遮蔽) を実装している[11]。
- NVIDIA VXAO - 「VXAO」(ボクセル構造を用いた環境遮蔽)を実装している。NVIDIA VXGIの一部[12]。
- Adaptive Screen Space Ambient Occlusion - Intelが開発している。DirectX 11対応。オープンソース。実装の詳細は書籍「GPU Zen」に記載されている[13]。
- XeGTAO - Intelが開発している「GTAO」(グランドトゥルース環境遮蔽)実装。
遮蔽カリングライブラリ
- Umbra (Amazon[14]←Umbra←Hybrid Graphics)
- 遮蔽カリングに特化したミドルウェア。旧dPVS。Unity及びUnreal Engineに対応していた。販売終了。
その他
- SpatiotemporalBlueNoiseSDK (NVIDIA) - 時空間ブルーノイズの生成ライブラリ。
- NVIDIA Reflex SDK - 低遅延化のためのライブラリ。
レイトレーシングベース
レイトレーシングに向けた汎用計算パイプラインのものとレイトレーシング/ラスタライズのハイブリッドレンダリングに向けたグラフィックパイプラインのものが存在する。レイトレーシング専用のものは以下となっている:
メーカー | 異種コア計算 | レイトレーシングコア | デノイズ | レイトレーシングレンダリング | AI |
---|---|---|---|---|---|
NVIDIA | CUDA | OptiX | OptiX Denoiser | Iray SDK | cuDNN / CUDA-X AI |
AMD | HIP | Radeon Rays / HIP-RT | RIF | Radeon ProRender SDK | MIOpen |
Intel | SYCL/Intel DPC++ | Embree | Intel OIDN | OSPRay | oneDNN |
レイトレーシングコアライブラリ
レイトレーシングの交差判定に特化したライブラリ。標準APIには、Khronos GroupのOpenRL及びVulkan拡張のVK_KHR_ray_tracing[注 1][15]、DirectX 12以降のDirectX Raytracing (DXR)、Metal 2のMetal Performance Shaders (MPS)のray intersector[16]などがある。
- Embree - Intelが開発を支援している。オープンソース。Apacheライセンス。
- Radeon Rays (AMD) - 旧AMD FireRays。オープンソース。MITライセンス[17]。VulkanとDirectX 12に対応している(OpenCL対応は終了)[17]。
- HIP-RT (AMD) - HIPベースのレイトレーシングライブラリ。AMD及びNVIDIAのGPUに対応[18]。
- NVIDIA OptiX - NVIDIAのGPU用。OptiX APIとOptiX Prime APIがある。6.0でNvidia RTXによるアクセラレーションに対応した。
- PowerVR OpenRL SDK - PowerVR用のOpenRL実装。開発終了。
レイトレーシングレンダリングライブラリ
レイトレーシングコアライブラリ等を使ってレイトレーシングレンダリングを行うためのライブラリ。
- OSPRay - Intelが開発を支援している。オープンソース。Apacheライセンス。
- Radeon ProRender SDK (旧FireRender SDK) - AMDが開発を支援している。オープンソース化予定。
- NVIDIA Iray SDK
- PowerVR Brazil SDK - 開発終了。
- REDsdk - Redway3D製。
その他
- Intel Open Path Guiding Library - パストレーシングの高速化に使われるPath Guidingの実装の一つ。オープンソース。Apacheライセンス。
ノイズ除去ライブラリ
多くはマルチパスにも使われている。
デノイザー | 方式 | 対応 | ガイドパス[g 1] | ||||
---|---|---|---|---|---|---|---|
静止画 | 動画(クロスフレーム) | スフィアマップ | アルベド | 法線 | 深度 | ||
OptiX denoiser | 機械学習 | Yes | temporal denoising | ? | Yes[19] | Yes[19] | No |
Radeon Image Filter AI denoiser | 機械学習 | Yes | No | No | Yes[20] | Yes[20] | Yes[20] |
OIDN | 機械学習 | Yes | No | No | Yes[21] | Yes[21] | No |
モンテカルロ・レイトレーシング向け
- NVIDIA OptiX AI-accelerated denoiser - NVIDIA OptiX 5.0以降に含まれている。機械学習ベース。多くのレンダリングソフトウェアに搭載されている。
- NVIDIA Real-Time Denoisers SDK
- Intel Open Image Denoise - 略称ODIN。機械学習ベースであり、Intel MKL-DNNライブラリを使用している。オープンソース。Apache License 2.0。多くのレンダリングソフトウェアに搭載されている。
- AMD Radeon Image Filter Library - 機械学習ベース。
- Bayesian Collaborative Denoiser (BCD) - 非局所ベイジアンフィルタベースであり分布と共分散を使用する。BSDライセンス。appleseed 1.9以降[22]やLuxCoreRender 2.1以降[23]に搭載されている。開発停止中。
- Altus SDK - InnoBright製。二組のレンダリング結果を使用してデノイズを行う[24]。ツール版も存在した。AltusはMaxwell Render、Guerilla Render、Redshiftなどに搭載されている[25][26][27]。販売停止中。
ポストエフェクトライブラリ
AIによる超解像度はダウンスケーリング(縮小化)と組み合わせることでアンチエイリアスの代わりとしても使われている。ダウンスケーリング側にもAIを使うシステムも存在する(NVIDIA DLDSRなど)[28]。
メーカー | 超解像度 | シャープ化 | リアルタイムデノイズ | 可変シェーディング | フレーム生成 | |||
---|---|---|---|---|---|---|---|---|
単独 | モーションベクトル使用 | 影レイ | 反射レイ | フルレイトレーシング | ||||
NVIDIA | NISのNVScaler | DLSS | NISのNVSharpen | NRD[29] | DLSS RR[30] | NVIDIA VRS/NAS | DLSS FG | |
AMD | FSR 1.0[p 1][31] | FSR 2.0[31] | FidelityFXのCAS | FidelityFXのDenoiser | ? | FidelityFXのVariable Shading | FSR 3 Frame Generation | |
Intel | ? | XeSS | ? | ? | ? | ? | ? | ? |
- NVIDIA NGX - 機械学習ベースのインペイント、スローモーション、アップスケーリングが含まれている。
- AMD FidelityFX - Content Adaptive Sharpeningが含まれている。MITライセンス。DirectX 12とVulkanに対応。高速MIPマップ生成用のFidelityFX Single Pass Downsampler (SPD) 、アップスケーリング用のFidelityFX Super Resolution (FSR) [32]、ノイズ除去のFidelityFX Denoiserもある。
- NVIDIA Image Scaling SDK - アップスケーリング用。MITライセンス。
- YEBIS (シリコンスタジオ) - ポストエフェクトミドルウェア。Substance Designer/Painterなどで使われていた[33]。
- ReShade - インジェクションベースのポストエフェクトライブラリ。既存のソフトウェアに使用できる。オープンソース。BSDライセンス。
開発停止中
- NVIDIA PostWorks - DirectX 11向け。時間的アンチエイリアシングのNVIDIA TXAA及び被写界深度エフェクトが含まれていた。レガシー[34]。
互換レイヤー
OSやWeb環境(WebGLやWebGPU)によって対応するグラフィックAPIが異なるため互換レイヤーが存在する。なおグラフィックAPIだけでなくOSレベルの互換レイヤーを用意するものもある (WineやそのフォークのProtonなど)。
元環境 | OpenGL API | Vulkan API | Direct3D API | Metal API | |||||
---|---|---|---|---|---|---|---|---|---|
1-7 | 8 | 9 | 10 | 11 | 12 | ||||
Vulkan環境 | MesaのZinkドライバ[35] | ネイティブ | ? | d8vk | DXVK[c 1] | vkd3d | No | ||
Direct3D 12環境 | MesaのD3D12ドライバ[36][37][c 2] | MesaのDZNドライバ[38][c 2][c 3] | ? | ? | D3D9On12 | ? | D3D11On12 | ネイティブ | No |
Metal環境 | MoltenVK上のMesaのZinkドライバ[39][c 4] | MoltenVK | ? | ? | ? | ? | ? | ? | ネイティブ |
- MoltenVK (Khronos Group)
- Metal環境上のVulkan API実装。オープンソース。Apache License 2.0。
- DXVK
- Vulkan環境上のDirect3D 9/10/11 API実装。オープンソース。zlibライセンス。d9vkを統合した[40]。Protonなどで使われている。
- vkd3d
- Vulkan環境上のDirect3D 12 API実装。オープンソース。LGPLライセンス。ProtonやWine[41]などで使われている。
- DXGL
- OpenGL環境上のDirectX 1〜7 API実装。オープンソース。LGPLライセンス。
- ANGLE (Google)
- Direct3D 9/11、OpenGL、Vulkan、Metal環境上のOpenGL ES API実装であり、主にブラウザのWebGL実装に使われている。オープンソース。BSDライセンス。コンパイラ部分は3Dlabs(現ZiiLABS)のオープンソース実装を基にしている[42]。Windows版Google ChromeやFirefoxで使われている。
- MojoShader
- HLSLのバイトコード (DXBC)やDirectXアセンブリをGLSLシェーダーやARBアセンブリ、Metalシェーダーなどに変換するライブラリ。Shader Model 1.x (Direct3D 8世代)から3 (Direct3D 9.0c世代)まで対応している。Unreal Tournament 3[43]などのゲームやUnity[44]などのゲームエンジンで使われている。オープンソース。zlibライセンス。
- dgVoodoo2
- Direct3D 11/12環境上のGlide 1〜3.1 API/DirectX 1〜7 API/Direct3D 8〜9 API実装。プロプライエタリ。
- D3D11On12 / D3D9On12 (Microsoft)
- Direct3D 12環境上のDirect3D 11 API実装およびDirect3D 9 API実装[45][46]。オープンソース。MITライセンス。両者の共通部分もD3D12 Translation Layerとしてオープンソース化されている[45]。
開発停止中
- dxup
- Direct3D 11環境上のDirect3D 9/10 API実装。DXVKと組み合わせてVulkan環境上で動かすこともできた[47]。
- hlsl2glslfork
- Direct3D 9時代のHLSLシェーダーをGLSL/GLSL ESシェーダーに変換するライブラリ。ATI Technologiesによって開発されたHLSL2GLSLをフォークしたもの[48]。オープンソース。以前Unityで使われており[48]、Unity Technologiesにより開発が継続されていたが、現在、開発がメンテナンスモードとなっている[49]。
- ToGL (Valve Corporation[50])
- OpenGL環境上のDirect3D 9.0c APIサブセット実装。HLSLのバイトコード (DXBC) をGLSLシェーダーへと変換する。オープンソース。Dota 2で使われていた。
フレームワークライブラリ
フレームワークには低レイヤーなものと、シーングラフベースのものがある。
低レイヤー
- Microsoft DirectX
- Windows用のゲーム及びマルチメディア向けAPI集。グラフィクス用のDirect2D及びDirect3D、入力用のXInput (DirectInputの後継)、3Dサウンド用のX3DAudio (DirectSound3Dの後継)などのコンポーネントを含んでいる。またDirectX 12で機械学習用のDirectMLも追加された。
- シーングラフには非対応。3Dモデル用の.x形式やエフェクト用のDirectX effect形式 (*.fx)などは存在したが、現在それらは非推奨となっている。
- NVRHI (NVIDIA)
- Direct3DとVulkanの抽象化レイヤー[51]。
- Intermediate Graphics Library (Meta)
- OpenGL/Vulkan/Metalの抽象化レイヤー[52]。
シーングラフベース
- SceneKit
- AppleのmacOSやiOSに搭載されているシーングラフベースの3Dライブラリ。言語はObjective-C。
- Qt 3D
- Qtに含まれる3Dライブラリ。オープンソース。シーングラフはXMLベースのQML形式。
- Open Inventor
- OpenGL向けのシーングラフを中心としたライブラリ。オープンソース。
- OpenSceneGraph
- OpenGL向けのシーングラフを中心としたライブラリ。オープンソース。
- シーングラフはOpenSceneGraph形式 (*.osg、*.osgb、.osgt、.osgx)。
- Java 3D
- Java環境向けのシーングラフを中心としたAPI。
- Universal Scene Description
- Pixarの開発するシーングラフを中心としたライブラリ。オープンソース。Katana 3.0以降[53]やHoudini 18以降のSolaris[54]で使われている。
- シーングラフはUniversal Scene Description形式 (.usd、.usda、.usdc、.usdz)。
- Visualization Toolkit (VTK)
- シーングラフのvtkViewNodeを持っている[55]。ParaView、OsiriX、3DSlicerなどに使われている。オープンソース。BSDライセンス。
Web向けフレームワークライブラリ
現在では汎用ゲームエンジンもWebGLに対応してきている (Unity、Unreal Engine 4、OGREなど)。物理演算ライブラリについては、3Dライブラリ#WebGL用物理演算ライブラリを参照。
3Dモデル形式については、クロノス・グループで標準化されているglTF形式が一般的となっている。
Web用フレームワーク | ライセンス | 座標系 | エディター | 3D API | 物理エンジン | WebXR対応 | |
---|---|---|---|---|---|---|---|
WebGL | WebGPU | ||||||
three.js | MITライセンス | 右手系 | Three.js Editor | Yes | r121以降 | ammo.js | Yes |
Babylon.js | Apache License 2.0 | 左手系 | Babylon.js Editor | Yes | 4.1.0以降 | Cannon.js、Oimo.js、Energy.js、ammo.js[56] | Yes |
PlayCanvas Engine | MITライセンス | 右手系 | PlayCanvas Editor | Yes | No | ammo.js | 1.25以降 |
Web用フレームワーク | シーングラフ形式 | モデル形式 | シェーダー形式 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
glTF | OBJ | FBX | USDZ | その他 | PBS | GLSL言語 | ||||
無圧縮 | Draco圧縮 | meshopt圧縮 | ||||||||
three.js | JSON Object Scene format等 | Yes[57] | Yes[57] | Yes[57] | Yes | Yes | Yes | PLY、Collada、STL、VRML、.babylon形式[58]、PlayCanvas形式、PMD/PMX等 | Yes[59] | Yes[60] |
Babylon.js | .babylon形式(JSONベース[61]) | Yes | Yes | Yes | Yes | Yes | No | 2.3.0以降 | ? | |
PlayCanvas Engine | JSONベース | Yes | Yes | No | Yes | No | ? | PlayCanvas JSON Model | Yes | Yes |
Web用フレームワーク | テクスチャ形式 | |||
---|---|---|---|---|
Basis | KTX | DDS | その他 | |
three.js | Yes | Yes[62] | Yes[62] | OpenEXR[62]、PVRTC[62]、RGBM[62]、TGA[62]、PNG[62]、GIF[62]、JPEG[62] |
Babylon.js | Yes | Yes[63] | Yes[63] | TGA[63]等 |
PlayCanvas Engine | 1.24以降 | Yes | Yes |
PBRシェーダー対応
- three.js
- WebGLだけでなく、CanvasやSVG、CSS3によるレンダリングにも対応している3Dエンジン。
- Babylon.js
- マイクロソフトの開発者を中心として開発されているWebGL向け3Dエンジン。3ds Max、Blender、Cheetah3D、Unity用のエクスポータープラグインも提供している。
- PlayCanvas Engine (PLAYCANVAS)
- Mozilla Foundationと提携するPLAYCANVASによって開発されたWeb向けゲームエンジン。オープンソース。
- luma.gl (Uber Technologies)
- データ可視化向けWebGLフレームワークの一つ。PhiloGLの後継。ライセンスはMITライセンス。
PBRシェーダー未対応
- AwayJS
- WebGL向け3Dエンジン。Away3D TypeScriptの後継。Apache License 2.0。元々Flash用3DライブラリであるPapervision3D (PV3D)の派生としてAway3Dが開発され、その後Webブラウザ向けのAway3D TypeScriptが作られた。
開発停止中
ジオメトリ操作
これらライブラリは、ジオメトリの操作に使われている。
ジオメトリ形状モデリングカーネル
ジオメトリ形状モデリングカーネルは、NURBS等の複雑なプリミティブを表現するために使われるライブラリであり、特に3D CADで重要となる。
ジオメトリ処理ライブラリ
- CGAL - ジオメトリ処理ライブラリ。3Dブーリアンにも対応している。オープンソース。GPLライセンス (一部LGPLライセンス)。
- libigl - ジオメトリ処理ライブラリ。3Dブーリアンにも対応している。オープンソース。MPLライセンス (一部GPLライセンス)。
- OpenMesh - ポリゴンメッシュの処理に向けたライブラリ。オープンソース。BSDライセンス。OpenFlipperなどに使われている。
- GNU Triangulated Surface Library - 略称GTS。三角メッシュの処理に特化したライブラリ。Graphvizのグラフビューアであるsmyrnaツールに使われている[68]。
- VCG Library - MeshLabに使われている。オープンソース。GPLライセンス。
3Dブーリアンライブラリ
- Carve - Mayaに使われている3Dブーリアンライブラリ[69]。Blenderにも使われていた[70]。オープンソース。MITライセンス[71]。
- Cork Boolean Library - 3Dブーリアンライブラリの一つ。オープンソース。LGPLライセンス。
メッシュ生成ライブラリ
再分割/テッセレーションライブラリ
- OpenSubdiv - Pixarの支援する再分割ライブラリ。オープンソース。Apacheライセンス。
プラグインライブラリ
- Open Mesh Effect - OpenFXベースの3DメッシュエフェクトAPI。
ファイル入出力ライブラリ
これらのライブラリは、異なる3Dソフトウェア間でファイルをやり取りする時などに使われている。
シーン形式
- FBX SDK - Autodesk製品を始め、多くの3DCGソフトウェアで使われているFBX形式 (*.fbx) 用の公式ライブラリ。Autodesk製。
- OpenCOLLADA - 多くの3DCGソフトウェアで使われているCOLLADA形式 (*.dae) 用の公式ライブラリ。オープンソース。MITライセンス。
- COLLADA DOM - COLLADA形式 (*.dae) 用のライブラリ。Sony Computer Entertainment製。オープンソース。MITライセンス。
- FCollada - COLLADA形式 (*.dae) 用のライブラリ。Feeling Software製。ディスコン。
- Python Computer Graphics Kit - Maya ASCII (MA)形式などのインポートや、RIB形式などへのエクスポートに対応するPythonモジュール。オープンソース。最終更新は2013年リリースの2.0.0。
3Dモデル形式
- Crosswalk SDK - Softimageや一部のゲームエンジンで使われていたdotXSI形式 (*.xsi) 用の公式ライブラリ。Autodesk製。ディスコン。
- lib3ds - 古い3ds Maxで使われていた3ds形式 (*.3ds)用のライブラリ。オープンソース。LGPLライセンス。
- tinyobjloader - 多くの3DCGソフトウェアで使われているobj形式 (*.obj)及びmtl形式 (*.mtl) 用のライブラリ。オープンソース。MITライセンス。
- Open Asset Import Library (assimp) - 様々な3Dモデル形式に対応するライブラリ。オープンソース。BSDライセンス。
- Houdini Engine - Houdiniで使われているHoudini Digital Asset形式 (*.otl、*.hda)用のインポートライブラリ。
- cgltf - glTF形式に対応するシングルヘッダーライブラリ[72]。MITライセンス。
- Microsoft glTF SDK - glTF形式に対応するライブラリ。オープンソース[73]。MITライセンス。
- dime - DXF形式の入出力に対応するライブラリ[74]。DXF2papercraftに使われている。
3Dモデル圧縮
- OpenCTM - zlibライセンス。LZMA圧縮を使用している。形式はOpenCTM形式 (*.ctm)。
- Open3DGC - MITライセンス。MPEG-SC3DMCコーデックの実装の一つ。glTF形式で使えるようになる予定だった[75]が、Dracoに置き換えられた。
- Draco (Google) - Apache License 2.0。glTF形式 (KHR_draco_mesh_compression) 及びUSD形式[76]で使うことができる。
- meshoptimizer - MITライセンス。glTF形式 (EXT_meshopt_compression) で使うことができる。
マテリアル形式
- Substance Engine - Substance Designerで使われているマテリアル形式 (*.sbs、*.sbsar)用のインポートライブラリ。
3D CAD形式
- openNURBS SDK - Rhinocerosやその他の3D CADソフトウェアで使われているopenNURBS形式 (*.3dm)用の公式ライブラリ。Robert McNeel & Associates製。オープンソース。
- IfcOpenShell - 3D CADソフトウェアで使われている Industry Foundation Classes形式 (*.ifc)用のライブラリ。オープンソース。LGPLライセンス。
パーティクル形式
- Partio - 様々なパーティクル形式に対応するライブラリ。オープンソース。BSDライセンス。Maya PDA/PDB/PDC形式、RenderMan PTC形式、Houdini GEO/BGEO形式、Real Flow BIN形式、Krakatoa PRT形式、PTS形式などに対応している。LightWave 2020以降などに使われている[77]。
キャッシュ形式
- Alembic - Alembic形式 (*.abc)用のライブラリ。オープンソース。BSDライセンス。Sony Pictures Imageworks及びILMが共同で開発した。
マルチパス画像
- OpenEXR (Academy Software Foundation[78]←ILM) - 3DCG向けの画像形式であるOpenEXR形式 (*.exr)用のライブラリ。OpenEXR形式は、浮動小数点数で表された色だけでなく、後処理に必要な深度パス、オブジェクトIDなどの付随情報を含めることが出来る。
テクスチャ形式
- Ptex - UV不要なPtex形式 (*.ptx) 用のライブラリ。Walt Disney Studiosが開発を支援している。オープンソース。BSDライセンス。
- Oodle Texture (Epic Games Tools←RAD Game Tools) - テクスチャ圧縮向けSDK。BC1、BC3-BC7圧縮のレート歪み最適化に対応している。
- OpenImageIO(Academy Software Foundation[79]←Larry Gritz) - レンダラーなどの3Dパイプラインに特化した画像入出力ライブラリ。MIPMAPにも対応する効率的なキャッシュを備えている。多くの3DCGソフトウェアがこのライブラリを使用している。
- bcdec - BC1-7形式のデコードに対応したヘッダーオンリーライブラリ。OpenImageIO 2.4.4以降に使われている[80]。
- NVIDIA Texture Tools (NVTT) - NVIDIAのテクスチャSDK[81]。2はオープンソースとなっていた。Unreal Engine[82]やBlender 2.46以降に使われている[83]。
開発停止中
シェーダーおよびマテリアルライブラリ
- liboslc/liboslquery/liboslexec (Academy Software Foundation[78]←Sony Pictures Imageworks) - Open Shading Language (OSL) シェーダー用のライブラリ。オープンソース。ライセンスはBSDライセンス。
- NVIDIA MDL SDK - MDL (Material Definition Language) マテリアル定義用のライブラリ。2018年に一部がオープンソース化され[85]、2022年に全てがオープンソース化された[86]。BSDライセンス。MDLは一つの記述でリアルタイムとパストレーシングレンダリングの両方に対応する。
- MaterialX (Academy Software Foundation←Lucasfilm[87]) - オープンソースのマテリアル交換用ライブラリ。当初ILMが開発した。MaterialX形式からGLSLシェーダーやOSLシェーダーを生成するためのShaderX[88]が統合された。
ボリュームライブラリ
- OpenVDB (Academy Software Foundation[78]←ドリームワークス・アニメーション) - OpenVDB形式 (*.vdb)の入出力及び操作に対応するライブラリ。オープンソース。GPU対応のNanoVDB実装がNVIDIAより提供された[89]。
- NVIDIA GVDB Voxels - GPU向けの疎ボクセルライブラリ。オープンソース[90]。NanoVDBへの変換コードが用意されている。
- OpenVKL - Intel製のボクセルレンダリングライブラリ[91]。
- Field3d (Sony Pictures Imageworks) - Field3d形式 (*.f3d)の入出力に対応するライブラリ。オープンソース。
運動学ライブラリ
物理演算ライブラリ
- Open Dynamics Engine
- 略称ODE。オープンソース。LGPL及びBSDのデュアルライセンス。SoftimageやHoudiniなどが対応していた。現在HoudiniはODEを非推奨としている[95]。Python言語向けのPyODEもあり[96]、心理学実験向けツールキットのPyEPLがそれに依存していた[97]。
- Bullet
- オープンソースの物理エンジン。3.xでGPUパイプラインやRobot Operating SystemのURDF形式に対応した。多くの3DCGソフトウェアやプラグインが採用している。強化学習などに向けたPyBulletも付属している。
- Havok Physics (Microsoft←Intel←Havok)
- 物理エンジン。3ds Max及びMaya用のプラグインがあった。開発終了。
- PhysBAM
- マルチフィジクスシミュレーションライブラリ。開発停止中。
- NVIDIA PhysX (Nvidia←AGEIA)
- 旧GameWorks PhysX。マルチ物理エンジン。GPUによる剛体演算に対応している (PhysX-GRB)。3ds Max、Maya、Softimageの物理演算のバックエンドに使われているほか、3ds Max及びMaya用のDCCプラグインが存在する。
- PhysX SDKの他にAPEX SDKを含んでいたが、PhysX Destruction/Clothing/Particlesは非推奨となった[98]。5.0で有限要素法に基づく可変形物体物理に対応した[99]。5.1でオープンソース化され、流体シミュレーションのNVIDIA Flowが統合された[100]。
- NVIDIA FleX (NVIDIA)
- PBD(位置ベース物理シミュレーション)によるパーティクルベースのマルチ物理ライブラリ。
- NVIDIA Blast (NVIDIA)
- 破壊シミュレーションライブラリ。
- NVIDIA Cloth (NVIDIA)
- クロスシミュレーションライブラリ。
- FEMFX (AMD)
- 有限要素法に基づく可変形物体物理ライブラリ[101]。MITライセンス。Unreal Engine向けプラグインもある。
機械学習向け物理ライブラリ
上記のBulletも参照。
- Brax (Google)
- 機械学習向けフレームワークJAXを基にした物理ライブラリ。
- Isaac Gym (NVIDIA)
- 強化学習向けの物理ライブラリ。
- MuJoCo (DeepMind(Alphabet子会社)←Roboti[102])
- 独自の凸ガウス原理を利用した物理ライブラリであり[103]、OpenAIのGymで強化学習に使うことが可能となっている[104]。
多体動力学シミュレーション
- MBDyn
- オープンソースの多体動力学シミュレーションソフトウェア。MBDynをバックエンドに用いたBlender用アドオンとして、BlenderAndMBDynが存在する。
流体シミュレーション
- MantaFlow (ミュンヘン工科大学)
- 流体シミュレーションライブラリ。FLIP法およびAPIC法に対応している。GPLライセンス。古い流体シミュレーションライブラリであるEl'beemの開発者Nils Thuerey[105]が、MantaFlowの開発に参加している[106]。Blender 2.82以降がMantaFlowを採用している[107] (それ以前はEl'beemを使用していた[105])。
- PhiFlow (ミュンヘン工科大学)
- 偏微分方程式求解ライブラリであり、機械学習ベースの流体シミュレーションに対応している。MITライセンス。
- SPlisHSPlasH (アーヘン工科大学)
- パーティクルベースの流体シミュレーションライブラリ。SPH法に対応している。MITライセンス。LightWaveプラグインのDeep Rising FX 3.0で使われていた[108]。
- Wavelet Turbulence (コーネル大学)
- 気体流体用のハイレゾディテール化ライブラリ。GPLライセンス。Blenderが使用していた。
海洋シミュレーション
- NVIDIA WaveWorks (NDIVIA)
WebGL用物理演算ライブラリ
- Ammo.js
- BulletをEmscriptenでJavascript及びWebAssemblyに変換したもの。zlibライセンス。PlayCanvas Engineやthree.jsやBabylon.jsがAmmo.jsとの連携に対応している。
- Oimo.js
- OimoPhysicsをJavascriptに移植したもの。MITライセンス。Babylon.jsがOimo.jsとの連携に対応している[109]。
- Cannon.js
- Javascriptで書かれた物理エンジン。MITライセンス。three.jsとammo.jsの影響を受けている[110]。Babylon.jsがCannon.jsとの連携に対応している[109]。
開発停止中
ヘア及びファーミドルウェア
- NVIDIA HairWorks (NVIDIA)
- ゲーム向けミドルウェア。3ds Max及びMaya用のNVIDIA HairWorks Pluginsが用意されている。
- AMD TressFX (AMD)
- ゲーム向けミドルウェア。オープンソース。MITライセンス。Maya用のエクスポートプラグインが提供されている[112]。
AIライブラリ
- Havok AI
- Havokに含まれるNavigation Meshライブラリ。
- Recast & Detour
- オープンソースのNavigation Meshライブラリ。ZLibライセンス。Blenderが使用していた。これを使ったミドルウェアとして、Unity用のRecastUnityが存在する。
- NavPower (BabelFlux)
- Navigation Meshライブラリ。
- PathEngine SDK (PathEngine)
- Navigation Meshライブラリ。
- Autodesk Navigation (Autodesk ← Kynogon)
- Autodesk Gamewareの一つ。Navigation Meshミドルウェア。旧Kynapse。Autodesk Stingrayに標準搭載されている。販売終了[9]。
機械学習向けグラフィクスライブラリ
機械学習向けの低レベルAPIとしてはDirectX 12以降がDirectML APIを備えており、MetalもMPSCNNを備えている。
- TensorFlow Graphics
- TensorFlowベース。
- TensorFlow 3D (Google)
- TensorFlowベース。
- MediaPipe (Google)
- Kaolin (NVIDIA)
- PyTorchベース。
- PyTorch3D (Facebook)
- PyTorchベース。
- PyTorch Geometric
- PyTorchベース。
UIライブラリ
3D UI対応のUIライブラリ
3D UIはUI部品などに深度を持つことができる。3D UIは特にVRで重要となる。
- uGUI (Unity Technologies)
- Unityに使われているUIライブラリ。オープンソース。MITライセンス。
2D UIのみ対応のUIライブラリ
DirectXやOpenGLなどの3Dパイプラインに対応する2D UI向けライブラリ。一部ライブラリは、RTT (Render to Texture)により、2D UIを3D空間へ投影することも可能となっている。
- CEGUI
- DirectX、OpenGLの他、オープンソースゲームエンジンのOgre3D、Irrlicht Engineに対応している[113]。オープンソース。MITライセンス。GUIエディターとしてCEEDがある。
- MyGUI
- Ogre3Dに対応するUIライブラリ。オープンソース。MITライセンス。
- ImGui
- DirectX、OpenGL、Vulkan等に対応している。オープンソース。MITライセンス。
- dat.GUI
- Javascript用。オープンソース。Apacheライセンス。three.jsにも付属されている。Googleの従業員により開発された[114]。
- AntTweakBar
- DirectX及びOpenGL用。オープンソース。zlib/libpngライセンス。マルチメディアライブラリのCinderがAntTweakBarを採用していた[115]。開発停止中。
Adobe FlashベースのUIライブラリ
これらのミドルウェアに向けてUIを作成するためには、Adobe Animate (旧Adobe Flash Professional)が必要となる。
- Autodesk Scaleform (Autodesk ← Scaleform)
- Autodesk Gamewareの一つ。旧Scaleform GFx。FlashコンテンツをゲームUIとして使うことができるミドルウェア。CRYENGINEやAutodesk Stingrayで使われている。Unreal Engine 3やProject Anarchyにも含まれていたほか、Unity 4版もあった[116]。
- 簡易UI構築ツールのScaleform CLIKが含まれている。また、メニュー画面向けのMenu Kit、HUD表示向けのHUD Kit、MMOゲーム向けのMMO Kitも含まれている。また、StingrayにはUI構築用のScaleform Studioが含まれている。
- 販売終了[9]。
- IGGY (Epic Games Tools←Rad Game Tools)
- FlashコンテンツをゲームUIとして使うことができるミドルウェア。
- LWF (GREE)
- FlashコンテンツをゲームUIとして使うことができるミドルウェア。オープンソース。zlibライセンス。Unity用アセットのLWF for Unityや、HTML5用のLWF Loaderなどもある。
3Dスキャン/トラッキングライブラリ
- libmv - オープンソースのSfMライブラリであり、BlenderやNatronのトラッカーに利用されている[117]。OpenCV 3.1以降にも、libmvを基にしたopencv_sfmが搭載されている[118]。
- OpenCV - オープンソース。Structured Light APIを持っている。
- AliceVision - オープンソース。MPL2ライセンス。Meshroomで使われている。
- gradslam - オープンソースの微分可能SLAMフレームワーク。深度付き(RGB+D)画像群からのポイントクラウド生成に対応している。MITライセンス。
特定ハードウェア向け
- Intel RealSense SDK
- Azure Kinect SDK - 略称K4A。
- Kinect for Windows SDK - 製造終了したKinect for Windows向けだった[119]。
モデル最適化ライブラリ
OpenGL/Vulkan APIのNVIDIA拡張[120]及びDirectX12 Ultimate APIでは新たにMesh Shaderが導入されており、Mesh Shaderで使用可能の効率的な構造であるMeshletが注目されている。
頂点キャッシュ容量の少ない古いGPUでのレンダリングでは省メモリな構造体である三角ストリップを使った描画が最適であったとされる。
メッシュ最適化
- meshoptimizer - オープンソース。MITライセンス。頂点キャッシュ最適化、オーバードロー最適化、先取りキャッシュ最適化、三角ストリップ生成、頂点/インデックスバッファ圧縮、ポイントクラウド圧縮、ポリゴンリダクション、Meshlet生成などに対応している。
- DirectXMesh (Microsoft) - オープンソース。MITライセンス。D3DXの後継ライブラリの一つ。頂点キャッシュ最適化、Meshlet生成などに対応している。
- Compressonator SDK (AMD) - オープンソース。
- Simplygon SDK (Microsoft←Donya Labs) - プロプライエタリ。
- Meshlete - MITライセンス。meshlet生成に対応している。
ポリゴンリダクション
- Polygon Cruncher SDK
開発停止中
- AMD Tootle (AMD) - GPUOpenの一部。オープンソース。頂点キャッシュ最適化、オーバードロー最適化、先取りキャッシュ最適化に対応していた。生成ツールのTootleSampleもある。開発停止中[121]。
- NvTriStrip (NVIDIA) - 三角ストリップ生成ライブラリ。頂点キャッシュ最適化、三角リスト出力などにも対応している[122]。生成ツールのNvTriStripperもある。
- TriStripper - 三角ストリップ生成ライブラリ。オープンソース。Mariなどで使われている[123]。
- Vizup SDK - ポリゴンリダクションライブラリ。開発停止中。
- GLOD - LOD (Level of Detail) 生成ライブラリ。Second Lifeで使われていたがmeshoptimizerで置き換えられた[124]。
VR/AR/MRライブラリ
HMDデバイスのレイテンシ問題などを解決するためのミドルウェア[125]。
- OpenXR SDK (Khronos Group)
- XRの標準APIであるOpenXR向け開発ライブラリ。Google Chrome/Microsoft Edge 81以降、Blender 2.83以降など多くのソフトウェアで使用されている[126][127]。
GPUベンダー製
- VRWorks SDK (NVIDIA)
- NVIDIAのGPU用。旧GameWorks VR←VR Direct[125]。HMD向けミドルウェア。Unreal Engine 4[128]に搭載されている。今後、Unityにも搭載される予定[129]。
- 音線法による立体音響にも対応している (VRWorks Audio)[130]。バックエンドにはOptiXを使用している[130]。
開発停止中
- Snapdragon VR SDK (Qualcomm)
- QualcommのSnapdragon 835搭載VR開発キット向け[131]。
- AMD LiquidVR (AMD)
- AMDのGPU用。Direct3D 11用。Unityに搭載される予定となっていた[132]。
- VR SDK for Android (ARM)
- 旧Mali VR SDK。ARMのMali GPU用。MITライセンス。
プラットフォーム製
Windowsでは、Windows 10 SDKにMR向け機能が統合されている[133]。また、iOSでは、iOS 11 SDK以降にAR向け機能 (ARKit) が統合されている。
- Cardboard SDK (Google)
- Android及びiOSのスマートフォンはめ込み式のヘッドセット (Google Cardboard、Google Daydream) 向け。オープンソース[134]。Google VR SDK(旧Google Cardboard SDK)の後継[134][135]。Unity版もある。
- ARCore (Google)
- AR向け。Unity及びUnreal Engineに対応している。
- OpenVR/SteamVR (Valve Corporation)
- Steam向け。HTC Vive及びOculus Riftに対応。OpenVRはHTC Vive SteamVR SDKとしても知られている[136]。OpenVRはオープンソースだが、バックエンドのSteamVRランタイムは非オープンソース。Unity版はSteamVR Plugin。Unreal Engine 4.8以降でも採用されている。
- MixedRealityToolkit (Microsoft)
- 略称MRTK。旧HoloToolkit。Windows Mixed Reality (旧Windows Holographic)向けのライブラリ集。Unity向けのMixedRealityToolkit for Unityも存在する。実装サンプルとして、Mixed Reality Academy (旧HolographicAcademy)が存在する。
- Sceneform SDK for Android (Google)
- AR向け。Android用。オープンソース化された。開発中止[137]。
HMDメーカー製
- Oculus SDK (Facebook←Oculus VR)
- Oculus Rift向け。Unity用のOculus Utilities及びUnreal Engine 4用のUnreal Engine 4 Integrationがある。Gear VR用のOculus Mobile SDKも存在する。
オープンソース
- OpenHMD
- Oculus Rift、HTC Vive及びPS VRに対応 (一部は回転のみ)。オープンソース。Timewarp未対応。
- OSVR (OSVR Organization)
- OSVR HDKを始め、様々な機器に対応するためのVRフレームワーク。開発停止中。Unity用のOSVR-Unity-Rendering及びUnreal Engine 4用のOSVR-Unrealが存在する。OSVR-Coreはオープンソースだが、バックエンドプラグインには非オープンソースを含む (Oculus SDKを使用するOSVR-Oculus-Rift、OpenVR/SteamVRを使用するOSVR-Viveなど)。サードパーティー製のバックエンドも存在し、その中には完全オープンソースのOSVR-OpenHMD[138]やOSVR-Vive-Libre (OpenHMD派生)[139][140]も存在する。
- OpenVR/SteamVR対応ソフトウェアからOSVRを使うためのSteamVR-OSVRも存在する。
- Vrui VR Toolkit
- HMDだけでなく、ビデオウォールやCAVEにも対応している。オープンソース。GPLライセンス。
入力装置向けライブラリ
- Leap Motion SDK
- 旧Leap Motion Developer SDK。
クラスタレンダリング向けライブラリ
CAVEやビデオウォールで使われるクラスタレンダリング向けライブラリ。
- Equalizer (Eyescale Software)
- CAVE対応アプリケーションを作成するためのミドルウェアであり、マルチGPUやコンピュータ・クラスターでの実行に対応する。Equalizerを使ったサンプル実装として、eqPlyやosgScaleViewerが提供されている。オープンソース。
3Dオーディオライブラリ
VRの普及に伴い、よりリアルなリアルタイムの3Dオーディオは重要となっている[141]。Webで使われるWeb Audio APIも空間化オーディオに対応している[142]。
- TrueAudio Next (AMD)
- 略称TAN。AMD TrueAudioの次世代版。Radeon Raysベース。MITライセンス[143]。
- VRWorks Audio (NVIDIA)
- OptiXベース。Unreal Engine用プラグインがある。
- Steam Audio (Valve Corporation←Impulsonic[144])
- Unity及びUnreal Engine 4用プラグインがある。無料。