Unity6, Screen Position - UV 알고리즘에 고장이나다?

1

개발 이모저모

목록 보기
1/3

자주보는 셰이더 알고리즘

다음과 같이 샘플링하는 노드의 UV에 Screen Position.xy를 전달하는 처리는 셰이더를 다루는 개발자들이 한번쯤 해봤을 법한 처리이다.

문제 발견

필자는 블러 처리된 텍스처를 화면에 그려야해서 어떠한 Pass에서 전달받은 블러 텍스처를 위와 같은 노드를 구성하여 화면에 그릴려고 시도하였다.

하지만 이상하게도, 맞지 않았다.. (씬뷰에서만 정상적)

제작한 블러 에셋이 문제가 있는지 의심이 들어서 새로운 URP 프로젝트를 생성해서 테스트 했는데, 거기서는 정상적으로 나왔다.

이상한 부분을 발견하였는데, 문제의 프로젝트에서는 블러 효과 말고도, Skybox를 그리거나 특정 Pass작업을 할 때도 FHD 해상도에서도 1920X1080 해상도로 처리하지 않고 다운 샘플링 된 해상도로 처리되고 있던 것이다.

문제 해결

그래서 약 2시간 가량 삽질을 하며 원인을 찾던 중 원인을 찾았다.
그건 바로 URP Asset에서 Render Scale이 기본 값 1이 아닌 0.8로 되어있던 것이다.

Render Scale은 대상 장치의 해상도에 영향을 미치는 것이 아니라 기기에 렌더링할때 렌더링 품질을 낮추거나, 높일때 사용한다.

이게 왜 0.8인가?를 확인해봤는데, Unity6부턴 기본 제공되는 URP 에셋이 Mobile용과 PC용으로 두가지로 바뀐다.

이때, Mobile용은 렌더링 품질은 낮추고 FSR 업 스케일링을 제공하는 것이 기본 값이어서 생긴 일인 것이다.

무튼 Render Scale을 1로 변경하니 정상적으로 처리되었다.

profile
유니티를 통한 스페셜 테크닉만 다루는 독특한 개발자

0개의 댓글