(右上のメニューからプレゼンテーション表示ができます)
(勉強会で殴り書きですので内容は精査しておりません。間違いが含まれている場合があります。ご指摘は歓迎です。)
今時のゲームエンジンが備えている機能ひとめぐり
2022/01/29 R&D Slack Study Group
今日のお題
今時のゲームエンジンのいくつか選んで、特徴や機能を見ていこう
商業ゲームエンジン(公に外販・無償提供しているもの)
- Unreal Engine (UE4/UE5)
- Unity
- SpriteKit (Apple)
オープンソースライセンスではないが、制約付きでソース公開のものが増えてきた。
インハウスエンジン
商用だが、サードパーティへの販売や提供をしていないもの。企業グループ内や外注開発業者への共有はありうる。
- Frostbite (EA)
- SlipSpace Engine (Halo series)
- RE Engine (Capcom)
- IW engine (for Call of Duty by Infinity Ward)
- Sledgehammer (for Call of Duty by Sledgehammer Games and Raven Software)
- CryEngine (Crytek)
- Snowdrop (Ubisoft)
- Anvil (for Assassin's Creed by Ubisoft)
--
Bungie released Destiny1/2 series after Halo Trilogy
Destiny 1/2 uses Deferred Lighting.
Deferred Lighting split geometry + Lighting (accumulate) + Shading.
Deferred Lighting lacks specular PBR accuracy due to smith specular model depends on light directions.
(Multiple Light directions can not be saved on single light accumulation buffer. Main light direction only)
オープンソースなエンジン
- Open 3D Engine (formerly Lumberyard)
- Godot
- Filament (Google)
- The Forge
Web3Dエンジン(ライブラリ)
- Babylon.js (aiming to Fullstack GameEngine?)
- AFrame (for WebXR)
- Three.js (currenty base of other high level libraries like AFrame)
- PlayCanvas (Rival to Unity on Web?)
- Cesium (Leading Web3D Engine for Geolocation)
ゲームエンジンの設計トレンド
ゲームオブジェクト設計
- Ye Olde Object Model (Componentの仕組みが出る前)
- Object Component Model(e.g. Unity Game Object)
- Entity Component System (e.g. Unity ECS)
言語
- C
- C++
- Rust
- Lua
GPU/3DAPI
- Multipass Rendering (PS2)
- Vertex/Pixel Shader age / PBR (PS3)
- Compute Shader / GI (PS4)
- RayTracing (PS5)
Rendering Approach
- Forward Rendering
- Deferred Rendering
- Forward+/++
- RayTracing
- GPU-driven (Indirect/Mesh Shader)
- GI
GPUパイプラインとシェーダーが複雑化
昔はRendering Pipelineのみだった
いつの間にか2つも増えた。
- Rendering Pipeline
- Compute Pipeline
- RayTracing Pipeline
Rendering Pipeline
Geometry Stage
- 頂点シェーダ(VertexShader)
- Tesselation (DirectX 11, ATI promoted)
- ハルシェーダ(HullShader)
- Tessellation Stage
- ドメインシェーダ(DomainShader)
- Geometry Shader (NVIDIA promoted)
- ジオメトリシェーダ(GeometryShader) (DirectX 10)
- Primitive Shader (AMD GPU and PS5?, AMD promoted)
- Mesh Shader (DirectX12 Ultimate, NVIDIA promoted)
Pixel Stage
Compute Pipeline
こちらはシンプル
RayTracing Pipeline
- レイ生成シェーダ(RayGenerationShader)
- ミスシェーダ(MissShader)
- クローゼストヒットシェーダ(ClosestHitShader)
- エニイヒットシェーダ(AnyHitShader)
- インターセクションシェーダ(IntersectionShader)
- コーラブルシェーダ(CallableShader)
レイトレーシングは複雑な仕組みのため、ハードウェア実行で加速すべき箇所とプログラマにシェーダーで自由にやらせた方が良い箇所がそれぞれある。
Pipeline間の連携が手間がかかる
- Rendering Pipeline
- Compute Pipeline
- RayTracing Pipeline