Unity

Unity Screen Space Camera 테스트

CatDarkGame 2024. 12. 4. 22:20
반응형

테스트 이유

  • UGUI Canvas를 Screen Space Overlay로 처리하면 안되는 경우, 별도 UI 카메라를 추가로 사용해야 합니다.
  • UI 카메라는 Culling, 각종 Pass 초기화 등 UI에 불필요한 기능이 동작하여 CPU 성능 저하가 발생합니다.
  • Screen Space Overlay를 사용할 수 없는 상황에 관련 성능 저하를 극복할 수 있는 방법을 테스트했습니다.

 

테스트 방향

  • Screen Space Camera에 별도 UI 카메라가 아닌 메인 카메라를 그대로 사용합니다.
  • Layer Mask를 활용해 UI가 렌더링되지 않도록 합니다.
  • Render Objects RendererFeature를 활용해 UI가 AfterPostProcess 단계에서 렌더링되도록 합니다.
  • Unity 2022.3.38f1 환경에서 테스트합니다.

 

테스트 결과

  • 샘플 프로젝트에서 UI 기능은 문제 없이 동작합니다.
  • UI 카메라 사용에 의한 불필요한 기능 동작은 발생하지 않습니다. 하지만 Camera Transform 변화로 인한 Cavna Rebuild 발생합니다.
  • 별도 UI 카메라 사용에 비해서 이 테스트가 얼마나 성능 개선이 되는지 검증이 필요합니다.
  • FXAA와 같이 Final Bilt 단계에서 동작하는 렌더패스가 UI에 영향을 줍니다. 
    • AfterRendering 단계에서 화면 버퍼에 접근하는 것은 쉽게 되지 않습니다.

 


테스트 내용

  • Screen Space - Camera에 메인 카메라 세팅합니다.
  • Render Objects 렌더 피처 추가 후, 후처리 이벤트 이후에 UI 레이어가 렌더링되록합니다. 이때 Depth Test를 Always로 세팅합니다.

 

 

  • 세팅이 완료되면 렌더링은 아래와 같이 동작합니다.
  • AfterRenderingPostProcessing 단계에서 UI가 렌더링되기 때문에 UI는 후처리 효과 영향 받지 않습니다.

 

 

  • ColorSpace, 블랜딩 오류 검사를 위해 Screen Space Overlay와 비교해봤으며 샘플 프로젝트에서 이슈 없습니다.

 

 

  • 카메라 Transform 변화되면 Canvas Rebuild 관련 기능이 동작합니다.
  • 아래 테스트는 에디터에서 진행했으며 실제 타겟 디바이스에서 UI 카메라 사용과 비교해서 얼마나 성능 이득이 생기는지 검증 필요합니다.

 

 

 

반응형