LabHub
배우기 러닝패스 코스

셰이더와 GPU 파이프라인 · UV 와 텍스처 표본화 · 실습

무늬를 붙이고 표본을 꺼낸다

LabHub 에서 이어서 보기

목표

텍스처를 만들고, 두 가지 표본화 방식을 구현하고, 원근 보정 보간의 차이를 눈으로 봅니다. 마지막에는 축소에서 생기는 지글거림과 밉맵이 그것을 어떻게 없애는지 숫자로 확인합니다.

왜 중요한가

정점마다 색을 붙이면 삼각형 하나에 색 세 개뿐입니다. 텍스처는 색을 기하에서 떼어 내 별도의 이미지에 두고, 표면의 각 지점이 그 이미지의 어디를 가리키는지만 정합니다. 그 좌표가 UV 이고, 래스터라이저가 픽셀마다 보간해 줍니다.

여기서 두 가지가 특히 중요합니다. 하나는 원근 보정입니다. 화면 좌표에서 UV 를 그냥 섞으면 원근이 들어간 면에서 무늬가 뒤틀립니다. 화면에서 균등한 간격이 3차원 공간에서는 균등하지 않기 때문입니다. 다른 하나는 축소입니다. 한 픽셀이 텍셀 수십 개를 덮으면 그중 하나만 골라서는 무늬를 대표하지 못하고, 카메라가 조금만 움직여도 화면이 지글거립니다. 밉맵이 그 답입니다.

단계

1. /root/texture 에 도구 상자를 놓습니다.
2. /root/texture/tex.pyout/checker.png — 체커 무늬.
3. /root/texture/sample.py — 최근접 표본화.
4. /root/texture/bilinear.py — 쌍선형 표본화.
5. /root/texture/out/affine.png — 보정 없는 보간.
6. /root/texture/out/correct.pngdiff.png — 원근 보정.
7. /root/texture/out/mip0.png, mip1.png, out/07-mip.txt — 축소와 밉맵.

참고

단계 7개

  1. 그리기 도구 상자를 놓는다
  2. 체커 무늬 텍스처
  3. 최근접 표본화
  4. 쌍선형 표본화
  5. 보정 없이 붙인다
  6. 원근 보정 보간
  7. 축소와 밉맵