어째서 Shader 분리?
Categories:tech
어째서 Shader 분리?
발생
어제 진짜 궁금했던 Shader 코드를 왜 굳이 언어 형식도 다르게 해서 따로 관리를 하는지에 대해서 알아보았다.
이유
이유는 CPU와 GPU의 역할 차이에서 온 것이다.
어제 알아본 Shader의 역사를 보면 초기 그래픽스에서는 현재는 GPU에서 처리하는 이펙트, 일부 물리 연산, 애니메이션 등을 과거에는 CPU를 이용해 처리하였었다. 하지만 GPU가 생겨나고 발전하면서 단순 반복적이고 빠른 병렬 연산을 요구하는 이펙트, 애니메이션 등을 GPU가 위임하기 시작했다.
CPU가 하던 일을 GPU가 위임하기 시작하면서 기존 CPU에 맞추어 설계된 코드들을 GPU에 그대로 사용하려고 보니 명령 집합이 다르고 GPU는 CPU와 달리 병렬 연산이 기본이여서 기존 CPU에 맞추어 작성된 코드를 사용하기 힘들었고 언어도 그대로 사용하기 힘들었다.
점점 GPU의 렌더링 단계에서의 커스텀을 프로그래밍하여 적용하고싶은 요구와 이를 간편히 하기위한 GPU 설계에 맞는 언어에 대한 요구가 생기게 되었고 이를 해소하기 위해 나온것이 지금의 Shader 프로그래밍 언어인 HLSL, GLSL, Cg 등 이다.
언어의 분리로 인한 코드의 분리는 자연스럽게 진행되었고 CPU는 게임 로직 같이 복잡한 연산을 처리 하기 용이한 기존 범용 프로그래밍 언어를 이용해 코드를 작성하게 되었고 GPU는 음영처리, 이펙트 등 단순 반복 병렬 연산을 처리하기 용이한 GPU 전용 언어로 코드를 작성하게 되었다.
결론
Shader에 대해 알아보니 GPU의 발전에 대해 알게 되었고 어쩌다보니 왜 현재에 와서는 GPU가 AI 개발에 필수 자원이 됐는지 더 깊이있게 이해가 된 것 같다. 조금 비약일 순 있지만 어찌보면 그래픽스, 게임 개발 중 만들어진 연구들이 현재 AI 혁명의 뿌리일거라는 생각이 든다.
Day-24