게임 그래픽 기술은 그 역사에 비해 발전속도가 너무 빨라 현업에 근무하는 사람들은 공포를 느낄정도 였다. 특히 노멀맵 도입 시기에는 경력자들이 '내 밥줄은 괜찮은건가?'라고 생각하지 않은 사람이 없을정도. 뭐, 상상을 초월하는 대격변이 일어나지는 않았지만 그만큼 기술 발전속도에 맞추기 힘들어 했던것은 사실이다.(따라가지 못하면 어떻게 되는지는 이웃나라를 보면 알수 있다.) 그 새로운 그래픽 기술의 중심에는 쉐이더 기술이 있는데 이것을 내가 아는 한도로 쉽게 풀어 써보려고 한다.
쉐이더란?
그래픽 툴안에서는 재질을 뜻하는 용어로 쓰는데, 그 안쪽을 살펴보면 수학공식이다. 흔히 쓰는 Blinn이나 Phong 쉐이더는 각 공식을 만든 사람의 이름을 따 만들어진 수식으로 마야나 맥스나 똑같은 이름의 재질이 존재하는 이유는 이 때문이다.(같은 예로 베지어, 불린도 마찬가지)
좀더 쉽게 쉐이더는 함수라고 생각하면 편하다. 예를 들어 초등학교때 다음과 같은 그림을 본적이 있을것이다.
여기서 가운데 그림이 쉐이더다. 따라서 컴퓨터 그래픽 식으로 표현하면 아래와 같이 된다.
이렇게 설명하는게 맞는지 자신이 없지만, 나는 이렇게 이해하고 있다.(잘 아시는분은 틀린부분 지적해 주세요.)
이런 식으로 쉐이더는 총 3가지의 종류가 있다.
1. 버텍스 쉐이더
버텍스를 이용한 효과를 준다. 버텍스의 색, 위치 정보를 바꾸어 줌으로써 효과를 얻는다. 가장 쉬운 예로 버텍스 라이팅, 카툰 외각선 효과가 있다.
http://blog.naver.com/blue9954/50089900502 을 보면 실제 라이트를 이용해 효과를 주는것이 아닌, 버텍스에 색을 입히는 방식으로 라이팅을 해주었다. 즉, 각각의 버텍스에다가 필요한 RGB 컬러를 입혀서 빛이 있는것처럼 보여주는 효과를 만든다.
이런식.
http://blog.naver.com/blue9954/50047217041 을 보면 버텍스를 움직여 주고 노멀 방향을 바꾸어 주는것으로 카툰 랜더링 효과를 나타내 주었다.
2. 지오메트리 쉐이더
폴리곤을 찌그러트리거나, 변형 또는 쪼개주는 쉐이더다. 대표적인 사용방법으로는 그림자, 테셀레이션 기법이 있다.
3. 픽셀 쉐이더
화면에 보이는 모든 픽셀을 각각 쉐이딩한다. 위의 두 개념과는 다르게 스크린에 보이는 '이미 랜더링 된' 이미지를 이용해 효과를 주는 방식으로 일명 포토샵의 '뽀샤시 효과'가 대표적이다.
사진은 테라.(다른 블로거분이 캡쳐한것을 무단으로 가져왔습니다. 주소를 까먹었어요.)
여기서 눈치 챈사람도 있겠지만, 픽셀 쉐이딩을 적용한 게임들은 이러한 옵션을 켜고, 끔에 따라 화면 퀄리티가 엄청나게 변한다. 위의 버텍스 쉐이더나 지오메트리 쉐이더와 다르게 화면 전체의 랜더링에 관여하기 때문인데, 예를 들어 맥스에서 기본 랜더러로 랜더링 거는것과 브이 레이로 랜더링 거는 정도의 차이라고 보면 된다. 또 위의 효과와 다르게 화면 해상도에 따라 그 속도가 현저하게 차이나게 되는데 이유는 해상도가 높아질수록 처리해야하는 픽셀수가 기하급수적으로 늘어나게 되서 그렇다.(즉 640*480에 비해 1280*960의 경우 처리해야할 픽셀수가 4배이다.) 지금의 컴퓨터 스펙이라고 가정하면 픽셀 쉐이더가 적용되지 않는 게임은 해상도에 따라 그 그 속도가 그렇게 차이가 나지 않을것이다.
어떻게 보면 쉐이더 효과들은 각 3D툴이나 포토샵같은 툴을 이용해서 이미 충분히 낼수 있는 효과들이지만, 실시간으로 모든 효과를 보여줘야 하기에 위같은 기술들이 개발되었다. (위의 쉐이더를 쓰지 못하면 화면의 색상은 거의 매핑소스 색으로 결정되게 된다. PS1 시대의 게임 그래픽이 비슷한 이유는 이때문이다.)
위의 기술한 내용은 전부 그래픽 카드에서 처리하기 때문에 일정 이상의 CPU 성능이라면, 아무리 빠른 CPU라 하더라도 효과가 나오지 않는다. 반대로 그래픽 카드의 성능이 좋은것이라면 CPU 속도에 관계없이 효과가 나타나게 된다.
과거는 그래픽 카드 성능의 기준이 초당 처리할수 있는 폴리곤 수였다. 하지만 현재에는 쉐이더를 처리할수 있는 파이프 라인이 몇개인지, 지원하는 쉐이더 수준이 어느정도 인지에 따라 결정되는것은 위의 효과들이 그만큼 일반화 되었기 때문이다.
쉐이더에 대한 이해를 도왔기를 기대하면서 이만 줄인다.
출처 : http://blog.naver.com/blue9954/50101651302 환상정원
'graphics' 카테고리의 다른 글
insight3d (0) | 2011.08.26 |
---|---|
2011_04_01_색상값 정리 (0) | 2011.04.01 |
2011_03_29_맵들의 개념과 역활 (1) | 2011.03.29 |
게임그래픽 색채학 (0) | 2011.01.01 |
Zbrush 단축키 (0) | 2010.04.02 |