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
리눅스용
이 프로젝트는 GLFW 라이브러리를 사용하며, 기본 Ubuntu 20.04와 같은 X11 환경에서 컴파일하려면 다음이 필요합니다:
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 대기 하늘 모델 참고용으로 사용