텍스처 필터링
Texture filtering컴퓨터 그래픽스에서 텍스처 필터링 또는 텍스처 스무딩은 텍스처 매핑 픽셀의 텍스처 색상을 결정하기 위해 사용되는 방법입니다.텍스처 필터링에는 확대 필터링과 최소 필터링의 [1]두 가지 주요 범주가 있습니다.상황에 따라서는 텍스처 필터링은 간극을 메우기 위해 스파스 데이터를 보간(확대)하는 재구성 필터 유형 또는 텍스처 채우기에 필요한 샘플 주파수(최소화)보다 높은 주파수로 텍스처 샘플이 존재하는 안티에일리어싱(AA) 유형 중 하나입니다.간단히 말해서, 필터링은 텍스처가 다양한 모양, 크기, 각도 및 척도로 어떻게 적용되는지를 나타냅니다.선택한 필터 알고리즘에 따라 흐림, 상세, 공간적 앨리어싱, 시간적 앨리어싱 및 차단 정도가 달라집니다.상황에 따라 필터링은 소프트웨어(소프트웨어 렌더링 패키지 등) 또는 하드웨어에서 실시간 또는 GPU 가속 렌더링을 수행하거나 둘 다 혼합하여 수행할 수 있습니다.대부분의 일반적인 인터랙티브그래픽 어플리케이션에서는 메모리 캐시 및 프리페치를 통해 메모리 액세스를 최적화하고 사용자와 개발자가 사용할 수 있는 알고리즘을 구현하는 전용 하드웨어가 최신 텍스처 필터링을 수행합니다.
텍스처 필터링에는 계산 복잡도, 메모리 대역폭 및 이미지 품질 간에 서로 다른 트레이드오프를 만드는 많은 방법이 있습니다.
필터링의 필요성
임의의 3D 서페이스에 대한 텍스처 매핑 프로세스 중에 텍스처 룩업이 실행되어 각 픽셀 중심이 텍스처 상의 어디에 있는지 확인합니다.3D 게임 및 동영상의 대부분의 표면에서 일반적인 삼각형으로 구성된 텍스처 매핑된 다각형 표면의 경우 해당 표면의 모든 픽셀(또는 하위 픽셀 샘플)은 텍스처 내의 위치를 제공하기 위해 사용되는 일부 삼각형 및 중심 좌표 세트와 관련지어집니다.이러한 위치는 "픽셀 그리드"에 완벽하게 배치되지 않을 수 있으며, 이러한 경우를 설명하기 위해 몇 가지 기능이 필요합니다.즉, 텍스처링된 표면이 뷰어에 대해 임의의 거리 및 방향에 있을 수 있기 때문에 보통 1개의 픽셀이 1개의 텍셀에 직접 대응하지 않는다.픽셀에 가장 적합한 색상을 결정하려면 어떤 형태로든 필터링을 적용해야 합니다.불충분하거나 잘못된 필터링은 이미지에 '막힘', '재기', 또는 반짝임과 같은 아티팩트(이미지의 오류)로 표시됩니다.
픽셀과 픽셀이 화면에 나타내는 텍셀/텍셀 사이에는 다른 유형의 대응이 있을 수 있습니다.이러한 필터는 뷰어에 대한 질감 있는 표면의 위치에 따라 달라지며, 각각의 경우 다른 형태의 필터링이 필요합니다.정사각형 텍스처가 세계의 정사각형 표면에 매핑되어 있는 경우, 어느 정도 가시거리에서는 화면 픽셀의 크기가 하나의 텍셀과 정확히 동일합니다.그 이상으로 텍셀은 화면 픽셀보다 크기 때문에 적절한 스케일 업이 필요합니다.이것은 텍스처 확대라고 불리는 프로세스입니다.더 먼 곳에서는 각 텍셀이 픽셀보다 작기 때문에 하나의 픽셀이 여러 텍셀을 커버합니다.이 경우 텍스처 최소화를 통해 커버된 텍셀을 기준으로 적절한 색상을 선택해야 합니다.OpenGL과 같은 그래픽 API를 사용하면 프로그래머는 축소 [1]및 확대 필터에 대해 다른 선택을 할 수 있습니다.
픽셀과 텍스트의 크기가 정확히 동일한 경우에도 하나의 픽셀이 하나의 텍스트와 정확히 일치하지는 않습니다.정렬이 잘못되거나 회전할 수 있으며, 최대 4개의 인접 텍셀의 일부를 포함할 수 있습니다.따라서 여전히 어떤 형식의 필터링이 필요합니다.
맵핑
맵핑은 텍스처를 [2]최소화하는 동안 필요한 필터링 작업의 일부를 저장하는 데 사용되는 표준 기술입니다.캐시의 일관성에도 매우 도움이 됩니다.캐시가 없으면 원격 텍스처로부터의 샘플링 중에 메모리 액세스 패턴이 매우 불량한 로컬성을 나타내 필터링을 실시하지 않아도 퍼포먼스에 악영향을 미칩니다.
텍스처 확대 중에는 픽셀을 조회해야 하는 텍셀 수는 항상 4개 이하입니다.단, 최소화 중에는 텍스처 폴리곤이 멀어질수록 텍스처 전체가 단일 픽셀로 떨어질 수 있습니다.이를 위해서는 모든 텍셀을 읽고 그 값을 조합하여 픽셀 색상을 정확하게 판단해야 합니다.이것은 엄청나게 비싼 작업입니다.Mipmapping은 텍스처를 프리필터링하여 작은 사이즈에서1픽셀까지 저장함으로써 이를 회피합니다.질감이 있는 표면이 멀어질수록 적용되는 텍스처가 미리 필터링된 작은 크기로 전환됩니다.다양한 크기의 밉맵을 '레벨'이라고 하며, 레벨 0은 가장 큰 크기(뷰어에 가장 가까운 곳에서 사용됨)이며, 거리가 증가할 때 사용되는 레벨을 증가시킵니다.
필터링 방법
이 섹션에서는 가장 일반적인 텍스처 필터링 방법을 계산 비용과 이미지 품질 순으로 나열합니다.
근린 보간법
가장 가까운 이웃의 보간은 가장 단순하고 거친 필터링 방법입니다.픽셀 색상으로 픽셀 중심에서 가장 가까운 텍셀 색상을 사용합니다.이는 단순하지만 [3]확대 시 텍스처 '막힘', 축소 [4]시 앨리어싱 및 반짝임 등 많은 아티팩트가 발생합니다.이 방법은 확대 시에는 빠르지만 축소 시에는 메모리 통과 속도가 임의로 커지며 공간적으로 일관된 텍스처 액세스와 캐시 라인 [5]재사용이 부족하기 때문에 MIP 매핑보다 효율이 떨어지는 경우가 많습니다.
mipmapping이 있는 가장 가까운 네이버
이 방법에서는 여전히 가장 가까운 인접 보간법을 사용하지만 mipmapping을 추가합니다.먼저 가장 가까운 mipmap 레벨을 거리에 따라 선택한 다음 가장 가까운 텍셀 중심을 샘플링하여 픽셀 색상을 가져옵니다.이것에 의해, 에일리어스나 섬광의 최소화가 큰폭으로 감소합니다만, 완전히 해소되는 것은 아닙니다.이렇게 함으로써 래스터라이제이션 중에 텍스처 메모리를 통한 임의의 대규모 액세스를 방지함으로써 텍스처 메모리 액세스 및 캐시 라인 재사용을 개선합니다.확대된 각 텍셀은 여전히 큰 직사각형으로 표시되므로 확대 중 차단에는 도움이 되지 않습니다.
선형 mipmap 필터링
덜 일반적으로 OpenGL 및 기타 API는 샘플과 관련된 2개의 가장 가까운 mipmap을 선형 보간하면서 개별 mipmap에서 가장 가까운 네이버샘플링을 지원합니다.
쌍선형 필터링
Bilinear 필터링에서는 픽셀 중심에서 가장 가까운 4개의 텍셀이 샘플링되고(가장 가까운 [6]밉맵 수준에서), 거리에 따른 가중 평균에 따라 색상이 결합됩니다.이렇게 하면 픽셀 중심이 [7]텍셀 경계를 통과할 때 갑자기 점프하는 대신 한 텍셀에서 다른 텍셀로 부드러운 색 변화 구배가 이루어지기 때문에 확대 중에 나타나는 '막힘'을 제거할 수 있습니다.확대 필터링을 위한 이중 선형 필터링이 일반적입니다.최소화에 사용할 경우 밉맵과 함께 사용하는 경우가 많습니다.멀티맵 없이 사용할 수 있지만 너무 많이 최소화하면 근접 네이버필터링과 같은 에일리어스나 점멸 문제가 발생합니다.단, 중간 정도의 최소화 비율을 위해 저렴한 하드웨어 가속 가중치 텍스처 슈퍼샘플로서 사용할 수 있습니다.
삼선형 필터링
3선 필터링은 Mipmap Bilinar filtered 이미지에서 볼 수 있는 일반적인 아티팩트에 대한 해결책입니다. 즉, 렌더러가 한 mipmap 수준에서 다음 mipmap 수준으로 전환하는 경계에서 갑작스럽고 매우 눈에 띄는 품질의 변화입니다.삼선형 필터링은 가장 가까운 두 개의 mipmap 수준(높은 품질과 낮은 품질)에 대해 텍스처 룩업 및 이중선형 필터링을 수행한 다음 결과를 [8]선형 보간함으로써 이 문제를 해결합니다.이로 인해, 일련의 갑작스런 저하가 아니고, 뷰어로부터의 거리가 길어짐에 따라, 텍스쳐의 품질이 부드럽게 저하됩니다.물론 레벨 0보다 가까울 경우 사용 가능한 mipmap 레벨은 1개뿐이며 알고리즘은 바이리니어 필터링으로 돌아갑니다.
이방성 필터링
이방성 필터링은 현재 소비자용 3D 그래픽 카드에서 사용 가능한 최고 품질의 필터링입니다.보다 간단한 "등방성" 기술은 쌍선형 또는 삼선형 필터링을 사용하여 보간되는 정사각형 맵만을 사용한다. (등방성은 모든 방향에서 같은 의미이며, 따라서 모든 맵이 직사각형 또는 다른 4변수가 아닌 정사각형인 시스템을 설명하기 위해 사용된다.)
표면이 카메라와 상대적으로 높은 각도에 있는 경우 텍스처의 채우기 영역은 대략적인 정사각형이 되지 않습니다.게임에서 바닥의 일반적인 경우를 생각해 봅시다: 충전 면적이 높이보다 훨씬 넓습니다.이 경우, 어느 정사각형 지도도 적합하지 않습니다.그 결과, 핏을 선택하는 방법에 따라 흐릿함 및/또는 반짝임이 발생합니다.이방성 필터링은 텍스처를 정사각형 이외의 형상으로 샘플링하여 이를 수정합니다.그 목적은 텍스처 공간에 투영된 픽셀 풋프린트와 일치하도록 텍스처를 샘플링하는 것입니다.또, 이러한 풋프린트가, 반드시 텍스처와 축이 일치한다고는 할 수 없습니다.또한 샘플 이론을 다룰 때 픽셀은 작은[9] 정사각형이 아니기 때문에 그 풋프린트는 투영 정사각형이 되지 않습니다.텍스처 공간의 풋프린트 어셈블리는 텍스처 공간의 투영 픽셀의 계산된 함수에 대한 근사치를 샘플링하지만, 세부 사항은 종종 [10]근사치이고, 매우 독점적이며 샘플 이론에 대한 의견이 많다.개념적으로 목표는 적절한 방향의 보다 정확한 이방성 샘플을 샘플링하여 투영 크기가 다를 때 한쪽 축의 앨리어싱과 다른 쪽 축의 흐림 사이의 충돌을 방지하는 것입니다.
이방성 실장에서는 필터링은 중간 또는 최종 결과의 구축 중에 기존의 밉맵의 사각맵을 필터링하기 위해 사용되는 것과 동일한 필터링 알고리즘을 포함할 수 있다.
백분율 근접 필터링
깊이 기반 섀도 매핑에서는 깊이 매핑된 텍스처를 사용하여 적용할 수 있는 텍스처 필터의 종류에 대한 인식을 넓히는 흥미로운 PCF(Percentage Closer Filter)를 사용할 수 있습니다.PCF에서는 광원에서 장면의 깊이 맵이 렌더링됩니다.씬(scene)의 후속 렌더링 중에 이 깊이 맵이 빛의 위치에서 씬(scene)으로 다시 투영되고 투영 깊이 좌표와 가져온 텍스처 샘플 깊이 간에 비교가 수행됩니다.투영 좌표는 조명에서 장면 픽셀 깊이가 되지만 깊이 맵에서 가져온 깊이는 해당 투영 방향을 따라 장면 깊이를 나타냅니다.이것에 의해, 렌더링 된 화소에 대해서, 빛에 대한 가시성, 즉 빛에 의한 조명의 판정을 실시할 수 있다.따라서 이 텍스처링 연산은 픽셀이 점등되는지 여부를 나타내는 부울 테스트이지만, 주어진 픽셀에 대해 여러 샘플을 테스트할 수 있으며 부울 결과를 합산하여 평균화할 수 있습니다.이와 같이 샘플링된 텍셀 위치 및 지터가 있는 깊이 지도 투영 위치 등의 다양한 파라미터와 조합하여 픽셀에 대해 심도 비교 후 평균 또는 가까운 샘플의 비율을 계산할 수 있습니다.결정적으로 부울 결과의 합계와 백분율 값의 생성은 투영 깊이와 샘플 페치의 깊이 비교 후에 수행되어야 하므로 이 깊이 비교는 텍스처 필터의 필수적인 부분이 됩니다.그런 다음 이 백분율을 사용하여 조명 계산에 가중치를 부여하고 부울 조명 또는 그림자 값뿐만 아니라 부드러운 그림자 페넘브라 [11][12]결과를 제공할 수 있습니다.비교가 수행되고 거리에 따른 사후 부울 비교 쌍선형 필터가 적용되는[13] 최신 하드웨어에서 이 버전이 지원됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b "Chapter 9 - OpenGL Programming Guide". Glprogramming.com. 2009-02-13. Filtering. Retrieved 2018-01-14.
- ^ Williams, Lance (1983). "Pyramidal parametrics" (PDF). ACM SIGGRAPH Computer Graphics. 17 (3): 1–11. doi:10.1145/964967.801126. ISSN 0097-8930.
- ^ "Game Engine Design: Texture Mapping" (PDF). uncc.edu. Texture Magnification.
- ^ "Game Engine Design: Texture Mapping" (PDF). uncc.edu. Texture Minification.
- ^ Hendrik Lensch (2007-11-29). "Computer Graphics: Texture Filtering & Sampling Theory" (PDF). Max Planck Society. MipMaps. Retrieved 2018-01-14.
- ^ Markus Hadwiger (2015-03-09). "GPU and GPGPU Programming Lecture 12: GPU Texturing 2" (PDF). KAUST. Texture Reconstruction: Magnification.
- ^ Markus Hadwiger (2015-03-09). "GPU and GPGPU Programming Lecture 12: GPU Texturing 2" (PDF). KAUST. Texture Anti-Aliasing: MIP Mapping.
- ^ Hendrik Lensch (2007-11-29). "Computer Graphics: Texture Filtering & Sampling Theory" (PDF). Max Planck Society. MipMapping II. Retrieved 2018-01-14.
- ^ Alvy Ray Smith (1995-07-17). "A Pixel Is Not A Little Square! (And a Voxel is Not a Little Cube) - Technical Memo 6" (PDF). cs.princeton.edu. Retrieved 2018-01-14.
- ^ Hendrik Lensch (2007-11-29). "Computer Graphics: Texture Filtering & Sampling Theory" (PDF). Max Planck Society. Anisotropic Filtering. Retrieved 2018-01-14.
- ^ Reeves, William T.; Salesin, David H.; Cook, Robert L. (1987-08-01). "Rendering antialiased shadows with depth maps" (PDF). ACM SIGGRAPH Computer Graphics. Association for Computing Machinery (ACM). 21 (4): 283–291. doi:10.1145/37402.37435. ISSN 0097-8930. Archived from the original (PDF) on 2018-01-15.
- ^ Randima Fernando (2008-07-02). "Percentage-Closer Soft Shadows" (PDF). NVIDIA Corporation. Retrieved 2018-01-14.
- ^ "WebGL WEBGL_depth_texture Khronos Ratified Extension Specification". Khronos.org. 2014-07-15. Retrieved 2018-01-14.