DirectX Graphics 프로그래밍 가이드 고도의 주제 픽셀 파이프라인 범프 맵핑 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
범프 맵핑은, 소수의 다각형만으로 예쁘게 테설레이션 된 개체의 반사 상태를 시뮬레이트 하는, 특수한 스펙큐러 또는 디퓨즈 환경 맵핑이다. 다음 화면은Bump Earth 샘플에 근거해 범프 맵핑의 이펙트를 나타내고 있다.
좌측의 지구는, 지구의 표면의 화면으로 텍스처 처리되어 스펙큐러 환경 맵이 적용되고 있다. 우측의 지구도 완전히 같지만, 범프 맵이 적용되고 있다. 2 번째의 지구의 화면의 다각형수는, 1 번째의 화면의 다각형수로 변함없다.
Microsoft® Direct3D® 의 범프 맵핑에서는, 개발자는 델타값에 의한 윤곽선의 정보를 제공하는 것으로부터, 범프 맵핑은, 정확하게는 스펙큐러 또는 디퓨즈 환경 맵의 픽셀 단위의 텍스처 좌표의 보정과 기술할 수 있다. 윤곽선의 정보는, 시스템에 의해 다음의 텍스처 스테이지의 환경 맵의 u 및 v 텍스처 좌표에 적용된다. 델타값은, 범프 맵 표면의 픽셀 포맷으로 encode 된다. 더 자세한 정보는, 「범프 맵 픽셀 포맷」을 참조할것.
BumpEarth 샘플에서는, 높이 맵을 사용해 윤곽선데이터를 저장 한다. 샘플을 시작 하면, 높이 맵내의 픽셀이 처리되어 적절한 u 및 v 가 계산된다. 이것은, 인접하는 4 개의 픽셀을 기준으로 한, 각 픽셀의 상대 고도로 기초를 둔다.
본래, Direct3D 에서는 높이 맵을 지원 하고 있지 않다. 높이 맵은, 윤곽선데이터를 저장 및 시각화하는데 편리한 포맷인 것에 지나지 않는다. 전의 화면은 높이 맵에 근거해 생성 된 것으로, BumpEarth 샘플에서는 이 높이 맵을 사용해, Direct3D 에 제공하는 범프 맵을 생성하고 있다. 이 화면은 설명을 목적으로 나타낸 것이다. 애플리케이션에서는 윤곽선정보를 어떠한 포맷에서도 저장 할 수 있어 또 Bump Waves 샘플과 같이 각각의 범프 맵을 생성할 수도 있다.
다음은, BumpEarth 샘플로 사용하는 높이 맵 화면이다. 이 샘플에서는, 이것을 사용해, 범프 맵 텍스처의 픽셀 포맷으로 encode 되는 델타값을 계산한다.
범프 맵핑은, 복수의 텍스처 혼합 서비스에 완전하게 의존하고 있어, 장치는 적어도 2 개의 혼합 스테이지 (하나는 범프 맵용, 다른 하나는 환경 맵용)를 지원 하고 있을 필요가 있다. 베이스 텍스처 맵을 적용하려면 , 가장 일반적인 경우, 최저 3 개의 텍스처 혼합 스테이지가 요구된다. 다음 그림은 텍스처 혼합 cascade에 있어서의, 베이스 텍스처, 범프 맵, 및 환경 맵간의 관계를 나타내고 있다.
텍스처 스테이지를 적절히 준비해, 범프 맵핑을 유효하게 할 필요가 있다.
여기에서는, Direct3D 에 의한 범프 맵핑의 실행에 대해 설명한다. 다음 주제에서는, 범프 맵핑을 소개해, 그 주요한 개념을 특정 및 정의해, 애플리케이션에서의 범프 맵핑의 사용법에 대해 설명한다.