Luz エンジン
AAAゲームで使用される最新のレンダリング技術を学び実装するために開発しているVulkanエンジンです。
特徴
- 完全なVulkanラッパー(BLASおよびTLASの作成を含む)
- 体積光の3つのアプローチ:Froxels、ポリゴンメッシュ、スクリーンスペース
- 時間的アンチエイリアシング
- シャドウマップ
- 大気散乱
- シーンのシリアライズ(JSON)
- デファードレンダリング
- リアルタイムレイトレースシャドウとアンビエントオクルージョン
- メタリック、ラフネス、法線、アンビエントオクルージョン、エミッションを用いたPBRシェーディング
- Vulkanのバインドレスリソース
- パースペクティブおよび正射影のビューポートカメラとフライおよびオービットコントロール
- ImGuiドッキングUI
ギャラリー
- Froxelベースの体積光
- ポリゴンメッシュ体積光
- スクリーンスペース体積光
- デファードレンダリング(ライト、アルベド、法線、マテリアル、エミッシブおよび深度)
- レイトレースシャドウとアンビエントオクルージョン

- PBRシェーディングとglTFモデル

- テクスチャのドラッグ&ドロップ

必要条件
- VK_KHR_ray_query拡張をサポートするGPU(対応GPU一覧)
- C++17コンパイラ。`
Visual Studio 2019,Clang,GCCで動作確認済み - CMake 3.7以上
- Vulkan SDK
Linuxの場合
このプロジェクトはGLFWライブラリを使用しています。X11環境のLinux(例:デフォルトのUbuntu 20.04)でコンパイルするには、以下が必要です:
sudo apt-get install xorg-dev
もし別のウィンドウマネージャー(Waylandなど)を使用している場合は、依存関係をこちらで確認できます。ビルドと実行
git clone --recursive https://github.com/hadryansalles/Luz
cd Luz
mkdir build
cmake . -Bbuild
cmake --build build --parallel 4
./bin/Luz
- Visual Studio:
build/Luz.slnを開き、プロジェクトLuz` をコンパイル/実行します。
参考文献とクレジット
- GLFW はアプリケーションウィンドウを開くために使用
- glm は数学ライブラリとして使用
- ImGui はユーザーインターフェース作成に使用
- ImGuizmo は3Dギズモ作成に使用
- spdlog はログ記録ライブラリとして使用
- stb_image は画像ファイルの読み込みに使用
- tiny_obj_loader はWavefront .obj ファイルの読み込みに使用
- optick はエンジンのプロファイリングに使用
- pbr-sky は大気スカイモデルの参照として使用