본문 바로가기
이펙트 (FX)/이펙트 팁 : Unreal

[Unreal/Material] 텍스처 샘플 UV Seam 문제 해결법 (DDX, DDY, Derivatives, Texture Sample)

by Minkyu Lee 2025. 6. 29.

개요

텍스처 샘플 사용시, 발생하는 UV Seam이 보이는 문제에 대한 해결법을 알아본다.

이때 No Mip Level을 사용하기도 하지만 성능 부하가 큰 방법이므로 아래 방법을 권장한다.

 

이펙트 머티리얼 제작시에는 주로 Radial UV를 사용했을 때, 해당 문제가 발생한다.

 

내용

- 원리

텍스처 샘플이 현재 Mip Level을 알지 못해 발생하는 문제다.

따라서 명시적으로 Mip Level을 계산해서 넣어준다.

 

- 방법

적용 전 (좌), 적용 후 (우)

 

1. Texture Sample 노드에서 Mip Value Mode를 설정

 

2. UV의 DDX DDY 값을 계산해 입력

 

 

참고사항

DDX와 DDY를 명시적으로 계산하여 밉 레벨에 사용 (MipValueMode를 Derivative로 설정):

  • 성능 부하: No Mip Level보다는 훨씬 효율적이지만, 추가적인 GPU 연산 오버헤드가 있습니다.
  • 이유:
    • 밉맵(Mipmap)을 사용합니다. 밉맵은 다양한 해상도로 미리 축소된 텍스처를 여러 개 생성하여 저장하는 기법입니다.
    • GPU는 DDX와 DDY를 통해 계산된 미분값을 바탕으로 현재 픽셀이 어떤 밉 레벨을 사용하는 것이 가장 적절한지 판단합니다.
    • 가까운 오브젝트는 고해상도 밉 레벨을, 멀리 있는 오브젝트는 저해상도 밉 레벨을 사용하므로, 메모리 대역폭 사용을 최적화하고 캐시 효율성을 높입니다.
    • 단점: DDX와 DDY를 계산하는 것 자체가 GPU 내에서 추가적인 연산(미분 계산)을 요구합니다. 이 연산은 GPU의 ALU 사용량을 늘리고, 인접 픽셀 정보를 필요로 하므로 파이프라인에 미세한 부하를 줄 수 있습니다. 하지만 이 부하는 No Mip Level의 극심한 메모리 대역폭 부하와는 비교할 수 없을 정도로 작습니다.

대역폭 (Bandwidth)

대역폭은 데이터 전송 통로의 넓이이며, 메모리 대역폭은 CPU/GPU와 메모리 간 데이터 전송 속도다.

게임에서 대역폭 부하가 심하다는 것은 GPU가 VRAM에서 데이터를 읽고 쓰는 작업이 너무 많아서 병목 현상이 일어난다는 의미이다.

 

참고영상

https://youtu.be/1HTMoCaY0xw

 

댓글