Skip to content

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)
  • 인스턴스 생성하기
  • 디버깅 메신저 생성하기