셰이더란?
포스트
취소

셰이더란?

게임을 좀 하다 보면 듣게 되는 셰이더라는 것에 궁금함을 가져본 적이 있나요? 셰이더가 무엇인지 알쏭달쏭한 사람도 있고, 확실히 안다고 생각하는 사람도 있습니다. 하지만 막상 실체를 알기엔 많은 부분이 숨겨져 있습니다.

종종 셰이더 떡칠이라는 말로 그래픽이 과하거나, 그래픽만 좋은 게임을 말할 때 쓰기도 하며, 어떤 게임에선 그래픽 옵션을 조절할 때 나오는 말이기도 합니다. 어떤 게임은 모드로 셰이더를 바꿔서 그래픽이 달라지기도 하고, 흑백으로 바꾸거나 색감을 바꿔 게임의 분위기를 조절하는 기능이 있기도 합니다.

눈치채신 분들도 있겠지만 무언가 눈에 보이는 것과 셰이더가 관련이 있구나 싶으실 겁니다. 하지만 반대로 왜 이렇게 다양한 곳에서 셰이더라는 단어가 나타나는지 이상하게 생각하는 분들도 있을 것입니다. 게다가 이더인지 이더인지 철자도 여기저기 다 다릅니다. 이게 도대체 무엇이길래?

셰이더? 쉐이더?
예전엔 확실히 ‘이더’로 많이 쓰였지만, 위키나 각종 엔진의 한글화 문서도 모두 외래어 표기법에 따라 ‘‘이더로 변경되고 있습니다.

사실 셰이더는 정말 많은 곳에서 사용되고 있습니다. 여러분이 지금 보고 있는 화면(컴퓨터 모니터나, 휴대폰 화면 등)에 보이는 많은 것들도 내부적으로는 셰이더라는 녀석이 돌고 있을 수 있습니다. 그저 인터넷만 하고 있어도 GPU 사용량을 보면 뭔가 돌아가는 모습을 볼 수도 있습니다. 유튜브라도 보면 더 열심히 돌아갈 수도 있죠.

인터넷만 하고 있는데 어디에서 사용하고 있는 것일까요?

셰이더를 설명하려면 뜬금 없겠지만 일단 기계 이야기부터 해야 합니다. 컴퓨터(혹은 휴대폰)에서 CPU라는 녀석은 지금 여러분이 보고 있는 화면을 그리기에 그다지 효율적이지 않습니다. 태생이 한번에 한 가지를 잘하기 위해 태어났기 때문입니다. 그래서 GPU라는 화면을 그리는데 더 빠르고 효율적인 녀석을 만들었습니다.

애플실리콘이나 스냅드래곤같은 휴대폰 칩셋부터 플스나 엑박같은 콘솔에서 사용하는 SoC라고 불리는 것들도 하나의 칩 안에 일반적인 계산을 하는 곳과 화면을 그리는 곳을 나눠 놓은 것을 볼 수 있습니다. 다음 영상에서 CPUGPU의 차이를 직관적으로 보여줍니다.

이 영상도 마찬가지지만 많은 곳에서 CPUGPU가 각자 따로 작동하는 것처럼 표현되어 있습니다. 그리고 많은 곳에서 CPU vs GPU 같은 식으로 서로 어느 것이 더 나은지 비교하는 글들도 많습니다. 위에서 말했듯이 CPUGPU는 서로 작동방식이 꽤나 다릅니다.

게다가 실상은 GPU가 작동하는 대부분은 CPU에게 명령을 받아 일하는 그림그리는 일꾼 같은 존재이기도 합니다.

이젠 프로그램 이야기로 가보겠습니다. 컴퓨터나 휴대폰 등의 각종 전자기기가 작동하기 위해서는 프로그램이라는 것이 필요합니다. 프로그램이라는 것들은 0과 1밖에 모른다고 하는데, 어쨌던 기계를 쓸 수 있게 만들어 줍니다.

셰이더 또한 프로그램인데 일반적인 프로그램들과 다른 점이라면 셰이더는 GPU에서 돌아간다는 것입니다. GPU가 할 일을 짜둔 프로그램을 셰이더라고 하는 것입니다.

셰이더는 또 한 가지 독특한 부분이 있습니다. 위 영상에서 나왔듯이 GPU는 한 번에 한 가지 일을 하기보다 어떤 일을 한꺼번에 하는 것에 초점을 맞춘 물건입니다. 그래서 셰이더는 어떤 단위마다 어떻게 돌아갈 것인지를 짜 놓은 프로그램인데 이 단위에 따라 버텍스 셰이더, 지오메트리 셰이더, 픽셀 셰이더와 같이 불립니다.

예를 들어 버텍스 셰이더라면 버텍스 단위로 돌아갈 프로그램입니다. 아래 이미지와 같이 버텍스 마다 한번씩 작동하는 GPU프로그램이 버텍스 셰이더 입니다.

버텍스? 정점?
버텍스는 3차원 개체를 이루는 점, 선, 면 중 ‘점’의 영어입니다. 정점으로 번역이 많이되어 있는데 전 버텍스로 음차하여 사용하도록 하겠습니다. 둘다 옳은 방법이며, 반박시 여러분의 말이 맞습니다.😏

지금 여러분이 보고 계신 화면이나 게임, 혹은 CG라고 뭉뚱그려 부르는 각종 영화나 영상들의 특수효과들도 비슷한 구조를 가지고 있습니다. 이 구조는 용도에 따라 달라지지만, 일반적으로 버텍스 셰이더 → 레스터라이저 → 픽셀 셰이더의 흐름으로 진행됩니다.

단계별 자세한 내용도 곧 다뤄 보도록 하겠습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

-

유니티 셰이더 파라미터 노출하기 1부 - 프로퍼티