최근에 사내에서 GPU관련 스터디를 하면서 간단하게 정리해본 내용입니다.
SGI Graphics processors
최초로 그래픽스 API를 제정하였습니다.
다만, 고가의 전용하드웨어가 필요했어서
특수 촬영 기법을 적용하는데 적용하였습니다.
OpenGL HWS (early 90`s)
크로노스 제단이란 곳에서 그래픽스 api를 산업 차원에서 공개하여
표준화 하고자 하였습니다.
아직까지도 해당 API를 사용하려면
고가의 전용하드웨어가 필요했습니다.
OpenGL PC (95`)
그래픽스 api를 personal computer에서 사용할 수 있게 되었습니다.
다양한 그래픽하드웨어 제조사(voodoo, tnt 등)들이 등장하는 시점입니다.
fixed pipeline의 형태로 cpu에서 api를 호출하는 형태로만 이용가능하였습니다.
Texture HWs (98-00)
Texture 기능이 제공되면서 게임이나 각종 응용에서 그래픽이 본격적으로 화려해지기 시작했습니다.
Cg (Programmable HW)
Nvidea에서 만든 독자적인 shader language 입니다. 이때부터 그래픽 기능을 custom해서 그래픽카드가 동작하도록 지원되기 시작했습니다.
DirectX Shader
마이크로소프트사에서 DirectX를 출시하고 Shader기능을 추가하였습니다.
당시 XBOX로 게임 사업에 투자하는 중이었기 때문에,
3D기능을 강력하게 SUPPORT하기 위해 해당 라이브러리를 개발하게 되었습니다.
OpenGL GLSL
OpenGL에서도 programmable shader가 추가되었습니다.
OpenGL ES (Mobile)
프로그래밍 시장에 모바일이 태동하면서 OpenGL ES가 cross platform하게 적용되면서,
OpenGL이 다시 주목받기 시작합니다.
CUDA
NVIDEA에서 그래픽 하드웨어의 성능을 범용적으로 pararrel processing에 사용하고자 하는 목적으로 만들어진 라이브러리 입니다.
OpenCL
크로노스 제단에서 CUDA와 같이 범용 parallel processing을 목적으로한 라이브러리를 만들었습니다. CPU GPU 자원을 선택하여 동작시킬수 있습니다.
여러 기업에서 개발에 동참하였고 애플이 특히 적극적으로 동참했지만, CUDA에 비해 인기가 낮아 개발 속도는 느리게 진행되고 있습니다.
Metal
애플에서 만든 독자적인 api입니다. OS와의 연계성이 좋아 opengl 대비 높은 성능을 보여줍니다.
Vulkan
Opengl 다음 라이브러리입니다. Opengl의 기능이 점차 늘어나면서 legacy에 대한 지원이 점차 힘들어지자 새로이 시작한 라이브러리입니다.
처음부터 cross platform 지원 호환성을 염두해 두고 제작되었습니다.
opengl에 대한 지원은 점점 적어지고 Vulkan을 밀고 있는 중입니다.
다만, low level 지원으로 인해 여타 라이브러리보다 사용 난이도가 높습니다.