TECHARTNOMAD | TECHARTFLOWIO.COM

TECH.ART.FLOW.IO

[번역] 《명조》언리얼 엔진 4를 기반으로 한 멀티 플랫폼 이펙트 및 퍼포먼스 최적화 사례.

jplee 2024. 6. 4. 00:30

역자의 말.
최근 명조 게임이 오픈 한 이후 날마다 명조 게임 광고를 보게 되는군요! 렌더링 쪽에 깊게 관여한 Weedowo 군이 언리얼 페스트 2024 쇼케이스에서 발표 한 내용을 본인의 블로그에 간략히 게시 해 논것을 보게 되었습니다. NDC 가 거의 사라지다 싶이 하게 된 이후 한국에서는 기술 공유에 대한 활동이 확실히 소극적이 된 듯 한데요. 아마 게임업계의 냉냉한 분위기의 한 여파라고 생각이 드는군요. 빌리빌리에 동영상 발표가 올라와 있지만 중국말이기도 하고... 저도 겨우 알아듣는 수준이라... 간략히 이곳에 함께 공유 해 봅니다.


저자
 

WeebOwO

希望有一天成为一个自己佩服的人

xingyudev.site

 


머리말

올해 UOD 공유 녹취록이 속속 공개되고 있으므로 학습과 보관의 필요성을 감안하여 간략한 요약본을 작성하는 것이 가장 좋습니다.
 

https://www.bilibili.com/video/BV1BK411v7FY/%3Fspm_id_from%3D333.788%26vd_source%3Dea6df38502a795b7533aa33b78bf1159
 
우선 올해 밍차오의 공유인데, 연사는 왕홍보 씨이고, 언리얼 서클에서 퓨어츠 최적화에 대한 그의 공유는 전에 본 적이 있는데 매우 훌륭합니다.

디퍼드 셰이딩을 사용하는 이유

  • 퍼포먼스 고려 사항(셰이더 배리언트, 라이팅 계산 등의 관점에서 분석한 후 결론을 내릴 수 있어야 함)
  • 후처리 효과(예: GTAO, SSR)에 편리합니다.
  • 통합 멀티 플랫폼, 결국 데스크톱은 지연된 파이프라인이어야 합니다.

AA 관행

우선 왕홍보 씨는 작년 UOD 통계에 따르면 NPR 게임은 화면 공간의 엣지 픽셀이 4~5%인 반면, 전통적인 PBR 게임은 1~2%이기 때문에 AA의 이러한 측면이 카토우의 품질에 중요한 기술적 포인트가 될 것이라고 말했습니다.
아래는 이들이 공유한 자체 조사 TAA 프로세스입니다.

여기에 벨로시티 패스가 추가되고 TAA에서 TAAU로 변경된, 즉 업샘플 프로세스가 추가되었습니다. 여기서 제가 관심을 갖는 부분은 블룸과 톤 매핑 다음에 배치되는 TAA 패스의 배치 순서인데, 에지 노이즈가 증폭될 수 있다는 점입니다.
고스트의 핸들링
Ghost는 다음과 같은 방식으로 이를 처리하며, 성능에 가장 중점을 둔 중간 정도의 시나리오입니다.

반면 캐릭터의 고스트 처리는 좀 더 구체적이며, 애니메이션이 있는 고스트는 화면 공간에서의 움직임 자체가 전적으로 카메라 움직임에 의한 것이 아니기 때문에 특별한 처리가 필요하다고 할 수 있습니다.

해결책은 캐릭터에 대해 별도의 VelocityBuffer를 열고 해당 TAA 계산을 수행하는 것이지만, 체크된 패스는 Velocity 캐릭터 마스크에 대응하는 반응이 없기 때문에 VelocityBuffer의 캐릭터에 검은 선이 생기는 또 다른 문제가 있지만 성능상의 이유로 결국 VelocityBuffer 렌더링은 수행하지 않았습니다.

요약하면 다음과 같습니다.

움직이는 픽셀과 정지 픽셀의 혼합
움직이는 픽셀이 혼합되어 객체가 빠르게 움직일수록 현재 프레임의 가중치가 높아집니다.

