핵심 정리
| 개념 | 의미 |
|---|---|
| UV | 텍스처를 읽을 2D 좌표 |
| Filtering | texel 사이 값을 어떻게 보간할지 |
| Wrapping | UV가 0..1 밖일 때 처리 |
| Mipmap | 멀리 있는 텍스처용 축소 단계 |
| Anisotropic filtering | 비스듬한 표면의 샘플 품질 개선 |
구조
텍스처는 이미지 데이터이고, UV는 그 이미지에서 어디를 읽을지 나타내는 좌표입니다. 보통 (0, 0)부터 (1, 1) 범위를 쓰지만, wrapping 설정에 따라 범위를 벗어난 좌표도 반복하거나 clamp할 수 있습니다.
fragment UV -> sampler state -> texture sample -> color/material value텍스처 샘플링은 단순한 배열 조회가 아닙니다. filtering, mipmap, color space, compression, cache locality가 결과 품질과 성능에 영향을 줍니다.
Filtering
Nearest filtering은 가장 가까운 texel 하나를 읽습니다. Linear filtering은 주변 texel을 섞어 부드럽게 만듭니다. 화면에서 텍스처가 작게 보이면 mipmap을 사용해 aliasing과 cache miss를 줄입니다.
선택 기준
| 상황 | 설정 |
|---|---|
| 픽셀 아트처럼 날카로운 결과 | nearest |
| 일반 표면 텍스처 | linear + mipmap |
| 멀리서 반짝임 | mipmap, anisotropic filtering |
| 반복 패턴 | repeat wrapping |
| 경계 밖 번짐 방지 | clamp wrapping |
| 데이터 텍스처 | filtering과 color space 주의 |
데이터 텍스처는 색처럼 보간하거나 감마 변환하면 값이 깨질 수 있습니다. normal map, mask, lookup texture는 일반 color texture와 다르게 취급해야 합니다.
주의할 점
mipmap을 끄면 가까이서는 선명해 보여도 멀리서 aliasing과 shimmering이 심해질 수 있습니다. 반대로 데이터 텍스처에 mipmap이나 linear filtering을 잘못 적용하면 값이 섞여 의도와 달라질 수 있습니다.
UV seam은 텍스처 좌표가 끊기는 경계입니다. normal map이나 filtering에서 seam이 보이면 tangent space, padding, wrapping 설정까지 함께 확인해야 합니다.
참고 링크
1 sources