この項目では、ゲームエンジンについて説明しています。Ubuntuに同梱されていたユーザインタフェースについては「Unity (ユーザインタフェース)」を、その他の用法については「ユニティ」をご覧ください。
Unity
開発元Unity Technologies
Unity(Unity3D)は、Unity Technologies(日本法人はユニティ・テクノロジーズ・ジャパン株式会社[5])が開発・販売している、IDEを内蔵するゲームエンジンである。主にC#を用いたプログラミングでコンテンツの開発が可能である。PC(Windows、macOS)だけでなくモバイル(iOS、Android)やウェブブラウザ(WebGL)、家庭用ゲーム機(PlayStation 4、Xbox One、Nintendo Switch等)といったクロスプラットフォームに対応しており、VR/AR/MR機器向けのコンテンツ開発にも対応している。
2004年にデンマークで設立されたOver the Edge Entertainment (OTEE)が2005年に公開したゲーム開発ツールで、2007年に社名がUnity Technologiesに変更された。Unityを使って開発または運営したコンテンツの月間アクティブユーザー数は28億人を超えており[6]、主にモバイルゲームで大きなシェアを持つが家庭用ゲーム機やゲーム以外の様々な業界、産業でのアプリケーション、テクノロジーなどで幅広く利用されている。 グラフィックエンジンはDirect3D (Windows)、OpenGL (Mac, Windows, Linux)、OpenGL ES (Android, iOS)、Metal (macOS, iOS, tvOS)、Vulkan (Android)、プロプライエタリのAPIを使用。バンプマッピング、環境マッピング、視差マッピング、スクリーンスペースアンビエントオクルージョン(SSAO)、シャドウマップ
機能
レンダリング
また、3ds Max、Maya、Softimage、Blender、modo、ZBrush、3D-Coat、Cinema 4D、Cheetah3D、Adobe Photoshop、Adobe Fireworks、Allegorithmic Substanceのアートアセットとファイル形式に対応しており、これらのアセットをゲームプロジェクトに追加したり、Unityのグラフィカルユーザーインターフェースで管理することができる[8]。
ShaderLabの言語はシェーダーのために使用され、固定機能パイプラインとGLSLやCg/HLSLで書かれたシェーダープログラム両方の宣言型「プログラミング」に対応している[9] [10]。シェーダーは複数のバリエーションや宣言されたフォールバック仕様を含むことができるため、Unityは現在使用しているビデオカードに最もよいバリエーションを検出したり、互換性が無い場合でも性能を出すために機能を犠牲にできる代替のシェーダーにフォールバックすることができる[11]。また、NVIDIA(かつてはAgeia(英語版))のPhysX物理エンジンを内蔵サポートしており、Unity 3.0では任意メッシュおよびスキンメッシュでのリアルタイムクロスシミュレーション、シックレイキャスト、衝突レイヤーへの対応が追加された[12]。
Unityはレンダリングパイプラインとしてbuilt-in Rendering PipelineとScriptable Render Pipeline(SRP)をもつ。SRPを用いればC#によってレンダリングパイプラインを構築できる。Unity社による構築済みSRPとしてUniversal Render Pipeline(URP)とHDRPが提供されている[13][14]。 Universal Render Pipeline(URP)はライティングで特徴づけられる4タイプのシェーダーを提供している。 Unityではプログラミング言語C#を用いてプログラム(Scripts[17])を書くことで、Unityが提供する機能の拡張をおこなうことができる。これをスクリプティングという。 UnityはC#を実行するために以下のフレームワーク(Scripting Backend[18])を提供している[19]。 すべてのScripting Backendにおいて、フロントエンド(C# to CIL)にはRoslyn
Universal Render Pipeline
物理ベースシェーディング(Lit & Particles Lit)
エネルギー保存則と微細形状(反射/屈折)[15]
シンプルシェーディング(Simple Lit & Particles Simple Lit)
Blinn-Phongモデル[16]
焼き込みLitシェーディング
Bakedライトのみを反映するシェーダー
Unlitシェーディング(Unlit & Particles Unlit)
ライティングなし
スクリプティング
Mono
.NET
IL2CPP