텍스처 래핑(Direct3D 9)
요컨대, 텍스처 래핑은 Direct3D가 각 꼭짓점마다 지정된 텍스처 좌표를 사용하여 텍스처 다각형을 래스터화하는 기본 방식을 변경합니다. 다각형을 래스터화하는 동안 시스템은 다각형의 각 꼭짓점에서 텍스처 좌표 사이를 보간하여 다각형의 모든 픽셀에 사용해야 하는 텍셀을 결정합니다. 일반적으로 시스템은 텍스처를 2D 평면으로 처리하고, 텍스처 내의 A 지점에서 B 지점까지 가장 짧은 경로를 취하여 새 텍셀을 보간합니다. 점 A가 u, v 위치(0.8, 0.1)를 나타내고 점 B가 (0.1,0.1)인 경우 보간 줄은 다음 다이어그램과 같습니다.
두 점 사이의 보간 선의
이 그림에서 A와 B 사이의 가장 짧은 거리는 텍스처의 중간을 대략적으로 관통합니다. U-텍스처 또는 v 텍스처 좌표 래핑을 사용하도록 설정하면 Direct3D가 U 방향과 v 방향의 텍스처 좌표 간에 가장 짧은 경로를 인식하는 방식이 변경됩니다. 정의에 따라 텍스처 래핑은 래스터라이저가 0.0과 1.0이 일치한다고 가정하여 텍스처 좌표 집합 간에 가장 짧은 경로를 취하게 합니다. 마지막 비트는 까다로운 부분입니다. 한 방향으로 텍스처 래핑을 사용하도록 설정하면 시스템이 실린더를 감싸는 것처럼 질감을 처리하게 된다는 것을 상상할 수 있습니다. 예를 들어 다음 다이어그램을 고려해 보세요.
원통에 둘러싸인 텍스처와 두 점의 다이어그램
앞의 그림에서는 u 방향의 래핑이 시스템이 텍스처 좌표를 보간하는 방식에 미치는 영향을 보여 줍니다. 일반 또는 래핑되지 않은 텍스처에 대한 예제와 동일한 점을 사용하면 점 A와 B 사이의 가장 짧은 경로가 더 이상 질감의 중간에 있지 않음을 알 수 있습니다. 이제 0.0과 1.0이 함께 존재하는 국경을 넘어 있습니다. V 방향의 래핑은 측면에 놓인 실린더 주위에 질감을 래핑한다는 점을 제외하고는 유사합니다. U 방향과 V 방향 모두에서 래핑하는 것이 더 복잡합니다. 이 경우 질감을 토러스 또는 도넛으로 구상할 수 있습니다.
텍스처 래핑에 가장 일반적인 실용적인 애플리케이션은 환경 매핑을 수행하는 것입니다. 일반적으로 환경 맵으로 질감이 지정된 개체는 매우 빛을 많이 반사하여, 장면에서 개체 주변의 미러된 이미지를 보여 줍니다. 이 토론을 위해 각각 R, G, B, Y 및 해당 색인 빨간색, 녹색, 파란색 및 노란색으로 칠해진 4개의 벽이 있는 방을 그려보세요. 이러한 간단한 회의실에 대한 환경 맵은 다음 그림과 같을 수 있습니다.
빨간색, 녹색, 파랑 및 노란색그림
방의 천장이 완벽하게 반사되는 네 면의 기둥에 의해 떠받쳐져 있다고 상상해보십시오. 환경 맵 텍스처를 기둥에 매핑하는 것은 간단합니다. 기둥이 문자와 색을 반영하는 것처럼 보이게하는 것은 쉽지 않습니다. 다음 다이어그램은 위쪽 꼭짓점 근처에 해당하는 텍스처 좌표가 나열된 기둥의 와이어 프레임을 보여 줍니다. 포장지가 텍스처의 가장자리를 가로지르는 이음매는 점선으로 표시됩니다.
U 방향에서 래핑을 사용하도록 설정하면 텍스처 기둥은 환경 맵의 색과 기호를 적절하게 표시하고, 텍스처 앞의 솔기에서 래스터라이저는 u 좌표 0.0과 1.0이 동일한 위치를 공유한다고 가정하여 텍스처 좌표 사이의 최단 경로를 올바르게 선택합니다. 질감이 있는 기둥은 다음 그림과 같습니다.
빨간색, 녹색, 파랑 및 노란색 사분면으로 구성된 기둥의
텍스처 래핑을 활성화하지 않으면 래스터라이저는 믿을 수 있는 반사 이미지를 생성하기 위해 필요한 방향으로 보간하지 않습니다. 대신, 기둥 앞의 영역에는 텍스처의 중심을 통과할 때 u 좌표 0.175와 0.875 사이의 수평으로 압축된 텍셀의 버전이 포함됩니다. 래핑 효과가 손상되었습니다.
텍스처 래핑 사용
텍스처 래핑을 사용하도록 설정하려면 아래 코드 예제와 같이 IDirect3DDevice9::SetRenderState 메서드를 호출합니다.
d3dDevice->SetRenderState(D3DRS_WRAP0, D3DWRAPCOORD_0);
IDirect3DDevice9::SetRenderState 허용되는 첫 번째 매개 변수는 설정할 렌더링 상태입니다. D3DRS_WRAP0부터 D3DRS_WRAP7까지의 열거형 값 중 하나를 선택하여, 래핑을 설정할 텍스처 수준을 지정합니다. 두 번째 매개 변수에서 D3DWRAPCOORD_3 플래그를 통해 D3DWRAPCOORD_0 지정하여 해당 방향으로 텍스처 래핑을 사용하도록 설정하거나 결합하여 여러 방향으로 래핑을 사용하도록 설정합니다. 플래그를 생략하면 해당 방향으로 텍스처 래핑이 비활성화됩니다. 텍스처 좌표 집합에 대해 텍스처 래핑을 사용하지 않도록 설정하려면 해당 렌더링 상태의 값을 0으로 설정합니다.
비슷한 이름의 텍스처 주소 지정 모드와 텍스처 래핑을 혼동하지 마세요. 텍스처 래핑은 텍스처 주소 지정 전에 수행됩니다. 텍스처 래핑 데이터에 [0.0, 1.0] 범위를 벗어난 텍스처 좌표가 포함되어 있지 않은지 확인합니다. 이는 정의되지 않은 결과를 생성하기 때문입니다. 텍스처 주소 지정에 대한 자세한 내용은 텍스처 주소 지정 모드(Direct3D 9)참조하세요.
변위 맵 래핑
변위 맵은 테셀레이션 엔진에 의해 보간됩니다. 테셀레이션 엔진에 대해 래핑 모드를 지정할 수 없으므로 변위 맵을 사용하여 텍스처 래핑을 수행할 수 없습니다. 애플리케이션은 보간이 어떤 방향으로든 감싸도록 강제하는 꼭짓점 집합을 사용할 수 있습니다. 애플리케이션은 간단한 선형 보간으로 수행할 보간을 지정할 수도 있습니다.
관련 항목