※ 본 아티클은 CMP MEDIA LLC와의 라이선스 계약에 의해 국문으로 제공됩니다.
서적 발췌 GPU Gems 2: 버텍스 텍스처 변위를 사용한 사실적인 물 렌더링
다음은 Addison-Wesley Professional에서 출판한 GPU Gems 2: Programming Techniques for High-Performance Graphics and General-Purpose Computation (ISBN 0321335597)의18장에서 발췌했습니다. 물 표면은 컴퓨터 그래픽, 특히 게임에서 일반적으로 등장한다. 이 장면의 사실성을 확실히 높여줄 중요한 요소가 있다. 그러나 물 표면의 움직임을 표현하는 시각적 복잡성과 물에 반사되는 빛 때문에 물을 사실적으로 표현하기가 매우 어렵다. 이 장에서는 퍼시픽 파이터라는 컴퓨터 게임에서 대양을 사실적으로 렌더링하기 위해 개발한 기술을 살펴본다. 현대 그래픽 하드웨어는 물 표면 렌더링에 사용하는 DirectX Shader Model 3.0에 몇 가지 유용한 기능을 제공한다. 이 장에서는 이들 기능 중 하나인 버텍스 텍스처를 사용해 물 표면의 사실감을 높이는 방법을 살펴본다. 그림 18-1은 일부 샘플 결과이다. 그리고 분기(branching)를 사용해 버텍스 프로그램의 성능을 높였다.
18.1 물 모델 물 애니메이션과 렌더링 기법은 여러 가지가 있다. 그 중 유체역학 및 Tessendorf 2001와 같은 고속 퓨리에 변환(FFTs) 기반 기술이 가장 사실적인 결과물을 제공한다. 하지만 이들 기법은 계산량이 많아 대화형 응용프로그램에는 적당하지 못하다는 단점을 가지고 있다.
변위 매핑을 사용한 물 표면 렌더링(왼쪽)과 사용하지 않은 물 표면 렌더링(오른쪽) 다른 한편으로 대부분 게임은 노멀 맵으로 비주얼 디테일을 생성하는 매우 간단한 물 모델을 사용하고 있다. 하지만 이 방법으로 생성한 물 표면은 사실성이 떨어지고 표면의 물결도 충실히 재연하지 못하고 있다. 따라서 간단한 노멀 맵된 물 렌더링 기법의 속도와 FFT 기법의 비주얼을 모두 갖춘 기술이 필요하다. 18.2 구현 노멀 맵을 사용해 빛을 계산하는 렌더링 알고리즘을 따라 구현한다. 노멀 맵은 고주파에서 디테일을 충실하게 재연하기 때문에 우리는 이를 빛 계산에 이용한다. 그러나 동시에 진폭이 큰 저주파를 사용해 기하학적으로 물 메시를 교란했다. 18.2.1 물 표면 모델 물 표면 모델은 시간과 공간에 모두 바둑판 형으로된 높이맵 중첩에 기반한다. 각 텍스처는 스펙트럼의 “조화” 또는 “역타브”를 나타내고 해당 텍스처는 푸리에 합성에서 함께 추가된다. 여기서 각 값은 수평면 상의 상응하는 포인트의 높이를 나타내기 때문에 이들 텍스처를 “높이맵”이라 부른다.
높이맵 생성은 회색조 이미지를 색칠하는 것만큼 간단하다(그림 18-2 참조). 높이맵을 이용하면 단순히 그 모양을 그려 개별 물결에 이르기까지 물 애니메이션의 매개 변수를 쉽게 제어할 수 있다. 높이맵은 또한 버텍스 텍스처와도 잘 작동한다. 높이맵을 이용하면 버텍스 위치를 매우 쉽게 수직으로 바꿀 수 있다. 몇 개의 높이맵을 다른 공간과 시간 배율과 결합하여 복잡하고 시각적으로 얽혀있는 애니메이션을 얻을 수 있다.... .........................(중략)
* 자세한 내용은 첨부문서(pdf)를 참고하시기 바랍니다.
|