Unity(Unity3D)は、Unity Technologies(日本法人はユニティ・テクノロジーズ・ジャパン株式会社)が開発・販売している、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億人を超えており、主にモバイルゲームで大きなシェアを持つが家庭用ゲーム機やゲーム以外の様々な業界、産業でのアプリケーション、テクノロジーなどで幅広く利用されている。 レンダリング グラフィックエンジンは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のグラフィカルユーザーインターフェースで管理することができる。 ShaderLabの言語はシェーダーのために使用され、固定機能パイプラインとGLSLやCg/HLSLで書かれたシェーダープログラム両方の宣言型「プログラミング」に対応している。シェーダーは複数のバリエーションや宣言されたフォールバック仕様を含むことができるため、Unityは現在使用しているビデオカードに最もよいバリエーションを検出したり、互換性が無い場合でも性能を出すために機能を犠牲にできる代替のシェーダーにフォールバックすることができる。 また、NVIDIA(かつてはAgeia)のPhysX物理エンジンを内蔵サポートしており、Unity 3.0では任意メッシュおよびスキンメッシュでのリアルタイムクロスシミュレーション、シックレイキャスト、衝突レイヤーへの対応が追加された。 Unityはレンダリングパイプラインとしてbuilt-in Rendering PipelineとScriptable Render Pipeline(SRP)をもつ。SRPを用いればC#によってレンダリングパイプラインを構築できる。Unity社による構築済みSRPとしてUniversal Render Pipeline(URP)とHDRPが提供されている。 Universal Render Pipeline Universal Render Pipeline(URP)はライティングで特徴づけられる4タイプのシェーダーを提供している。 * 物理ベースシェーディング(Lit & Particles Lit): エネルギー保存則と微細形状(反射/屈折) * シンプルシェーディング(Simple Lit & Particles Simple Lit): Blinn-Phongモデル * 焼き込みLitシェーディング: Bakedライトのみを反映するシェーダー * Unlitシェーディング(Unlit & Particles Unlit): ライティングなし スクリプティング Unityではプログラミング言語C#を用いてプログラム(Scripts)を書くことで、Unityが提供する機能の拡張をおこなうことができる。これをスクリプティングという。 UnityはC#を実行するために以下のフレームワーク(Scripting Backend)を提供している。 * Mono * .NET * IL2CPP すべてのScripting Backendにおいて、フロントエンド(C# to CIL)にはRoslynが用いられている。Unity 2019.2現在のC#バージョンはC# 7.3である。 IL2CPP IL2CPPはUnity社が独自開発したScripting Backendである。IL2CPPを用いた場合、フロントエンドによって生成されたILはネイティブコードに(JITあるいはAOTで)変換されるのではなく、C++コードへといったん変換される。その後C++コンパイラによってネイティブコードにコンパイルされる。 Burst 最適化されたC#スクリプトを対象にしたコンパイラバックエンドとしてBurst(Burst Compiler)がある。 BurstはUnity 2019.1から正式提供されているバックエンドである。BurstはILをLLVMを介してネイティブコードへコンパイルする。いくつかの制限が課せられたC#(HPC#)スクリプトを書きBurstコンパイラを用いることで、従来(例: Mono)に比較して最大10倍程度の高い性能を得ることができる。内部的には、BurstはILからLLVM IRへのトランスパイルを担っており(つまりLLVM目線ではBurstはCIL to IRのコンパイラフロントエンド)、以降の段階でLLVMによる最適化・ネイティブコード生成をおこなうことで非常に高い性能を実現している。 など、更に他の機能も存在します。
Unity丁寧に教えます! 神奈川 教室・スクール情報を見ている人は、こちらの記事も見ています。