[게임테크] 하복, 포워드-디퍼드 렌더링 선택 전략

일반입력 :2012/03/28 14:22    수정: 2012/03/28 15:44

특별취재팀

하복이 비전 엔진을 통해 지형 설계를 위한 렌더링 방식 선택 전략을 제시했다. 여러 동적 광원을 다루는 공간에서 포워드 렌더링과 디퍼드 렌더링간 차이와 각 특성을 짚고 비전 엔진을 통한 사례를 소개했다.

하복 기술 지원 엔지니어 니키타 킨트는 28일 게임스팟코리아와 지디넷코리아가 개최한 ‘게임테크 2012’에서 '비전 엔진에서의 포워드 렌더링 대 디퍼드 렌더링'이라는 주제로 강연을 진행했다. 같은 지형과 동적 광원에서도 2가지중 어느 기법을 적용하느냐에 따라 최종 결과물의 성능이 달라진다는 내용이다.

우선 킨트는 포워드렌더링이든 디퍼드렌더링이든, 비전 엔진에서 광원 수 제약은 없으며 최종 결과물도 비슷하다며 장면 하나만 보고 어떤 기술을 썼는지 육안으로 가려내긴 어렵다고 설명했다. 메모리 효율 측면에선 고화질에서 포워드렌더링을 쓰는 게 낫고 하이폴리곤 처리 효율은 디퍼드렌더링이 낫다고 언급했다.

■포워드렌더링

포워드렌더링 방식은 이전부터 쓰였다. 동적 광원 모델을 애니메이션 종류나 하드웨어에 구애되지 않고 자유롭게 사용할 수 있다는 것이다. 앤티얼라이싱을 지원하는 하드웨어에서 어떤 구성요소든 렌더링할 수 있다는 게 장점으로 꼽힌다.

킨트는 비전엔진에서 포워드렌더링을 쓰면 객체에 영향을 주는 모든 광원을 적용해야 결과물이 나온다며 문제는 광원이 여러개일 때 각 광원마다 렌더링프로세스 횟수가 늘어나 성능이 급격히 떨어진다는 것이라고 지적했다.

이어 반면 포워드렌더링은 단순화된 표면처리나 통합된 셰이더 아키텍처를 쓸 때 성능이 유리한 장점도 있다며 버텍스를 GPU에서 처리해 시간을 절약할 수 있고 추가 메모리를 많이 필요치 않는다고 덧붙였다.

그는 레벨 디자이너가 포워드렌더링을 적용시 너무 많은 객체에 영향을 주지 않도록 광원을 조절하고 라이트그리드 방식으로 정적 광원을 동적인 것처럼 속이는 기법과 셰이더 처리를 줄이는 방식을 적용할 수 있다고 조언했다.

반면 최근들어 사용이 늘고 있는 디퍼드렌더링은 GPU 하드웨어 발전에 따라 등장했다. 효율적인 디퍼드렌더링을 위해 하드웨어 제약이 다소 존재하는데 이를 충족하지 못할 경우 초당프레임수를 떨어뜨릴 수 있다.

■디퍼드렌더링

디퍼드렌더링은 많이 사용하는 덩어리를 미리 선처리해서 메모리에 보관해 뒀다가 나중에 재사용하는 방식이다. 이미 계산된 결과를 보관해두고 반복 사용하기 때문에 추가 메모리를 많이 필요로한다. 효율적으로 돌리기 위해 픽셀당 계산과정을 거치는데 이게 최종 결과물 화질을 좌우한다.

디퍼드렌더링은 통상적으로 각 픽셀마다 포지션 노멀 뎁스 컬러, 4개 버퍼를 저장하는데, 하복의 비전 엔진에서는 노멀, 뎁스, 컬러와 어큐멀레이션, 4가지를 쓴다. 포지션은 픽셀셰이더에서 재구축된다. 이런 버퍼 구조를 'G버퍼'라 부른다고 킨트는 설명했다.

디퍼드렌더링 장점은 적은 광원을 쓸수록 적은 자원으로 구현할 수 있다는 점이다. 실제 보이는 픽셀만 광원을 적용하고 세부지형지물은 G버퍼에 모두 저장돼 이를 읽어오기만 하면 된다.

단점은 어떤 물체가 어떤 표면재질인지 알 수 없이 픽셀값만 계산해야 한다는 것과 수시로 GPU메모리에서 많은 정보를 가져오느라 대역폭이나 용량이 결과물 속도에 영향을 준다는 점이다.

킨트는 포워드렌더링과 디퍼드렌더링, 2가지 방식은 하드웨어에 따라 어떤게 더 좋고 나쁘다고 단정하기 어렵고 (GPU) 메모리와 프로세서간 트레이드오프 관계가 있다며 비전 엔진은 2가지 기법을 모두 아웃오브더박스로 지원한다고 설명했다.

그는 다만 비전엔진을 통해 어떤 렌더링이든 가능하더라도 이를 제작과정에 앞서 미리 선택해야 할 필요가 있다고 언급했다. 플랫폼과 하드웨어, 알고리즘 효율성을 아울러 고려하면서 프로덕션타입을 중간에 변경할지 여부도 관여해야 한다고 덧붙였다.

관련기사

이어 디퍼드렌더링과 포워드렌더링의 차이를 보이기 위해 강연용 노트북으로 횃불이나 햇빛 등 광원과 수면반사와 복잡한 지형물 등 처리량이 많은 지형을 구현하는 장면을 시연했다. 동일한 지형에서 여러 광원과 복잡한 지형을 표시하는 결과를 보니 포워드렌더링 쪽이 더 부드러운 움직임을 보였다.

킨트는 동적 광원 수가 적을 때 메모리 소비가 덜한 포워드 렌더링, 광범위하게 많은 동적 광원을 쓸 때는 디퍼드 렌더링을 쓰는 게 낫고 모바일플랫폼에서는 현재 비전엔진에서 지원하는 디퍼드렌더링을 지원하지 않으며 포워드렌더링만 하게 돼있다고 요약했다.