프로그래머를 위한 그래픽 오픈소스 API,AMD Vulkan(khronos)

최강의 그래픽스 API, AMD Vulkan!!

 


Vulkan이란?

 

1) Khronos Group

 

Vulkan은 Khronos Group이라는 단체에서 만들어진 그래픽 API이다. Khronos Group은 2000년에 설립된 비영리 산업체로, 로열티 제한이 없는 오픈 소스이면서 표준 API의 제작을 통해 다양한 플랫폼과 장치에서 동적인 미디어의 가속화된 재생 및 저작이 가능하도록 만드는 것이 주목적이다.

 

Khronos Group에 가입된 모든 업체들은 Khronos Group에서 제시한 API 규격의 개발에 기여할 수 있고, 공개적인 이용 이전에 다양한 단계에서 투표할 권한이 있다. Khronos Group의 멤버로 국내 기업은 삼성이 대표적으로 있고 교육기관으로는 아주대학교, ETRI, 서울대학교 등이 있다. 또한 세계적인 유명 회사들도 가입되어 있다.

 

 

 



2) Vulkan API

 

Vulkan은 완벽한 크로스 플랫폼을 목표로 한다. PC, 모바일, VR 등 다양한 플랫폼을 대응하며 하드웨어에 직접 접근하는 그래픽스 API로 CPU 오버헤드를 줄일 수 있다. 또한 특정한 고수준 셰이더 언어를 선호하지 않고 SPIR-V 바이트 코드를 받아들인다는 규정만 존재한다. 따라서 GLSL이 아닌 셰이더 언어도 번역만 SPIR-V를 통하면 Vulkan에서 사용할 수 있다. 단, 현재 일반적으로 Vulkan과 함께 사용되는 고수준 셰이더 언어는 OpenGL과 마찬가지로 GLSL이다.

 

Vulkan을 사용했을 때 뛰어난 점은 멀티스레딩을 이용한 멀티코어 병렬 처리가 가능하다는 점이 있다. OpenGL은 싱글 스레드로 돌아가게 디자인되어있어 멀티스레딩을 시도하면 매우 불안정하게 돌아간다. 하지만 Vulkan은 각 스레드 별로 Command Buffer를 작성하고 마지막에 Queue에 제출하여 병렬 처리를 통한 높은 성능을 발휘할 수 있다.


성능 비교 -  https://youtu.be/bHCzfq0jAfg

 


3) Vulkan의 단점? 어려운 점?

 

Vulkan의 단점 아닌 단점으로 말하자면 Vulkan은 멀티스레딩과 하드웨어의 직접적인 접근을 통해 고효율적으로 그래픽스를 처리할 수 있지만 따라서 프로그래머가 모든 세세한 부분인 로우 레벨까지 코딩을 해야 하기 때문에 기본적으로 써야 할 코드가 매우 많다. 또한 상단 한 그래픽 지식이 필요하여 초보자가 Vulkan을 배우고자 한다면, 처음부터 뛰어난 성능을 목표로 완벽하게 구현하려고 생각하지 않는 것이 좋다.

 

LunarG에서 제공하는 공식 Vulkan 튜토리얼은 읽는 사람이 OpenGL을 잘 알고 있다는 가정 하에 작성되었으므로  OpenGL을 먼저 배우고 진행하면 상당한 도움이 된다. 하지만 기본 개념만 숙지하고 Vulkan을 배우고 싶다면 별도의 교재를 구입하는 것을 추천한다. 교재는 한빛 미디어사의 처음 만나는 VULKAN이라는 책을 추천한다.



LunarG 튜토리얼

https://vulkan.lunarg.com/doc/sdk/1.1.106.0/windows/getting_started.html

 

LunarXchange

 

vulkan.lunarg.com

Khronos Group 튜토리얼

https://vulkan-tutorial.com/

 

Introduction - Vulkan Tutorial

About This tutorial will teach you the basics of using the Vulkan graphics and compute API. Vulkan is a new API by the Khronos group (known for OpenGL) that provides a much better abstraction of modern graphics cards. This new interface allows you to bette

vulkan-tutorial.com

 

댓글

Designed by JB FACTORY