렌더링 정밀도 / 텍스처 보간

바닥은 평평한데,
무늬는 왜 휠까요?

같은 정점, 같은 카메라. 정점 사이의 UV만 달라집니다.

A

아핀 보간

큰 삼각형 두 개에 UV를 곧게 펼칩니다.

2개
선택한 방법
기준과의 UV RMS 오차—
B

원근 보정 기준

정점 깊이 w로 보간 가중치를 보정합니다.

2개
동일 카메라 · 동일 무늬
정점의 최대 / 최소 깊이—
화면의 십자 위치—

A UV —B UV —

설정에서 기울기와 분할 수를 조절해 보세요.

원인과 해결

화면의 중간 ≠ 면의 중간

아핀 상태에서 분할 수를 8로 올린 뒤, 분할 공간을 바꿔 보세요. ‘동일 깊이 대조군’에서는 두 그림이 일치합니다.

문제 · 삼각형 안에서 꺾이는 무늬

가까운 부분은 크게, 먼 부분은 작게 투영됩니다. 화면 삼각형 안에서 UV를 단순 선형 보간하면 원래 평면의 위치와 다른 텍스처 좌표를 읽습니다. 두 그림은 같은 3D 정점과 투영식을 사용합니다.

원인 · 깊이를 빼놓은 보간

화면의 무게를 λ, 정점 깊이를 w라 하면 아핀은 Σ(λ × UV), 원근 보정은 Σ(λ × UV / w) ÷ Σ(λ / w)입니다. 가까운 끝 UV=0, w=1과 먼 끝 UV=1, w=4의 화면상 중간은 아핀으로 0.5, 원근 보정으로 0.2입니다.

해결 · 원근 보정 또는 3D 면 분할

원근 보정은 각 픽셀의 깊이 비율을 직접 반영합니다. 아핀을 유지하려면 원래 3D 면 위에 정점을 만들고 다시 투영해 작은 삼각형 안의 오차를 줄일 수 있습니다. 화면 좌표와 기존 아핀 UV를 함께 잘게 나누면 원래의 선형 함수를 유지하므로 오차는 줄지 않습니다.

대가 · 제출 면 수와 계산

한 변을 N개로 나누면 삼각형은 2N²개가 됩니다. 여기서는 제출 면 수만 표시하며, 특정 GPU의 프레임 시간이나 텍스처 캐시는 모델링하지 않습니다. 원근 보정은 UV/w와 1/w의 보간 및 나눗셈이 필요합니다.

결과를 읽는 방법

UV RMS는 전체 투영 면의 화면 경계 상자에 놓은 41×41 표본 중 면 내부에 있는 점의 UV 거리 제곱 평균 제곱근입니다. UV 범위는 0~1입니다. 십자는 선택한 한 화면 위치입니다. 텍스처는 최근접 표본으로 읽으므로 해상도를 올리면 경계가 선명해져도 UV 오차는 그대로입니다.

이 장면은 직접 작성한 소프트웨어 삼각형 래스터라이저입니다. 화면 정점 양자화·색 정밀도·깊이 정렬은 적용하지 않아 보간 단계만 비교합니다. 원근 보정 모드는 원래 두 삼각형을 사용합니다.

Sony · Run-Time Library Overview, 8-33~8-35쪽 ↗

Sony 원문은 역사 문서 보관처 링크입니다. 특정 게임의 실행 결과를 재현하지 않습니다.