Vulkan

최근 편집: 2017년 7월 9일 (일) 22:25
인쇄용 판은 더 이상 지원되지 않으며 렌더링 오류가 있을 수 있습니다. 브라우저 북마크를 업데이트해 주시고 기본 브라우저 인쇄 기능을 대신 사용해 주십시오.

VulkanKhronos Group에서 관리하는 초 저수준 3D 그래픽스 API 표준이다. AMD Mantle이 기초가 되어 재정되었다[1]. 데스크톱은 OpenGL 4.x, 모바일 및 임베디드 환경은 OpenGL ES 3.0 이상을 지원하면 사용할 수 있다. 다만 두 환경 모두 OpenGL 및 OpenGL ES 지원 여부에 해당이 되어도 해당 그래픽 칩셋 드라이버에서 Vulkan 드라이버를 제공해주어야 사용할 수 있다.

초창기에는 OpenGL NG, glNext 등의 이름으로 공개되었으나 Vulkan이라는 이름으로 확정되었다.

3D 렌더링 API이긴 하지만 Direct3D와 같이 컴퓨트 기능이 내장된다.

특징

기존의 OpenGL의 경우 각 플랫폼에 따라 OpenGL 컨텍스트 생성 API가 개별로 존재하여 크로스플랫폼 개발에 있어서 GLUT나 GLFW와 같은 프레임워크를 사용하도록 장려되어 왔다. OpenGL ES도 EGL이라는 GL ES 컨텍스트 생성 API가 따로 존재해왔는데 Vulkan에서는 이를 해소하여 어느 정도 공통적인 컨텍스트 생성 API를 제공한다.

OpenGL API군의 GL이라는 이름을 완전히 버리고 완전히 새로운 API라는 것을 어필하고 있다. OpenGL의 API 전두사는 gl 또는 GL이지만 Vulkan은 vk 또는 VK이다. OpenGL과 Vulkan의 관계는 Direct3D 11과 Direct3D 12의 관계와도 비슷하다.

하드웨어에 가까운 형태로 API를 디자인하여 오픈 규격 3D 렌더링 API에서 부족했던 기능인 병렬 렌더링 기능을 사용할 수 있게 되었다.

지원 하드웨어

데스크톱 하드웨어

AMD Radeon

  • GCN 1.0 아키텍처 GPU (AMD Radeon HD 7700-7900 시리즈)
  • GCN 1.1 아키텍처 GPU (AMD Radeon HD 7790)
  • GCN 1.2 아키텍처 GPU (AMD Radeon R9 시리즈, AMD Radeon Fury 시리즈)
  • GCN 4th 아키텍처 GPU (AMD Radeon RX 시리즈)
  • Vega 1.0 아키텍처 GPU

NVIDIA GeForce

  • Kepler 아키텍처 GPU (NVIDIA GeForce 600, 700 시리즈)
  • 1세대 Maxwell 아키텍처 GPU (NVIDIA GeForce 700 시리즈)
  • 2세대 Maxwell 아키텍처 GPU (NVIDIA GeForce 900 시리즈)
  • Pascal 아키텍처 GPU (NVIDIA GeForce 1000 시리즈)

Intel HD Graphics & Iris Graphics

  • Skylake CPU 내장 GPU (Intel HD Graphics 500 시리즈, Intel Iris Graphics 500 시리즈, Intel Iris Pro Graphics 500 시리즈)
  • Kaby Lake CPU 내장 GPU (Intel HD Graphics 600 시리즈, Intel Iris Plus Graphics 600 시리즈)

모바일 하드웨어

Imagination Technologies PowerVR

  • PowerVR 시리즈 6 이상

Qualcomm Adreno

  • Adreno 400 시리즈
  • Adreno 500 시리즈

ARM Mali

  • Midgard 3세대 아키텍처 이상
  • Bifrost 아키텍처

한계점

Direct3D 12의 한계점과도 같은데, 개발자의 역량에 따라 렌더링 성능이 천차만별이 될 수 밖에 없는 구조이다. GPU 큐를 최대한 꽉 채워서 그래픽카드가 놀지 않도록 프로그램을 작성해야 하지만 이게 확실하게 가능한 전문가가 부족하다. 개발 난이도가 높아 Direct3D 12 및 Vulkan 모두 이미 이를 이용해 구현된 상용 또는 오픈소스 3D 렌더링 엔진을 이용해 개발할 것을 권장하고 있다. 그러나 2017년 1월 기준으로 아직 Direct3D 12 및 Vulkan 모두 완전하게 구현된 엔진은 없다. 언리얼 엔진 4와 유니티 엔진 5 모두 아직 시험 기능으로 공개하고 있다.

때문에 2017년 1월 기준으로 현재까지 나온 Direct3D 12 및 Vulkan 게임의 성능이 Direct3D 11과 별반 차이가 없거나 더 떨어지는 경우가 많다. 단, 보통은 최저 FPS는 Direct3D 11에 비해 올라가는 편이다.

macOSiOS에서는 아직 지원 예정이 없다. macOS 등의 Apple사 운영체제들은 독자 규격인 Metal의 사용을 장려하고 있다. 때문에 초 저수준 3D 렌더링 API를 사용해 게임을 개발하는 경우 UWP, Linux, macOS용으로 각각 개발한다고 하면 Direct3D 12, Vulkan, Metal을 모두 사용해 개발해야 되는 혼잡함이 발생할 여지가 있다.

개발 시 Direct3D 12는 Microsoft, Metal은 Apple에 문의하면 되지만 Vulkan은 어디에 문의해야 하냐가 개발자들의 공통된 우려이다. OpenGL 시절에도 비슷한 우려가 존재했다. 실제로 DirectX가 게임 개발에 거의 독점적으로 사용된 이유로는 Windows의 점유율이 상당했던 이유도 있고 Direct3D의 성능이 OpenGL에 비해 높다는 이유도 있지만 개발에 난황을 겪을 시 문의해야 할 문의처의 부재도 한 몫 했다고 볼 수 있다. Khronos Group은 재정된 API를 공표하는 역할을 수행하는 곳으로, API의 재정은 컨소시움에 소속된 컨트리뷰터 및 프로모터 멤버쉽을 가진 회원사들이 진행한다.

같이 보기

출처