질감과 계단 현상
상자의 면마다 벽돌을 직접 모델링하지 않고도 벽돌 이미지를 입힐 수 있습니다. 텍스처는 표면의 색이나 재질 정보를 이미지 등의 형태로 제공합니다. 표면의 각 위치가 이미지의 어느 부분을 읽을지는 UV 좌표로 정합니다.
한 픽셀이 무엇을 대표할까요?
멀리 있는 촘촘한 줄무늬는 화면의 한 픽셀 안에 여러 줄이 들어갑니다. 그중 한 점만 읽으면 카메라가 조금 움직일 때 색이 크게 바뀌거나 엉뚱한 무늬가 생깁니다. 이것이 샘플링에서 생기는 에일리어싱의 예입니다.
- 최근접 필터: 가장 가까운 텍셀 하나를 읽습니다. 확대하면 경계가 뚜렷한 칸으로 보입니다.
- 바이리니어 필터: 주변 네 텍셀을 거리 비율로 섞습니다.
- 밉맵: 미리 작게 줄인 이미지들을 준비해 축소 정도에 맞는 해상도를 사용합니다.
색의 평균을 계산하는 작은 예입니다. 실제 색을 섞을 때는 보통 sRGB 저장값을 선형 공간으로 바꾼 뒤 계산합니다.
linear_samples = [0.0, 1.0, 0.0, 1.0]
print(sum(linear_samples) / len(linear_samples))
출력은 0.5입니다. 검정과 흰 영역이 반씩 덮는다는 정보를 평균으로 나타낸 것입니다. 샘플을 늘리거나 적절히 필터링하면 경계가 차지하는 비율을 더 잘 표현할 수 있습니다.
원근 투영에서는 UV도 원근에 맞게 보정해야 합니다. 화면상 거리 비율만으로 보간하면 비스듬한 표면의 무늬가 왜곡될 수 있습니다.
확인 문제
아주 먼 바닥의 촘촘한 무늬가 깜빡입니다. 원본 텍스처의 해상도를 계속 키우는 것만으로 해결될까요?
해설 보기
반드시 그렇지는 않습니다. 화면 픽셀보다 세밀한 정보를 어떻게 줄여 표현할지가 핵심입니다. 밉맵과 적절한 필터링, 샘플링을 살펴봐야 합니다. 원본에 정보를 더 넣는 것과 화면에 안정적으로 표시하는 것은 다른 문제입니다.