픽셀은 씬을 그리는 렌더타겟의 서페이스 상의 단위
텍셀은 텍스쳐상의 단위
프레임버퍼에 들어갈 화면상의 하나의 픽셀은 여러개의 텍셀에 해당할수도 있고, 텍셀의 일부분만을 차지할 수도 있다.픽셀은 프레임 버퍼의 한점이다.
픽셀과 텍셀은 각자의 영역에서는 하나의 점을 나타내지만 렌더링의 과정에서 둘은 일치할수도 혹은 일치하지 않을 수도 있다.
미리 변환된 꼭짓점을 사용하여 2D 출력을 렌더링하는 경우 각 텍셀 영역이 단일 픽셀 영역에 올바르게 해당하도록 주의해야 합니다. 그렇지 않으면 텍스처 왜곡이 발생할 수 있습니다. Direct3D가 삼각형을 래스터화하고 텍스처링할 때 따르는 프로세스의 기본 사항을 이해하면 Direct3D 애플리케이션이 2D 출력을 올바르게 렌더링하도록 할 수 있습니다.
앞의 다이어그램은 제곱으로 모델링된 픽셀을 보여 줍니다. 그러나 실제로 픽셀은 제곱이 아닌 점입니다. 이전 다이어그램의 각 사각형은 픽셀에 의해 점이 켜진 영역을 나타내지만 픽셀은 항상 정사각형 가운데에 있는 점일 뿐입니다. 이 구별은 겉보기에는 작지만 중요합니다. 동일한 디스플레이에 대한 더 나은 그림이 다음 다이어그램에 표시됩니다.
위의 다이어그램은 각 실제 픽셀을 각 셀의 가운데에 있는 지점으로 올바르게 표시합니다. 화면 공간 좌표(0, 0)는 왼쪽 위 픽셀에 직접 위치하므로 왼쪽 위 셀의 중앙에 있습니다. 따라서 디스플레이의 왼쪽 위 모서리는 왼쪽에 0.5개 셀, 왼쪽 위 픽셀에서 0.5개 셀이므로 (-0.5, -0.5)입니다.
텍스처(겹쳐서 표시됨)는 픽셀 위치에서 직접 샘플링됩니다(검은색 점으로 표시됨). 텍스처 좌표는 래스터화의 영향을 받지 않습니다(원래 쿼드의 프로젝션된 화면 공간에 남아 있음). 검은색 점은 래스터화 픽셀이 있는 위치를 표시합니다. 각 픽셀의 텍스처 좌표는 각 꼭짓점에 저장된 좌표를 보간하여 쉽게 결정됩니다. (0,0)의 픽셀은 (0, 0)의 꼭짓점과 일치합니다. 따라서 해당 픽셀의 텍스처 좌표는 해당 꼭짓점 UV(0.0, 0.0)에 저장된 텍스처 좌표일 뿐입니다. (3, 1)의 픽셀에 대해 보간된 좌표는 UV(0.75, 0.25)입니다. 그 픽셀은 텍스처 너비의 3/4와 높이의 1/4에 위치하기 때문입니다. 이러한 보간된 좌표는 픽셀 셰이더에 전달됩니다.
텍셀은 이 예제의 픽셀과 일치하지 않습니다. 각 픽셀(따라서 각 샘플링 지점)은 4개의 텍셀 모서리에 배치됩니다. 필터링 모드가 선형으로 설정되므로 샘플러가 해당 모서리를 공유하는 4개의 텍셀의 색을 평균화합니다. 이것은 빨간색으로 예상되는 픽셀이 실제로 3/4 회색과 1/4 빨간색이고, 녹색으로 예상되는 픽셀이 반 회색과 1/4 빨간색, 1/4 녹색 등인 이유를 설명합니다.
이 문제를 해결하려면 쿼드를 래스터화할 픽셀에 올바르게 매핑하여 텍셀을 픽셀에 올바르게 매핑하기만 하면 됩니다. 다음 그림에서는 처음부터 의도한 쿼드인 (-0.5, -0.5) 및 (3.5, 3.5) 사이에 동일한 쿼드를 그리는 결과를 보여 줍니다.
앞의 그림은 쿼드((-0.5, -0.5)에서 (3.5, 3.5)로 윤곽선으로 표시된) 래스터화된 영역과 정확히 일치하는 것을 보여 줍니다.
요약하자면 픽셀과 텍셀은 실제로 단색 블록이 아닌 점입니다. 화면 공간은 왼쪽 위 픽셀에서 시작되지만 텍스처 좌표는 텍스처 그리드의 왼쪽 위 모서리에서 시작됩니다. 가장 중요한 것은 텍셀을 픽셀과 올바르게 정렬하기 위해 변환된 화면 공간에서 작업할 때 꼭짓점 위치의 x 및 y 구성 요소에서 0.5 단위를 빼야 합니다.
픽셀과 텍셀은 일지하지 않을 수 있고 픽셀은 블록 안의 중점을 나타낸다. 따라서 정확한 텍스쳐 텍셀과 픽셀의 일치를 위해서는 픽셀 블록의 왼쪽 상단과 텍스쳐의 왼쪽상단이 일치할 수 있도록 조정을 해주어야한다는 것.
'3D Rendering' 카테고리의 다른 글
Light map (0) | 2023.09.29 |
---|---|
Shadow map (0) | 2023.09.29 |
volumetic light map (0) | 2023.09.29 |
Compute Shader (0) | 2023.09.28 |
Tiled Forward Shading(Forward+) (0) | 2023.09.28 |