Vulkan
Vulkan은 2016년 2월 16일 OpenGL을 관리하던 크로노스 그룹이 발표한 최신 컴퓨터 그래픽스 API(Application Progamming Interface)이다.
2014년 크로노스는 OpenGL을 대신하여 그래픽 카드 하드웨어에 직접 접근하는 로우 레벨 그래픽스 API를 준비하게 된다. 그 이유는 1년 전 AMD에서 개발한 Mantle(맨틀)이란 그래픽스 API 때문이었다.
맨틀 API 이전에는 모든 그래픽 카드/내장 그래픽 칩셋이 직접 OpenGL에서 정의한 규격에 따른 API를 직접 제공해야 했다. 그러나 AMD는 자사의 낮은 디바이스 드라이버 성능이 늘 그래픽 카드의 최대 성능을 깎아왔던 문제가 있었고, 이에 OpenGL과 별도로 그래픽 하드웨어 내 유닛에 대한 접근을 더 폭넓게 허용하면 자사의 그래픽 카드 성능을 제대로 소비자가 체감할 수 있을 것이라고 판단하고 맨틀 API를 준비하였고 Mantle API의 파트너 개발사가 EA(정확히는 EA DICE 스튜디오)였기 때문에, 프로스트바이트 3 게임 엔진을 사용한 게임들이 시연 대상이 되었다.
이후 이 API를 기초로 크로노스 그룹이 만든 그래픽스 API가 Vulkan이다. 이와 동시에 OpenGL은 신규 표준 개발이 중지되었고, 이에 따라 2020년대에도 OpenGL 최신 버전은 4.6에 멈춰 있다. 마이크로소프트도 이에 대응해 DirectX 12를 공개하여 하드웨어 직접 접근 그래픽스 API를 추가하였다.
- SPIR-V라는 바이트 코드를 기반으로 하드웨어에 직접 접근해야 한다.
- 이에 따라 셰이더 언어를 가리지 않는다. 따라서 기존에 크로노스 그룹이 관리하던 GLSL 외에 DirectX 전용 셰이더 언어인 HLSL을 써도 문제가 없도록 SPIR-V로 바꾸는 툴체인이 있다.
- OpenGL이 모바일/임베디드 환경에서는 상당히 무겁기에 OpenGL ES가 따로 발표된 것과 달리, Vulkan은 데스크탑/랩톱 컴퓨터 환경과 모바일/임베디드 시스템 환경을 동시에 고려한다.[1]
- 1.3 버전부터 실시간 레이트레이싱 API 명세가 있다.
현재 리눅스 쪽에서는 Mesa 프로젝트를 통해 Vulkan API가 지원되며, 오픈 소스로 바닥부터 그 위의 프레임워크까지 공개되는 디바이스 드라이버가 대체로 그렇듯이 성능이 상당히 좋다.
AMD의 라데온 그래픽 카드가 NVIDIA의 대응 제품과 비교했을 때 그나마 성능이 견줄 만한 수준으로 올라오는 그래픽스 API다. OpenGL을 사용할 경우는 2020년대가 한창 지나가는 지금도 NVIDIA의 그래픽 카드들에 비해 많이 성능이 나쁘다.