3Dライブラリ
3Dライブラリは、3DCGソフトウェアや3D CAD、ゲームエンジンなどの3D関連プログラムに良く用いられているソフトウェアライブラリである。ここでは、テクスチャなどの3Dに付随する2Dライブラリについても解説する。
3Dグラフィクスライブラリは、3Dを表示するために必要なライブラリである。OS及びカーネルドライバを通してGPUレンダリングを行う時だけでなく、GPUを使わずにソフトウェアレンダリングする時にも使われる。
Windows SDK
Direct3D APIに対応するWindows用の開発キット。昔はDirectX部分がDirectX SDKとして分離されていた。
macOS SDK
OpenGL(非推奨)、Metal APIに対応するmacOS用の開発キット。
OpenGL、OpenGL ES、Vulkan、Direct3D 9 API、OpenCLに対応するライブラリ集及びツール。Unix系OSで良く使われているがWindowsにも対応している。ソフトウェア実装のllvmpipeも実装されている。
かつてはIntelのソフトウェア定義可視化(SDViz)構想の一環として開発されたソフトウェア実装のSWR (旧OpenSWR) も搭載されていた。
Enlighten (シリコンスタジオ←ARM←Geomerics)
リアルタイムGIミドルウェア。Unreal Engine用のものが提供されている。以前はUnityに標準搭載されていた。
NVIDIA VXGI (NVIDIA)
リアルタイムGIミドルウェア。ボクセルコーントレーシングを実装している。iClone 7以降に搭載されているほか、Unreal EngineのVXGI統合ブランチが公開されている。
RTXGI SDK (NVIDIA)
Nvidia RTXを使ったDynamic Diffuse Global Illumination (DDGI) 実装。
KICKSTART RT SDK (NVIDIA)
Direct3D 11までなどのレイトレーシングAPI未対応の古い環境でレイトレーシングを行うための実装。
Beast (Autodesk ← Illuminate Labs)
リアルタイムGIミドルウェア。Autodesk Stingrayに標準搭載されていた。販売終了。
NVIDIA RTX Direct Illumination (RTXDI) SDK - Nvidia RTXを使って多光源を処理するライブラリ。
なお、DirectX 10.1のSDKには、AMDの開発したHDAO (高解像度環境遮蔽) のサンプルが付属していた。
NVIDA ShadowWorks - 「HBAO+」(水平ベース環境遮蔽) を実装している。
NVIDIA VXAO - 「VXAO」(ボクセル構造を用いた環境遮蔽)を実装している。NVIDIA VXGIの一部。
Adaptive Screen Space Ambient Occlusion - Intelが開発している。DirectX 11対応。オープンソース。実装の詳細は書籍「GPU Zen」に記載されている。
XeGTAO - Intelが開発している「GTAO」(グランドトゥルース環境遮蔽)実装。
Umbra (Amazon←Umbra←Hybrid Graphics)
遮蔽カリングに特化したミドルウェア。旧dPVS。Unity及びUnreal Engineに対応していた。販売終了。
SpatiotemporalBlueNoiseSDK (NVIDIA) - 時空間ブルーノイズの生成ライブラリ。
NVIDIA Reflex SDK - 低遅延化のためのライブラリ。
レイトレーシングに向けた汎用計算パイプラインのものとレイトレーシング/ラスタライズのハイブリッドレンダリングに向けたグラフィックパイプラインのものが存在する。レイトレーシング専用のものは以下となっている:
レイトレーシングの交差判定に特化したライブラリ。標準APIには、Khronos GroupのOpenRL及びVulkan拡張のVK_KHR_ray_tracing、DirectX 12以降のDirectX Raytracing (DXR)、Metal 2のMetal Performance Shaders (MPS)のray intersectorなどがある。
Embree - Intelが開発を支援している。オープンソース。Apacheライセンス。
Radeon Rays (AMD) - 旧AMD FireRays。オープンソース。MITライセンス。VulkanとDirectX 12に対応している(OpenCL対応は終了)。
HIP-RT (AMD) - HIPベースのレイトレーシングライブラリ。AMD及びNVIDIAのGPUに対応。
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ライセンス。
多くはマルチパスにも使われている。
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以降やLuxCoreRender 2.1以降に搭載されている。開発停止中。
Altus SDK - InnoBright製。二組のレンダリング結果を使用してデノイズを行う。ツール版も存在した。AltusはMaxwell Render、Guerilla Render、Redshiftなどに搭載されている。販売停止中。
AIによる超解像度は(縮小化)と組み合わせることでアンチエイリアスの代わりとしても使われている。ダウンスケーリング側にもAIを使うシステムも存在する(NVIDIA DLDSRなど)。
NVIDIA NGX - 機械学習ベースのインペイント、スローモーション、アップスケーリングが含まれている。
AMD FidelityFX - Content Adaptive Sharpeningが含まれている。MITライセンス。DirectX 12とVulkanに対応。高速MIPマップ生成用のFidelityFX Single Pass Downsampler (SPD) 、アップスケーリング用のFidelityFX Super Resolution (FSR) 、ノイズ除去のFidelityFX Denoiserもある。
NVIDIA Image Scaling SDK - アップスケーリング用。MITライセンス。
YEBIS (シリコンスタジオ) - ポストエフェクトミドルウェア。Substance Designer/Painterなどで使われていた。
ReShade - インジェクションベースのポストエフェクトライブラリ。既存のソフトウェアに使用できる。オープンソース。BSDライセンス。
NVIDIA PostWorks - DirectX 11向け。時間的アンチエイリアシングのNVIDIA TXAA及び被写界深度エフェクトが含まれていた。レガシー。
OSやWeb環境(WebGLやWebGPU)によって対応するグラフィックAPIが異なるため互換レイヤーが存在する。なおグラフィックAPIだけでなくOSレベルの互換レイヤーを用意するものもある (WineやそのフォークのProtonなど)。
MoltenVK (Khronos Group)
Metal環境上のVulkan API実装。オープンソース。Apache License 2.0。
Vulkan環境上のDirect3D 9/10/11 API実装。オープンソース。zlibライセンス。d9vkを統合した。Protonなどで使われている。
Vulkan環境上のDirect3D 12 API実装。オープンソース。LGPLライセンス。ProtonやWineなどで使われている。
OpenGL環境上のDirectX 1〜7 API実装。オープンソース。LGPLライセンス。
ANGLE (Google)
Direct3D 9/11、OpenGL、Vulkan、Metal環境上のOpenGL ES API実装であり、主にブラウザのWebGL実装に使われている。オープンソース。BSDライセンス。コンパイラ部分は3Dlabs(現ZiiLABS)のオープンソース実装を基にしている。Windows版Google ChromeやFirefoxで使われている。
HLSLのバイトコード (DXBC)やDirectXアセンブリをGLSLシェーダーやARBアセンブリ、Metalシェーダーなどに変換するライブラリ。Shader Model 1.x (Direct3D 8世代)から3 (Direct3D 9.0c世代)まで対応している。Unreal Tournament 3などのゲームやUnityなどのゲームエンジンで使われている。オープンソース。zlibライセンス。
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実装。オープンソース。MITライセンス。両者の共通部分もD3D12 Translation Layerとしてオープンソース化されている。
Direct3D 11環境上のDirect3D 9/10 API実装。DXVKと組み合わせてVulkan環境上で動かすこともできた。
Direct3D 9時代のHLSLシェーダーをGLSL/GLSL ESシェーダーに変換するライブラリ。ATI Technologiesによって開発されたHLSL2GLSLをフォークしたもの。オープンソース。以前Unityで使われており、Unity Technologiesにより開発が継続されていたが、現在、開発がメンテナンスモードとなっている。
ToGL (Valve Corporation)
OpenGL環境上のDirect3D 9.0c APIサブセット実装。HLSLのバイトコード (DXBC) をGLSLシェーダーへと変換する。オープンソース。Dota 2で使われていた。
フレームワークには低レイヤーなものと、シーングラフベースのものがある。
Windows用のゲーム及びマルチメディア向けAPI集。グラフィクス用のDirect2D及びDirect3D、入力用のXInput (DirectInputの後継)、3Dサウンド用のX3DAudio (DirectSound3Dの後継)などのコンポーネントを含んでいる。またDirectX 12で機械学習用のDirectMLも追加された。
シーングラフには非対応。3Dモデル用の.x形式やエフェクト用のDirectX effect形式 (*.fx)などは存在したが、現在それらは非推奨となっている。
NVRHI (NVIDIA)
Direct3DとVulkanの抽象化レイヤー。
AppleのmacOSやiOSに搭載されているシーングラフベースの3Dライブラリ。言語はObjective-C。
Qtに含まれる3Dライブラリ。オープンソース。シーングラフはXMLベースのQML形式。
OpenGL向けのシーングラフを中心としたライブラリ。オープンソース。
OpenGL向けのシーングラフを中心としたライブラリ。オープンソース。
シーングラフはOpenSceneGraph形式 (*.osg、*.osgb、.osgt、.osgx)。
Java環境向けのシーングラフを中心としたAPI。
Pixarの開発するシーングラフを中心としたライブラリ。オープンソース。Katana 3.0以降やHoudini 18以降のSolarisで使われている。
シーングラフはUniversal Scene Description形式 (.usd、.usda、.usdc、.usdz)。
シーングラフのvtkViewNodeを持っている。ParaView、OsiriX、3DSlicerなどに使われている。オープンソース。BSDライセンス。
現在では汎用ゲームエンジンもWebGLに対応してきている (Unity、Unreal Engine 4、OGREなど)。物理演算ライブラリについては、3Dライブラリ#WebGL用物理演算ライブラリを参照。
3Dモデル形式については、クロノス・グループで標準化されているglTF形式が一般的となっている。
WebGLだけでなく、CanvasやSVG、CSS3によるレンダリングにも対応している3Dエンジン。
マイクロソフトの開発者を中心として開発されているWebGL向け3Dエンジン。3ds Max、Blender、Cheetah3D、Unity用のエクスポータープラグインも提供している。
PlayCanvas Engine (PLAYCANVAS)
Mozilla Foundationと提携するPLAYCANVASによって開発されたWeb向けゲームエンジン。オープンソース。
luma.gl (Uber Technologies)
データ可視化向けWebGLフレームワークの一つ。PhiloGLの後継。ライセンスはMITライセンス。
WebGL向け3Dエンジン。Away3D TypeScriptの後継。Apache License 2.0。元々Flash用3DライブラリであるPapervision3D (PV3D)の派生としてAway3Dが開発され、その後Webブラウザ向けのAway3D TypeScriptが作られた。
OpenSceneGraph類似のWebGL向けフレームワーク。 シーングラフは独自のosgjs形式であり、OpenSceneGraph形式を取り込むにはOpenSceneGraph osgjs pluginによる変換が必要だった。MITライセンス。Sketchfabで使われていた。開発中止。
xeogl (Lindsay Kay)
旧xeoEngine。SceneJSの後継。階層構造のSceneJSと異なり、xeoglは構成要素のグラフ構造となっている。3D可視化向けであり、BIMデータ可視化のBIM Surferで使われている。開発停止中。
これらライブラリは、ジオメトリの操作に使われている。
ジオメトリ形状モデリングカーネルは、NURBS等の複雑なプリミティブを表現するために使われるライブラリであり、特に3D CADで重要となる。
CGAL - ジオメトリ処理ライブラリ。3Dブーリアンにも対応している。オープンソース。GPLライセンス (一部LGPLライセンス)。
libigl - ジオメトリ処理ライブラリ。3Dブーリアンにも対応している。オープンソース。MPLライセンス (一部GPLライセンス)。
OpenMesh - ポリゴンメッシュの処理に向けたライブラリ。オープンソース。BSDライセンス。OpenFlipperなどに使われている。
GNU Triangulated Surface Library - 略称GTS。三角メッシュの処理に特化したライブラリ。Graphvizのグラフビューアであるsmyrnaツールに使われている。
VCG Library - MeshLabに使われている。オープンソース。GPLライセンス。
Carve - Mayaに使われている3Dブーリアンライブラリ。Blenderにも使われていた。オープンソース。MITライセンス。
Cork Boolean Library - 3Dブーリアンライブラリの一つ。オープンソース。LGPLライセンス。
TetGen - 四面体メッシュ生成プログラム。AGPLライセンス。
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。
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形式に対応するシングルヘッダーライブラリ。MITライセンス。
Microsoft glTF SDK - glTF形式に対応するライブラリ。オープンソース。MITライセンス。
dime - DXF形式の入出力に対応するライブラリ。DXF2papercraftに使われている。
OpenCTM - zlibライセンス。LZMA圧縮を使用している。形式はOpenCTM形式 (*.ctm)。
Open3DGC - MITライセンス。MPEG-SC3DMCコーデックの実装の一つ。glTF形式で使えるようになる予定だったが、Dracoに置き換えられた。
Draco (Google) - Apache License 2.0。glTF形式 (KHR_draco_mesh_compression) 及びUSD形式で使うことができる。
meshoptimizer - MITライセンス。glTF形式 (EXT_meshopt_compression) で使うことができる。
Substance Engine - Substance Designerで使われているマテリアル形式 (*.sbs、*.sbsar)用のインポートライブラリ。
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以降などに使われている。
Alembic - Alembic形式 (*.abc)用のライブラリ。オープンソース。BSDライセンス。Sony Pictures Imageworks及びILMが共同で開発した。
OpenEXR (Academy Software Foundation←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 - レンダラーなどの3Dパイプラインに特化した画像入出力ライブラリ。MIPMAPにも対応する効率的なキャッシュを備えている。多くの3DCGソフトウェアがこのライブラリを使用している。
bcdec - BC1-7形式のデコードに対応したヘッダーオンリーライブラリ。OpenImageIO 2.4.4以降に使われている。
NVIDIA Texture Tools (NVTT) - NVIDIAのテクスチャSDK。2はオープンソースとなっていた。Unreal EngineやBlender 2.46以降に使われている。
libsquish - DXT 1/3/5形式 (BC1-3形式) に対応したライブラリ。OpenImageIO 2.4.4より前に使われていた。
liboslc/liboslquery/liboslexec (Academy Software Foundation←Sony Pictures Imageworks) - Open Shading Language (OSL) シェーダー用のライブラリ。オープンソース。ライセンスはBSDライセンス。
NVIDIA MDL SDK - MDL (Material Definition Language) マテリアル定義用のライブラリ。2018年に一部がオープンソース化され、2022年に全てがオープンソース化された。BSDライセンス。MDLは一つの記述でリアルタイムとパストレーシングレンダリングの両方に対応する。
MaterialX (Academy Software Foundation←Lucasfilm) - オープンソースのマテリアル交換用ライブラリ。当初ILMが開発した。MaterialX形式からGLSLシェーダーやOSLシェーダーを生成するためのShaderXが統合された。
OpenVDB (Academy Software Foundation←ドリームワークス・アニメーション) - OpenVDB形式 (*.vdb)の入出力及び操作に対応するライブラリ。オープンソース。GPU対応のNanoVDB実装がNVIDIAより提供された。
NVIDIA GVDB Voxels - GPU向けの疎ボクセルライブラリ。オープンソース。NanoVDBへの変換コードが用意されている。
OpenVKL - Intel製のボクセルレンダリングライブラリ。
Field3d (Sony Pictures Imageworks) - Field3d形式 (*.f3d)の入出力に対応するライブラリ。オープンソース。
iTaSC - オープンソース。Blender 2.5以降で使われている。
IKinema RunTime (Apple←IKinema) - フルボディIKに対応する。modo 601以降に使われていた。開発終了。
Autodesk HumanIK (Autodesk←Alias←Kaydara) - フルボディIKに対応する。Mayaで使われている。販売終了。
OpenRAVE - 解析的IKソルバーのIKFastを含んでいる。オープンソース。LGPLライセンス。
略称ODE。オープンソース。LGPL及びBSDのデュアルライセンス。SoftimageやHoudiniなどが対応していた。現在HoudiniはODEを非推奨としている。Python言語向けのPyODEもあり、心理学実験向けツールキットのPyEPLがそれに依存していた。
オープンソースの物理エンジン。3.xでGPUパイプラインやRobot Operating SystemのURDF形式に対応した。多くの3DCGソフトウェアやプラグインが採用している。強化学習などに向けたPyBulletも付属している。
Havok Physics (Microsoft←Intel←Havok)
物理エンジン。3ds Max及びMaya用のプラグインがあった。開発終了。
マルチフィジクスシミュレーションライブラリ。開発停止中。
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は非推奨となった。5.0で有限要素法に基づく可変形物体物理に対応した。5.1でオープンソース化され、流体シミュレーションのNVIDIA Flowが統合された。
NVIDIA FleX (NVIDIA)
PBD(位置ベース物理シミュレーション)によるパーティクルベースのマルチ物理ライブラリ。
NVIDIA Blast (NVIDIA)
破壊シミュレーションライブラリ。
NVIDIA Cloth (NVIDIA)
クロスシミュレーションライブラリ。
FEMFX (AMD)
有限要素法に基づく可変形物体物理ライブラリ。MITライセンス。Unreal Engine向けプラグインもある。
上記のBulletも参照。
Brax (Google)
機械学習向けフレームワークJAXを基にした物理ライブラリ。
Isaac Gym (NVIDIA)
強化学習向けの物理ライブラリ。