Unity 5의 새로운 기능인 Frame Debugger를 통해 그래픽 성능 향상

4985 단어 Unity

추기: 2015년 11월 27일


이 기사의 옛 제목은 "Unity 5 Pro의 새로운 기능인 Frame Debugger의 그래픽 성능 개선"이라는 것으로, 이 기사는 Unity 5 발표 전 작성된 것으로, Unity 5 정식 버전은 무료인 Personal로 클라우드, 팀 License 등 adion을 제외한 모든 편집 기능을 사용할 수 있기 때문이다.Unity 5 Pro 기술은 이 기사에서 삭제되었습니다.

Unity 애플리케이션의 성능 최적화


Unity는 Mono를 사용하기 때문에 C++와 Objectiver-C처럼 로컬 바이너리 코드를 출력하지 않고 Mono Virtual Machine 동작을 출력하는 중간 언어로 그것을 읽고 프로그램을 실행합니다.(iOS에서 규약을 위해 사전에 현지인이 컴파일함)
그럼에도 불구하고 현재 CPU의 성능이 향상되었고 MonoVM의 효율도 향상되었기 때문에 매우 쓸모없는 처리를 하지 않으면 CPU의 병목은 거의 존재하지 않는다.
실시간 인터랙티브 응용 프로그램에서 실제 그림을 표시하는 GPU의 최적화는 매우 중요하다.
Unity의 공식 매뉴얼에도 여러 페이지의 총결산이 있으니 아직 읽지 않은 사람은 반드시 확인해야 한다.
Unity 브로셔 - 그래픽 성능 최적화
Unity 브로셔 - 최상의 성능을 위한 캐릭터 스타일

Unity의 DrawCall 질문


그럼 유닛에서 퍼포먼스 하면 DrawCall이 꼭 나와요.
"최적화를 위해 DrawCall을 줄여라. PC에서는 xxx, 휴대전화에서는 yy."
나는 유닛에서 속도를 아는 사람이 이런 말을 들은 적이 있을 거라고 생각한다.
하지만 어떻게 줄여야 할지 모르겠어요.
공식 매뉴얼에도 드라우콜을 줄이는 방법이 적혀 있지만, 그것만으로는 드라우콜을 어떻게 줄여야 개선할 수 있는지 모르겠죠.
Unity 브로셔 - DrawCall Batching
Unity 매뉴얼 - 렌더 통계 창
Stats 버튼을 누르면 표시된 Statics 창에 드로잉에 대한 통계가 표시되지만 최종 결과의 숫자만 표시되므로 무거운 처리가 무엇인지 알 수 없습니다.(fps의 숫자는 CPU로 처리됨)
  • Unity 5의 새로운 샘플 시나리오 중 하나인 "Car"
  • Unity 5를 통한 혁신적인 Statics(Stats) 디스플레이
  • Batches는 최종 DrawCall 수
  • 입니다.
  • SetPass calls는 소재의 DrawCall
  • 입니다.
  • 섀도우 캐스터스가 그림자 처리를 통해 DrawCall(소재에 그림자를 그리는 처리도 포함되어 있어 Batches-setPass callls와 일치하지 않음)
  • Unity 프로필로 DrawCall 수량 확인


    Unity에는 Pro로 제한된 기능이 있습니다.이것은 Statistics와 다른 성능과 관련된 로그를 시간순으로 도표화하여 각 프레임이 어떻게 처리되었는지 보여주는 개요입니다.

    Unity Standard Asseets의 입자만 표시되는 장면입니다.

    Render.Transparent Geometry(반투명 형상의 그리기)에서 DrawCall을 5번 실행하는데 6.15ms가 걸렸다.
    Tyy의 Profiiler는 매우 편리하지만 GPU의 프로필에 관해서는 DrawCall의 수량과 처리 시간만 알면 어떻게 최적화해야 개선할 수 있는지 이해하기 어렵다.개선 사항은 아래에 설명된 Frame Debugger입니다.

    Unity 5에 추가된 Frame Debugger 사용


    Unity 5는 프레임별 그리기를 확인할 수 있는 Frame Debbuger를 구현합니다.
    예를 들어, 위의 입자 장면에서 Frame Debugger를 사용할 때는 다음과 같습니다.

    Game View를 이동할 때에도 Frame Debugger의 Enable 버튼을 누르면 프레임의 세부 내용이 순식간에 디버깅됩니다.
    이번 경우 입자가 어떤 순서로 그려졌는지, 입자별로 몇 개의 정점(Vertices)이 있는지는 기존 유닛에서는 볼 수 없었다.
    위의 gif는 너무 간단합니다. 이번에는 Frame Debugger로 첫 번째 카를 보도록 하겠습니다.용량이 늘어 고속으로 전환하고 있지만, 프레임 디버그에서 어떤 정보를 볼 수 있는지 알아야 할 것 같다.
  • DrawCall을 소재 단위로 발행한 경우
  • 를 실제로 확인할 수 있음
  • 음영도와 Image Effect에 사용되는 DrawCall
  • 도 확인 가능

    외부 프레임 디버깅 정보


    Frame Debugger는 Unity 5의 새로운 기능이지만, GPU 제조 공장에서 나온 도구와 최신 Visual Studio도 프레임워크 디버깅을 포함하고 있다.물론 이 디버깅을 사용할 수 있고, 유닛 5를 기다릴 수 없는 사람도 이것을 시험해 볼 수 있다.다음은 Unity 5 매뉴얼에 설명된 도구입니다.
  • Visual Studio graphics debugger
  • Intel Graphics Performance Analyzer
  • NVidia NSight
  • AMD GPU PerfStudio
  • RenderDoc
  • Unity Advent Calendar의 셋째 날은 @tsubaki_t1입니다.

    좋은 웹페이지 즐겨찾기