업샘플 섹션

One Pass Defer

전체 파이프라인 프로필은 다음과 같으며, 온칩 메모리 기반 최적화의 보다 고전적인 구현인 나루미 역시 PBR과 NPR의 조합으로, 역할과 식생은 NPR로, 나머지는 PBR로 처리합니다.

지연된 파이프라인을 위한 G버퍼 배포

여기서 한 가지 함정은 뎁스 페치를 사용하면 말리의 FPK(Early-Z)가 실패한다는 것입니다. 이로 인해 렌더링 압력이 크게 증가합니다.

다시 말하지만 말리의 PLS는 128비트에 불과하기 때문에 최종 파이프라인은 하이브리드 파이프라인이 되고, 툰 셰이딩은 별도의 포워드 렌더링으로 이동하여 G버퍼에 카툰 관련 정보를 남길 수 있습니다.

그런 다음 가장 중요한 최적화 중 하나인 이 카툰 포워드 패스를 어디에 삽입하는 것이 더 좋을까요, 한 가지 고려 사항은 원 패스 디퍼드를 중단하고 이 포워드 카툰을  투명도 뒤로 이동시키는 것입니다.

그러다 이전의 모든 최적화 작업이 무용지물이 될 수 있다는 것이 분명해졌고, 최종 해결책은 렌더링(원래 기사에서는 거의 재작성에 해당한다고 했습니다)을 점검하고 이 카툰 파이프라인을 원 패스 디퍼에 통합하는 것이었습니다. 안타깝게도 홍보 씨는 시간 제약 때문에 자세히 공유하지 않겠다고 했습니다.

UE 4.26과 4.27에서 GBuffer를 처리하지 않고 디스크라이브 명령이 트리거되어 Gbuffer가 계속 쓰여지는 작은 RHI 버그가 발견되었습니다.

아래는 모든 RT에 대한 대응을 수행하기 위해 수정된 코드입니다.

마지막으로 원 패스 디퍼드와 멀티 패스의 성능 비교를 보면 읽기의 경우 대역폭이 매우 크게 감소하고 쓰기의 경우 대역폭이 약간 감소하는데, 이는 모바일 디바이스가 RT를 매우 잘 압축하기 때문에 쓰기의 경우 눈에 띄는 이점이 크지 않은 것으로 분석됩니다.

나무의 다중 적응

먼저 일반적인 적응 프로그램 가이드를 공유했습니다.

여기서 한 가지 주의할 점은 빌보드가 카메라를 따라 회전하지 않으므로 그림자를 렌더링할 때 주의해야 합니다. 그렇지 않으면 나무의 그림자가 카메라를 따라 움직이며 앞뒤로 흔들리는 것을 볼 수 있으므로 ShadowMask를 작성할 때 광원 hh를 향하도록 고정하는 것을 잊지 마세요.

여기서 홍보 씨는 많은 사람들이 임포스터와 빌보드가 하나라고 생각하지만 사실 빌보드와 임 포스터는 서로 관련이 없으며, 임포스터는 해당 물체 주위에 카메라 원을 사용한 다음 해당 재료 정보를 오프라인으로 기록한 다음 (mini gbuffer 와 유사) 런타임에 재 구축하는 반면, 빌보드는 단순히 페이스 플레이트를 조정하여 항상 캐릭터 카메라를 향하도록하는 것이라고 말했습니다. 빌보드는 페이스플레이트가 항상 캐릭터 카메라를 향하도록 간단히 조정하는 것입니다.

또한 임포스터 트리도 스트리밍을 지원합니다.

성능 분석, 다수의 임포스터 트리를 그리기 위한 4개의 드로우콜 및 기타 최적화.


실제 원문.

《鸣潮》基于虚幻引擎4的多平台效果和性能优化实践

《鸣潮》基于虚幻引擎4的多平台效果和性能优化实践前言今年的UOD分享录播在陆续放出,考虑到学习以及归档的必要,开一个简单的小专栏来记录下自己的学习吧。 [UFSH2023]《鸣潮》基于虚幻引

xingyudev.site