0. Vulkan 소개와 주의사항
목차
- Vulkan이란
- 굳이 벌칸을 배워야 하는가?
- 알아야 할 사전지식
- 개발환경 세팅
- 게시할 내용 정리
Vulkan이란
Vulkan(이하 벌칸)은 CPU오버헤드가 심각한 OpenGL을 대체하기 위한
최신식 + 저수준 + 크로스 플랫폼 그래픽스 API입니다.
OpenGL의 구조를 최신 프로세서에 맞게 갈아엎었고,
그 때문에 알아야 할 지식과 개념들이 매우 많아졌습니다.
굳이 벌칸을 배워야 하는가?
OpenGL의 경우부터, 써야하는 이유를 살펴봅시다.
GL을 써야 하는이유
- 구현 및 테스트가 비교적 간단하다.
- 매우 많은 기기에서 지원한다.
- 고사양 게임이 아닌 경우 이걸로도 충분하다.
GL을 쓰면 안되는 이유
- 멀티코어 활용이 불가능하다(전기 소모량이 많아진다).
- 디버깅이 어렵다.
- 언젠가는 완전히 대체된다.
벌칸의 경우, 위의 GL의 장단점과 정반대가 됩니다.
벌칸을 써야 하는 이유
- 멀티코어 활용이 가능하다(효율성을 최대로 끌어낸다).
- 디버깅이 수월하다.
- 향후 몇 십 년간 대체되지 않는다.
벌칸을 쓰면 안되는 이유
- 구현 및 테스트가 번거롭다.
- 기기 간 호환성이 아직은 그다지 매끄럽지 못하다.
- 고사양 게임이 아닌 경우 굳이 쓸 이유가 없다.
사실 '게임 개발' 이라는 주제를 공부하고 싶은 사람들에게는
벌칸을 공부하는 것이 칼 뽑아서 닭을 안잡고 무를 써는 느낌일 것인데 -
게임을 개발하기 위해서는 물론 그래픽스 지식이 꼭 필요하지만,
재미있는 게임을 만들어가는 건 완전히 다른 영역입니다.
그래서 필자는 이렇게 말하고 싶습니다.
- OpenGL에 숨겨둔 GPU의 내부 인터페이스 구조를 알고싶거나
- AAA 게임(엔진)을 만들고 최적화하는 것이 목적인
사람만 공부해 보는 것을 추천합니다.
그래서 벌칸을 배워야 하냐고요?
제 대답은 '목표에 따라 다르지만, 게임 개발에 한해서는
아직까지는 배울 필요 없다' 입니다.
알아야 할 사전 지식
기본적인 사전 지식은 OpenGL 섹션과 동일합니다.
단, 저는 벌칸을 공부하기 전에
OpenGL의 개념들 중 '프레임버퍼' 까지는 이해하고 오는 것을 추천합니다.
GL의 프레임버퍼가 모여 여러 렌더 패스가 되듯이,
VK에는 렌더 페스와 프레임버퍼가 같이 모여서 렌더 그래프를 만드는데 -
이 이후부터 진행되는 순수 '렌더링' 관련 설정 / 코드는
OpenGL과 꽤나 유사한 편이기 때문입니다.
또한 렌더링 기술에 쓰이는 수학적 공식이나 모델들은
무슨 API를 쓰냐에 상관 없이 다 똑같이 적용되고, 적용할 수 있습니다.
다시말해 벌칸만의 차이점을 확실히 체감하는 게 중요합니다.
개발환경 세팅
먼저 Vulkan을 지원하는 그래픽카드가 필요합니다.
2020년대 이후에 출시되는 노트북의 CPU는 거의 모두 지원할 겁니다.
다만 인텔 Iris Xe 같은 내장 그래픽카드는 불가능합니다.
엔비디아 RTX 시리즈 나 인텔 Arc 같은 외장 그래픽카드를 준비하세요.
그래픽카드가 준비되었다면,
LunarG 공식 Vulkan SDK 다운로드 페이지에서
1.4x버전 이상의 SDK를 다운받아 주세요.
SDK 설치가 완료되었다면,
C:/VulkanSDK/1.4.XXXX/Bin 경로에 들어가서
vkcube.exe 를 실행해서 회전하는 3차원 큐브가
정상적으로 렌더링되는지 확인해 주세요.
또 vulkaninfoSDK.exe 를 실행해서,
가장 최상단에
Vulkan Instance Version: 1.4.XXXX
와 같이 벌칸 인스턴스 버전이 1.4 이상인지 확인해 주세요.
게시할 내용 정리
- GLFW를 Vulkan에 대응하도록 전환 (GLFW에서 제공받는 VkSurface)
- 인스턴스 생성하기
- 디버깅 메신저 생성하기