졸업 프로젝트 — GPU-Driven Rendering 파이프라인 위에 Lighting 및 Post-Processing 시스템, Imgui를 이용한 디버그UI 구현 卒業制作 — GPU駆動レンダリングパイプライン上にLightingおよびPost-Processingシステム、Imguiを使用したデバッグUIの実装
본 레포지토리는 팀 졸업과제로 진행된 Vulkan 기반 GPU-Driven Renderer 프로젝트를 개인 레포지토리로 이전한 것입니다.
원본 프레임워크는 팀장의 레포지토리에서 fork하였으며, 이후 독립적인 레포지토리로 옮겼습니다.
このリポジトリは、チーム卒業制作として進めたVulkanベースのGPU駆動レンダラープロジェクトを個人リポジトリに移行したものです。
元のフレームワークはチームリーダーのリポジトリからforkし、その後独立したリポジトリに移行しました。
| 담당 / 担当 | 내용 / 内容 |
|---|---|
| 팀장 / チームリーダー | Based framework design, Batch System, Culling Render Pass, Shadow Map |
| 본인 / 自分 | Lighting Pass, Post-Processing Pass, Debug UI |
프로젝트를 빌드하기 전에 meshoptimizer를 수동으로 추가해야 합니다.
ビルド前に meshoptimizer を手動で追加する必要があります。
프로젝트 루트/
└── ThirdParty/
└── meshoptimizer.zip ← 해당 zip파일의 압축을 해제 / このzipファイルを解凍してください
- 압축을 해제합니다. / zipファイルを解凍します。
- Riche.sln을 실행하고 빌드합니다. / Riche.slnを開いてビルドします。
아래는 전체 렌더링 파이프라인 구조입니다.
以下は全体のレンダリングパイプライン構造です。
GPU-Driven 파이프라인의 구조를 파악한 뒤, Lighting 파이프라인을 설계하고 Fragment Shader에서 Blinn-Phong 조명 모델을 구현했습니다. GPU駆動パイプラインの構造を把握した上で、LightingパイプラインをFragment ShaderにてBlinn-Phong照明モデルで実装しました。
Lighting Pass 결과를 입력으로 받아 Bloom과 ACES Filmic Tone Mapping을 단일 패스에서 순서대로 처리합니다. Lightingパスの結果を入力として受け取り、BloomとACESフィルミックトーンマッピングを単一パスで順次処理します。
Imgui를 이용해서 각종 파라미터를 조절하고 특정 파이프라인을 On/Off합니다. Imguiを使用して、各種パラメータを調整し、特定のパイプラインをオン/オフします。
| 항목 / 項目 | 내용 / 内容 |
|---|---|
| Language | C++ |
| Graphics API | Vulkan |
| Shader | GLSL (SPIR-V) |
| Third-Party | meshoptimizer, GLM, GLFW |
| Build | Visual Studio (Riche.sln) |